summaryrefslogtreecommitdiff
path: root/mk
diff options
context:
space:
mode:
authorAbdoulaye Walsimou Gaye <awg@embtoolkit.org>2013-12-26 19:59:50 +0100
committerAbdoulaye Walsimou Gaye <awg@embtoolkit.org>2013-12-26 19:59:50 +0100
commit70e07d993dd411eb26a0ed0f620421430595e33f (patch)
tree1ab29fbf56cdc15c3918da1a28cfc63ae500c48a /mk
parent661c99a49330b8c4b5083e8f5b6aec07871bf056 (diff)
downloadembtoolkit-70e07d993dd411eb26a0ed0f620421430595e33f.tar.gz
embtoolkit-70e07d993dd411eb26a0ed0f620421430595e33f.tar.bz2
embtoolkit-70e07d993dd411eb26a0ed0f620421430595e33f.tar.xz
Toolchain: eglibc: save build time by avoiding gcc 3 stages
Signed-off-by: Abdoulaye Walsimou Gaye <awg@embtoolkit.org>
Diffstat (limited to 'mk')
-rw-r--r--mk/eglibc.mk95
-rw-r--r--mk/toolchain.mk10
2 files changed, 13 insertions, 92 deletions
diff --git a/mk/eglibc.mk b/mk/eglibc.mk
index d002088..f9fa4eb 100644
--- a/mk/eglibc.mk
+++ b/mk/eglibc.mk
@@ -29,13 +29,6 @@ EGLIBC_SVN_SITE := http://www.eglibc.org/svn
EGLIBC_SRC_DIR := $(call __embtk_pkg_localsvn,eglibc)
EGLIBC_BUILD_DIR := $(embtk_toolsb)/eglibc-build
-EGLIBC_HEADERS_NAME := eglibc_headers
-EGLIBC_HEADERS_VERSION := $(EGLIBC_VERSION)
-EGLIBC_HEADERS_SVN_SITE := $(EGLIBC_SVN_SITE)
-EGLIBC_HEADERS_SRC_DIR := $(EGLIBC_SRC_DIR)
-EGLIBC_HEADERS_BUILD_DIR := $(embtk_toolsb)/eglibc-headers-build
-EGLIBC_HEADERS_KCONFIGS_NAME := EGLIBC
-
__embtk_eglibc_cflags := $(filter-out $(__clang_cflags),$(TARGET_CFLAGS))
__embtk_eglibc_cflags += $(EMBTK_TARGET_MCPU)
__embtk_eglibc_cflags += $(EMBTK_TARGET_ABI) $(EMBTK_TARGET_FLOAT_CFLAGS)
@@ -44,8 +37,7 @@ __embtk_eglibc_cflags += $(EMBTK_TARGET_MARCH) -pipe
embtk_eglibc_cflags := $(subst -O0,-O1,$(__embtk_eglibc_cflags))
# Hard or soft floating point in eglibc?
-embtk_eglibc_floattype := $(if $(CONFIG_EMBTK_SOFTFLOAT), \
- --with-fp=no,--with-fp=yes)
+embtk_eglibc_floattype := $(if $(CONFIG_EMBTK_SOFTFLOAT),--with-fp=no,--with-fp=yes)
# Versioning in eglibc
embtk_eglibc_versioning-$(CONFIG_EMBTK_EGLIBC_DISABLE_VERSIONING) := \
@@ -55,7 +47,6 @@ embtk_eglibc-sunrpc-$(CONFIG_KEMBTK_EGLIBC_OPTION_EGLIBC_SUNRPC) := \
embtk_eglibc_optgroups_f := $(EMBTK_ROOT)/mk/eglibc/eglibc-$(EGLIBC_VERSION)-options.mk
eglibc_optgroups_f := $(EGLIBC_BUILD_DIR)/option-groups.config
-eglibc_headers_optgroups_f := $(EGLIBC_HEADERS_BUILD_DIR)/option-groups.config
ifeq ($(embtk_buildhost_os_type),bsd)
embtk_eglibc_buildcflags := -I/usr/local/include
@@ -63,71 +54,6 @@ embtk_eglibc_buildldflags := -L/usr/local/lib -lintl
endif
#
-# Install dummy eglibc needed to build gcc stage 2
-#
-define __embtk_install_eglibc_dummy
- $(TARGETGCC) -nostdlib -nostartfiles -shared -x c /dev/null \
- -o $(embtk_sysroot)/$(LIBDIR)/libc.so.6
- echo '/* GNU ld script - Dummy eglibc linker script. */' \
- > $(embtk_sysroot)/usr/$(LIBDIR)/libc.so
- $(TARGETGCC) -Wl,--verbose 2>&1 | sed -n '/OUTPUT_FORMAT/,/)/p' \
- >> $(embtk_sysroot)/usr/$(LIBDIR)/libc.so
- echo 'GROUP(AS_NEEDED(libc.so.6))' \
- >> $(embtk_sysroot)/usr/$(LIBDIR)/libc.so
-endef
-
-#
-# eglibc headers install
-#
-
-define embtk_configure_eglibc_headers
- cd $(EGLIBC_HEADERS_BUILD_DIR); \
- BUILD_CC=$(HOSTCC_CACHED) \
- CFLAGS="$(embtk_eglibc_cflags)" \
- CC=$(TARGETGCC) \
- CXX=$(TARGETGCXX) \
- AR=$(TARGETAR) \
- RANLIB=$(TARGETRANLIB) \
- READELF=$(TARGETREADELF) \
- NM=$(TARGETNM) \
- OBJCOPY=$(TARGETOBJCOPY) \
- OBJDUMP=$(TARGETDUMP) \
- $(CONFIG_EMBTK_SHELL) $(EGLIBC_SRC_DIR)/libc/configure \
- --prefix=/usr --with-headers=$(embtk_sysroot)/usr/include \
- --host=$(STRICT_GNU_TARGET) \
- --target=$(STRICT_GNU_TARGET) \
- --build=$(HOST_BUILD) \
- $(embtk_eglibc_floattype) --disable-profile --without-gd --without-cvs \
- --enable-add-ons --enable-kernel="2.6.27" \
- $(embtk_eglibc_versioning-y) \
- $(embtk_eglibc-sunrpc-y) \
- --with-bugurl=$(EMBTK_BUGURL)
- touch $(call __embtk_pkg_dotconfigured_f,eglibc_headers)
-endef
-
-define __embtk_install_eglibc_headers
- $(call embtk_pinfo,"Installing eglibc headers...")
- $(call embtk_download_pkg,eglibc)
- touch `find $(EGLIBC_SRC_DIR) -name configure`
- $(embtk_parse_eglibc_optgroups)
- $(embtk_configure_eglibc_headers)
- $(MAKE) -C $(EGLIBC_HEADERS_BUILD_DIR) install-headers \
- install_root=$(embtk_sysroot) install-bootstrap-headers=yes && \
- $(MAKE) -C $(EGLIBC_HEADERS_BUILD_DIR) csu/subdir_lib
- cp $(EGLIBC_HEADERS_BUILD_DIR)/csu/crt1.o $(embtk_sysroot)/usr/$(LIBDIR)/
- cp $(EGLIBC_HEADERS_BUILD_DIR)/csu/crti.o $(embtk_sysroot)/usr/$(LIBDIR)/
- cp $(EGLIBC_HEADERS_BUILD_DIR)/csu/crtn.o $(embtk_sysroot)/usr/$(LIBDIR)/
- $(__embtk_install_eglibc_dummy)
- touch $(call __embtk_pkg_dotinstalled_f,eglibc_headers)
- $(call __embtk_pkg_gen_dotkconfig_f,eglibc_headers)
-endef
-
-define embtk_install_eglibc_headers
- $(if $(call __embtk_pkg_installed-y,eglibc_headers),true, \
- $(__embtk_install_eglibc_headers))
-endef
-
-#
# eglibc install
#
@@ -160,6 +86,9 @@ endef
define __embtk_install_eglibc
$(call embtk_pinfo,"Installing eglibc...")
+ $(call embtk_download_pkg,eglibc)
+ touch `find $(EGLIBC_SRC_DIR) -name configure`
+ $(embtk_parse_eglibc_optgroups)
$(embtk_configure_eglibc)
PATH=$(PATH):$(embtk_tools)/bin/ $(MAKE) -C $(EGLIBC_BUILD_DIR) $(J) \
BUILD_CFLAGS="$(embtk_eglibc_buildcflags)" \
@@ -184,10 +113,6 @@ define embtk_cleanup_eglibc
rm -rf $(EGLIBC_BUILD_DIR)
endef
-define embtk_cleanup_eglibc_headers
- rm -rf $(EGLIBC_HEADERS_BUILD_DIR)
-endef
-
#
# options groups parsing
#
@@ -195,11 +120,9 @@ __embtk_get_eglibc_optgroups = grep "CONFIG_KEMBTK_EGLIBC_" $(EMBTK_DOTCONFIG) \
| sed -e 's/CONFIG_KEMBTK_EGLIBC_*//g' | sed -e 's/"//g'
define embtk_parse_eglibc_optgroups
mkdir -p $(EGLIBC_BUILD_DIR)
- mkdir -p $(EGLIBC_HEADERS_BUILD_DIR)
- cat $(embtk_eglibc_optgroups_f) > $(eglibc_headers_optgroups_f)
- echo "###############################" >> $(eglibc_headers_optgroups_f)
- echo "# From embtk-$(EMBTK_VERSION) #" >> $(eglibc_headers_optgroups_f)
- echo "###############################" >> $(eglibc_headers_optgroups_f)
- $(__embtk_get_eglibc_optgroups) >> $(eglibc_headers_optgroups_f)
- cp $(eglibc_headers_optgroups_f) $(eglibc_optgroups_f)
+ cat $(embtk_eglibc_optgroups_f) > $(eglibc_optgroups_f)
+ echo "###############################" >> $(eglibc_optgroups_f)
+ echo "# From embtk-$(EMBTK_VERSION) #" >> $(eglibc_optgroups_f)
+ echo "###############################" >> $(eglibc_optgroups_f)
+ $(__embtk_get_eglibc_optgroups) >> $(eglibc_optgroups_f)
endef
diff --git a/mk/toolchain.mk b/mk/toolchain.mk
index f46ede2..6161007 100644
--- a/mk/toolchain.mk
+++ b/mk/toolchain.mk
@@ -155,14 +155,12 @@ AUTOTOOLS_INSTALL += automake_install
# GNU sed
include mk/gsed.mk
-__toolchain_gsed-y := $(if $(findstring bsd,$(embtk_buildhost_os_type)),gsed_install)
# BSD make
include mk/bmake.mk
# GNU make
include mk/gmake.mk
-__toolchain_gmake-y := $(if $(findstring bsd,$(embtk_buildhost_os_type)),gmake_install)
# Toolchain internals
__xtools_compiler-$(CONFIG_EMBTK_LLVM_ONLY_TOOLCHAIN) := clangllvm-$(LLVM_VERSION)
@@ -178,9 +176,10 @@ TOOLCHAIN_BUILD_DIR := $(TOOLCHAIN_DIR)
TOOLCHAIN_SRC_DIR := $(TOOLCHAIN_DIR)
TOOLCHAIN_PRE_DEPS-y := ccache_install $(AUTOTOOLS_INSTALL)
-TOOLCHAIN_PRE_DEPS-y += $(__toolchain_gsed-y) $(__toolchain_gmake-y)
-TOOLCHAIN_PRE_DEPS-y += $(if $(CONFIG_EMBTK_TOOLCHAIN_PREDEP_GPERF_HOST), \
- gperf_host_install)
+ifeq ($(embtk_buildhost_os_type),bsd)
+TOOLCHAIN_PRE_DEPS-y += gsed_install gmake_install
+endif
+TOOLCHAIN_PRE_DEPS-$(CONFIG_EMBTK_TOOLCHAIN_PREDEP_GPERF_HOST) += gperf_host_install
__gcc3_toolchain-$(CONFIG_EMBTK_GCC_ONLY_TOOLCHAIN) := gcc3_install
__gcc3_toolchain-$(CONFIG_EMBTK_GCC_DEFAULT_TOOLCHAIN) := gcc3_install
@@ -205,7 +204,6 @@ TOOLCHAIN_DEPS-y := linux_headers_install gmp_host_install
TOOLCHAIN_DEPS-y += mpfr_host_install mpc_host_install binutils_install
TOOLCHAIN_DEPS-$(CONFIG_EMBTK_HAVE_LLVM) += llvm_install
TOOLCHAIN_DEPS-y += gcc1_install
-TOOLCHAIN_DEPS-$(CONFIG_EMBTK_CLIB_EGLIBC) += $(embtk_clib)_headers_install gcc2_install
TOOLCHAIN_DEPS-$(CONFIG_EMBTK_CLIB_UCLIBC) += $(embtk_clib)_headers_install gcc2_install
TOOLCHAIN_DEPS-y += $(embtk_clib)_install
TOOLCHAIN_DEPS-y += $(__gcc3_toolchain-y) $(__llvm_compiler-rt-y)