gcc-final: disable shared build for static

Disable shared build for host-gcc-final when building for static targets.
We really want static or shared, there's no such thing as "preferring static"
since we can't choose with any degree of granularity for which packages.
And it confuses linking scripts having both available at the same time. Fixes:
http://autobuild.buildroot.net/results/c54/c54bdf88eff6d60c7001cb0e2cb6792cc75178db/

[Thomas: slightly amend the commit to factorize the installation of
static libraries.]

Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit is contained in:
Gustavo Zacarias 2014-05-25 19:12:57 -03:00 committed by Thomas Petazzoni
parent 82cf4f00ac
commit 169141a3eb

View File

@ -35,7 +35,7 @@ define HOST_GCC_FINAL_CONFIGURE_CMDS
./configure \ ./configure \
--prefix="$(HOST_DIR)/usr" \ --prefix="$(HOST_DIR)/usr" \
--sysconfdir="$(HOST_DIR)/etc" \ --sysconfdir="$(HOST_DIR)/etc" \
--enable-shared --enable-static \ --enable-static \
$(QUIET) $(HOST_GCC_FINAL_CONF_OPT) \ $(QUIET) $(HOST_GCC_FINAL_CONF_OPT) \
) )
endef endef
@ -54,6 +54,13 @@ HOST_GCC_FINAL_CONF_OPT = \
$(DISABLE_LARGEFILE) \ $(DISABLE_LARGEFILE) \
--with-build-time-tools=$(HOST_DIR)/usr/$(GNU_TARGET_NAME)/bin --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) ifeq ($(BR2_GCC_ENABLE_OPENMP),y)
HOST_GCC_FINAL_CONF_OPT += --enable-libgomp HOST_GCC_FINAL_CONF_OPT += --enable-libgomp
else else
@ -141,17 +148,29 @@ endif
endif endif
ifneq ($(HOST_GCC_FINAL_USR_LIBS),) ifneq ($(HOST_GCC_FINAL_USR_LIBS),)
define HOST_GCC_FINAL_INSTALL_USR_LIBS define HOST_GCC_FINAL_INSTALL_STATIC_LIBS
mkdir -p $(TARGET_DIR)/usr/lib 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 \ for i in $(HOST_GCC_FINAL_USR_LIBS) ; do \
cp -dpf $(HOST_DIR)/usr/$(GNU_TARGET_NAME)/lib*/$${i}.so* \ cp -dpf $(HOST_DIR)/usr/$(GNU_TARGET_NAME)/lib*/$${i}.so* \
$(STAGING_DIR)/usr/lib/ ; \ $(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* \ cp -dpf $(HOST_DIR)/usr/$(GNU_TARGET_NAME)/lib*/$${i}.so* \
$(TARGET_DIR)/usr/lib/ ; \ $(TARGET_DIR)/usr/lib/ ; \
done done
endef 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 HOST_GCC_FINAL_POST_INSTALL_HOOKS += HOST_GCC_FINAL_INSTALL_USR_LIBS
endif endif