From 567d5c24536c8462b6df24f6c7654a72b00f202d Mon Sep 17 00:00:00 2001 From: Bernhard Reutner-Fischer Date: Wed, 17 Dec 2008 14:03:26 +0100 Subject: [PATCH] add support for non uClibc libc's Not really but provide a somewhat sane stub for people who think they want to do that (i.e. let them screw themselves if they want) --- Makefile | 17 ++++++++++++++--- package/pkgconfig/pkgconfig.mk | 2 +- project/Config.in | 6 ++++-- toolchain/Config.in.2 | 32 ++++++++++++++++++++++++++++++++ toolchain/uClibc/uclibc.mk | 36 ++++++++++++++++++------------------ 5 files changed, 69 insertions(+), 24 deletions(-) diff --git a/Makefile b/Makefile index 3d729be..721b6c5 100644 --- a/Makefile +++ b/Makefile @@ -183,6 +183,9 @@ LIBTGTEXT=.so endif PREFERRED_LIB_FLAGS:=--enable-static --enable-shared +BR2_LIBC_NAME:=$(strip ",,$(BR2_LIBC_NAME)) +#") + ############################################################## # # The list of stuff to build for the target toolchain @@ -190,9 +193,9 @@ PREFERRED_LIB_FLAGS:=--enable-static --enable-shared # ############################################################## ifeq ($(BR2_TOOLCHAIN_SOURCE),y) -BASE_TARGETS:=uclibc-configured binutils cross_compiler uclibc_target +BASE_TARGETS:=libc-configured binutils cross_compiler libc_target else -BASE_TARGETS:=uclibc +BASE_TARGETS:=libc endif TARGETS:= @@ -228,14 +231,22 @@ include toolchain/dependencies/dependencies.mk include toolchain/binutils/binutils.mk include toolchain/ccache/ccache.mk include toolchain/elf2flt/elf2flt.mk +ifeq ($(BR2_LIBC_FLAVOUR_uclibc),y) include toolchain/gcc/gcc-uclibc-3.x.mk include toolchain/gcc/gcc-uclibc-4.x.mk +else +include toolchain/gcc/gcc-$(BR2_LIBC_NAME).mk +endif include toolchain/gdb/gdb.mk include toolchain/kernel-headers/kernel-headers.mk include toolchain/mklibs/mklibs.mk include toolchain/sstrip/sstrip.mk +ifeq ($(BR2_LIBC_FLAVOUR_uclibc),y) include toolchain/uClibc/uclibc.mk else +include toolchain/$(BR2_LIBC_NAME)/$(BR2_LIBC_NAME).mk +endif +else include toolchain/*/*.mk endif @@ -466,7 +477,7 @@ endif # ifeq ($(BR2_HAVE_DOT_CONFIG),y) cp $(shell find ./target/ -name $@) .config -@$(MAKE) oldconfig -configured: dirs host-sed kernel-headers uclibc-config busybox-config linux26-config +configured: dirs host-sed kernel-headers libc-config busybox-config linux26-config cross: $(BASE_TARGETS) diff --git a/package/pkgconfig/pkgconfig.mk b/package/pkgconfig/pkgconfig.mk index 98a0638..3868ef8 100644 --- a/package/pkgconfig/pkgconfig.mk +++ b/package/pkgconfig/pkgconfig.mk @@ -91,7 +91,7 @@ endif $(STRIPCMD) $(STRIP_STRIP_ALL) $@ -pkgconfig-target: uclibc_target $(STAGING_DIR)/$(PKGCONFIG_TARGET_BINARY) +pkgconfig-target: libc_target $(STAGING_DIR)/$(PKGCONFIG_TARGET_BINARY) pkgconfig-target-source: $(DL_DIR)/$(PKGCONFIG_SOURCE) diff --git a/project/Config.in b/project/Config.in index e5927c2..ea00c7b 100644 --- a/project/Config.in +++ b/project/Config.in @@ -2,7 +2,8 @@ comment "Project Options" config BR2_PROJECT string "Project name" - default "uclibc" + default "uclibc" if BR2_LIBC_FLAVOUR_uclibc + default "unsupported" if !BR2_LIBC_FLAVOUR_uclibc help The project name is used to define subdirectories * where the Board Support Packages are built @@ -13,7 +14,8 @@ config BR2_PROJECT config BR2_HOSTNAME string "hostname" - default "uclibc" + default "uclibc" if BR2_LIBC_FLAVOUR_uclibc + default "unsupported" if !BR2_LIBC_FLAVOUR_uclibc help The hostname string is stored in "/etc/hostname" diff --git a/toolchain/Config.in.2 b/toolchain/Config.in.2 index 5038c60..5718ab8 100644 --- a/toolchain/Config.in.2 +++ b/toolchain/Config.in.2 @@ -1,6 +1,38 @@ if BR2_TOOLCHAIN_SOURCE source "toolchain/kernel-headers/Config.in" + +choice + prompt "C library" + default BR2_LIBC_FLAVOUR_uclibc + help + Select the libc you want to use. + If you set this to anything but uClibc then you're on your own + as far as i'm concerned. + +config BR2_LIBC_FLAVOUR_uclibc + bool "uClibc" + help + The uClibc. + http://uClibc.org/ + +config BR2_LIBC_FLAVOUR_glibc + bool "GNU libc" + help + The GNU libc. + http://gnu.org/software/libc +# etc.. +endchoice +config BR2_LIBC_NAME + string + default uclibc if BR2_LIBC_FLAVOUR_uclibc + default glibc if BR2_LIBC_FLAVOUR_glibc + +if BR2_LIBC_FLAVOUR_uclibc source "toolchain/uClibc/Config.in" +endif +if BR2_LIBC_FLAVOUR_glibc +#source "toolchain/glibc/Config.in" +endif source "toolchain/binutils/Config.in" source "toolchain/gcc/Config.in" source "toolchain/ccache/Config.in" diff --git a/toolchain/uClibc/uclibc.mk b/toolchain/uClibc/uclibc.mk index 98ce2ce..f8a73d6 100644 --- a/toolchain/uClibc/uclibc.mk +++ b/toolchain/uClibc/uclibc.mk @@ -4,7 +4,7 @@ # ############################################################# -ifeq ($(BR2_TOOLCHAIN_SOURCE),y) +ifeq ($(BR2_TOOLCHAIN_SOURCE)$(BR2_LIBC_FLAVOUR_uclibc),yy) UCLIBC_SITE:=http://www.uclibc.org/downloads ifeq ($(BR2_TOOLCHAIN_EXTERNAL_SOURCE),y) @@ -517,7 +517,7 @@ $(UCLIBC_DIR)/lib/libc.a: $(UCLIBC_DIR)/.configured $(gcc_initial) $(LIBFLOAT_TA UCLIBC_EXTRA_CFLAGS="$(TARGET_CFLAGS) $(TARGET_CC_FLAGS) $(__UCLIBC_EXTRA_TARGET_CFLAGS)" \ all -uclibc-menuconfig: host-sed $(UCLIBC_DIR)/.config +uclibc-menuconfig libc-menuconfig: host-sed $(UCLIBC_DIR)/.config $(MAKE1) -C $(UCLIBC_DIR) \ PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \ DEVEL_PREFIX=/usr/ \ @@ -537,7 +537,7 @@ $(BR2_UCLIBC_CONFIG_FOR_BUILDROOT): $(dependencies) host-sed $(UCLIBC_DIR)/.conf touch -c $@ ifeq ($(BR2__UCLIBC_HAVE_DOT_CONFIG),) -ifeq ($(filter uclibc-menuconfig,$(MAKECMDGOALS)),) +ifeq ($(filter uclibc-menuconfig libc-menuconfig,$(MAKECMDGOALS)),) ifneq ($(wildcard $(UCLIBC_CONFIG_FILE)),) ifeq ($(findstring host-,$(MAKECMDGOALS)),) include $(BR2_UCLIBC_CONFIG_FOR_BUILDROOT) @@ -652,24 +652,24 @@ endif endif -uclibc: $(cross_compiler) $(STAGING_DIR)/usr/lib/libc.a +uclibc libc: $(cross_compiler) $(STAGING_DIR)/usr/lib/libc.a -uclibc-source: $(DL_DIR)/$(UCLIBC_SOURCE) +uclibc-source libc-source: $(DL_DIR)/$(UCLIBC_SOURCE) -uclibc-unpacked: $(UCLIBC_DIR)/.unpacked +uclibc-unpacked libc-unpacked: $(UCLIBC_DIR)/.unpacked -uclibc-config: $(UCLIBC_DIR)/.config +uclibc-config libc-config: $(UCLIBC_DIR)/.config -uclibc-oldconfig: $(UCLIBC_DIR)/.oldconfig +uclibc-oldconfig libc-oldconfig: $(UCLIBC_DIR)/.oldconfig -uclibc-update: uclibc-config +uclibc-update libc-update: uclibc-config cp -f $(UCLIBC_DIR)/.config $(UCLIBC_CONFIG_FILE) -uclibc-configured: kernel-headers $(UCLIBC_DIR)/.configured +libc-configured: kernel-headers $(UCLIBC_DIR)/.configured -uclibc-configured-source: uclibc-source +libc-configured-source: libc-source -uclibc-clean: +uclibc-clean libc-clean: -$(MAKE1) -C $(UCLIBC_DIR) clean $(patsubst %,rm -f %, $(wildcard $(STAGING_DIR)/usr/bin/*readelf \ $(STAGING_DIR)/usr/bin/*ldd \ @@ -693,12 +693,12 @@ uclibc-clean: $(TARGET_DIR)/usr/sbin/*locale)) rm -f $(UCLIBC_DIR)/.config $(UCLIBC_DIR)/.configured -uclibc-dirclean: +uclibc-dirclean libc-dirclean: rm -rf $(UCLIBC_DIR) -uclibc-target-utils: $(TARGET_DIR)/usr/bin/ldd +uclibc-target-utils libc-target-utils: $(TARGET_DIR)/usr/bin/ldd -uclibc-target-utils-source: $(DL_DIR)/$(UCLIBC_SOURCE) +uclibc-target-utils-source libc-target-utils-source: $(DL_DIR)/$(UCLIBC_SOURCE) ############################################################# # @@ -745,12 +745,12 @@ ifeq ($(BR2_HAVE_INCLUDES),y) UCLIBC_TARGETS+=$(TARGET_DIR)/usr/lib/libc.a endif -uclibc_target: cross_compiler uclibc $(UCLIBC_TARGETS) -uclibc_target-clean: +libc_target: cross_compiler libc $(UCLIBC_TARGETS) +libc_target-clean: rm -rf $(TARGET_DIR)/usr/include $(UCLIBC_TARGETS) \ $(TARGET_DIR)/usr/lib/libc.a $(TARGET_DIR)/usr/bin/ldd -uclibc_target-dirclean: +libc_target-dirclean: rm -rf $(TARGET_DIR)/usr/include endif -- 2.11.4.GIT