diff options
| -rw-r--r-- | Makefile | 4 | ||||
| -rw-r--r-- | package/Makefile.in | 21 | ||||
| -rw-r--r-- | target/Makefile.in | 3 | ||||
| -rw-r--r-- | target/device/Makefile.in | 3 | ||||
| -rw-r--r-- | toolchain/Config.in | 75 | ||||
| -rw-r--r-- | toolchain/Config.in.2 | 66 | ||||
| -rw-r--r-- | toolchain/external-toolchain/Config.in | 72 | ||||
| -rw-r--r-- | toolchain/external-toolchain/ext-tool.mk | 56 | ||||
| -rw-r--r-- | toolchain/gdb/Config.in.2 | 55 | ||||
| -rw-r--r-- | toolchain/uClibc/uclibc.mk | 2 | 
10 files changed, 292 insertions, 65 deletions
| @@ -44,7 +44,11 @@ ifeq ($(strip $(BR2_HAVE_DOT_CONFIG)),y)  # along with the packages to build for the target.  #  ############################################################## +ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y)  TARGETS:=uclibc-configured binutils gcc uclibc-target-utils +else +TARGETS:=uclibc +endif  include toolchain/Makefile.in  include package/Makefile.in diff --git a/package/Makefile.in b/package/Makefile.in index 531f8de1f..37b3b71fb 100644 --- a/package/Makefile.in +++ b/package/Makefile.in @@ -19,7 +19,12 @@ TAR_OPTIONS=$(subst ",, $(BR2_TAR_OPTIONS)) -xf  #") +ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y)  TARGET_CFLAGS=$(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING) +else +TARGET_CFLAGS=$(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING) -I$(STAGING_DIR)/include -I$(TOOLCHAIN_EXTERNAL_PATH)/$(TOOLCHAIN_EXTERNAL_PREFIX)/include +TARGET_LDFLAGS=-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib +endif  HOSTCC:=gcc  HOSTCXX:=g++ @@ -44,13 +49,14 @@ endif  #PATCH_DIR=$(BASE_DIR)/sources/patches  BUILD_DIR:=$(BASE_DIR)/$(TOPDIR_PREFIX)build_$(ARCH)$(ARCH_FPU_SUFFIX)$(TOPDIR_SUFFIX)  TARGET_DIR:=$(BUILD_DIR)/root -TOOL_BUILD_DIR=$(BASE_DIR)/$(TOPDIR_PREFIX)toolchain_build_$(ARCH)$(ARCH_FPU_SUFFIX)$(TOPDIR_SUFFIX)  GNU_TARGET_SUFFIX:=-$(strip $(subst ",, $(BR2_GNU_TARGET_SUFFIX)))  #"))  STAGING_DIR:=$(strip $(subst ",, $(BR2_STAGING_DIR)))  #")) +ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y) +TOOL_BUILD_DIR=$(BASE_DIR)/$(TOPDIR_PREFIX)toolchain_build_$(ARCH)$(ARCH_FPU_SUFFIX)$(TOPDIR_SUFFIX)  # Quotes are needed for spaces et al in path components.  TARGET_PATH="$(STAGING_DIR)/bin:$(TOOL_BUILD_DIR)/bin:$(PATH)" @@ -59,6 +65,19 @@ REAL_GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)$(GNU_TARGET_SUFFIX)  GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)-linux  KERNEL_CROSS=$(STAGING_DIR)/bin/$(OPTIMIZE_FOR_CPU)$(GNU_TARGET_SUFFIX)-  TARGET_CROSS=$(STAGING_DIR)/bin/$(OPTIMIZE_FOR_CPU)$(GNU_TARGET_SUFFIX)- +else +TOOLCHAIN_EXTERNAL_PREFIX:=$(strip $(subst ",, $(BR2_TOOLCHAIN_EXTERNAL_PREFIX))) +#")) +TOOLCHAIN_EXTERNAL_PATH:=$(strip $(subst ",, $(BR2_TOOLCHAIN_EXTERNAL_PATH))) +#")) +TOOL_BUILD_DIR=$(BASE_DIR)/$(TOPDIR_PREFIX)toolchain_build_$(TOOLCHAIN_EXTERNAL_PREFIX) +TARGET_PATH="$(STAGING_DIR)/bin:$(TOOL_BUILD_DIR)/bin:$(TOOLCHAIN_EXTERNAL_PATH)/bin:$(PATH)" +IMAGE:=$(BASE_DIR)/rootfs.$(TOOLCHAIN_EXTERNAL_PREFIX) +REAL_GNU_TARGET_NAME=$(TOOLCHAIN_EXTERNAL_PREFIX) +GNU_TARGET_NAME=$(TOOLCHAIN_EXTERNAL_PREFIX) +KERNEL_CROSS=$(TOOLCHAIN_EXTERNAL_PATH)/bin/$(TOOLCHAIN_EXTERNAL_PREFIX)- +TARGET_CROSS=$(TOOLCHAIN_EXTERNAL_PATH)/bin/$(TOOLCHAIN_EXTERNAL_PREFIX)- +endif  TARGET_CC=$(TARGET_CROSS)gcc  TARGET_CXX=$(TARGET_CROSS)g++  TARGET_RANLIB=$(TARGET_CROSS)ranlib diff --git a/target/Makefile.in b/target/Makefile.in index a65b74019..7ec139db9 100644 --- a/target/Makefile.in +++ b/target/Makefile.in @@ -7,4 +7,7 @@ include target/powerpc/Makefile.in  # and finally build the filesystems/tarballs  include target/*/*.mk  # kernel rules +ifeq ($(BR2_PACKAGE_LINUX),y) +TARGETS+=linux26 +endif  include target/linux*.mk diff --git a/target/device/Makefile.in b/target/device/Makefile.in index fd9f03f11..c2d04a97a 100644 --- a/target/device/Makefile.in +++ b/target/device/Makefile.in @@ -1,6 +1,3 @@  TARGET_DEVICE_DEPMOD:=target/device/x86/depmod.pl  -include target/device/*/Makefile.in -ifeq ($(BR2_PACKAGE_LINUX),y) -TARGETS+=linux26 -endif diff --git a/toolchain/Config.in b/toolchain/Config.in index 82a3621d0..9b464f2b4 100644 --- a/toolchain/Config.in +++ b/toolchain/Config.in @@ -1,67 +1,20 @@  # -menu "Toolchain Options" - - -source "toolchain/kernel-headers/Config.in" -source "toolchain/uClibc/Config.in" -source "toolchain/binutils/Config.in" -source "toolchain/gcc/Config.in" -source "toolchain/ccache/Config.in" -source "toolchain/gdb/Config.in" -source "toolchain/elf2flt/Config.in" -source "toolchain/mklibs/Config.in" - -comment "Common Toolchain Options" - -source "toolchain/sstrip/Config.in" - -config BR2_ENABLE_MULTILIB -	bool "Enable multilib support?" -	default n -	help -	    If you want multilib enabled, enable this... - -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_SOFT_FLOAT_FP -#	bool "Use softfp" -#	default n - -config BR2_TARGET_OPTIMIZATION -	string "Target Optimizations" -	default "-Os -pipe" -	help -	  Optimizations to use when building for the target host. - -config BR2_CROSS_TOOLCHAIN_TARGET_UTILS -	bool "Include target utils in cross toolchain" -	default y +choice +	prompt "Toolchain type" +	default BR2_TOOLCHAIN_BUILDROOT  	help -	  When using buildroot to build a deployable cross toolchain, -	  it is handy to include certain target apps with that toolchain -	  as a convenience. -	  Examples include ldd, gdbserver, and strace. +	  Select whether to use the toolchain built by the buildroot +	  system or an external pre-built toolchain. -	  Answer Y if you want these apps (if built) copied into the -	  cross toolchain dir under <arch>-linux-uclibc/target_utils/. +config BR2_TOOLCHAIN_BUILDROOT +	bool +	prompt "Buildroot toolchain" -endmenu +config BR2_TOOLCHAIN_EXTERNAL +	bool +	prompt " External toolchain" +endchoice +source "toolchain/Config.in.2" +source "toolchain/external-toolchain/Config.in" diff --git a/toolchain/Config.in.2 b/toolchain/Config.in.2 new file mode 100644 index 000000000..b9f1c3217 --- /dev/null +++ b/toolchain/Config.in.2 @@ -0,0 +1,66 @@ +# + +menu "Toolchain Options" +	depends on BR2_TOOLCHAIN_BUILDROOT + +source "toolchain/kernel-headers/Config.in" +source "toolchain/uClibc/Config.in" +source "toolchain/binutils/Config.in" +source "toolchain/gcc/Config.in" +source "toolchain/ccache/Config.in" +source "toolchain/gdb/Config.in" +source "toolchain/elf2flt/Config.in" +source "toolchain/mklibs/Config.in" + +comment "Common Toolchain Options" + +source "toolchain/sstrip/Config.in" + +config BR2_ENABLE_MULTILIB +	bool "Enable multilib support?" +	default n +	help +	    If you want multilib enabled, enable this... + +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_SOFT_FLOAT_FP +#	bool "Use softfp" +#	default n + +config BR2_TARGET_OPTIMIZATION +	string "Target Optimizations" +	default "-Os -pipe" +	help +	  Optimizations to use when building for the target host. + +config BR2_CROSS_TOOLCHAIN_TARGET_UTILS +	bool "Include target utils in cross toolchain" +	default y +	help +	  When using buildroot to build a deployable cross toolchain, +	  it is handy to include certain target apps with that toolchain +	  as a convenience. +	  Examples include ldd, gdbserver, and strace. + +	  Answer Y if you want these apps (if built) copied into the +	  cross toolchain dir under <arch>-linux-uclibc/target_utils/. + +endmenu 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 diff --git a/toolchain/gdb/Config.in.2 b/toolchain/gdb/Config.in.2 new file mode 100644 index 000000000..695c5d5ea --- /dev/null +++ b/toolchain/gdb/Config.in.2 @@ -0,0 +1,55 @@ +# Keep this in sync with Config.in + +comment "Gdb Options" + +config BR2_PACKAGE_GDB +	bool "Build gdb debugger for the Target" +	default n +	select BR2_PACKAGE_NCURSES +	help +	    Build the full gdb debugger to run on the target. + +config BR2_PACKAGE_GDB_SERVER +	bool "Build gdb server for the Target" +	default n +	help +	    Build the gdbserver stub to run on the target. +	    A full gdb is needed to debug the progam. + +config BR2_PACKAGE_GDB_HOST +	bool "Build gdb for the Host" +	default n +	help +	    Build gdb to run on the host to debug programs run on the target. + +choice +	prompt "GDB debugger Version" +	default BR2_GDB_VERSION_6_3 +	depends on BR2_PACKAGE_GDB || BR2_PACKAGE_GDB_SERVER || BR2_PACKAGE_GDB_HOST +	help +	  Select the version of gdb you wish to use. + +	config BR2_EXT_GDB_VERSION_6_2_1 +		bool "gdb 6.2.1" + +	config BR2_EXT_GDB_VERSION_6_3 +		bool "gdb 6.3" + +	config BR2_EXT_GDB_VERSION_6_4 +		bool "gdb 6.4" + +	config BR2_EXT_GDB_VERSION_6_5 +		bool "gdb 6.5" + +	config BR2_EXT_GDB_VERSION_SNAPSHOT +		bool "gdb snapshot" + +endchoice + +config BR2_EXT_GDB_VERSION +	string +	default "6.2.1"    if BR2_EXT_GDB_VERSION_6_2_1 +	default "6.3"      if BR2_EXT_GDB_VERSION_6_3 +	default "6.4"      if BR2_EXT_GDB_VERSION_6_4 +	default "6.5"      if BR2_EXT_GDB_VERSION_6_5 +	default "snapshot" if BR2_EXT_GDB_VERSION_SNAPSHOT diff --git a/toolchain/uClibc/uclibc.mk b/toolchain/uClibc/uclibc.mk index d2bd62c63..57b0d9a52 100644 --- a/toolchain/uClibc/uclibc.mk +++ b/toolchain/uClibc/uclibc.mk @@ -4,6 +4,7 @@  #  ############################################################# +ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y)  ifeq ($(BR2_UCLIBC_VERSION_SNAPSHOT),y)  # Be aware that this changes daily.... @@ -339,3 +340,4 @@ uclibc_target-clean:  uclibc_target-dirclean:  	rm -rf $(TARGET_DIR)/usr/include +endif | 
