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 EXTRA_LINK_ARGUMENTS += -Xlinker -rpath -Xlinker $(ICU_INSTALL)/lib
92 endif
93 endif
|
94 mike 1.3 ifneq ($(OS),darwin)
|
95 mike 1.1 ifdef PEGASUS_USE_RELEASE_DIRS
96 LINK_COMMAND = $(CXX) -shared $(LINK_MACHINE_OPTIONS)
|
97 denise.eckstein 1.18 LINK_ARGUMENTS = -Wl,-hlib$(LIBRARY)$(LIB_SUFFIX) -Xlinker -rpath \
98 -Xlinker $(PEGASUS_DEST_LIB_DIR) $(EXTRA_LINK_ARGUMENTS)
|
99 mike 1.1 else
100 LINK_COMMAND = $(CXX) -shared $(LINK_MACHINE_OPTIONS)
101 LINK_ARGUMENTS = -Wl,-hlib$(LIBRARY)$(LIB_SUFFIX) -Xlinker -rpath -Xlinker $(LIB_DIR) $(EXTRA_LINK_ARGUMENTS)
102 endif
103 else
104 LINK_COMMAND = $(CXX) -dynamiclib
105 LINK_ARGUMENTS = --helplib$(LIBRARY)$(LIB_SUFFIX) -ldl
106 endif
107 ifeq ($(PEGASUS_PLATFORM), SOLARIS_SPARC_GNU)
108 LINK_ARGUMENTS = -Wl,-hlib$(LIBRARY)$(LIB_SUFFIX) -Xlinker -L$(LIB_DIR) $(EXTRA_LINK_ARGUMENTS)
109 endif
110 LINK_OUT = -o
111 endif
|
112 dev.meetei 1.21 ##==============================================================================
113 ##
114 ## llvm/clang compiler
115 ## change for other platform like windows
116 ##
117 ##==============================================================================
118
119 ifeq ($(COMPILER),clang)
120 ifeq ($(HAS_ICU_DEPENDENCY),true)
121 ifdef ICU_INSTALL
122 EXTRA_LINK_ARGUMENTS += -Xlinker -rpath -Xlinker $(ICU_INSTALL)/lib
123 endif
124 endif
125 ifdef PEGASUS_USE_RELEASE_DIRS
126 LINK_COMMAND = $(CXX) -shared $(LINK_MACHINE_OPTIONS)
127 LINK_ARGUMENTS = -Wl,-hlib$(LIBRARY)$(LIB_SUFFIX) -Xlinker -rpath \
128 -Xlinker $(PEGASUS_DEST_LIB_DIR) $(EXTRA_LINK_ARGUMENTS)
129 else
130 LINK_COMMAND = $(CXX) -shared $(LINK_MACHINE_OPTIONS)
131 LINK_ARGUMENTS = -Wl,-hlib$(LIBRARY)$(LIB_SUFFIX) -Xlinker -rpath -Xlinker $(LIB_DIR) $(EXTRA_LINK_ARGUMENTS)
132 endif
133 dev.meetei 1.21 LINK_OUT = -o
134 endif
|
135 mike 1.1
136 ##==============================================================================
137 ##
138 ## decxx compiler
139 ##
140 ##==============================================================================
141
142 ifeq ($(COMPILER),deccxx)
143 LINK_COMMAND = cxx -shared
144 LINK_ARGUMENTS =
145 LINK_OUT = -o
146 endif
147
148 ##==============================================================================
149 ##
150 ## ibm compiler
151 ##
152 ##==============================================================================
153
154 ifeq ($(COMPILER),ibm)
155 LINK_COMMAND = $(CXX) $(FLAGS)
156 mike 1.1 LINK_ARGUMENTS = -W "l,XPLINK,dll,EDIT=NO"
157 LINK_OUT = -o
|
158 r.kieninger 1.7 ifdef PEGASUS_GENERATE_LISTINGS
159 LINK_ARGUMENTS += -W"l,MAP,LIST"
160 endif
|
161 mike 1.1 endif
162
163 ##==============================================================================
164 ##
165 ## CC compiler
166 ##
167 ##==============================================================================
168
169 ifeq ($(COMPILER),CC)
170 LINK_COMMAND = CC
|
171 karl 1.11 LINK_ARGUMENTS = -G -KPIC -mt -h lib$(LIBRARY).so $(LINK_MACHINE_OPTIONS)
|
172 mike 1.1 LINK_OUT = -o
173 EXTRA_LIBRARIES += $(LIBRARY_SYS_LIBS)
174 endif
175
176 ##==============================================================================
177 ##
178 ## Link target
179 ##
180 ##==============================================================================
181
182 ifdef EXTRA_LINK_FLAGS
183 LINK_COMMAND += $(EXTRA_LINK_FLAGS)
184 endif
185
186 FULL_LIB=$(LIB_DIR)/lib$(LIBRARY)$(LIB_SUFFIX)
187
188 ## Rule for all UNIX library builds
189 $(FULL_LIB): $(LIB_DIR)/target $(OBJ_DIR)/target $(OBJECTS) $(FULL_LIBRARIES) \
190 $(ERROR)
191 ifeq ($(PEGASUS_SUPPORTS_DYNLIB),yes)
192 ## To generate shared libraries which will cause dynamic
193 mike 1.1 ## search of other shared libraries which they reference,
194 ## must specify the referenced shared libraries as "-l<name>"
195 ## DYNAMIC_LIBRARIES must be defined appropriately in the
196 ## libraries.mak file that includes this file
197 ##
198
199
200 ifeq ($(PEGASUS_PLATFORM),AIX_RS_IBMCXX)
201 rm -f $(FULL_LIB)
202 endif
203
|
204 ouyang.jian 1.8 ifeq ($(PEGASUS_PLATFORM),PASE_ISERIES_IBMCXX)
205 rm -f $(FULL_LIB)
206 endif
207
|
208 r.kieninger 1.13 ifeq ($(OS),zos)
|
209 marek 1.14 $(LINK_COMMAND) $(LINK_ARGUMENTS) -L$(LIB_DIR) $(LINK_OUT) $(FULL_LIB) $(OBJECTS) $(EXTRA_LIBRARIES) $(SYS_LIBS) $(DYNAMIC_LIBRARIES) > lib$(LIBRARY).llst
|
210 r.kieninger 1.12 @ $(ZIP) -a -m $(FULL_LIB).llst.zip lib$(LIBRARY).llst
|
211 mike 1.1 ## z/OS needs side definition files to link executables to
212 ## dynamic libraries, so we have to copy them into the lib_dir
|
213 r.kieninger 1.13 touch $(ROOT)/src/$(DIR)/lib$(LIBRARY)$(DYNLIB_SUFFIX)
214 mv $(ROOT)/src/$(DIR)/lib$(LIBRARY)$(DYNLIB_SUFFIX) $(LIB_DIR)
|
215 r.kieninger 1.7 else
216
217 $(LINK_COMMAND) $(LINK_ARGUMENTS) -L$(LIB_DIR) $(LINK_OUT) $(FULL_LIB) $(OBJECTS) $(DYNAMIC_LIBRARIES) $(EXTRA_LIBRARIES) $(SYS_LIBS)
218
|
219 mike 1.1 endif
220 else
221 $(LINK_COMMAND) $(LINK_ARGUMENTS) $(LINK_OUT) $(FULL_LIB) $(OBJECTS) $(FULL_LIBRARIES) $(EXTRA_LIBRARIES) $(SYS_LIBS)
222 endif
223 ifeq ($(PEGASUS_PLATFORM),HPUX_PARISC_ACC)
|
224 kumpf 1.9 $(MAKE) --directory=$(LIB_DIR) -f $(PEGASUS_ROOT)/mak/library-unix.mak \
225 ln LIBRARY=lib$(LIBRARY) SUFFIX=$(LIB_SUFFIX) PLATFORM_SUFFIX=sl
|
226 mike 1.1 endif
227 ifeq ($(PEGASUS_PLATFORM),HPUX_IA64_ACC)
|
228 kumpf 1.9 $(MAKE) --directory=$(LIB_DIR) -f $(PEGASUS_ROOT)/mak/library-unix.mak \
229 ln LIBRARY=lib$(LIBRARY) SUFFIX=$(LIB_SUFFIX) PLATFORM_SUFFIX=so
|
230 mike 1.1 endif
231 ifdef PEGASUS_PLATFORM_LINUX_GENERIC_GNU
|
232 kumpf 1.9 $(MAKE) --directory=$(LIB_DIR) -f $(PEGASUS_ROOT)/mak/library-unix.mak \
233 ln LIBRARY=lib$(LIBRARY) SUFFIX=$(LIB_SUFFIX) PLATFORM_SUFFIX=so
|
234 mike 1.1 endif
235 $(TOUCH) $(FULL_LIB)
236 @ $(ECHO)
237
238 ##==============================================================================
239 ##
240 ## clean-lib
241 ##
242 ##==============================================================================
243
244 clean-lib: $(ERROR)
245 rm -f $(FULL_LIB)
246
247 ##==============================================================================
248 ##
|
249 kumpf 1.9 ## ln (target to create soft link)
250 ##
251 ## This target is used to allow the current working directory to be set in a
252 ## separate "make" execution, to avoid using fully-specified paths in the link
253 ## command.
254 ##
255 ##==============================================================================
256
257 ln:
258 ln -f -s $(LIBRARY)$(SUFFIX) $(LIBRARY).$(PLATFORM_SUFFIX)
259
260 ##==============================================================================
261 ##
|
262 kumpf 1.6 ## FILES_TO_CLEAN (files removed by "make clean")
|
263 mike 1.1 ##
264 ##==============================================================================
265
266 FILES_TO_CLEAN = $(OBJECTS) $(FULL_LIB)
|
267 kumpf 1.6 ifeq ($(PEGASUS_PLATFORM),HPUX_PARISC_ACC)
268 FILES_TO_CLEAN += $(LIB_DIR)/lib$(LIBRARY).sl
269 endif
270 ifeq ($(PEGASUS_PLATFORM),HPUX_IA64_ACC)
271 FILES_TO_CLEAN += $(LIB_DIR)/lib$(LIBRARY).so
272 endif
273 ifdef PEGASUS_PLATFORM_LINUX_GENERIC_GNU
274 FILES_TO_CLEAN += $(LIB_DIR)/lib$(LIBRARY).so
275 endif
|