summaryrefslogtreecommitdiff
path: root/toolchain/external-toolchain
diff options
context:
space:
mode:
author"Steven J. Hill" <sjhill@realitydiluted.com>2007-02-06 18:19:38 +0000
committer"Steven J. Hill" <sjhill@realitydiluted.com>2007-02-06 18:19:38 +0000
commit02f71aab47835e7220e2b1039bcda4d0c5657db0 (patch)
treec4a14c8fb83fdec69a34065d93777e9960ea0831 /toolchain/external-toolchain
parent4cdc4206218e8e2ed3bc5a31e2b5e157ec43f67c (diff)
Support building using an external toolchain. Questions to the mailing list and all other comments to <biteme@devnull.com>.
Diffstat (limited to 'toolchain/external-toolchain')
-rw-r--r--toolchain/external-toolchain/Config.in72
-rw-r--r--toolchain/external-toolchain/ext-tool.mk56
2 files changed, 128 insertions, 0 deletions
diff --git a/toolchain/external-toolchain/Config.in b/toolchain/external-toolchain/Config.in
new file mode 100644
index 000000000..c004175cd
--- /dev/null
+++ b/toolchain/external-toolchain/Config.in
@@ -0,0 +1,72 @@
+#
+
+menu "Toolchain Options"
+ depends on BR2_TOOLCHAIN_EXTERNAL
+
+config BR2_TOOLCHAIN_EXTERNAL_LIB_C
+ string "The core C library from the external toolchain"
+ default "libc.so.6"
+ help
+ Specify the core C shared library found in the external
+ toolchain. This is required in addition to any other
+ libraries to be copied.
+
+config BR2_TOOLCHAIN_EXTERNAL_LIBS
+ string "Libraries to copy from the external toolchain"
+ default ""
+ help
+ A space separated list of the shared libraries to be copied
+ from the external toolchain into the root filesystem. Only
+ the top-level name is needed, i.e. libc.so, libpthread.so as
+ the actual shared library symlinked to will be copied also.
+
+config BR2_TOOLCHAIN_EXTERNAL_STRIP
+ bool
+ default y
+ prompt "Strip shared libraries"
+ help
+ Strip shared libraries copied from the external toolchain.
+
+source "toolchain/gdb/Config.in.2"
+
+comment "Common Toolchain Options"
+
+config BR2_TOOLCHAIN_EXTERNAL_PATH
+ string "External toolchain path"
+ default ""
+ help
+ Path to where the external toolchain is installed.
+
+config BR2_TOOLCHAIN_EXTERNAL_PREFIX
+ string "External toolchain prefix"
+ default ""
+ help
+ This the the external toolchain prefix. For example:
+ armeb-unknown-linux-gnu, mipsel-unknown-linux-gnu, etc.
+
+config BR2_LARGEFILE
+ bool "Enable large file (files > 2 GB) support?"
+ depends on !BR2_cris
+ default y
+ help
+ Enable large file (files > 2 GB) support
+
+config BR2_SOFT_FLOAT
+ bool "Use software floating point by default"
+ default n
+ depends on BR2_arm || BR2_armeb || BR2_mips || BR2_mipsel || BR2_powerpc
+ help
+ If your target CPU does not have a Floating Point Unit (FPU) or a
+ kernel FPU emulator, but you still wish to support floating point
+ functions, then everything will need to be compiled with soft
+ floating point support (-msoft-float).
+
+ Most people will answer N.
+
+config BR2_TARGET_OPTIMIZATION
+ string "Target Optimizations"
+ default "-Os -pipe"
+ help
+ Optimizations to use when building for the target host.
+
+endmenu
diff --git a/toolchain/external-toolchain/ext-tool.mk b/toolchain/external-toolchain/ext-tool.mk
new file mode 100644
index 000000000..ab4cbef6c
--- /dev/null
+++ b/toolchain/external-toolchain/ext-tool.mk
@@ -0,0 +1,56 @@
+#
+# copy_toolchain_lib_root
+#
+# $1: source
+# $2: destination
+# $2: strip (y|n) default is to strip
+#
+copy_toolchain_lib_root = \
+ LIB="$(strip $1)"; \
+ DST="$(strip $2)"; \
+ STRIP="$(strip $3)"; \
+ \
+ LIB_DIR=`$(TARGET_CC) -print-file-name=$${LIB} | sed -e "s,/$${LIB}\$$,,"`; \
+ \
+ if test -z "$${LIB_DIR}"; then \
+ echo "copy_toolchain_lib_root: lib=$${LIB} not found"; \
+ exit -1; \
+ fi; \
+ \
+ LIB="$(strip $1)"; \
+ for FILE in `find $${LIB_DIR} -type l -name "$${LIB}*" -maxdepth 1`; do \
+ LIB=`basename $${FILE}`; \
+ while test \! -z "$${LIB}"; do \
+ echo "copy_toolchain_lib_root lib=$${LIB} dst=$${DST}"; \
+ rm -fr $(TARGET_DIR)$${DST}/$${LIB}; \
+ mkdir -p $(TARGET_DIR)$${DST}; \
+ if test -h $${LIB_DIR}/$${LIB}; then \
+ cp -d $${LIB_DIR}/$${LIB} $(TARGET_DIR)$${DST}/; \
+ elif test -f $${LIB_DIR}/$${LIB}; then \
+ cp $${LIB_DIR}/$${LIB} $(TARGET_DIR)$${DST}/$${LIB}; \
+ case "$${STRIP}" in \
+ (0 | n | no) \
+ ;; \
+ (*) \
+ $(TARGET_CROSS)strip "$(TARGET_DIR)$${DST}/$${LIB}"; \
+ ;; \
+ esac; \
+ else \
+ exit -1; \
+ fi; \
+ LIB="`readlink $${LIB_DIR}/$${LIB}`"; \
+ done; \
+ done; \
+ \
+ echo -n
+
+uclibc: dependencies $(TARGET_DIR)/lib/$(strip $(subst ",, $(BR2_TOOLCHAIN_EXTERNAL_LIB_C)))
+
+$(TARGET_DIR)/lib/$(strip $(subst ",, $(BR2_TOOLCHAIN_EXTERNAL_LIB_C))):
+#"))
+ mkdir -p $(TARGET_DIR)/lib
+ @$(call copy_toolchain_lib_root, $(strip $(subst ",, $(BR2_TOOLCHAIN_EXTERNAL_LIB_C))), /lib, $(BR2_TOOLCHAIN_EXTERNAL_STRIP))
+#")))
+ for libs in $(strip $(subst ",, $(BR2_TOOLCHAIN_EXTERNAL_LIBS))) ; do \
+ $(call copy_toolchain_lib_root, $$libs, /lib, $(BR2_TOOLCHAIN_EXTERNAL_STRIP)) ; \
+ done