1#************************************************************** 2# 3# Licensed to the Apache Software Foundation (ASF) under one 4# or more contributor license agreements. See the NOTICE file 5# distributed with this work for additional information 6# regarding copyright ownership. The ASF licenses this file 7# to you under the Apache License, Version 2.0 (the 8# "License"); you may not use this file except in compliance 9# with the License. You may obtain a copy of the License at 10# 11# http://www.apache.org/licenses/LICENSE-2.0 12# 13# Unless required by applicable law or agreed to in writing, 14# software distributed under the License is distributed on an 15# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16# KIND, either express or implied. See the License for the 17# specific language governing permissions and limitations 18# under the License. 19# 20#************************************************************** 21 22 23 24####################################################### 25# Anweisungen fuer das Linken 26# unroll begin 27 28.IF "$(DEF$(TNR)TARGETN)"!="" 29 30#to make intuitiv naming work 31.IF "$(DEF$(TNR)LIBNAME)"!="" 32DEFLIB$(TNR)NAME*=$(DEF$(TNR)LIBNAME) 33.ENDIF # "$(DEF$(TNR)LIBNAME)"!="" 34 35.IF "$(DEFLIB$(TNR)NAME)"!="" 36DEF$(TNR)DEPN+=$(foreach,i,$(DEFLIB$(TNR)NAME) $(SLB)/$(i).lib) 37.ENDIF 38 39.IF "$(SHL$(TNR)VERSIONMAP)"!="" 40.IF "$(DEF$(TNR)EXPORTFILE)"=="" 41.IF "$(GUI)"=="WNT" 42DEF$(TNR)EXPORTFILE=$(MISC)/$(SHL$(TNR)VERSIONMAP:b)_$(SHL$(TNR)TARGET).dxp 43.IF "$(COM)"=="GCC" 44$(DEF$(TNR)EXPORTFILE) : $(SHL$(TNR)OBJS) $(SHL$(TNR)LIBS) 45.ENDIF # .IF "$(COM)"=="GCC" 46 47$(DEF$(TNR)EXPORTFILE) : $(SHL$(TNR)VERSIONMAP) 48 $(COMMAND_ECHO)$(TYPE) $< | $(AWK) -f $(SOLARENV)/bin/getcsym.awk > $@ 49.IF "$(COM)"=="GCC" 50 $(COMMAND_ECHO)-$(GREP) -v "\*\|?" $@ | $(SED) -e 's@#.*@@' > $@.exported-symbols 51 $(COMMAND_ECHO)-$(GREP) "\*\|?" $@ > $@.symbols-regexp 52# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS 53# Extract RTTI symbols from all the objects that will be used to build a shared library 54 $(COMMAND_ECHO)nm -gP $(SHL$(TNR)OBJS) \ 55 `$(TYPE) /dev/null $(foreach,j,$(SHL$(TNR)LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)$/$(ROUT)\#g` \ 56 | $(SOLARENV)/bin/addsym-mingw.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols 57# overwrite the map file generate into the local output tree with the generated 58# exported symbols list 59 $(COMMAND_ECHO)$(RENAME) $@.exported-symbols $@ 60.ENDIF # .IF "$(COM)"=="GCC" 61 62.ENDIF # "$(GUI)"=="WNT" 63 64.IF "$(GUI)"=="OS2" 65DEF$(TNR)EXPORTFILE=$(MISC)/$(SHL$(TNR)VERSIONMAP:b)_$(SHL$(TNR)TARGET).dxp 66$(DEF$(TNR)EXPORTFILE) : $(SHL$(TNR)VERSIONMAP) 67 $(TYPE) $< | $(AWK) -f $(SOLARENV)/bin/getcsym.awk > $@ 68.ENDIF # "$(GUI)"=="OS2" 69 70.ENDIF # "$(DEF$(TNR)EXPORTFILE)"=="" 71.ENDIF # "$(SHL$(TNR)VERSIONMAP)"!="" 72 73.IF "$(GUI)"=="WNT" 74 75DEF$(TNR)FILTER=$(SOLARENV)/inc/dummy.flt 76 77RMHACK$(TNR):=$(RM) 78 79.IF "$(DEF$(TNR)CEXP)"!="" 80EXPORT_ALL_SWITCH=-A $(DEF$(TNR)CEXP) 81.ENDIF 82 83.IF "$(link_always)"=="" 84$(DEF$(TNR)TARGETN) : \ 85 $(DEF$(TNR)DEPN) \ 86 $(DEF$(TNR)EXPORTFILE) 87.ELSE # "$(link_always)"=="" 88$(DEF$(TNR)TARGETN) .PHONY : 89.ENDIF # "$(link_always)"=="" 90 @-$(RM) $@.tmpfile 91 @echo "Making: module definition file" $(@:f) 92 @echo LIBRARY $(EMQ)"$(SHL$(TNR)TARGETN:f)$(EMQ)" >$@.tmpfile 93.IF "$(COM)"!="GCC" 94 @echo HEAPSIZE 0 >>$@.tmpfile 95.ENDIF 96 @echo EXPORTS >>$@.tmpfile 97.IF "$(VERSIONOBJ)"!="" 98# getversioninfo fuer alle!! 99 @echo GetVersionInfo >>$@.tmpfile 100.ENDIF 101.IF "$(DEFLIB$(TNR)NAME)"!="" 102.IF "$(COM)"=="GCC" 103 @-$(RM) $(MISC)/$(SHL$(TNR)TARGET).exp 104 $(COMMAND_ECHO)dlltool --output-def $(MISC)/$(SHL$(TNR)TARGET).exp --export-all-symbols \ 105 `$(TYPE) $(foreach,i,$(DEFLIB$(TNR)NAME) $(SLB)/$(i).lib) | sed s#$(ROUT)#$(PRJ)/$(ROUT)#g` 106 $(COMMAND_ECHO)tail --lines +3 $(MISC)/$(SHL$(TNR)TARGET).exp | sed '/^;/d' >>$@.tmpfile 107 @-$(RM) $(MISC)/$(SHL$(TNR)TARGET).exp 108.ELSE 109.IF "$(SHL$(TNR)USE_EXPORTS)"=="" 110 @-$(RMHACK$(TNR)) $(MISC)/$(SHL$(TNR)TARGET).exp 111 @$(LIBMGR) -EXTRACT:/ /OUT:$(MISC)/$(SHL$(TNR)TARGET).exp $(SLB)/$(DEFLIB$(TNR)NAME).lib 112 @$(LDUMP2) -N $(EXPORT_ALL_SWITCH) -F $(MISC)/$(SHL$(TNR)TARGET).flt $(MISC)/$(SHL$(TNR)TARGET).exp >>$@.tmpfile 113 $(COMMAND_ECHO)$(RMHACK$(TNR)) $(MISC)/$(SHL$(TNR)TARGET).exp 114.ELSE # "$(SHL$(TNR)USE_EXPORTS)"=="" 115 @$(DUMPBIN) -DIRECTIVES $(foreach,i,$(DEFLIB$(TNR)NAME) $(SLB)/$(i).lib) | $(GREP) EXPORT: > $(MISC)/$(SHL$(TNR)TARGET).direct 116 @$(LDUMP2) -N -D $(EXPORT_ALL_SWITCH) -F $(DEF$(TNR)FILTER) $(MISC)/$(SHL$(TNR)TARGET).direct >>$@.tmpfile 117.ENDIF # "$(SHL$(TNR)USE_EXPORTS)"=="" 118.ENDIF 119.ENDIF # "$(DEFLIB$(TNR)NAME)"!="" 120.IF "$(DEF$(TNR)EXPORT1)"!="" 121 @echo $(DEF$(TNR)EXPORT1) >>$@.tmpfile 122.ENDIF 123.IF "$(DEF$(TNR)EXPORT2)"!="" 124 @echo $(DEF$(TNR)EXPORT2) >>$@.tmpfile 125.ENDIF 126.IF "$(DEF$(TNR)EXPORT3)"!="" 127 @echo $(DEF$(TNR)EXPORT3) >>$@.tmpfile 128.ENDIF 129.IF "$(DEF$(TNR)EXPORT4)"!="" 130 @echo $(DEF$(TNR)EXPORT4) >>$@.tmpfile 131.ENDIF 132.IF "$(DEF$(TNR)EXPORT5)"!="" 133 @echo $(DEF$(TNR)EXPORT5) >>$@.tmpfile 134.ENDIF 135.IF "$(DEF$(TNR)EXPORT6)"!="" 136 @echo $(DEF$(TNR)EXPORT6) >>$@.tmpfile 137.ENDIF 138.IF "$(DEF$(TNR)EXPORT7)"!="" 139 @echo $(DEF$(TNR)EXPORT7) >>$@.tmpfile 140.ENDIF 141.IF "$(DEF$(TNR)EXPORT8)"!="" 142 @echo $(DEF$(TNR)EXPORT8) >>$@.tmpfile 143.ENDIF 144.IF "$(DEF$(TNR)EXPORT9)"!="" 145 @echo $(DEF$(TNR)EXPORT9) >>$@.tmpfile 146.ENDIF 147.IF "$(DEF$(TNR)EXPORT10)"!="" 148 @echo $(DEF$(TNR)EXPORT10) >>$@.tmpfile 149.ENDIF 150.IF "$(DEF$(TNR)EXPORT11)"!="" 151 @echo $(DEF$(TNR)EXPORT11) >>$@.tmpfile 152.ENDIF 153.IF "$(DEF$(TNR)EXPORT12)"!="" 154 @echo $(DEF$(TNR)EXPORT12) >>$@.tmpfile 155.ENDIF 156.IF "$(DEF$(TNR)EXPORT13)"!="" 157 @echo $(DEF$(TNR)EXPORT13) >>$@.tmpfile 158.ENDIF 159.IF "$(DEF$(TNR)EXPORT14)"!="" 160 @echo $(DEF$(TNR)EXPORT14) >>$@.tmpfile 161.ENDIF 162.IF "$(DEF$(TNR)EXPORT15)"!="" 163 @echo $(DEF$(TNR)EXPORT15) >>$@.tmpfile 164.ENDIF 165.IF "$(DEF$(TNR)EXPORT16)"!="" 166 @echo $(DEF$(TNR)EXPORT16) >>$@.tmpfile 167.ENDIF 168.IF "$(DEF$(TNR)EXPORT17)"!="" 169 @echo $(DEF$(TNR)EXPORT17) >>$@.tmpfile 170.ENDIF 171.IF "$(DEF$(TNR)EXPORT18)"!="" 172 @echo $(DEF$(TNR)EXPORT18) >>$@.tmpfile 173.ENDIF 174.IF "$(DEF$(TNR)EXPORT19)"!="" 175 @echo $(DEF$(TNR)EXPORT19) >>$@.tmpfile 176.ENDIF 177.IF "$(DEF$(TNR)EXPORT20)"!="" 178 @echo $(DEF$(TNR)EXPORT20) >>$@.tmpfile 179.ENDIF 180.IF "$(DEF$(TNR)EXPORTFILE)"!="" 181.IF "$(COM)"=="GCC" 182 $(COMMAND_ECHO)$(TYPE) $(DEF$(TNR)EXPORTFILE) | sed -e s:PRIVATE:: >> $@.tmpfile 183.ELSE 184 $(COMMAND_ECHO)$(TYPE) $(DEF$(TNR)EXPORTFILE) >> $@.tmpfile 185.ENDIF 186.ENDIF 187 @-$(RM) $@ 188 @$(RENAME) $@.tmpfile $@ 189.ENDIF # "$(GUI)"=="WNT" 190 191.IF "$(GUI)"=="OS2" 192 193#21/02/2006 YD dll names must be 8.3, invoke fix script 194#check osl/os2/module.c/osl_loadModule() 195SHL$(TNR)TARGET8=$(shell @fix_shl.cmd $(SHL$(TNR)TARGETN:f)) 196 197DEF$(TNR)FILTER=$(SOLARENV)/inc/dummy.flt 198DEF$(TNR)NAMELIST=$(foreach,i,$(DEFLIB$(TNR)NAME) $(SLB)/$(i).lib) 199 200.IF "$(link_always)"=="" 201$(DEF$(TNR)TARGETN) : \ 202 $(DEF$(TNR)DEPN) \ 203 $(DEF$(TNR)EXPORTFILE) 204.ELSE # "$(link_always)"=="" 205$(DEF$(TNR)TARGETN) .PHONY : 206.ENDIF # "$(link_always)"=="" 207 @+-$(RM) $@.tmpfile 208 @echo "Making: module definition file" $(@:f) 209 @echo LIBRARY $(SHL$(TNR)TARGET8) INITINSTANCE TERMINSTANCE >$@.tmpfile 210 @echo DATA MULTIPLE >>$@.tmpfile 211 @echo EXPORTS >>$@.tmpfile 212.IF "$(VERSIONOBJ)"!="" 213# getversioninfo fuer alle!! 214 @echo _GetVersionInfo >$@.tmp_ord 215.ENDIF 216 217.IF "$(DEFLIB$(TNR)NAME)"!="" 218 @+echo $(SLB)/$(DEFLIB$(TNR)NAME).lib 219 @+emxexp $(DEF$(TNR)NAMELIST) | fix_exp_file >> $@.tmp_ord 220.ENDIF # "$(DEFLIB$(TNR)NAME)"!="" 221 222.IF "$(DEF$(TNR)EXPORT1)"!="" 223 @echo $(DEF$(TNR)EXPORT1) >>$@.tmpfile 224.ENDIF 225.IF "$(DEF$(TNR)EXPORT2)"!="" 226 @echo $(DEF$(TNR)EXPORT2) >>$@.tmpfile 227.ENDIF 228.IF "$(DEF$(TNR)EXPORT3)"!="" 229 @echo $(DEF$(TNR)EXPORT3) >>$@.tmpfile 230.ENDIF 231.IF "$(DEF$(TNR)EXPORT4)"!="" 232 @echo $(DEF$(TNR)EXPORT4) >>$@.tmpfile 233.ENDIF 234.IF "$(DEF$(TNR)EXPORT5)"!="" 235 @echo $(DEF$(TNR)EXPORT5) >>$@.tmpfile 236.ENDIF 237.IF "$(DEF$(TNR)EXPORT6)"!="" 238 @echo $(DEF$(TNR)EXPORT6) >>$@.tmpfile 239.ENDIF 240.IF "$(DEF$(TNR)EXPORT7)"!="" 241 @echo $(DEF$(TNR)EXPORT7) >>$@.tmpfile 242.ENDIF 243.IF "$(DEF$(TNR)EXPORT8)"!="" 244 @echo $(DEF$(TNR)EXPORT8) >>$@.tmpfile 245.ENDIF 246.IF "$(DEF$(TNR)EXPORT9)"!="" 247 @echo $(DEF$(TNR)EXPORT9) >>$@.tmpfile 248.ENDIF 249.IF "$(DEF$(TNR)EXPORT10)"!="" 250 @echo $(DEF$(TNR)EXPORT10) >>$@.tmpfile 251.ENDIF 252.IF "$(DEF$(TNR)EXPORT11)"!="" 253 @echo $(DEF$(TNR)EXPORT11) >>$@.tmpfile 254.ENDIF 255.IF "$(DEF$(TNR)EXPORT12)"!="" 256 @echo $(DEF$(TNR)EXPORT12) >>$@.tmpfile 257.ENDIF 258.IF "$(DEF$(TNR)EXPORT13)"!="" 259 @echo $(DEF$(TNR)EXPORT13) >>$@.tmpfile 260.ENDIF 261.IF "$(DEF$(TNR)EXPORT14)"!="" 262 @echo $(DEF$(TNR)EXPORT14) >>$@.tmpfile 263.ENDIF 264.IF "$(DEF$(TNR)EXPORT15)"!="" 265 @echo $(DEF$(TNR)EXPORT15) >>$@.tmpfile 266.ENDIF 267.IF "$(DEF$(TNR)EXPORT16)"!="" 268 @echo $(DEF$(TNR)EXPORT16) >>$@.tmpfile 269.ENDIF 270.IF "$(DEF$(TNR)EXPORT17)"!="" 271 @echo $(DEF$(TNR)EXPORT17) >>$@.tmpfile 272.ENDIF 273.IF "$(DEF$(TNR)EXPORT18)"!="" 274 @echo $(DEF$(TNR)EXPORT18) >>$@.tmpfile 275.ENDIF 276.IF "$(DEF$(TNR)EXPORT19)"!="" 277 @echo $(DEF$(TNR)EXPORT19) >>$@.tmpfile 278.ENDIF 279.IF "$(DEF$(TNR)EXPORT20)"!="" 280 @echo $(DEF$(TNR)EXPORT20) >>$@.tmpfile 281.ENDIF 282.IF "$(DEF$(TNR)EXPORTFILE)"!="" 283 @fix_def_file < $(DEF$(TNR)EXPORTFILE) >> $@.tmp_ord 284.ENDIF 285 @sort < $@.tmp_ord | uniq > $@.exptmpfile 286 @fix_def_ord < $@.exptmpfile >> $@.tmpfile 287 @+-$(RM) $@ 288 $(COMMAND_ECHO)+$(RENAME) $@.tmpfile $@ 289 @+-$(RM) $@.tmp_ord 290 @+-$(RM) $@.exptmpfile 291.IF "$(SHL$(TNR)USE_EXPORTS)"=="" || "$(SHL$(TNR)USE_EXPORTS)"=="ordinal" 292#03/11/2012 if 'name' is not used, export from def file (with ordinals) 293 @echo Build import library from DEF file. 294 @+-$(RM) $(LB)/$(SHL$(TNR)TARGETN:b).lib 295 $(COMMAND_ECHO)+$(IMPLIB) $(IMPLIBFLAGS) $(LB)/$(SHL$(TNR)TARGETN:b).lib $@ 296.ENDIF # "$(SHL$(TNR)USE_EXPORTS)"=="" 297 298.ENDIF # "$(GUI)"=="OS2" 299 300.IF "$(GUI)"=="UNX" 301$(DEF$(TNR)TARGETN): \ 302 $(DEF$(TNR)DEPN) \ 303 $(DEF$(TNR)EXPORTFILE) 304 @echo just a dummy for UNIX > $@ 305.ENDIF 306.ENDIF # "$(DEF$(TNR)TARGETN)"!="" 307 308 309# Anweisungen fuer das Linken 310# unroll end 311####################################################### 312 313