diff --git a/package/gcc/gcc-final/gcc-final.mk b/package/gcc/gcc-final/gcc-final.mk index 622dcf2c72..44b956196a 100644 --- a/package/gcc/gcc-final/gcc-final.mk +++ b/package/gcc/gcc-final/gcc-final.mk @@ -35,7 +35,7 @@ define HOST_GCC_FINAL_CONFIGURE_CMDS ./configure \ --prefix="$(HOST_DIR)/usr" \ --sysconfdir="$(HOST_DIR)/etc" \ - --enable-shared --enable-static \ + --enable-static \ $(QUIET) $(HOST_GCC_FINAL_CONF_OPT) \ ) endef @@ -54,6 +54,13 @@ HOST_GCC_FINAL_CONF_OPT = \ $(DISABLE_LARGEFILE) \ --with-build-time-tools=$(HOST_DIR)/usr/$(GNU_TARGET_NAME)/bin +# Disable shared libs like libstdc++ if we do static since it confuses linking +ifeq ($(BR2_PREFER_STATIC_LIB),y) +HOST_GCC_FINAL_CONF_OPT += --disable-shared +else +HOST_GCC_FINAL_CONF_OPT += --enable-shared +endif + ifeq ($(BR2_GCC_ENABLE_OPENMP),y) HOST_GCC_FINAL_CONF_OPT += --enable-libgomp else @@ -141,17 +148,29 @@ endif endif ifneq ($(HOST_GCC_FINAL_USR_LIBS),) -define HOST_GCC_FINAL_INSTALL_USR_LIBS - mkdir -p $(TARGET_DIR)/usr/lib +define HOST_GCC_FINAL_INSTALL_STATIC_LIBS + for i in $(HOST_GCC_FINAL_USR_LIBS) ; do \ + cp -dpf $(HOST_DIR)/usr/$(GNU_TARGET_NAME)/lib*/$${i}.a \ + $(STAGING_DIR)/usr/lib/ ; \ + done +endef + +ifeq ($(BR2_PREFER_STATIC_LIB),) +define HOST_GCC_FINAL_INSTALL_SHARED_LIBS for i in $(HOST_GCC_FINAL_USR_LIBS) ; do \ cp -dpf $(HOST_DIR)/usr/$(GNU_TARGET_NAME)/lib*/$${i}.so* \ $(STAGING_DIR)/usr/lib/ ; \ - cp -dpf $(HOST_DIR)/usr/$(GNU_TARGET_NAME)/lib*/$${i}.a \ - $(STAGING_DIR)/usr/lib/ ; \ cp -dpf $(HOST_DIR)/usr/$(GNU_TARGET_NAME)/lib*/$${i}.so* \ $(TARGET_DIR)/usr/lib/ ; \ done endef +endif + +define HOST_GCC_FINAL_INSTALL_USR_LIBS + mkdir -p $(TARGET_DIR)/usr/lib + $(HOST_GCC_FINAL_INSTALL_STATIC_LIBS) + $(HOST_GCC_FINAL_INSTALL_SHARED_LIBS) +endef HOST_GCC_FINAL_POST_INSTALL_HOOKS += HOST_GCC_FINAL_INSTALL_USR_LIBS endif