diff --git a/package/gcc-bare-metal/gcc-bare-metal.mk b/package/gcc-bare-metal/gcc-bare-metal.mk index adaae6c307..ec245db35b 100644 --- a/package/gcc-bare-metal/gcc-bare-metal.mk +++ b/package/gcc-bare-metal/gcc-bare-metal.mk @@ -20,15 +20,9 @@ HOST_GCC_BARE_METAL_DEPENDENCIES = \ host-mpfr \ host-isl -# gcc doesn't support in-tree build, so we create a 'build' -# subdirectory in the gcc sources, and build from there. -define HOST_GCC_BARE_METAL_CONFIGURE_SYMLINK - mkdir -p $(@D)/build - ln -sf ../configure $(@D)/build/configure -endef - -HOST_GCC_BARE_METAL_PRE_CONFIGURE_HOOKS += HOST_GCC_BARE_METAL_CONFIGURE_SYMLINK -HOST_GCC_BARE_METAL_SUBDIR = build +# Don't build documentation. It takes up extra space / build time, +# and sometimes needs specific makeinfo versions to work +HOST_GCC_BARE_METAL_CONF_ENV = MAKEINFO=missing HOST_GCC_BARE_METAL_MAKE_OPTS = \ $(HOST_GCC_COMMON_MAKE_OPTS) \ @@ -38,8 +32,13 @@ HOST_GCC_BARE_METAL_MAKE_OPTS = \ HOST_GCC_BARE_METAL_INSTALL_OPTS = install-gcc install-target-libgcc HOST_GCC_BARE_METAL_CONF_OPTS = \ - --target=$(TOOLCHAIN_BARE_METAL_BUILDROOT_ARCH_TUPLE) \ - --disable-initfini_array \ + --prefix=$(HOST_DIR) \ + --sysconfdir=$(HOST_DIR)/etc \ + --localstatedir=$(HOST_DIR)/var \ + $(if $$($$(PKG)_OVERRIDE_SRCDIR),,--disable-dependency-tracking) \ + $(QUIET) \ + --disable-shared \ + --disable-initfini-array \ --disable-__cxa_atexit \ --disable-libstdcxx-pch \ --with-newlib \ @@ -54,9 +53,38 @@ HOST_GCC_BARE_METAL_CONF_OPTS = \ --with-gmp=$(HOST_DIR) \ --with-mpc=$(HOST_DIR) \ --with-mpfr=$(HOST_DIR) \ - --with-isl=$(HOST_DIR) \ - --with-sysroot=$(TOOLCHAIN_BARE_METAL_BUILDROOT_SYSROOT) \ - AR_FOR_TARGET=$(HOST_DIR)/bin/$(TOOLCHAIN_BARE_METAL_BUILDROOT_ARCH_TUPLE)-ar \ - RANLIB_FOR_TARGET=$(HOST_DIR)/bin/$(TOOLCHAIN_BARE_METAL_BUILDROOT_ARCH_TUPLE)-ranlib + --with-isl=$(HOST_DIR) + +define HOST_GCC_BARE_METAL_CONFIGURE_CMDS + $(foreach arch_tuple, $(TOOLCHAIN_BARE_METAL_BUILDROOT_ARCH_TUPLE), \ + mkdir -p $(@D)/build-$(arch_tuple) && \ + cd $(@D)/build-$(arch_tuple) && \ + $(HOST_CONFIGURE_OPTS) \ + $(HOST_GCC_BARE_METAL_CONF_ENV) \ + CONFIG_SITE=/dev/null \ + $(@D)/configure \ + $(HOST_GCC_BARE_METAL_CONF_OPTS) \ + --target=$(arch_tuple) \ + --with-sysroot=$(HOST_DIR)/$(arch_tuple)/sysroot \ + AR_FOR_TARGET=$(HOST_DIR)/bin/$(arch_tuple)-ar \ + RANLIB_FOR_TARGET=$(HOST_DIR)/bin/$(arch_tuple)-ranlib + ) +endef + +define HOST_GCC_BARE_METAL_BUILD_CMDS + $(foreach arch_tuple, $(TOOLCHAIN_BARE_METAL_BUILDROOT_ARCH_TUPLE), \ + $(HOST_MAKE_ENV) $(MAKE) \ + $(HOST_GCC_BARE_METAL_MAKE_OPTS) \ + -C $(@D)/build-$(arch_tuple) + ) +endef + +define HOST_GCC_BARE_METAL_INSTALL_CMDS + $(foreach arch_tuple, $(TOOLCHAIN_BARE_METAL_BUILDROOT_ARCH_TUPLE), \ + $(HOST_MAKE_ENV) $(MAKE) \ + $(HOST_GCC_BARE_METAL_INSTALL_OPTS) \ + -C $(@D)/build-$(arch_tuple) + ) +endef $(eval $(host-autotools-package))