4 # Determine target specific settings
6 # Copyright (C) 1997 Free Software Foundation, Inc.
8 # Author: Scott Christley <scottc@net-community.com>
9 # Author: Ovidiu Predescu <ovidiu@net-community.com>
11 # This file is part of the GNUstep Makefile Package.
13 # This library is free software; you can redistribute it and/or
14 # modify it under the terms of the GNU General Public License
15 # as published by the Free Software Foundation; either version 2
16 # of the License, or (at your option) any later version.
18 # You should have received a copy of the GNU General Public
19 # License along with this library; see the file COPYING.LIB.
20 # If not, write to the Free Software Foundation,
21 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
23 # This file should not contain any conditional based on the value of
24 # the 'shared' variable, because we have not set it up yet when this
28 # Host and target specific settings
30 ifeq ($(findstring solaris, $(GNUSTEP_TARGET_OS)), solaris)
31 X_INCLUDES := $(X_INCLUDES)/X11
35 # Target specific libraries
37 TARGET_SYSTEM_LIBS = $(CONFIG_SYSTEM_LIBS) -lm
38 ifneq ("$(objc_threaded)","")
39 INTERNAL_CFLAGS = -D_REENTRANT
40 INTERNAL_OBJCFLAGS = -D_REENTRANT
41 AUXILIARY_OBJC_LIBS += $(objc_threaded)
43 TARGET_SYSTEM_LIBS += $(objc_threaded)
47 ifeq ($(findstring mingw32, $(GNUSTEP_TARGET_OS)), mingw32)
48 TARGET_SYSTEM_LIBS = $(CONFIG_SYSTEM_LIBS) \
49 -lws2_32 -ladvapi32 -lcomctl32 -luser32 -lcomdlg32 \
50 -lmpr -lnetapi32 -lm -I. # the -I is a dummy to avoid -lm^M
52 ifeq ($(findstring cygwin, $(GNUSTEP_TARGET_OS)), cygwin)
53 TARGET_SYSTEM_LIBS = $(CONFIG_SYSTEM_LIBS) -lm -I.
55 ifeq ($(findstring solaris, $(GNUSTEP_TARGET_OS)), solaris)
56 TARGET_SYSTEM_LIBS = $(CONFIG_SYSTEM_LIBS) -lsocket -lnsl -lm
58 ifeq ($(findstring sysv4.2, $(GNUSTEP_TARGET_OS)), sysv4.2)
59 TARGET_SYSTEM_LIBS = $(CONFIG_SYSTEM_LIBS) -lsocket -lnsl -lm
63 # Specific settings for building shared libraries, static libraries,
64 # and bundles on various systems
68 # For each target, a few target-specific variables need to be set.
70 # The first one is SHARED_LIB_LINK_CMD - which should be set to the
71 # command(s) to use to link a shared library on that platform. Please
72 # note that the variables (stuff like $(CC)) in it are not expanded
73 # until SHARED_LIB_LINK_CMD is actually used (STATIC_LIB_LINK_CMD is
74 # the equivalent variable, used for static libraries).
76 # SHARED_LIB_LINK_CMD will be used to link standard shared libraries,
77 # and frameworks. It should use the following variables (which are set
78 # by library.make or framework.make before executing
79 # SHARED_LIB_LINK_CMD) to refer to what it needs to link (please note
80 # that STATIC_LIB_LINK_CMD will also use these variables with similar
81 # meanings; but not all of them, as noted):
83 # LIB_LINK_OBJ_DIR: where the newly created library should be.
84 # Usually GNUSTEP_OBJ_DIR for libraries, and FRAMEWORK_LIBRARY_DIR_NAME
86 # LIB_LINK_VERSION_FILE: the final file to create, having full
87 # version information: typically `libgnustep-base.so.1.5.3' for shared
88 # libraries, and `libgnustep-base.a' for static libraries. For DLL
89 # libraries, this is the import library libgnustep-base.dll.a. The
90 # reason we use the import library is because that is the code which
91 # needs to be installed in the library path. So by setting
92 # LIB_LINK_VERSION_FILE to the import library, the standard code to
93 # install it in the library path will work for Windows. The DLL
94 # library instead needs to be installed in the PATH, so we have separate
96 # LIB_LINK_SONAME_FILE: this is only used for shared libraries; it
97 # should be passed in the -Wl,-soname argument of most linkers when
98 # building the LIB_LINK_VERSION_FILE. Typically `libgnustep-base.so.1'
99 # (but might also be `libgnustep-base.so.1.0' if INTERFACE_VERSION
100 # has been manually changed when using library.make). On many
101 # platforms, it's appropriate/standard to also create this file as
102 # a symlink to LIB_LINK_VERSION_FILE. If LIB_LINK_VERSION_FILE is
103 # the same as LIB_LINK_SONAME_FILE, then the symlink should not be
105 # LIB_LINK_FILE: this is only used for shared libraries; it should
106 # be created as a symlink to LIB_LINK_VERSION_FILE (or to
107 # LIB_LINK_SONAME_FILE if it's created on that platform).
108 # Typically `libgnustep-base.so'.
109 # LIB_LINK_INSTALL_NAME: on some platforms, when a shared library is
110 # linked, a default install name of the library is hardcoded into
111 # the library. This is that name.
112 # LIB_LINK_DLL_FILE: on Windows, this is the DLL that gets created
113 # and installed in the Tools/ directory (eg, gnustep-base.dll).
114 # Please note that while this is the main file you need to use the
115 # library at runtime, on Windows we treat this as a side-effect of
116 # the compilation; the compilation target for make is
117 # LIB_LINK_VERSION_FILE, which is the import library.
119 # AFTER_INSTALL_SHARED_LIB_CMD provides commands to be executed after
120 # installation (at least for libraries, not for frameworks at the
121 # moment), and is supposed to setup symlinks properly in the
122 # installation directory. It uses the same variables, except for
123 # LIB_LINK_INSTALL_DIR which is the full final path to where the
124 # library (and symlinks) is going to be installed.
126 # AFTER_INSTALL_STATIC_LIB_CMD is similar.
129 # For frameworks on unusual platforms, you might also need to set
130 # EXTRACT_CLASS_NAMES_COMMAND. This should be a command which is
131 # evaluated on $(object_file) and returns a list of classes
132 # implemented in the object_file. Our default command is the
133 # following (you can override it with another one in your target's
134 # section if you need), which runs 'nm' on the object file, and
135 # retrieve all symbols of the form __objc_class_name_NSObject which
136 # are not 'U' (undefined) ... an __objc_class_name_NSObject is defined
137 # in the module implementing the class, and referenced by all other
138 # modules needing to use the class. So if we have an
139 # __objc_class_name_XXX which is not 'U' (which would be a reference
140 # to a class implemented elsewhere), it must be a class implemented in
143 # The 'sed' command parses a set of lines, and extracts lines starting
144 # with __objc_class_name_XXXX Y, where XXXX is a string of characters
145 # from A-Za-z_. and Y is not 'U'. It then replaces the whole line
146 # with XXXX, and prints the result. '-n' disables automatic printing
147 # for portability, so we are sure we only print what we want on all
149 EXTRACT_CLASS_NAMES_COMMAND = nm -Pg $$object_file | sed -n -e '/^__objc_class_name_[A-Za-z_.]* [^U]/ {s/^__objc_class_name_\([A-Za-z_.]*\) [^U].*/\1/p;}'
152 # This is the generic version - if the target is not in the following list,
153 # this setup will be used. It the target does not override variables here
154 # with its own version, these generic definitions will be used.
156 HAVE_SHARED_LIBS = no
157 STATIC_LIB_LINK_CMD = \
158 $(AR) $(ARFLAGS) $(AROUT)$(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) $^;\
159 $(RANLIB) $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE)
160 AFTER_INSTALL_STATIC_LIB_CMD = \
161 (cd $(LIB_LINK_INSTALL_DIR); \
162 $(RANLIB) $(LIB_LINK_VERSION_FILE))
163 SHARED_LIB_LINK_CMD =
166 AFTER_INSTALL_SHARED_LIB_CMD = \
167 (cd $(LIB_LINK_INSTALL_DIR); \
168 $(RM_LN_S) $(LIB_LINK_FILE); \
169 $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
170 AFTER_INSTALL_SHARED_LIB_CHOWN = \
171 (cd $(LIB_LINK_INSTALL_DIR); \
172 chown $(CHOWN_TO) $(LIB_LINK_FILE))
174 BUNDLE_LINK_CMD = $(BUNDLE_LD) $(BUNDLE_LDFLAGS) $(ALL_LDFLAGS) \
175 -o $(LDOUT)$(BUNDLE_FILE) $(OBJ_FILES_TO_LINK) \
178 ####################################################
180 # Start of system specific settings
182 ####################################################
184 ####################################################
188 ifeq ($(findstring rhapsody5, $(GNUSTEP_TARGET_OS)), rhapsody5)
189 ifeq ($(OBJC_RUNTIME_LIB), apple)
193 HAVE_SHARED_LIBS = yes
194 SHARED_LIBEXT = .dylib
196 ifeq ($(FOUNDATION_LIB), apple)
197 # Use the NeXT compiler
201 ARCH_FLAGS = $(foreach a, $(arch), -arch $(a))
202 INTERNAL_OBJCFLAGS += $(ARCH_FLAGS)
203 INTERNAL_CFLAGS += $(ARCH_FLAGS)
204 INTERNAL_LDFLAGS += $(ARCH_FLAGS)
209 Library/Libraries/$(GNUSTEP_TARGET_LDIR)
211 ifneq ($(OBJC_COMPILER), NeXT)
212 SHARED_LIB_LINK_CMD = \
213 $(CC) $(SHARED_LD_PREFLAGS) \
214 -dynamiclib $(ARCH_FLAGS) -dynamic \
215 -compatibility_version 1 -current_version 1 \
216 -install_name $(GNUSTEP_SYSTEM_ROOT)/$(TARGET_LIB_DIR)/$(LIB_LINK_FILE) \
217 $(ALL_LDFLAGS) -o $@ \
218 -framework Foundation \
220 $(INTERNAL_LIBRARIES_DEPEND_UPON) $(LIBRARIES_FOUNDATION_DEPEND_UPON) \
221 -lobjc -lgcc $^ $(SHARED_LD_POSTFLAGS); \
222 (cd $(LIB_LINK_OBJ_DIR); $(RM_LN_S) $(LIB_LINK_FILE); \
223 $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
224 else # OBJC_COMPILER=NeXT
225 SHARED_LIB_LINK_CMD = \
226 $(CC) $(SHARED_LD_PREFLAGS) \
227 -dynamiclib $(ARCH_FLAGS) -dynamic \
228 -compatibility_version 1 -current_version 1 \
229 -read_only_relocs warning -undefined warning \
230 -install_name $(GNUSTEP_SYSTEM_ROOT)/$(TARGET_LIB_DIR)/$(LIB_LINK_FILE) \
231 $(ALL_LDFLAGS) -o $@ \
232 $(INTERNAL_LIBRARIES_DEPEND_UPON) $(LIBRARIES_FOUNDATION_DEPEND_UPON) \
233 -framework Foundation \
234 $^ $(SHARED_LD_POSTFLAGS); \
235 (cd $(LIB_LINK_OBJ_DIR); $(RM_LN_S) $(LIB_LINK_FILE); \
236 $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
237 endif # OBJC_COMPILER
240 $(CC) -nostdlib -r -d $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
242 STATIC_LIB_LINK_CMD = \
243 /usr/bin/libtool $(STATIC_LD_PREFLAGS) -static $(ARCH_FLAGS) $(ALL_LDFLAGS) -o $@ $^ \
244 $(STATIC_LD_POSTFLAGS)
246 # This doesn't work with 4.1, what about others?
247 #ADDITIONAL_LDFLAGS += -Wl,-read_only_relocs,suppress
249 AFTER_INSTALL_STATIC_LIB_CMD =
251 SHARED_CFLAGS += -dynamic
252 SHARED_LIBEXT = .dylib
255 BUNDLE_LDFLAGS += -bundle -undefined suppress $(ARCH_FLAGS)
258 # end MacOSX-Server 1.0
260 ####################################################
262 ####################################################
266 ifeq ($(findstring darwin, $(GNUSTEP_TARGET_OS)), darwin)
267 ifeq ($(OBJC_RUNTIME_LIB), apple)
269 # Set flags to ignore the MacOSX headers
270 ifneq ($(FOUNDATION_LIB), apple)
271 INTERNAL_OBJCFLAGS += -no-cpp-precomp -nostdinc -I/usr/include
275 HAVE_SHARED_LIBS = yes
276 SHARED_LIBEXT = .dylib
278 # The output of nm is slightly different on Darwin, it doesn't support -P
279 EXTRACT_CLASS_NAMES_COMMAND = nm -g $$object_file | sed -n -e '/[^U] ___objc_class_name_/ {s/[0-9a-f]* [^U] ___objc_class_name_//p;}'
281 ifeq ($(FOUNDATION_LIB), apple)
283 ARCH_FLAGS = $(foreach a, $(arch), -arch $(a))
284 INTERNAL_OBJCFLAGS += $(ARCH_FLAGS)
285 INTERNAL_CFLAGS += $(ARCH_FLAGS)
286 INTERNAL_LDFLAGS += $(ARCH_FLAGS)
290 # The developer should set this explicitly
291 #DYLIB_COMPATIBILITY_VERSION = -compatibility_version $(VERSION)
292 DYLIB_CURRENT_VERSION = -current_version $(VERSION)
294 # Remove empty dirs from the compiler/linker flags (ie, remove -Idir and
295 # -Ldir flags where dir is empty).
296 REMOVE_EMPTY_DIRS = yes
298 ifeq ($(FOUNDATION_LIB), apple)
299 DYLIB_DEF_FRAMEWORKS += -framework Foundation
302 ifeq ($(CC_BUNDLE), no)
305 INTERNAL_LDFLAGS += -flat_namespace -undefined warning
307 SHARED_LD_PREFLAGS += -Wl,-noall_load -read_only_relocs warning $(CC_LDFLAGS)
308 # Useful flag: -Wl,-single_module. This flag only
309 # works starting with 10.3. libs w/ffcall don't link on darwin/ix86 without it.
310 ifeq ($(findstring darwin7, $(GNUSTEP_TARGET_OS)), darwin7)
311 SHARED_LD_PREFLAGS += -single_module
313 ifeq ($(findstring darwin8, $(GNUSTEP_TARGET_OS)), darwin8)
314 SHARED_LD_PREFLAGS += -single_module
315 BUNDLE_LIBS += -lSystemStubs
317 SHARED_LIB_LINK_CMD = \
319 $(SHARED_LD_PREFLAGS) \
320 $(ARCH_FLAGS) -dynamic -dynamiclib \
321 $(DYLIB_COMPATIBILITY_VERSION) \
322 $(DYLIB_CURRENT_VERSION) \
323 -install_name $(LIB_LINK_INSTALL_NAME) \
324 $(ALL_LDFLAGS) -o $@ \
325 $(DYLIB_DEF_FRAMEWORKS) \
326 $^ $(INTERNAL_LIBRARIES_DEPEND_UPON) $(LIBRARIES_FOUNDATION_DEPEND_UPON) \
327 $(SHARED_LD_POSTFLAGS); \
328 (cd $(LIB_LINK_OBJ_DIR); \
329 $(RM_LN_S) $(LIB_LINK_FILE); \
330 if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\
331 $(RM_LN_S) $(LIB_LINK_SONAME_FILE);\
332 $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_SONAME_FILE); \
334 $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
336 BUNDLE_LD = /usr/bin/ld
337 BUNDLE_LDFLAGS += -bundle /usr/lib/bundle1.o
342 #DYLIB_EXTRA_FLAGS = -read_only_relocs warning -undefined warning -fno-common
343 DYLIB_EXTRA_FLAGS = -flat_namespace -undefined warning
344 # Useful optimization flag: -Wl,-single_module. This flag only
345 # works starting with 10.3.
346 ifeq ($(findstring darwin7, $(GNUSTEP_TARGET_OS)), darwin7)
347 DYLIB_EXTRA_FLAGS += -Wl,-single_module
350 SHARED_LIB_LINK_CMD = \
351 $(CC) $(SHARED_LD_PREFLAGS) \
352 -dynamiclib $(ARCH_FLAGS) \
353 $(DYLIB_COMPATIBILITY_VERSION) \
354 $(DYLIB_CURRENT_VERSION) \
355 -install_name $(LIB_LINK_INSTALL_NAME) \
356 $(DYLIB_EXTRA_FLAGS) \
357 $(ALL_LDFLAGS) -o $@ \
358 $(INTERNAL_LIBRARIES_DEPEND_UPON) $(LIBRARIES_FOUNDATION_DEPEND_UPON) \
359 $^ $(SHARED_LD_POSTFLAGS); \
360 (cd $(LIB_LINK_OBJ_DIR); \
361 $(RM_LN_S) $(LIB_LINK_FILE); \
362 if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\
363 $(RM_LN_S) $(LIB_LINK_SONAME_FILE);\
364 $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_SONAME_FILE); \
366 $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
368 SHARED_CFLAGS += -dynamic
371 BUNDLE_LDFLAGS += -bundle -undefined error $(ARCH_FLAGS)
375 AFTER_INSTALL_SHARED_LIB_CMD = \
376 (cd $(LIB_LINK_INSTALL_DIR); \
377 $(RM_LN_S) $(LIB_LINK_FILE); \
378 if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\
379 $(RM_LN_S) $(LIB_LINK_SONAME_FILE);\
380 $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_SONAME_FILE); \
382 $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE) )
385 $(CC) -nostdlib -r -d $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
387 STATIC_LIB_LINK_CMD = \
388 /usr/bin/libtool $(STATIC_LD_PREFLAGS) -static $(ARCH_FLAGS) $(ALL_LDFLAGS) -o $@ $^ \
389 $(STATIC_LD_POSTFLAGS)
391 AFTER_INSTALL_STATIC_LIB_CMD = \
392 (cd $(LIB_LINK_INSTALL_DIR); \
393 $(RANLIB) $(LIB_LINK_VERSION_FILE))
395 SHARED_CFLAGS += -fno-common
401 ####################################################
403 ####################################################
407 ifeq ($(GNUSTEP_TARGET_OS), nextstep4)
408 ifeq ($(OBJC_RUNTIME_LIB), nx)
413 HAVE_SHARED_LIBS = yes
415 ifeq ($(FOUNDATION_LIB), nx)
416 # Use the NeXT compiler
419 ARCH_FLAGS = $(foreach a, $(arch), -arch $(a))
420 INTERNAL_OBJCFLAGS += $(ARCH_FLAGS)
421 INTERNAL_CFLAGS += $(ARCH_FLAGS)
422 INTERNAL_LDFLAGS += $(ARCH_FLAGS)
427 Library/Libraries/$(GNUSTEP_TARGET_LDIR)
429 ifneq ($(OBJC_COMPILER), NeXT)
430 SHARED_LIB_LINK_CMD = \
431 /bin/libtool $(SHARED_LD_PREFLAGS) \
432 -dynamic -read_only_relocs suppress $(ARCH_FLAGS) \
433 -install_name $(GNUSTEP_SYSTEM_ROOT)/$(TARGET_LIB_DIR)/$(LIB_LINK_FILE) \
434 $(ALL_LDFLAGS) -o $@ \
436 $(INTERNAL_LIBRARIES_DEPEND_UPON) $(LIBRARIES_FOUNDATION_DEPEND_UPON) \
437 -lobjc -lgcc $^ $(SHARED_LD_POSTFLAGS); \
438 (cd $(LIB_LINK_OBJ_DIR); $(RM_LN_S) $(LIB_LINK_FILE); \
439 $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
441 SHARED_LIB_LINK_CMD = \
442 /bin/libtool $(SHARED_LD_PREFLAGS) \
443 -dynamic -read_only_relocs suppress $(ARCH_FLAGS) \
444 -install_name $(GNUSTEP_SYSTEM_ROOT)/$(TARGET_LIB_DIR)/$(LIB_LINK_FILE) \
447 $(INTERNAL_LIBRARIES_DEPEND_UPON) \
448 $(LIBRARIES_FOUNDATION_DEPEND_UPON) $^ \
449 $(SHARED_LD_POSTFLAGS); \
450 (cd $(LIB_LINK_OBJ_DIR); $(RM_LN_S) $(LIB_LINK_FILE); \
451 $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
454 STATIC_LIB_LINK_CMD = \
455 /bin/libtool $(STATIC_LD_PREFLAGS) -static $(ARCH_FLAGS) $(ALL_LDFLAGS) -o $@ $^ \
456 $(STATIC_LD_POSTFLAGS)
458 # This doesn't work with 4.1, what about others?
459 #ADDITIONAL_LDFLAGS += -Wl,-read_only_relocs,suppress
461 AFTER_INSTALL_STATIC_LIB_CMD =
463 SHARED_CFLAGS += -dynamic
467 BUNDLE_LDFLAGS += -r $(ARCH_FLAGS)
472 ####################################################
474 ####################################################
478 ifeq ($(GNUSTEP_TARGET_OS), nextstep3)
479 ifeq ($(OBJC_RUNTIME_LIB), nx)
484 HAVE_SHARED_LIBS = yes
486 ifeq ($(FOUNDATION_LIB), nx)
487 # Use the NeXT compiler
490 ARCH_FLAGS = $(foreach a, $(arch), -arch $(a))
491 INTERNAL_OBJCFLAGS += $(ARCH_FLAGS)
492 INTERNAL_CFLAGS += $(ARCH_FLAGS)
493 INTERNAL_LDFLAGS += $(ARCH_FLAGS)
498 Library/Libraries/$(GNUSTEP_TARGET_LDIR)
500 ifneq ($(OBJC_COMPILER), NeXT)
501 SHARED_LIB_LINK_CMD = \
502 /bin/libtool $(SHARED_LD_PREFLAGS) -dynamic -read_only_relocs suppress \
503 $(ARCH_FLAGS) $(ALL_LDFLAGS) -o $@ -framework System \
504 $(INTERNAL_LIBRARIES_DEPEND_UPON) -lobjc -lgcc -undefined warning $^ \
505 $(SHARED_LD_POSTFLAGS); \
506 (cd $(LIB_LINK_OBJ_DIR); $(RM_LN_S) $(LIB_LINK_FILE); \
507 $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
509 SHARED_LIB_LINK_CMD = \
510 /bin/libtool $(SHARED_LD_PREFLAGS) \
511 -dynamic -read_only_relocs suppress $(ARCH_FLAGS) $(ALL_LDFLAGS) -o $@ \
513 $(INTERNAL_LIBRARIES_DEPEND_UPON) $^ \
514 $(SHARED_LD_POSTFLAGS); \
515 (cd $(LIB_LINK_OBJ_DIR); $(RM_LN_S) $(LIB_LINK_FILE); \
516 $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
519 STATIC_LIB_LINK_CMD = \
520 /bin/libtool $(STATIC_LD_PREFLAGS) \
521 -static $(ARCH_FLAGS) $(ALL_LDFLAGS) -o $@ $^ $(STATIC_LD_POSTFLAGS)
523 ADDITIONAL_LDFLAGS += -Wl,-read_only_relocs,suppress
525 AFTER_INSTALL_STATIC_LIB_CMD =
527 SHARED_CFLAGS += -dynamic
531 BUNDLE_LDFLAGS += -r $(ARCH_FLAGS)
536 ####################################################
538 ####################################################
540 # Linux ELF or GNU/Hurd
542 # The following ifeq matches both 'linux-gnu' (which is GNU/Linux ELF)
543 # and 'gnu0.3' (I've been told GNUSTEP_TARGET_OS is 'gnu0.3' on
544 # GNU/Hurd at the moment). We want the same code in both cases.
545 ifeq ($(findstring gnu, $(GNUSTEP_TARGET_OS)), gnu)
546 HAVE_SHARED_LIBS = yes
547 SHARED_LIB_LINK_CMD = \
548 $(CC) $(SHARED_LD_PREFLAGS) -shared -Wl,-soname,$(LIB_LINK_SONAME_FILE) \
549 $(ALL_LDFLAGS) -o $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) $^ \
550 $(INTERNAL_LIBRARIES_DEPEND_UPON) \
551 $(SHARED_LD_POSTFLAGS);\
552 (cd $(LIB_LINK_OBJ_DIR); \
553 $(RM_LN_S) $(LIB_LINK_FILE); \
554 if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\
555 $(RM_LN_S) $(LIB_LINK_SONAME_FILE);\
556 $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_SONAME_FILE); \
558 $(LN_S) $(LIB_LINK_SONAME_FILE) $(LIB_LINK_FILE); \
560 AFTER_INSTALL_SHARED_LIB_CMD = \
561 (cd $(LIB_LINK_INSTALL_DIR); \
562 $(RM_LN_S) $(LIB_LINK_FILE); \
563 if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\
564 $(RM_LN_S) $(LIB_LINK_SONAME_FILE);\
565 $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_SONAME_FILE); \
567 $(LN_S) $(LIB_LINK_SONAME_FILE) $(LIB_LINK_FILE); \
569 AFTER_INSTALL_SHARED_LIB_CHOWN = \
570 (cd $(LIB_LINK_INSTALL_DIR); \
571 chown $(CHOWN_TO) $(LIB_LINK_SONAME_FILE); \
572 chown $(CHOWN_TO) $(LIB_LINK_FILE))
575 $(CC) -nostdlib -r $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
577 SHARED_CFLAGS += -fPIC
582 BUNDLE_LDFLAGS += -shared
583 ADDITIONAL_LDFLAGS += -rdynamic
584 STATIC_LDFLAGS += -static
589 ####################################################
591 ####################################################
593 # FreeBSD a.out (2.2.x)
595 ifeq ($(findstring freebsdaout, $(GNUSTEP_TARGET_OS)), freebsdaout)
598 HAVE_SHARED_LIBS = no
599 SHARED_LIB_LINK_CMD = \
600 $(CC) -shared -Wl,-soname,$(LIB_LINK_VERSION_FILE) \
601 $(ALL_LDFLAGS) -o $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) $^ /usr/lib/c++rt0.o;\
602 (cd $(LIB_LINK_OBJ_DIR); \
603 $(RM_LN_S) $(LIB_LINK_FILE); \
604 $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
606 SHARED_CFLAGS += -fPIC
611 BUNDLE_LDFLAGS += -shared
612 ADDITIONAL_LDFLAGS += -rdynamic
613 STATIC_LDFLAGS += -static
618 ####################################################
620 ####################################################
624 ifeq ($(findstring freebsd, $(GNUSTEP_TARGET_OS)), freebsd)
625 ifneq ($(freebsdaout), yes)
626 HAVE_SHARED_LIBS = yes
627 SHARED_LIB_LINK_CMD = \
628 $(CC) -shared -Wl,-soname,$(LIB_LINK_SONAME_FILE) \
629 $(ALL_LDFLAGS) -o $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) $^ \
630 $(INTERNAL_LIBRARIES_DEPEND_UPON) \
631 $(SHARED_LD_POSTFLAGS);\
632 (cd $(LIB_LINK_OBJ_DIR); \
633 $(RM_LN_S) $(LIB_LINK_FILE); \
634 if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\
635 $(RM_LN_S) $(LIB_LINK_SONAME_FILE);\
636 $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_SONAME_FILE); \
638 $(LN_S) $(LIB_LINK_SONAME_FILE) $(LIB_LINK_FILE))
639 AFTER_INSTALL_SHARED_LIB_CMD = \
640 (cd $(LIB_LINK_INSTALL_DIR); \
641 $(RM_LN_S) $(LIB_LINK_FILE); \
642 if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\
643 $(RM_LN_S) $(LIB_LINK_SONAME_FILE);\
644 $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_SONAME_FILE); \
646 $(LN_S) $(LIB_LINK_SONAME_FILE) $(LIB_LINK_FILE); \
648 AFTER_INSTALL_SHARED_LIB_CHOWN = \
649 (cd $(LIB_LINK_INSTALL_DIR); \
650 chown $(CHOWN_TO) $(LIB_LINK_SONAME_FILE); \
651 chown $(CHOWN_TO) $(LIB_LINK_FILE))
653 $(CC) -nostdlib -r $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
655 SHARED_CFLAGS += -fPIC
660 BUNDLE_LDFLAGS += -shared
661 ADDITIONAL_LDFLAGS += -rdynamic
662 STATIC_LDFLAGS += -static
665 ## The -pthread flag must be passed to all compilation/link commands.
667 ifeq ($(objc_threaded), -pthread)
668 INTERNAL_CFLAGS += -pthread
669 INTERNAL_OBJCFLAGS += -pthread
670 INTERNAL_LDFLAGS += -pthread
677 ####################################################
679 ####################################################
683 ifeq ($(findstring netbsd, $(GNUSTEP_TARGET_OS)), netbsd)
684 HAVE_SHARED_LIBS = yes
685 SHARED_LD_POSTFLAGS = -Wl,-R/usr/pkg/lib -L/usr/pkg/lib
686 SHARED_LIB_LINK_CMD = \
687 $(CC) -shared -Wl,-soname,$(LIB_LINK_VERSION_FILE) \
688 $(ALL_LDFLAGS) -o $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) \
689 $^ $(INTERNAL_LIBRARIES_DEPEND_UPON) \
690 $(SHARED_LD_POSTFLAGS); \
691 (cd $(LIB_LINK_OBJ_DIR); \
692 $(RM_LN_S) $(LIB_LINK_FILE); \
693 $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
695 $(CC) -nostdlib -r $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
697 SHARED_CFLAGS += -fPIC
702 BUNDLE_LDFLAGS += -shared
703 ADDITIONAL_LDFLAGS += -rdynamic -Wl,-R/usr/pkg/lib -L/usr/pkg/lib -Wl,-R/usr/X11R6/lib -L/usr/X11R6/lib
704 ADDITIONAL_INCLUDE_DIRS += -I/usr/pkg/include
705 STATIC_LDFLAGS += -static
710 ####################################################
712 ####################################################
716 ifeq ($(findstring dragonfly, $(GNUSTEP_TARGET_OS)), dragonfly)
717 HAVE_SHARED_LIBS = yes
718 SHARED_LD_POSTFLAGS = -Wl,-R/usr/pkg/lib -L/usr/pkg/lib
719 SHARED_LIB_LINK_CMD = \
720 $(CC) -shared -Wl,-soname,$(LIB_LINK_VERSION_FILE) \
721 $(ALL_LDFLAGS) -o $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) \
722 $^ $(INTERNAL_LIBRARIES_DEPEND_UPON) \
723 $(SHARED_LD_POSTFLAGS); \
724 (cd $(LIB_LINK_OBJ_DIR); \
725 $(RM_LN_S) $(LIB_LINK_FILE); \
726 $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
728 $(CC) -nostdlib -r $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
730 SHARED_CFLAGS += -fPIC
735 BUNDLE_LDFLAGS += -shared
736 ADDITIONAL_LDFLAGS += -rdynamic -Wl,-R/usr/pkg/lib -L/usr/pkg/lib -Wl,-R/usr/X11R6/lib -L/usr/X11R6/lib
737 ADDITIONAL_INCLUDE_DIRS += -I/usr/pkg/include
738 STATIC_LDFLAGS += -static
743 ####################################################
745 ####################################################
747 # OpenBSD 3.x (though set for 3.3)
749 ifeq ($(findstring openbsd, $(GNUSTEP_TARGET_OS)), openbsd)
750 HAVE_SHARED_LIBS = yes
751 SHARED_LIB_LINK_CMD = \
752 $(CC) -shared -Wl,-soname,$(LIB_LINK_SONAME_FILE) \
753 $(ALL_LDFLAGS) -o $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) $^ \
754 $(INTERNAL_LIBRARIES_DEPEND_UPON) \
755 $(SHARED_LD_POSTFLAGS);\
756 (cd $(LIB_LINK_OBJ_DIR); \
757 $(RM_LN_S) $(LIB_LINK_FILE); \
758 if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\
759 $(RM_LN_S) $(LIB_LINK_SONAME_FILE);\
760 $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_SONAME_FILE); \
762 $(LN_S) $(LIB_LINK_SONAME_FILE) $(LIB_LINK_FILE))
763 AFTER_INSTALL_SHARED_LIB_CMD = \
764 (cd $(LIB_LINK_INSTALL_DIR); \
765 $(RM_LN_S) $(LIB_LINK_FILE); \
766 if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\
767 $(RM_LN_S) $(LIB_LINK_SONAME_FILE);\
768 $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_SONAME_FILE); \
770 $(LN_S) $(LIB_LINK_SONAME_FILE) $(LIB_LINK_FILE); \
774 $(CC) -nostdlib -r $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
776 SHARED_CFLAGS += -fPIC
781 BUNDLE_LDFLAGS += -shared -fPIC
782 ADDITIONAL_LDFLAGS += -Wl,-E
783 STATIC_LDFLAGS += -static
785 # nm on OpenBSD is rather like on Darwin
786 EXTRACT_CLASS_NAMES_COMMAND = nm -g $$object_file | sed -n -e '/[^U] __objc_class_name_/ {s/[0-9a-f]* [^U] __objc_class_name_//p;}'
791 ####################################################
793 ####################################################
797 ifeq ($(findstring osf, $(GNUSTEP_TARGET_OS)), osf)
798 HAVE_SHARED_LIBS = yes
799 SHARED_LIB_LINK_CMD = \
800 $(CC) -shared -Wl,-soname,$(LIB_LINK_VERSION_FILE) \
801 $(ALL_LDFLAGS) -o $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) $^ ;\
802 (cd $(LIB_LINK_OBJ_DIR); \
803 $(RM_LN_S) $(LIB_LINK_FILE); \
804 $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
806 $(CC) -nostdlib -r $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
808 SHARED_CFLAGS += -fPIC
813 BUNDLE_LDFLAGS += -shared
814 ADDITIONAL_LDFLAGS += -rdynamic
815 STATIC_LDFLAGS += -static
816 # Newer gcc's don't define this in Objective-C programs:
817 AUXILIARY_CPPFLAGS += -D__LANGUAGES_C__
822 ####################################################
824 ####################################################
828 ifeq ($(findstring irix, $(GNUSTEP_TARGET_OS)), irix)
829 HAVE_SHARED_LIBS = yes
831 SHARED_LIB_LINK_CMD = \
832 $(CC) $(SHARED_LD_PREFLAGS) -shared -Wl,-soname,$(LIB_LINK_SONAME_FILE) \
833 $(ALL_LDFLAGS) -o $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) $^ \
834 -Wl,-rpath,$(LIB_LINK_INSTALL_DIR) \
835 $(INTERNAL_LIBRARIES_DEPEND_UPON) \
836 $(SHARED_LD_POSTFLAGS);\
837 (cd $(LIB_LINK_OBJ_DIR); \
838 $(RM_LN_S) $(LIB_LINK_FILE); \
839 if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\
840 $(RM_LN_S) $(LIB_LINK_SONAME_FILE);\
841 $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_SONAME_FILE); \
843 $(LN_S) $(LIB_LINK_SONAME_FILE) $(LIB_LINK_FILE); \
845 AFTER_INSTALL_SHARED_LIB_CMD = \
846 (cd $(LIB_LINK_INSTALL_DIR); \
847 $(RM_LN_S) $(LIB_LINK_FILE); \
848 if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\
849 $(RM_LN_S) $(LIB_LINK_SONAME_FILE);\
850 $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_SONAME_FILE); \
852 $(LN_S) $(LIB_LINK_SONAME_FILE) $(LIB_LINK_FILE); \
854 AFTER_INSTALL_SHARED_LIB_CHOWN = \
855 (cd $(LIB_LINK_INSTALL_DIR); \
856 chown $(CHOWN_TO) $(LIB_LINK_SONAME_FILE); \
857 chown $(CHOWN_TO) $(LIB_LINK_FILE))
859 SHARED_CFLAGS += -fPIC
863 /usr/bin/ld -r $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
865 ADDITIONAL_LDFLAGS +=
870 BUNDLE_LDFLAGS += -shared
875 ####################################################
877 ####################################################
881 ifeq ($(findstring mingw32, $(GNUSTEP_TARGET_OS)), mingw32)
883 HAVE_SHARED_LIBS = yes
884 # This command links the library, generates automatically the list of
885 # symbols to export, creates the DLL (eg, obj/gnustep-base.dll) and
886 # the import library (eg, obj/libgnustep-base.dll.a).
887 SHARED_LIB_LINK_CMD = \
888 $(CC) $(SHARED_LD_PREFLAGS) -shared \
889 -Wl,--enable-auto-image-base \
890 -Wl,--out-implib,$(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) \
891 $(ALL_LDFLAGS) -o $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_DLL_FILE) $^ \
892 $(INTERNAL_LIBRARIES_DEPEND_UPON) \
893 $(SHARED_LD_POSTFLAGS)
895 AFTER_INSTALL_SHARED_LIB_CMD =
896 AFTER_INSTALL_SHARED_LIB_CHOWN =
900 # Technically, in this Unix-inspired building system, a DLL is
901 # composed of a .dll file which goes in the executable path and is the
902 # one which is loaded at runtime, and a .dll.a file which goes in the
903 # library path and which is linked into the application in order to
904 # enable it use the .dll. Anything in gnustep-make which is looking
905 # for shared libs should detect / look for the .dll.a as that's what
906 # we link applications against.
907 SHARED_LIBEXT = .dll.a
912 $(CC) -nostdlib -r $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
916 BUNDLE_LDFLAGS += -shared -Wl,--enable-auto-image-base
917 ADDITIONAL_LDFLAGS += -Wl,--enable-auto-import
919 # On Mingw32, it looks like the class name symbols start with '___' rather
921 EXTRACT_CLASS_NAMES_COMMAND = nm -Pg $$object_file | sed -n -e '/^___objc_class_name_[A-Za-z_.]* [^U]/ {s/^___objc_class_name_\([A-Za-z_.]*\) [^U].*/\1/p;}'
927 ####################################################
929 ####################################################
933 ifeq ($(findstring cygwin, $(GNUSTEP_TARGET_OS)), cygwin)
935 HAVE_SHARED_LIBS = yes
936 # This command links the library, generates automatically the list of
937 # symbols to export, creates the DLL (eg, obj/gnustep-base.dll) and
939 SHARED_LIB_LINK_CMD = \
940 $(CC) $(SHARED_LD_PREFLAGS) -shared -o $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_DLL_FILE) \
941 -Wl,--out-implib=$(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) \
942 -Wl,--export-all-symbols \
943 -Wl,--enable-auto-import \
944 -Wl,--whole-archive $(OBJ_FILES_TO_LINK) $(ALL_LDFLAGS) \
945 -Wl,--no-whole-archive $(INTERNAL_LIBRARIES_DEPEND_UPON) $(TARGET_SYSTEM_LIBS)\
946 $(SHARED_LD_POSTFLAGS)
948 AFTER_INSTALL_SHARED_LIB_CMD =
949 AFTER_INSTALL_SHARED_LIB_CHOWN =
950 SHARED_LIBEXT = .dll.a
953 CYGWIN_DLL_SUPPORT = yes
957 REBASE_FLAGS = -d -b 0x68000000 -o 0x10000
958 CYGWIN_LD_FLAGS = -Wl,--export-all-symbols -Wl,--enable-auto-import
962 $(CC) -nostdlib -r $(ALL_LDFLAGS) $(CYGWIN_LD_FLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
966 BUNDLE_LDFLAGS += -shared -Wl,--export-all-symbols \
967 -Wl,--enable-auto-import \
969 BUNDLE_LIBFLAGS += -Wl,--no-whole-archiv
971 $(BUNDLE_LD) $(BUNDLE_LDFLAGS) $(ALL_LDFLAGS) \
972 -o $(LDOUT)$(BUNDLE_FILE) \
973 $(OBJ_FILES_TO_LINK) \
974 $(BUNDLE_LIBFLAGS) $(ALL_BUNDLE_LIBS); \
975 $(REBASE) $(REBASE_FLAGS) $(BUNDLE_FILE)
980 ####################################################
983 ####################################################
987 ifeq ($(findstring solaris, $(GNUSTEP_TARGET_OS)), solaris)
988 HAVE_SHARED_LIBS = yes
989 SHARED_LIB_LINK_CMD = \
990 $(CC) $(SHARED_LD_PREFLAGS) -G -Wl,-h,$(LIB_LINK_SONAME_FILE) \
991 $(ALL_LDFLAGS) -o $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) $^ \
992 $(INTERNAL_LIBRARIES_DEPEND_UPON) \
993 $(SHARED_LD_POSTFLAGS);\
994 (cd $(LIB_LINK_OBJ_DIR); \
995 $(RM_LN_S) $(LIB_LINK_FILE); \
996 if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\
997 $(RM_LN_S) $(LIB_LINK_SONAME_FILE);\
998 $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_SONAME_FILE); \
1000 $(LN_S) $(LIB_LINK_SONAME_FILE) $(LIB_LINK_FILE); \
1002 AFTER_INSTALL_SHARED_LIB_CMD = \
1003 (cd $(LIB_LINK_INSTALL_DIR); \
1004 $(RM_LN_S) $(LIB_LINK_FILE); \
1005 if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\
1006 $(RM_LN_S) $(LIB_LINK_SONAME_FILE);\
1007 $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_SONAME_FILE); \
1009 $(LN_S) $(LIB_LINK_SONAME_FILE) $(LIB_LINK_FILE); \
1011 AFTER_INSTALL_SHARED_LIB_CHOWN = \
1012 (cd $(LIB_LINK_INSTALL_DIR); \
1013 chown $(CHOWN_TO) $(LIB_LINK_SONAME_FILE); \
1014 chown $(CHOWN_TO) $(LIB_LINK_FILE))
1017 $(CC) -nostdlib -r $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
1019 SHARED_CFLAGS += -fpic -fPIC
1024 BUNDLE_LDFLAGS = -shared -mimpure-text
1025 #BUNDLE_LDFLAGS = -nodefaultlibs -Xlinker -r
1030 ####################################################
1033 ####################################################
1037 ifeq ($(findstring sysv4.2, $(GNUSTEP_TARGET_OS)), sysv4.2)
1038 HAVE_SHARED_LIBS = yes
1039 SHARED_LIB_LINK_CMD = \
1040 $(CC) $(SHARED_LD_PREFLAGS) -shared $(ALL_LDFLAGS) -o $(LIB_LINK_VERSION_FILE) $^ \
1041 $(SHARED_LD_POSTFLAGS);\
1042 mv $(LIB_LINK_VERSION_FILE) $(LIB_LINK_OBJ_DIR);\
1043 (cd $(LIB_LINK_OBJ_DIR); \
1044 $(RM_LN_S) $(LIB_LINK_FILE); \
1045 $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
1047 SHARED_CFLAGS += -fpic -fPIC
1052 #BUNDLE_LDFLAGS += -shared -mimpure-text
1053 BUNDLE_LDFLAGS += -nodefaultlibs -Xlinker -r
1058 ####################################################
1061 ####################################################
1065 ifeq ($(findstring hpux, $(GNUSTEP_TARGET_OS)), hpux)
1066 HAVE_SHARED_LIBS = yes
1067 SHARED_LIB_LINK_CMD = \
1068 (cd $(LIB_LINK_OBJ_DIR); \
1069 $(CC) $(SHARED_LD_PREFLAGS) \
1070 -v $(SHARED_CFLAGS) -shared \
1071 $(ALL_LDFLAGS) -o $(LIB_LINK_VERSION_FILE) `ls -1 *\.o */*\.o` \
1072 $(SHARED_LD_POSTFLAGS) ;\
1073 $(RM_LN_S) $(LIB_LINK_FILE); \
1074 $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
1079 SHARED_CFLAGS += -fPIC
1082 ifeq ($(GNUSTEP_HOST_CPU), ia64)
1090 BUNDLE_LDFLAGS += -nodefaultlibs -Xlinker -r
1091 ADDITIONAL_LDFLAGS += -Xlinker +s
1092 STATIC_LDFLAGS += -static
1097 ####################################################