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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2