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