1 martin 1.16 #//%LICENSE////////////////////////////////////////////////////////////////
|
2 martin 1.17 #//
|
3 martin 1.16 #// Licensed to The Open Group (TOG) under one or more contributor license
4 #// agreements. Refer to the OpenPegasusNOTICE.txt file distributed with
5 #// this work for additional information regarding copyright ownership.
6 #// Each contributor licenses this file to you under the OpenPegasus Open
7 #// Source License; you may not use this file except in compliance with the
8 #// License.
|
9 martin 1.17 #//
|
10 martin 1.16 #// Permission is hereby granted, free of charge, to any person obtaining a
11 #// copy of this software and associated documentation files (the "Software"),
12 #// to deal in the Software without restriction, including without limitation
13 #// the rights to use, copy, modify, merge, publish, distribute, sublicense,
14 #// and/or sell copies of the Software, and to permit persons to whom the
15 #// Software is furnished to do so, subject to the following conditions:
|
16 martin 1.17 #//
|
17 martin 1.16 #// The above copyright notice and this permission notice shall be included
18 #// in all copies or substantial portions of the Software.
|
19 martin 1.17 #//
|
20 martin 1.16 #// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
21 martin 1.17 #// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
22 martin 1.16 #// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
23 #// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
24 #// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
25 #// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
26 #// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
27 martin 1.17 #//
|
28 martin 1.16 #//////////////////////////////////////////////////////////////////////////
|
29 mike 1.1
30
31 ##==============================================================================
32 ##
33 ## xlc compiler
34 ##
35 ##==============================================================================
36
37 ifeq ($(COMPILER),xlc)
38 LINK_COMMAND = xlC_r
39 ifdef PEGASUS_USE_RELEASE_DIRS
40 ifdef PEGASUS_HAS_MESSAGES
|
41 kumpf 1.10 ifdef ICU_INSTALL
|
42 cheng.sp 1.15 LINK_ARGUMENTS = -qmkshrobj=$(AIX_LIB_PRIORITY) -blibpath:/usr/lib:/lib:$(ICU_INSTALL)/lib -Wl,-bhalt:$(AIX_LD_HALT)
|
43 mike 1.1 endif
44 else
|
45 cheng.sp 1.15 LINK_ARGUMENTS = -qmkshrobj=$(AIX_LIB_PRIORITY) -blibpath:/usr/lib:/lib -Wl,-bhalt:$(AIX_LD_HALT)
|
46 mike 1.1 endif
47 else
48 LINK_ARGUMENTS = -qmkshrobj=$(AIX_LIB_PRIORITY) -Wl,-bhalt:$(AIX_LD_HALT)
49 endif
50 LINK_OUT = -o
51 ifeq ($(PEGASUS_SUPPORTS_DYNLIB), yes)
52 LINK_COMMAND += -G
53 endif
54 endif
55
56 ##==============================================================================
57 ##
58 ## acc compiler
59 ##
60 ##==============================================================================
61
62 ifeq ($(COMPILER),acc)
63 LINK_COMMAND = $(CXX) -b -Wl,+hlib$(LIBRARY)$(LIB_SUFFIX)
64 ifeq ($(PEGASUS_PLATFORM), HPUX_IA64_ACC)
|
65 mateus.baur 1.2 LINK_COMMAND += +DD64 -mt -Wl,+rpathfirst
|
66 mike 1.1 else
67 LINK_COMMAND += -Wl,-Bsymbolic
68 endif
69 ifeq ($(PEGASUS_SUPPORTS_DYNLIB),yes)
|
70 denise.eckstein 1.18 LINK_COMMAND += $(ACC_LINK_SEARCH_PATH)
|
71 mike 1.1 endif
|
72 kumpf 1.19 ifdef PEGASUS_USE_DEBUG_BUILD_OPTIONS
|
73 kb.hp 1.20 LINK_COMMAND += -g +noobjdebug
|
74 mike 1.1 endif
75 ifdef PEGASUS_CCOVER
76 EXTRA_LIBRARIES += $(CCOVER_LIB)/libcov.a
77 endif
78 LINK_ARGUMENTS =
79 LINK_OUT = -o
80 endif
81
82 ##==============================================================================
83 ##
84 ## gnu compiler
85 ##
86 ##==============================================================================
87
88 ifeq ($(COMPILER),gnu)
|
89 denise.eckstein 1.18 ifeq ($(HAS_ICU_DEPENDENCY),true)
90 ifdef ICU_INSTALL
|
91 nagaraj.gr 1.22 ifeq ($(PEGASUS_PLATFORM), HPUX_PARISC_GNU)
92 EXTRA_LINK_ARGUMENTS += -Xlinker $(ICU_INSTALL)/lib
93 else
94 EXTRA_LINK_ARGUMENTS += -Xlinker -rpath -Xlinker $(ICU_INSTALL)/lib
95 endif
|
96 denise.eckstein 1.18 endif
97 endif
|
98 mike 1.3 ifneq ($(OS),darwin)
|
99 mike 1.1 ifdef PEGASUS_USE_RELEASE_DIRS
100 LINK_COMMAND = $(CXX) -shared $(LINK_MACHINE_OPTIONS)
|
101 denise.eckstein 1.18 LINK_ARGUMENTS = -Wl,-hlib$(LIBRARY)$(LIB_SUFFIX) -Xlinker -rpath \
102 -Xlinker $(PEGASUS_DEST_LIB_DIR) $(EXTRA_LINK_ARGUMENTS)
|
103 mike 1.1 else
104 LINK_COMMAND = $(CXX) -shared $(LINK_MACHINE_OPTIONS)
105 LINK_ARGUMENTS = -Wl,-hlib$(LIBRARY)$(LIB_SUFFIX) -Xlinker -rpath -Xlinker $(LIB_DIR) $(EXTRA_LINK_ARGUMENTS)
106 endif
107 else
108 LINK_COMMAND = $(CXX) -dynamiclib
109 LINK_ARGUMENTS = --helplib$(LIBRARY)$(LIB_SUFFIX) -ldl
110 endif
111 ifeq ($(PEGASUS_PLATFORM), SOLARIS_SPARC_GNU)
|
112 nagaraj.gr 1.22 LINK_ARGUMENTS = -Wl,-hlib$(LIBRARY)$(LIB_SUFFIX) -Xlinker -L$(LIB_DIR) $(EXTRA_LINK_ARGUMENTS)
113 endif
114 ifeq ($(OS), HPUX)
115 LINK_COMMAND += -pthread -Wl,+rpathfirst
116 LINK_ARGUMENTS = -Xlinker -L$(LIB_DIR) $(EXTRA_LINK_ARGUMENTS)
117 endif
118 ifeq ($(PEGASUS_SUPPORTS_DYNLIB),yes)
119 LINK_COMMAND += $(GNU_LINK_SEARCH_PATH)
|
120 mike 1.1 endif
121 LINK_OUT = -o
122 endif
|
123 dev.meetei 1.21 ##==============================================================================
124 ##
125 ## llvm/clang compiler
126 ## change for other platform like windows
127 ##
128 ##==============================================================================
129
130 ifeq ($(COMPILER),clang)
131 ifeq ($(HAS_ICU_DEPENDENCY),true)
132 ifdef ICU_INSTALL
133 EXTRA_LINK_ARGUMENTS += -Xlinker -rpath -Xlinker $(ICU_INSTALL)/lib
134 endif
135 endif
136 ifdef PEGASUS_USE_RELEASE_DIRS
137 LINK_COMMAND = $(CXX) -shared $(LINK_MACHINE_OPTIONS)
138 LINK_ARGUMENTS = -Wl,-hlib$(LIBRARY)$(LIB_SUFFIX) -Xlinker -rpath \
139 -Xlinker $(PEGASUS_DEST_LIB_DIR) $(EXTRA_LINK_ARGUMENTS)
140 else
141 LINK_COMMAND = $(CXX) -shared $(LINK_MACHINE_OPTIONS)
142 LINK_ARGUMENTS = -Wl,-hlib$(LIBRARY)$(LIB_SUFFIX) -Xlinker -rpath -Xlinker $(LIB_DIR) $(EXTRA_LINK_ARGUMENTS)
143 endif
144 dev.meetei 1.21 LINK_OUT = -o
145 endif
|
146 mike 1.1
147 ##==============================================================================
148 ##
149 ## decxx compiler
150 ##
151 ##==============================================================================
152
153 ifeq ($(COMPILER),deccxx)
154 LINK_COMMAND = cxx -shared
155 LINK_ARGUMENTS =
156 LINK_OUT = -o
157 endif
158
159 ##==============================================================================
160 ##
161 ## ibm compiler
162 ##
163 ##==============================================================================
164
165 ifeq ($(COMPILER),ibm)
166 LINK_COMMAND = $(CXX) $(FLAGS)
167 mike 1.1 LINK_ARGUMENTS = -W "l,XPLINK,dll,EDIT=NO"
168 LINK_OUT = -o
|
169 r.kieninger 1.7 ifdef PEGASUS_GENERATE_LISTINGS
170 LINK_ARGUMENTS += -W"l,MAP,LIST"
171 endif
|
172 mike 1.1 endif
173
174 ##==============================================================================
175 ##
176 ## CC compiler
177 ##
178 ##==============================================================================
179
180 ifeq ($(COMPILER),CC)
181 LINK_COMMAND = CC
|
182 karl 1.11 LINK_ARGUMENTS = -G -KPIC -mt -h lib$(LIBRARY).so $(LINK_MACHINE_OPTIONS)
|
183 mike 1.1 LINK_OUT = -o
184 EXTRA_LIBRARIES += $(LIBRARY_SYS_LIBS)
185 endif
186
187 ##==============================================================================
188 ##
189 ## Link target
190 ##
191 ##==============================================================================
192
193 ifdef EXTRA_LINK_FLAGS
194 LINK_COMMAND += $(EXTRA_LINK_FLAGS)
195 endif
196
197 FULL_LIB=$(LIB_DIR)/lib$(LIBRARY)$(LIB_SUFFIX)
198
199 ## Rule for all UNIX library builds
200 $(FULL_LIB): $(LIB_DIR)/target $(OBJ_DIR)/target $(OBJECTS) $(FULL_LIBRARIES) \
201 $(ERROR)
202 ifeq ($(PEGASUS_SUPPORTS_DYNLIB),yes)
203 ## To generate shared libraries which will cause dynamic
204 mike 1.1 ## search of other shared libraries which they reference,
205 ## must specify the referenced shared libraries as "-l<name>"
206 ## DYNAMIC_LIBRARIES must be defined appropriately in the
207 ## libraries.mak file that includes this file
208 ##
209
210
211 ifeq ($(PEGASUS_PLATFORM),AIX_RS_IBMCXX)
212 rm -f $(FULL_LIB)
213 endif
214
|
215 ouyang.jian 1.8 ifeq ($(PEGASUS_PLATFORM),PASE_ISERIES_IBMCXX)
216 rm -f $(FULL_LIB)
217 endif
218
|
219 r.kieninger 1.13 ifeq ($(OS),zos)
|
220 marek 1.14 $(LINK_COMMAND) $(LINK_ARGUMENTS) -L$(LIB_DIR) $(LINK_OUT) $(FULL_LIB) $(OBJECTS) $(EXTRA_LIBRARIES) $(SYS_LIBS) $(DYNAMIC_LIBRARIES) > lib$(LIBRARY).llst
|
221 r.kieninger 1.12 @ $(ZIP) -a -m $(FULL_LIB).llst.zip lib$(LIBRARY).llst
|
222 mike 1.1 ## z/OS needs side definition files to link executables to
223 ## dynamic libraries, so we have to copy them into the lib_dir
|
224 r.kieninger 1.13 touch $(ROOT)/src/$(DIR)/lib$(LIBRARY)$(DYNLIB_SUFFIX)
225 mv $(ROOT)/src/$(DIR)/lib$(LIBRARY)$(DYNLIB_SUFFIX) $(LIB_DIR)
|
226 r.kieninger 1.7 else
227
228 $(LINK_COMMAND) $(LINK_ARGUMENTS) -L$(LIB_DIR) $(LINK_OUT) $(FULL_LIB) $(OBJECTS) $(DYNAMIC_LIBRARIES) $(EXTRA_LIBRARIES) $(SYS_LIBS)
229
|
230 mike 1.1 endif
231 else
232 $(LINK_COMMAND) $(LINK_ARGUMENTS) $(LINK_OUT) $(FULL_LIB) $(OBJECTS) $(FULL_LIBRARIES) $(EXTRA_LIBRARIES) $(SYS_LIBS)
233 endif
234 ifeq ($(PEGASUS_PLATFORM),HPUX_PARISC_ACC)
|
235 kumpf 1.9 $(MAKE) --directory=$(LIB_DIR) -f $(PEGASUS_ROOT)/mak/library-unix.mak \
236 ln LIBRARY=lib$(LIBRARY) SUFFIX=$(LIB_SUFFIX) PLATFORM_SUFFIX=sl
|
237 mike 1.1 endif
|
238 nagaraj.gr 1.22 ifeq ($(PEGASUS_PLATFORM),HPUX_PARISC_GNU)
239 $(MAKE) --directory=$(LIB_DIR) -f $(PEGASUS_ROOT)/mak/library-unix.mak \
240 ln LIBRARY=lib$(LIBRARY) SUFFIX=$(LIB_SUFFIX) PLATFORM_SUFFIX=sl
241 endif
|
242 mike 1.1 ifeq ($(PEGASUS_PLATFORM),HPUX_IA64_ACC)
|
243 kumpf 1.9 $(MAKE) --directory=$(LIB_DIR) -f $(PEGASUS_ROOT)/mak/library-unix.mak \
244 ln LIBRARY=lib$(LIBRARY) SUFFIX=$(LIB_SUFFIX) PLATFORM_SUFFIX=so
|
245 mike 1.1 endif
|
246 nagaraj.gr 1.22 ifeq ($(PEGASUS_PLATFORM),HPUX_IA64_GNU)
247 $(MAKE) --directory=$(LIB_DIR) -f $(PEGASUS_ROOT)/mak/library-unix.mak \
248 ln LIBRARY=lib$(LIBRARY) SUFFIX=$(LIB_SUFFIX) PLATFORM_SUFFIX=so
249 endif
|
250 mike 1.1 ifdef PEGASUS_PLATFORM_LINUX_GENERIC_GNU
|
251 kumpf 1.9 $(MAKE) --directory=$(LIB_DIR) -f $(PEGASUS_ROOT)/mak/library-unix.mak \
252 ln LIBRARY=lib$(LIBRARY) SUFFIX=$(LIB_SUFFIX) PLATFORM_SUFFIX=so
|
253 mike 1.1 endif
254 $(TOUCH) $(FULL_LIB)
255 @ $(ECHO)
256
257 ##==============================================================================
258 ##
259 ## clean-lib
260 ##
261 ##==============================================================================
262
263 clean-lib: $(ERROR)
264 rm -f $(FULL_LIB)
265
266 ##==============================================================================
267 ##
|
268 kumpf 1.9 ## ln (target to create soft link)
269 ##
270 ## This target is used to allow the current working directory to be set in a
271 ## separate "make" execution, to avoid using fully-specified paths in the link
272 ## command.
273 ##
274 ##==============================================================================
275
276 ln:
277 ln -f -s $(LIBRARY)$(SUFFIX) $(LIBRARY).$(PLATFORM_SUFFIX)
278
279 ##==============================================================================
280 ##
|
281 kumpf 1.6 ## FILES_TO_CLEAN (files removed by "make clean")
|
282 mike 1.1 ##
283 ##==============================================================================
284
285 FILES_TO_CLEAN = $(OBJECTS) $(FULL_LIB)
|
286 kumpf 1.6 ifeq ($(PEGASUS_PLATFORM),HPUX_PARISC_ACC)
287 FILES_TO_CLEAN += $(LIB_DIR)/lib$(LIBRARY).sl
288 endif
|
289 nagaraj.gr 1.22 ifeq ($(PEGASUS_PLATFORM),HPUX_PARISC_GNU)
290 FILES_TO_CLEAN += $(LIB_DIR)/lib$(LIBRARY).sl
291 endif
|
292 kumpf 1.6 ifeq ($(PEGASUS_PLATFORM),HPUX_IA64_ACC)
293 FILES_TO_CLEAN += $(LIB_DIR)/lib$(LIBRARY).so
294 endif
|
295 nagaraj.gr 1.22 ifeq ($(PEGASUS_PLATFORM),HPUX_IA64_GNU)
296 FILES_TO_CLEAN += $(LIB_DIR)/lib$(LIBRARY).so
297 endif
|
298 kumpf 1.6 ifdef PEGASUS_PLATFORM_LINUX_GENERIC_GNU
299 FILES_TO_CLEAN += $(LIB_DIR)/lib$(LIBRARY).so
300 endif
|