1 mike 1.1 #//%2006////////////////////////////////////////////////////////////////////////
2 #//
3 #// Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
4 #// Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
5 #// Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
6 #// IBM Corp.; EMC Corporation, The Open Group.
7 #// Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
8 #// IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
9 #// Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
10 #// EMC Corporation; VERITAS Software Corporation; The Open Group.
11 #// Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
12 #// EMC Corporation; Symantec Corporation; The Open Group.
13 #//
14 #// Permission is hereby granted, free of charge, to any person obtaining a copy
15 #// of this software and associated documentation files (the "Software"), to
16 #// deal in the Software without restriction, including without limitation the
17 #// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
18 #// sell copies of the Software, and to permit persons to whom the Software is
19 #// furnished to do so, subject to the following conditions:
20 #//
21 #// THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
22 mike 1.1 #// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
23 #// "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
24 #// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
25 #// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
26 #// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
27 #// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28 #// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 #//
30 #//=============================================================================
31
32 ##==============================================================================
33 ##
34 ## All shared libraries need the "dynamic flags".
35 ##
36 ##==============================================================================
37
38 FLAGS += $(DYNAMIC_FLAGS)
39
40 ##==============================================================================
41 ##
42 ## xlc compiler
43 mike 1.1 ##
44 ##==============================================================================
45
46 ifeq ($(COMPILER),xlc)
47 LINK_COMMAND = xlC_r
48 ifdef PEGASUS_USE_RELEASE_DIRS
49 ifdef PEGASUS_HAS_MESSAGES
50 ifdef ICU_ROOT
51 ifdef ICU_INSTALL
52 LINK_ARGUMENTS = -qmkshrobj=$(AIX_LIB_PRIORITY) -blibpath:/usr/linux/lib:/usr/lib:/lib:$(ICU_INSTALL)/lib -Wl,-bhalt:$(AIX_LD_HALT)
53 endif
54 endif
55 else
56 LINK_ARGUMENTS = -qmkshrobj=$(AIX_LIB_PRIORITY) -blibpath:/usr/linux/lib:/usr/lib:/lib -Wl,-bhalt:$(AIX_LD_HALT)
57 endif
58 else
59 LINK_ARGUMENTS = -qmkshrobj=$(AIX_LIB_PRIORITY) -Wl,-bhalt:$(AIX_LD_HALT)
60 endif
61 LINK_OUT = -o
62 ifeq ($(PEGASUS_SUPPORTS_DYNLIB), yes)
63 LINK_COMMAND += -G
64 mike 1.1 endif
65 endif
66
67 ##==============================================================================
68 ##
69 ## acc compiler
70 ##
71 ##==============================================================================
72
73 ifeq ($(COMPILER),acc)
74 LINK_COMMAND = $(CXX) -b -Wl,+hlib$(LIBRARY)$(LIB_SUFFIX)
75 ifeq ($(PEGASUS_PLATFORM), HPUX_IA64_ACC)
|
77 mike 1.1 else
78 LINK_COMMAND += -Wl,-Bsymbolic
79 endif
80 ifeq ($(PEGASUS_SUPPORTS_DYNLIB),yes)
81 ifdef PEGASUS_USE_RELEASE_DIRS
82 LINK_COMMAND += -Wl,+b$(PEGASUS_DEST_LIB_DIR):/usr/lib
83 ifeq ($(PEGASUS_PLATFORM), HPUX_PARISC_ACC)
84 LINK_COMMAND += -Wl,+cdp,$(PEGASUS_PLATFORM_SDKROOT)/usr/lib:/usr/lib -Wl,+cdp,$(PEGASUS_HOME)/lib:$(PEGASUS_DEST_LIB_DIR)
|
115 mike 1.1 ifdef PEGASUS_USE_RELEASE_DIRS
116 LINK_COMMAND = $(CXX) -shared $(LINK_MACHINE_OPTIONS)
117 LINK_ARGUMENTS = -Wl,-hlib$(LIBRARY)$(LIB_SUFFIX) -Xlinker -rpath -Xlinker $(PEGASUS_DEST_LIB_DIR)
118 else
119 LINK_COMMAND = $(CXX) -shared $(LINK_MACHINE_OPTIONS)
120 LINK_ARGUMENTS = -Wl,-hlib$(LIBRARY)$(LIB_SUFFIX) -Xlinker -rpath -Xlinker $(LIB_DIR) $(EXTRA_LINK_ARGUMENTS)
121 endif
122 else
123 LINK_COMMAND = $(CXX) -dynamiclib
124 LINK_ARGUMENTS = --helplib$(LIBRARY)$(LIB_SUFFIX) -ldl
125 endif
126 ifeq ($(PEGASUS_PLATFORM), SOLARIS_SPARC_GNU)
127 LINK_ARGUMENTS = -Wl,-hlib$(LIBRARY)$(LIB_SUFFIX) -Xlinker -L$(LIB_DIR) $(EXTRA_LINK_ARGUMENTS)
128 endif
129 LINK_OUT = -o
130 endif
131
132 ##==============================================================================
133 ##
134 ## decxx compiler
135 ##
136 mike 1.1 ##==============================================================================
137
138 ifeq ($(COMPILER),deccxx)
139 LINK_COMMAND = cxx -shared
140 LINK_ARGUMENTS =
141 LINK_OUT = -o
142 endif
143
144 ##==============================================================================
145 ##
146 ## ibm compiler
147 ##
148 ##==============================================================================
149
150 ifeq ($(COMPILER),ibm)
151 LINK_COMMAND = $(CXX) $(FLAGS)
152 LINK_ARGUMENTS = -W "l,XPLINK,dll,EDIT=NO"
153 LINK_OUT = -o
154 endif
155
156 ##==============================================================================
157 mike 1.1 ##
158 ## CC compiler
159 ##
160 ##==============================================================================
161
162 ifeq ($(COMPILER),CC)
163 LINK_COMMAND = CC
164 LINK_ARGUMENTS = -G -KPIC -mt -h lib$(LIBRARY).so
165 LINK_OUT = -o
166 EXTRA_LIBRARIES += $(LIBRARY_SYS_LIBS)
167 endif
168
169 ##==============================================================================
170 ##
171 ## Link target
172 ##
173 ##==============================================================================
174
175 ifdef EXTRA_LINK_FLAGS
176 LINK_COMMAND += $(EXTRA_LINK_FLAGS)
177 endif
178 mike 1.1
179 FULL_LIB=$(LIB_DIR)/lib$(LIBRARY)$(LIB_SUFFIX)
180
181 ## Rule for all UNIX library builds
182 $(FULL_LIB): $(LIB_DIR)/target $(OBJ_DIR)/target $(OBJECTS) $(FULL_LIBRARIES) \
183 $(ERROR)
184 ifeq ($(PEGASUS_SUPPORTS_DYNLIB),yes)
185 ## To generate shared libraries which will cause dynamic
186 ## search of other shared libraries which they reference,
187 ## must specify the referenced shared libraries as "-l<name>"
188 ## DYNAMIC_LIBRARIES must be defined appropriately in the
189 ## libraries.mak file that includes this file
190 ##
191
192
193 ifeq ($(PEGASUS_PLATFORM),AIX_RS_IBMCXX)
194 rm -f $(FULL_LIB)
195 endif
196
197 $(LINK_COMMAND) $(LINK_ARGUMENTS) -L$(LIB_DIR) $(LINK_OUT) $(FULL_LIB) $(OBJECTS) $(DYNAMIC_LIBRARIES) $(EXTRA_LIBRARIES) $(SYS_LIBS)
198
199 mike 1.1 ifeq ($(PEGASUS_PLATFORM),ZOS_ZSERIES_IBM)
200 ## z/OS needs side definition files to link executables to
201 ## dynamic libraries, so we have to copy them into the lib_dir
202 touch $(ROOT)/src/$(DIR)/lib$(LIBRARY).x
203 cp $(ROOT)/src/$(DIR)/lib$(LIBRARY).x $(LIB_DIR)
204 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 $(MAKE) --directory=$(LIB_DIR) -f $(PEGASUS_ROOT)/mak/library-unix.mak ln LIBRARY=lib$(LIBRARY) SUFFIX=$(LIB_SUFFIX) PLATFORM_SUFFIX=sl
210 endif
211 ifeq ($(PEGASUS_PLATFORM),HPUX_IA64_ACC)
212 $(MAKE) --directory=$(LIB_DIR) -f $(PEGASUS_ROOT)/mak/library-unix.mak ln LIBRARY=lib$(LIBRARY) SUFFIX=$(LIB_SUFFIX) PLATFORM_SUFFIX=so
213 endif
214 ifdef PEGASUS_PLATFORM_LINUX_GENERIC_GNU
215 $(MAKE) --directory=$(LIB_DIR) -f $(PEGASUS_ROOT)/mak/library-unix.mak ln LIBRARY=lib$(LIBRARY) SUFFIX=$(LIB_SUFFIX) PLATFORM_SUFFIX=so
216 endif
217 $(TOUCH) $(FULL_LIB)
218 @ $(ECHO)
219
220 mike 1.1 ##==============================================================================
221 ##
222 ## clean-lib
223 ##
224 ##==============================================================================
225
226 clean-lib: $(ERROR)
227 rm -f $(FULL_LIB)
228
229 ##==============================================================================
230 ##
231 ## ln (target to create soft link)
232 ##
233 ##==============================================================================
234
235 ln:
236 ln -f -s $(LIBRARY)$(SUFFIX) $(LIBRARY).$(PLATFORM_SUFFIX)
237
238 FILES_TO_CLEAN = $(OBJECTS) $(FULL_LIB)
|