New variables FINAL_LDFLAGS and CORE_LDFLAGS such that ALL_LDFLAGS is now a combination of the two, and is used for final linking of an executable re shared library/bundle, while CORE_LDFLAGS is used when performing a partial link in a subproject.

This commit is contained in:
Richard Frith-Macdonald 2020-11-14 07:31:16 +00:00
parent 8070ae6228
commit b9984cae70
3 changed files with 41 additions and 25 deletions

View file

@ -1,3 +1,12 @@
2020-11-14 Richard Frith-Macdonald <rfm@gnu.org>
* rules.make:
* target.make:
New variables FINAL_LDFLAGS and CORE_LDFLAGS such that ALL_LDFLAGS is
now a combination of the two, and is used for final linking of an
executable re shared library/bundle, while CORE_LDFLAGS is used when
performing a partial link in a subproject.
2020-10-31 Yavor Doganov <yavor@gnu.org>
* Instance/Documentation/texi.make: Honor @setfilename.

View file

@ -337,13 +337,19 @@ $(ADDITIONAL_JAVACFLAGS) $(AUXILIARY_JAVACFLAGS)
ALL_JAVAHFLAGS = $(INTERNAL_CLASSPATHFLAGS) $(ADDITIONAL_JAVAHFLAGS) \
$(AUXILIARY_JAVAHFLAGS)
# CORE_LDFLAGS are those used for both partial link and final link.
ifeq ($(shared),no)
ALL_LDFLAGS = $(STATIC_LDFLAGS)
CORE_LDFLAGS = $(STATIC_LDFLAGS)
else
ALL_LDFLAGS =
CORE_LDFLAGS =
endif
ALL_LDFLAGS += $(ADDITIONAL_LDFLAGS) $(AUXILIARY_LDFLAGS) $(GUI_LDFLAGS) \
CORE_LDFLAGS += $(ADDITIONAL_LDFLAGS) $(AUXILIARY_LDFLAGS) $(GUI_LDFLAGS) \
$(BACKEND_LDFLAGS) $(SYSTEM_LDFLAGS) $(INTERNAL_LDFLAGS)
# ALL_LDFLAGS are the set of flags used in the final link of an executable
# or a shared library/bundle.
ALL_LDFLAGS += $(CORE_LDFLAGS) $(FINAL_LDFLAGS)
# In some cases, ld is used for linking instead of $(CC), so we can't use
# this in ALL_LDFLAGS
CC_LDFLAGS = $(RUNTIME_FLAG) $(ARC_OBJCFLAGS)

View file

@ -330,7 +330,7 @@ AFTER_INSTALL_SHARED_LIB_CMD = \
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE) )
OBJ_MERGE_CMD = \
$(LD) -nostdlib -keep_private_externs $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
$(LD) -nostdlib -keep_private_externs $(OBJ_MERGE_CMD_FLAG) $(CORE_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
STATIC_LIB_LINK_CMD = \
/usr/bin/libtool $(STATIC_LD_PREFLAGS) -static $(ARCH_FLAGS) $(ALL_LDFLAGS) -o $@ $^ \
@ -518,7 +518,7 @@ AFTER_INSTALL_SHARED_LIB_CHOWN = \
chown $(CHOWN_TO) $(LIB_LINK_FILE))
OBJ_MERGE_CMD = \
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(CORE_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
SHARED_CFLAGS += -fPIC
SHARED_LIBEXT = .so
@ -526,7 +526,7 @@ SHARED_LIBEXT = .so
HAVE_BUNDLES = yes
BUNDLE_LD = $(LD)
BUNDLE_LDFLAGS += -shared
ADDITIONAL_LDFLAGS += -rdynamic
FINAL_LDFLAGS = -rdynamic
STATIC_LDFLAGS += -static
endif
#
@ -567,7 +567,7 @@ AFTER_INSTALL_SHARED_LIB_CHOWN = \
chown $(CHOWN_TO) $(LIB_LINK_SONAME_FILE); \
chown $(CHOWN_TO) $(LIB_LINK_FILE))
OBJ_MERGE_CMD = \
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(CORE_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
SHARED_CFLAGS += -fPIC
SHARED_LIBEXT = .so
@ -575,7 +575,7 @@ SHARED_LIBEXT = .so
HAVE_BUNDLES = yes
BUNDLE_LD = $(LD)
BUNDLE_LDFLAGS += -shared
ADDITIONAL_LDFLAGS += -rdynamic
FINAL_LDFLAGS = -rdynamic
STATIC_LDFLAGS += -static
endif
@ -601,7 +601,7 @@ SHARED_LIB_LINK_CMD = \
$(RM_LN_S) $(LIB_LINK_FILE); \
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
OBJ_MERGE_CMD = \
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(CORE_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
SHARED_CFLAGS += -fPIC
SHARED_LIBEXT = .so
@ -609,7 +609,7 @@ SHARED_LIBEXT = .so
HAVE_BUNDLES = yes
BUNDLE_LD = $(LD)
BUNDLE_LDFLAGS += -shared
ADDITIONAL_LDFLAGS += -rdynamic
FINAL_LDFLAGS = -rdynamic
ADDITIONAL_INCLUDE_DIRS +=
STATIC_LDFLAGS += -static
endif
@ -634,7 +634,7 @@ SHARED_LIB_LINK_CMD = \
$(RM_LN_S) $(LIB_LINK_FILE); \
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
OBJ_MERGE_CMD = \
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(CORE_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
SHARED_CFLAGS += -fPIC
SHARED_LIBEXT = .so
@ -642,7 +642,8 @@ SHARED_LIBEXT = .so
HAVE_BUNDLES = yes
BUNDLE_LD = $(LD)
BUNDLE_LDFLAGS += -shared
ADDITIONAL_LDFLAGS += -rdynamic -Wl,-R/usr/pkg/lib -L/usr/pkg/lib -Wl,-R/usr/X11R6/lib -L/usr/X11R6/lib
ADDITIONAL_LDFLAGS += -Wl,-R/usr/pkg/lib -L/usr/pkg/lib -Wl,-R/usr/X11R6/lib -L/usr/X11R6/lib
FINAL_LDFLAGS = -rdynamic
ADDITIONAL_INCLUDE_DIRS += -I/usr/pkg/include
STATIC_LDFLAGS += -static
endif
@ -680,7 +681,7 @@ AFTER_INSTALL_SHARED_LIB_CMD = \
)
OBJ_MERGE_CMD = \
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(CORE_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
SHARED_CFLAGS += -fPIC
SHARED_LIBEXT = .so
@ -714,7 +715,7 @@ SHARED_LIB_LINK_CMD = \
$(RM_LN_S) $(LIB_LINK_FILE); \
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
OBJ_MERGE_CMD = \
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(CORE_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
SHARED_CFLAGS += -fPIC
SHARED_LIBEXT = .so
@ -722,7 +723,7 @@ SHARED_LIBEXT = .so
HAVE_BUNDLES = yes
BUNDLE_LD = $(LD)
BUNDLE_LDFLAGS += -shared
ADDITIONAL_LDFLAGS += -rdynamic
FINAL_LDFLAGS = -rdynamic
STATIC_LDFLAGS += -static
# Newer gcc's don't define this in Objective-C programs:
AUXILIARY_CPPFLAGS += -D__LANGUAGES_C__
@ -771,7 +772,7 @@ SHARED_CFLAGS += -fPIC
SHARED_LIBEXT = .so
OBJ_MERGE_CMD = \
$(LD) $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
$(LD) $(OBJ_MERGE_CMD_FLAG) $(CORE_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
ADDITIONAL_LDFLAGS +=
STATIC_LDFLAGS +=
@ -846,7 +847,7 @@ DLL_LIBEXT = .dll
ifneq ($(CC),clang)
OBJ_MERGE_CMD = \
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(CORE_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
else
OBJ_MERGE_CMD = \
ar cr $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
@ -945,7 +946,7 @@ DLL_LIBEXT = .dll
ifneq ($(CC),clang)
OBJ_MERGE_CMD = \
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(CORE_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
else
OBJ_MERGE_CMD = \
ar cr $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
@ -1024,7 +1025,7 @@ CYGWIN_LD_FLAGS = -Wl,--export-all-symbols -Wl,--enable-auto-import
#SHARED_CFLAGS +=
OBJ_MERGE_CMD = \
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) $(CYGWIN_LD_FLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(CORE_LDFLAGS) $(CYGWIN_LD_FLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
HAVE_BUNDLES = yes
BUNDLE_LD = $(LD)
@ -1085,7 +1086,7 @@ AFTER_INSTALL_SHARED_LIB_CHOWN = \
chown $(CHOWN_TO) $(LIB_LINK_FILE))
OBJ_MERGE_CMD = \
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(CORE_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
SHARED_CFLAGS += -fpic -fPIC -std=gnu99
SHARED_LIBEXT = .so
@ -1145,7 +1146,7 @@ SHARED_LIB_LINK_CMD = \
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
OBJ_MERGE_CMD = \
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(CORE_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
ifeq ($(CC), cc)
SHARED_CFLAGS += +z
@ -1206,7 +1207,7 @@ AFTER_INSTALL_SHARED_LIB_CHOWN = \
chown $(CHOWN_TO) $(LIB_LINK_FILE))
OBJ_MERGE_CMD = \
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(CORE_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
SHARED_CFLAGS += -fPIC
SHARED_LIBEXT = .so
@ -1214,7 +1215,7 @@ SHARED_LIBEXT = .so
HAVE_BUNDLES = yes
BUNDLE_LD = $(LD)
BUNDLE_LDFLAGS += -shared
ADDITIONAL_LDFLAGS += -rdynamic
FINAL_LDFLAGS = -rdynamic
STATIC_LDFLAGS += -static
endif
#
@ -1256,7 +1257,7 @@ AFTER_INSTALL_SHARED_LIB_CHOWN = \
chown $(CHOWN_TO) $(LIB_LINK_FILE))
OBJ_MERGE_CMD = \
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(CORE_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
SHARED_CFLAGS += -fPIC
SHARED_LIBEXT = .so
@ -1264,7 +1265,7 @@ SHARED_LIBEXT = .so
HAVE_BUNDLES = yes
BUNDLE_LD = $(LD)
BUNDLE_LDFLAGS += -shared
ADDITIONAL_LDFLAGS += -rdynamic
FINAL_LDFLAGS = -rdynamic
STATIC_LDFLAGS += -static
endif
#