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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2