1 martin 1.16 #//%LICENSE////////////////////////////////////////////////////////////////
|
2 mike 1.1 #//
|
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 #//
10 #// 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 #//
17 #// The above copyright notice and this permission notice shall be included
18 #// in all copies or substantial portions of the Software.
19 #//
20 #// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
21 #// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 #// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
23 #// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
24 martin 1.16 #// 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 #//
28 #//////////////////////////////////////////////////////////////////////////
|
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 ifdef PEGASUS_USE_RELEASE_DIRS
71 LINK_COMMAND += -Wl,+b$(PEGASUS_DEST_LIB_DIR):/usr/lib
72 ifeq ($(PEGASUS_PLATFORM), HPUX_PARISC_ACC)
73 LINK_COMMAND += -Wl,+cdp,$(PEGASUS_PLATFORM_SDKROOT)/usr/lib:/usr/lib -Wl,+cdp,$(PEGASUS_HOME)/lib:$(PEGASUS_DEST_LIB_DIR)
|
74 mateus.baur 1.5 ifdef OPENSSL_HOME
75 LINK_COMMAND += -Wl,+cdp,$(OPENSSL_HOME)/lib:/usr/lib
76 endif
77 ifdef ICU_INSTALL
78 LINK_COMMAND += -Wl,+cdp,$(ICU_INSTALL)/lib:$(PEGASUS_DEST_LIB_DIR)
79 endif
|
80 mike 1.1 endif
81 else
82 LINK_COMMAND += -Wl,+b$(LIB_DIR):/usr/lib
83 endif
84 endif
85 LINK_COMMAND += -Wl,+s
86 ifdef PEGASUS_USE_DEBUG_BUILD_OPTIONS
87 LINK_COMMAND += -g
88 endif
89 ifdef PEGASUS_CCOVER
90 EXTRA_LIBRARIES += $(CCOVER_LIB)/libcov.a
91 endif
92 LINK_ARGUMENTS =
93 LINK_OUT = -o
94 endif
95
96 ##==============================================================================
97 ##
98 ## gnu compiler
99 ##
100 ##==============================================================================
101 mike 1.1
102 ifeq ($(COMPILER),gnu)
|
103 mike 1.3 ifneq ($(OS),darwin)
|
104 mike 1.1 ifdef PEGASUS_USE_RELEASE_DIRS
105 LINK_COMMAND = $(CXX) -shared $(LINK_MACHINE_OPTIONS)
106 LINK_ARGUMENTS = -Wl,-hlib$(LIBRARY)$(LIB_SUFFIX) -Xlinker -rpath -Xlinker $(PEGASUS_DEST_LIB_DIR)
107 else
108 LINK_COMMAND = $(CXX) -shared $(LINK_MACHINE_OPTIONS)
109 LINK_ARGUMENTS = -Wl,-hlib$(LIBRARY)$(LIB_SUFFIX) -Xlinker -rpath -Xlinker $(LIB_DIR) $(EXTRA_LINK_ARGUMENTS)
110 endif
111 else
112 LINK_COMMAND = $(CXX) -dynamiclib
113 LINK_ARGUMENTS = --helplib$(LIBRARY)$(LIB_SUFFIX) -ldl
114 endif
115 ifeq ($(PEGASUS_PLATFORM), SOLARIS_SPARC_GNU)
116 LINK_ARGUMENTS = -Wl,-hlib$(LIBRARY)$(LIB_SUFFIX) -Xlinker -L$(LIB_DIR) $(EXTRA_LINK_ARGUMENTS)
117 endif
118 LINK_OUT = -o
119 endif
120
121 ##==============================================================================
122 ##
123 ## decxx compiler
124 ##
125 mike 1.1 ##==============================================================================
126
127 ifeq ($(COMPILER),deccxx)
128 LINK_COMMAND = cxx -shared
129 LINK_ARGUMENTS =
130 LINK_OUT = -o
131 endif
132
133 ##==============================================================================
134 ##
135 ## ibm compiler
136 ##
137 ##==============================================================================
138
139 ifeq ($(COMPILER),ibm)
140 LINK_COMMAND = $(CXX) $(FLAGS)
141 LINK_ARGUMENTS = -W "l,XPLINK,dll,EDIT=NO"
142 LINK_OUT = -o
|
143 r.kieninger 1.7 ifdef PEGASUS_GENERATE_LISTINGS
144 LINK_ARGUMENTS += -W"l,MAP,LIST"
145 endif
|
146 mike 1.1 endif
147
148 ##==============================================================================
149 ##
150 ## CC compiler
151 ##
152 ##==============================================================================
153
154 ifeq ($(COMPILER),CC)
155 LINK_COMMAND = CC
|
156 karl 1.11 LINK_ARGUMENTS = -G -KPIC -mt -h lib$(LIBRARY).so $(LINK_MACHINE_OPTIONS)
|
157 mike 1.1 LINK_OUT = -o
158 EXTRA_LIBRARIES += $(LIBRARY_SYS_LIBS)
159 endif
160
161 ##==============================================================================
162 ##
163 ## Link target
164 ##
165 ##==============================================================================
166
167 ifdef EXTRA_LINK_FLAGS
168 LINK_COMMAND += $(EXTRA_LINK_FLAGS)
169 endif
170
171 FULL_LIB=$(LIB_DIR)/lib$(LIBRARY)$(LIB_SUFFIX)
172
173 ## Rule for all UNIX library builds
174 $(FULL_LIB): $(LIB_DIR)/target $(OBJ_DIR)/target $(OBJECTS) $(FULL_LIBRARIES) \
175 $(ERROR)
176 ifeq ($(PEGASUS_SUPPORTS_DYNLIB),yes)
177 ## To generate shared libraries which will cause dynamic
178 mike 1.1 ## search of other shared libraries which they reference,
179 ## must specify the referenced shared libraries as "-l<name>"
180 ## DYNAMIC_LIBRARIES must be defined appropriately in the
181 ## libraries.mak file that includes this file
182 ##
183
184
185 ifeq ($(PEGASUS_PLATFORM),AIX_RS_IBMCXX)
186 rm -f $(FULL_LIB)
187 endif
188
|
189 ouyang.jian 1.8 ifeq ($(PEGASUS_PLATFORM),PASE_ISERIES_IBMCXX)
190 rm -f $(FULL_LIB)
191 endif
192
|
193 r.kieninger 1.13 ifeq ($(OS),zos)
|
194 marek 1.14 $(LINK_COMMAND) $(LINK_ARGUMENTS) -L$(LIB_DIR) $(LINK_OUT) $(FULL_LIB) $(OBJECTS) $(EXTRA_LIBRARIES) $(SYS_LIBS) $(DYNAMIC_LIBRARIES) > lib$(LIBRARY).llst
|
195 r.kieninger 1.12 @ $(ZIP) -a -m $(FULL_LIB).llst.zip lib$(LIBRARY).llst
|
196 mike 1.1 ## z/OS needs side definition files to link executables to
197 ## dynamic libraries, so we have to copy them into the lib_dir
|
198 r.kieninger 1.13 touch $(ROOT)/src/$(DIR)/lib$(LIBRARY)$(DYNLIB_SUFFIX)
199 mv $(ROOT)/src/$(DIR)/lib$(LIBRARY)$(DYNLIB_SUFFIX) $(LIB_DIR)
|
200 r.kieninger 1.7 else
201
202 $(LINK_COMMAND) $(LINK_ARGUMENTS) -L$(LIB_DIR) $(LINK_OUT) $(FULL_LIB) $(OBJECTS) $(DYNAMIC_LIBRARIES) $(EXTRA_LIBRARIES) $(SYS_LIBS)
203
|
204 mike 1.1 endif
205 else
206 $(LINK_COMMAND) $(LINK_ARGUMENTS) $(LINK_OUT) $(FULL_LIB) $(OBJECTS) $(FULL_LIBRARIES) $(EXTRA_LIBRARIES) $(SYS_LIBS)
207 endif
208 ifeq ($(PEGASUS_PLATFORM),HPUX_PARISC_ACC)
|
209 kumpf 1.9 $(MAKE) --directory=$(LIB_DIR) -f $(PEGASUS_ROOT)/mak/library-unix.mak \
210 ln LIBRARY=lib$(LIBRARY) SUFFIX=$(LIB_SUFFIX) PLATFORM_SUFFIX=sl
|
211 mike 1.1 endif
212 ifeq ($(PEGASUS_PLATFORM),HPUX_IA64_ACC)
|
213 kumpf 1.9 $(MAKE) --directory=$(LIB_DIR) -f $(PEGASUS_ROOT)/mak/library-unix.mak \
214 ln LIBRARY=lib$(LIBRARY) SUFFIX=$(LIB_SUFFIX) PLATFORM_SUFFIX=so
|
215 mike 1.1 endif
216 ifdef PEGASUS_PLATFORM_LINUX_GENERIC_GNU
|
217 kumpf 1.9 $(MAKE) --directory=$(LIB_DIR) -f $(PEGASUS_ROOT)/mak/library-unix.mak \
218 ln LIBRARY=lib$(LIBRARY) SUFFIX=$(LIB_SUFFIX) PLATFORM_SUFFIX=so
|
219 mike 1.1 endif
220 $(TOUCH) $(FULL_LIB)
221 @ $(ECHO)
222
223 ##==============================================================================
224 ##
225 ## clean-lib
226 ##
227 ##==============================================================================
228
229 clean-lib: $(ERROR)
230 rm -f $(FULL_LIB)
231
232 ##==============================================================================
233 ##
|
234 kumpf 1.9 ## ln (target to create soft link)
235 ##
236 ## This target is used to allow the current working directory to be set in a
237 ## separate "make" execution, to avoid using fully-specified paths in the link
238 ## command.
239 ##
240 ##==============================================================================
241
242 ln:
243 ln -f -s $(LIBRARY)$(SUFFIX) $(LIBRARY).$(PLATFORM_SUFFIX)
244
245 ##==============================================================================
246 ##
|
247 kumpf 1.6 ## FILES_TO_CLEAN (files removed by "make clean")
|
248 mike 1.1 ##
249 ##==============================================================================
250
251 FILES_TO_CLEAN = $(OBJECTS) $(FULL_LIB)
|
252 kumpf 1.6 ifeq ($(PEGASUS_PLATFORM),HPUX_PARISC_ACC)
253 FILES_TO_CLEAN += $(LIB_DIR)/lib$(LIBRARY).sl
254 endif
255 ifeq ($(PEGASUS_PLATFORM),HPUX_IA64_ACC)
256 FILES_TO_CLEAN += $(LIB_DIR)/lib$(LIBRARY).so
257 endif
258 ifdef PEGASUS_PLATFORM_LINUX_GENERIC_GNU
259 FILES_TO_CLEAN += $(LIB_DIR)/lib$(LIBRARY).so
260 endif
|