From 02f71aab47835e7220e2b1039bcda4d0c5657db0 Mon Sep 17 00:00:00 2001 From: "\"Steven J. Hill\"" Date: Tue, 6 Feb 2007 18:19:38 +0000 Subject: Support building using an external toolchain. Questions to the mailing list and all other comments to . --- toolchain/external-toolchain/Config.in | 72 ++++++++++++++++++++++++++++++++ toolchain/external-toolchain/ext-tool.mk | 56 +++++++++++++++++++++++++ 2 files changed, 128 insertions(+) create mode 100644 toolchain/external-toolchain/Config.in create mode 100644 toolchain/external-toolchain/ext-tool.mk (limited to 'toolchain/external-toolchain') 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 -- cgit v1.2.3