(file) Return to shared-library-unix.mak CVS log (file) (dir) Up to [Pegasus] / pegasus / mak

  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           ##
 35           ## xlc compiler
 36           ##
 37           ##==============================================================================
 38           
 39           ifeq ($(COMPILER),xlc)
 40             LINK_COMMAND = xlC_r
 41             ifdef PEGASUS_USE_RELEASE_DIRS
 42               ifdef PEGASUS_HAS_MESSAGES
 43 kumpf 1.10       ifdef ICU_INSTALL
 44                    LINK_ARGUMENTS = -qmkshrobj=$(AIX_LIB_PRIORITY) -blibpath:/usr/linux/lib:/usr/lib:/lib:$(ICU_INSTALL)/lib -Wl,-bhalt:$(AIX_LD_HALT)
 45 mike  1.1        endif
 46                else
 47                  LINK_ARGUMENTS = -qmkshrobj=$(AIX_LIB_PRIORITY) -blibpath:/usr/linux/lib:/usr/lib:/lib -Wl,-bhalt:$(AIX_LD_HALT)
 48                endif
 49              else
 50                LINK_ARGUMENTS = -qmkshrobj=$(AIX_LIB_PRIORITY) -Wl,-bhalt:$(AIX_LD_HALT)
 51              endif
 52              LINK_OUT = -o
 53              ifeq ($(PEGASUS_SUPPORTS_DYNLIB), yes)
 54                LINK_COMMAND += -G
 55              endif
 56            endif
 57            
 58            ##==============================================================================
 59            ##
 60            ## acc compiler
 61            ##
 62            ##==============================================================================
 63            
 64            ifeq ($(COMPILER),acc)
 65              LINK_COMMAND = $(CXX) -b -Wl,+hlib$(LIBRARY)$(LIB_SUFFIX)
 66 mike  1.1    ifeq ($(PEGASUS_PLATFORM), HPUX_IA64_ACC)
 67 mateus.baur 1.2      LINK_COMMAND += +DD64 -mt -Wl,+rpathfirst
 68 mike        1.1    else
 69                      LINK_COMMAND += -Wl,-Bsymbolic
 70                    endif
 71                    ifeq ($(PEGASUS_SUPPORTS_DYNLIB),yes)
 72                      ifdef PEGASUS_USE_RELEASE_DIRS
 73                        LINK_COMMAND += -Wl,+b$(PEGASUS_DEST_LIB_DIR):/usr/lib
 74                        ifeq ($(PEGASUS_PLATFORM), HPUX_PARISC_ACC)
 75                          LINK_COMMAND += -Wl,+cdp,$(PEGASUS_PLATFORM_SDKROOT)/usr/lib:/usr/lib -Wl,+cdp,$(PEGASUS_HOME)/lib:$(PEGASUS_DEST_LIB_DIR)
 76 mateus.baur 1.5          ifdef OPENSSL_HOME
 77                            LINK_COMMAND += -Wl,+cdp,$(OPENSSL_HOME)/lib:/usr/lib
 78                          endif
 79                          ifdef ICU_INSTALL
 80                            LINK_COMMAND += -Wl,+cdp,$(ICU_INSTALL)/lib:$(PEGASUS_DEST_LIB_DIR)
 81                          endif
 82 mike        1.1        endif
 83                      else
 84                          LINK_COMMAND += -Wl,+b$(LIB_DIR):/usr/lib
 85                      endif
 86                    endif
 87                    LINK_COMMAND += -Wl,+s
 88                    ifdef PEGASUS_USE_DEBUG_BUILD_OPTIONS 
 89                      LINK_COMMAND += -g
 90                    endif
 91                    ifdef PEGASUS_CCOVER
 92                      EXTRA_LIBRARIES += $(CCOVER_LIB)/libcov.a
 93                    endif
 94                    LINK_ARGUMENTS =
 95                    LINK_OUT = -o
 96                  endif
 97                  
 98                  ##==============================================================================
 99                  ##
100                  ## gnu compiler
101                  ##
102                  ##==============================================================================
103 mike        1.1  
104                  ifeq ($(COMPILER),gnu)
105 mike        1.3    ifneq ($(OS),darwin)
106 mike        1.1     ifdef PEGASUS_USE_RELEASE_DIRS
107                        LINK_COMMAND = $(CXX) -shared $(LINK_MACHINE_OPTIONS)
108                        LINK_ARGUMENTS = -Wl,-hlib$(LIBRARY)$(LIB_SUFFIX)  -Xlinker -rpath -Xlinker $(PEGASUS_DEST_LIB_DIR)
109                     else
110                        LINK_COMMAND = $(CXX) -shared $(LINK_MACHINE_OPTIONS)
111                        LINK_ARGUMENTS = -Wl,-hlib$(LIBRARY)$(LIB_SUFFIX)  -Xlinker -rpath -Xlinker $(LIB_DIR) $(EXTRA_LINK_ARGUMENTS)
112                     endif
113                    else
114                      LINK_COMMAND = $(CXX) -dynamiclib
115                      LINK_ARGUMENTS = --helplib$(LIBRARY)$(LIB_SUFFIX) -ldl
116                    endif
117                    ifeq ($(PEGASUS_PLATFORM), SOLARIS_SPARC_GNU)
118                  	LINK_ARGUMENTS = -Wl,-hlib$(LIBRARY)$(LIB_SUFFIX) -Xlinker -L$(LIB_DIR) $(EXTRA_LINK_ARGUMENTS)
119                    endif
120                    LINK_OUT = -o
121                  endif
122                  
123                  ##==============================================================================
124                  ##
125                  ## decxx compiler
126                  ##
127 mike        1.1  ##==============================================================================
128                  
129                  ifeq ($(COMPILER),deccxx)
130                    LINK_COMMAND = cxx -shared
131                    LINK_ARGUMENTS =
132                    LINK_OUT = -o
133                  endif
134                  
135                  ##==============================================================================
136                  ##
137                  ## ibm compiler
138                  ##
139                  ##==============================================================================
140                  
141                  ifeq ($(COMPILER),ibm)
142                    LINK_COMMAND = $(CXX) $(FLAGS)
143                    LINK_ARGUMENTS = -W "l,XPLINK,dll,EDIT=NO"
144                    LINK_OUT = -o
145 r.kieninger 1.7    ifdef PEGASUS_GENERATE_LISTINGS
146                      LINK_ARGUMENTS += -W"l,MAP,LIST"
147                    endif
148 mike        1.1  endif
149                  
150                  ##==============================================================================
151                  ##
152                  ## CC compiler
153                  ##
154                  ##==============================================================================
155                  
156                  ifeq ($(COMPILER),CC)
157                    LINK_COMMAND = CC
158 karl        1.11   LINK_ARGUMENTS = -G -KPIC -mt -h lib$(LIBRARY).so $(LINK_MACHINE_OPTIONS)
159 mike        1.1    LINK_OUT = -o
160                    EXTRA_LIBRARIES += $(LIBRARY_SYS_LIBS)
161                  endif
162                  
163                  ##==============================================================================
164                  ##
165                  ## Link target
166                  ##
167                  ##==============================================================================
168                  
169                  ifdef EXTRA_LINK_FLAGS
170                    LINK_COMMAND += $(EXTRA_LINK_FLAGS)
171                  endif
172                  
173                  FULL_LIB=$(LIB_DIR)/lib$(LIBRARY)$(LIB_SUFFIX)
174                  
175                  ## Rule for all UNIX library builds
176                  $(FULL_LIB): $(LIB_DIR)/target $(OBJ_DIR)/target $(OBJECTS) $(FULL_LIBRARIES) \
177                      $(ERROR)
178                    ifeq ($(PEGASUS_SUPPORTS_DYNLIB),yes)
179                      ## To generate shared libraries which will cause dynamic
180 mike        1.1      ## search of other shared libraries which they reference,
181                      ## must specify the referenced shared libraries as "-l<name>"
182                      ## DYNAMIC_LIBRARIES must be defined appropriately in the
183                      ## libraries.mak file that includes this file
184                      ##
185                  
186                  
187                      ifeq ($(PEGASUS_PLATFORM),AIX_RS_IBMCXX)
188                  	rm -f $(FULL_LIB)
189                      endif
190                  
191 ouyang.jian 1.8      ifeq ($(PEGASUS_PLATFORM),PASE_ISERIES_IBMCXX)
192                  	rm -f $(FULL_LIB)
193                      endif
194                  
195 mike        1.1      ifeq ($(PEGASUS_PLATFORM),ZOS_ZSERIES_IBM)
196 r.kieninger 1.7  	$(LINK_COMMAND) $(LINK_ARGUMENTS) -L$(LIB_DIR) $(LINK_OUT) $(FULL_LIB) $(OBJECTS) $(DYNAMIC_LIBRARIES) $(EXTRA_LIBRARIES) $(SYS_LIBS) > lib$(LIBRARY).llst
197 r.kieninger 1.12 	@ $(ZIP) -a -m $(FULL_LIB).llst.zip lib$(LIBRARY).llst
198 mike        1.1        ## z/OS needs side definition files to link executables to
199                        ## dynamic libraries, so we have to copy them into the lib_dir
200                  	touch $(ROOT)/src/$(DIR)/lib$(LIBRARY).x
201 r.kieninger 1.7  	mv $(ROOT)/src/$(DIR)/lib$(LIBRARY).x $(LIB_DIR)
202                      else
203                  
204                  	$(LINK_COMMAND) $(LINK_ARGUMENTS) -L$(LIB_DIR) $(LINK_OUT) $(FULL_LIB) $(OBJECTS) $(DYNAMIC_LIBRARIES) $(EXTRA_LIBRARIES) $(SYS_LIBS)
205                  
206 mike        1.1      endif
207                    else
208                  	$(LINK_COMMAND) $(LINK_ARGUMENTS) $(LINK_OUT) $(FULL_LIB) $(OBJECTS) $(FULL_LIBRARIES) $(EXTRA_LIBRARIES) $(SYS_LIBS)
209                    endif
210                      ifeq ($(PEGASUS_PLATFORM),HPUX_PARISC_ACC)
211 kumpf       1.9  	$(MAKE) --directory=$(LIB_DIR) -f $(PEGASUS_ROOT)/mak/library-unix.mak \
212                              ln LIBRARY=lib$(LIBRARY) SUFFIX=$(LIB_SUFFIX) PLATFORM_SUFFIX=sl
213 mike        1.1      endif
214                      ifeq ($(PEGASUS_PLATFORM),HPUX_IA64_ACC)
215 kumpf       1.9  	$(MAKE) --directory=$(LIB_DIR) -f $(PEGASUS_ROOT)/mak/library-unix.mak \
216                              ln LIBRARY=lib$(LIBRARY) SUFFIX=$(LIB_SUFFIX) PLATFORM_SUFFIX=so
217 mike        1.1      endif
218                      ifdef PEGASUS_PLATFORM_LINUX_GENERIC_GNU
219 kumpf       1.9  	$(MAKE) --directory=$(LIB_DIR) -f $(PEGASUS_ROOT)/mak/library-unix.mak \
220                              ln LIBRARY=lib$(LIBRARY) SUFFIX=$(LIB_SUFFIX) PLATFORM_SUFFIX=so
221 mike        1.1      endif
222                  	$(TOUCH) $(FULL_LIB)
223                  	@ $(ECHO)
224                  
225                  ##==============================================================================
226                  ##
227                  ## clean-lib
228                  ##
229                  ##==============================================================================
230                  
231                  clean-lib: $(ERROR)
232                  	rm -f $(FULL_LIB)
233                  
234                  ##==============================================================================
235                  ##
236 kumpf       1.9  ## ln (target to create soft link)
237                  ##
238                  ## This target is used to allow the current working directory to be set in a
239                  ## separate "make" execution, to avoid using fully-specified paths in the link
240                  ## command.
241                  ##
242                  ##==============================================================================
243                  
244                  ln:
245                  	ln -f -s $(LIBRARY)$(SUFFIX) $(LIBRARY).$(PLATFORM_SUFFIX)
246                  
247                  ##==============================================================================
248                  ##
249 kumpf       1.6  ## FILES_TO_CLEAN (files removed by "make clean")
250 mike        1.1  ##
251                  ##==============================================================================
252                  
253                  FILES_TO_CLEAN = $(OBJECTS) $(FULL_LIB)
254 kumpf       1.6  ifeq ($(PEGASUS_PLATFORM),HPUX_PARISC_ACC)
255                      FILES_TO_CLEAN += $(LIB_DIR)/lib$(LIBRARY).sl
256                  endif
257                  ifeq ($(PEGASUS_PLATFORM),HPUX_IA64_ACC)
258                      FILES_TO_CLEAN += $(LIB_DIR)/lib$(LIBRARY).so
259                  endif
260                  ifdef PEGASUS_PLATFORM_LINUX_GENERIC_GNU
261                      FILES_TO_CLEAN += $(LIB_DIR)/lib$(LIBRARY).so
262                  endif

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2