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

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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2