(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 karl            1.20.6.1       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 karl            1.20.6.1     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                            endif
121                            LINK_OUT = -o
122                          endif
123                          ##==============================================================================
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 karl            1.20.6.1       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 mike            1.1        endif
144                            LINK_OUT = -o
145                          endif
146                          
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 mike            1.1      
165                          ifeq ($(COMPILER),ibm)
166                            LINK_COMMAND = $(CXX) $(FLAGS)
167                            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 karl            1.20.6.1     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 karl            1.20.6.1     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 karl            1.20.6.1 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 karl            1.20.6.1 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