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# targets for linking 26# unroll begin 27 28.IF "$(SHL$(TNR)TARGETN)"!="" 29 30.IF "$(OS)"=="AIX" 31SHL$(TNR)STDLIBS= 32.ENDIF 33 34.IF "$(SHLLINKARCONLY)" != "" 35SHL$(TNR)STDLIBS= 36STDSHL= 37.ELSE 38SHL$(TNR)ARCHIVES= 39.ENDIF 40 41# decide how to link 42.IF "$(SHL$(TNR)CODETYPE)"=="C" 43SHL$(TNR)LINKER=$(LINKC) 44SHL$(TNR)STDSHL=$(subst,CPPRUNTIME, $(STDSHL)) 45SHL$(TNR)LINKFLAGS+=$(LINKCFLAGS) 46.ELSE # "$(SHL$(TNR)CODETYPE)"=="C" 47SHL$(TNR)LINKER=$(LINK) 48SHL$(TNR)STDSHL=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDSHL)) 49SHL$(TNR)LINKFLAGS+=$(LINKFLAGS) 50.ENDIF # "$(SHL$(TNR)CODETYPE)"=="C" 51 52SHL$(TNR)RPATH*=OOO 53LINKFLAGSRUNPATH_$(SHL$(TNR)RPATH)*=/ERROR:/Bad_SHL$(TNR)RPATH_value 54SHL$(TNR)LINKFLAGS+=$(LINKFLAGSRUNPATH_$(SHL$(TNR)RPATH)) 55 56.IF "$(SHL$(TNR)USE_EXPORTS)"=="" || "$(GUI)"=="OS2" 57SHL$(TNR)DEF*=$(MISC)/$(SHL$(TNR)TARGET).def 58.ENDIF # "$(SHL$(TNR)USE_EXPORTS)"=="" 59 60EXTRALIBPATHS$(TNR)=$(EXTRALIBPATHS) 61.IF "$(UPDATER)"=="YES" 62.IF "$(SHL$(TNR)NOCHECK)"=="" 63.IF "$(SOLAR_STLLIBPATH)"!="" 64EXTRALIBPATHS$(TNR)+=-L$(SOLAR_STLLIBPATH) 65.ENDIF 66.ENDIF # "$(SHL$(TNR)NOCHECK)"!="" 67.ENDIF 68#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 69#+++++++++++ version object ++++++++++++++++++++++++++++++++++++++++ 70#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 71 72.IF "$(L10N_framework)"=="" 73.IF "$(VERSIONOBJ)"!="" 74SHL$(TNR)VERSIONOBJ:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL$(TNR)TARGET))}$(VERSIONOBJ:f) 75USE_VERSIONH:=$(INCCOM)/$(SHL$(TNR)VERSIONOBJ:b).h 76.IF "$(GUI)" == "UNX" 77SHL$(TNR)VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL$(TNR)TARGET))}$(VERSIONOBJ:f:s/.o/.obj/) 78.ELSE # "$(GUI)" == "UNX" 79SHL$(TNR)VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL$(TNR)TARGET))}$(VERSIONOBJ:f) 80.ENDIF # "$(GUI)" == "UNX" 81$(MISC)/$(SHL$(TNR)VERSIONOBJ:b).c : $(SOLARENV)/src/version.c $(INCCOM)/$(SHL$(TNR)VERSIONOBJ:b).h 82# $(COPY) $(SOLARENV)/src/version.c $@ 83 $(COMMAND_ECHO)$(TYPE) $(SOLARENV)/src/version.c | $(SED) s/_version.h/$(SHL$(TNR)VERSIONOBJ:b).h/ > $@ 84 85.INIT : $(SHL$(TNR)VERSIONOBJDEP) 86.ENDIF # "$(VERSIONOBJ)"!="" 87.ENDIF 88 89.IF "$(GUI)" != "UNX" 90.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2" 91.IF "$(SHL$(TNR)IMPLIB)" == "" 92SHL$(TNR)IMPLIB=i$(TARGET)_t$(TNR) 93.ENDIF # "$(SHL$(TNR)IMPLIB)" == "" 94.IF "$(COM)" != "GCC" 95USE_$(TNR)IMPLIB=-implib:$(LB)/$(SHL$(TNR)IMPLIB).lib 96.ENDIF # "$(COM)" != "GCC" 97SHL$(TNR)IMPLIBN=$(LB)/$(SHL$(TNR)IMPLIB).lib 98ALLTAR : $(SHL$(TNR)IMPLIBN) 99 100.IF "$(USE_DEFFILE)"=="" 101USE_$(TNR)IMPLIB_DEPS=$(LB)/$(SHL$(TNR)IMPLIB).lib 102.ENDIF # "$(USE_DEFFILE)"=="" 103.ENDIF # "$(GUI)" == "WNT" || "$(GUI)" == "OS2" 104USE_SHL$(TNR)DEF=$(SHL$(TNR)DEF) 105.ELSE # "$(GUI)" != "UNX" 106USE_SHL$(TNR)DEF= 107SHL$(TNR)DEPN+:=$(SHL$(TNR)DEPNU) 108 109.IF "$(SHL$(TNR)VERSIONMAP)"=="" 110# to activate vmaps remove "#" 111USE_SHL$(TNR)VERSIONMAP=$(MISC)/$(SHL$(TNR)TARGET).vmap 112.ENDIF # "$(SHL$(TNR)VERSIONMAP)"=="" 113 114.IF "$(USE_SHL$(TNR)VERSIONMAP)"!="" 115 116.IF "$(SHL$(TNR)FILTERFILE)"!="" 117.IF "$(SHL$(TNR)VERSIONMAP)"!="" 118#eine von beiden ist zuviel 119USE_SHL$(TNR)VERSIONMAP=$(MISC)/$(SHL$(TNR)TARGET).vmap 120$(USE_SHL$(TNR)VERSIONMAP) .PHONY: 121 @echo ----------------------------- 122 @echo you should only use versionmap OR exportfile 123 @echo ----------------------------- 124# force_dmake_to_error 125 126.ENDIF # "$(SHL$(TNR)VERSIONMAP)"!="" 127 128SHL$(TNR)VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL$(TNR)VERSIONMAP) 129 130$(USE_SHL$(TNR)VERSIONMAP): \ 131 $(SHL$(TNR)OBJS)\ 132 $(SHL$(TNR)LIBS)\ 133 $(SHL$(TNR)FILTERFILE) 134 @$(RM) $@.dump 135.IF "$(SHL$(TNR)OBJS)"!="" 136# dump remaining objects on the fly 137.IF "$(OS)"=="MACOSX" 138 @-nm $(SHL$(TNR)OBJS:s/.obj/.o/) > $@.dump 139.ELSE 140 @nm $(SHL$(TNR)OBJS:s/.obj/.o/) > $@.dump 141.ENDIF 142.ENDIF # "$(SHL$(TNR)OBJS)!"="" 143 @$(TYPE) /dev/null $(SHL$(TNR)LIBS:s/.lib/.dump/) >> $@.dump 144 $(COMMAND_ECHO) $(PERL) $(SOLARENV)/bin/mapgen.pl -d $@.dump -s $(SHL$(TNR)INTERFACE) -f $(SHL$(TNR)FILTERFILE) -m $@ 145 146.ELSE # "$(SHL$(TNR)FILTERFILE)"!="" 147USE_SHL$(TNR)VERSIONMAP=$(MISC)/$(SHL$(TNR)TARGET).vmap 148$(USE_SHL$(TNR)VERSIONMAP) : 149.IF "$(VERBOSE)" == "TRUE" 150 @echo ----------------------------- 151 @echo SHL$(TNR)FILTERFILE not set! 152 @echo ----------------------------- 153 @$(TOUCH) $@ 154 @echo dummy file to keep the dependencies for later use. 155.ELSE 156 @$(TOUCH) $@ 157.ENDIF 158# force_dmake_to_error 159.ENDIF # "$(SHL$(TNR)FILTERFILE)"!="" 160.ELSE # "$(USE_SHL$(TNR)VERSIONMAP)"!="" 161 162#and now for the plain non-generic way... 163.IF "$(SHL$(TNR)VERSIONMAP)"!="" 164USE_SHL$(TNR)VERSIONMAP=$(MISC)/$(SHL$(TNR)VERSIONMAP:b)_$(SHL$(TNR)TARGET)$(SHL$(TNR)VERSIONMAP:e) 165SHL$(TNR)VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL$(TNR)VERSIONMAP) 166 167.IF "$(OS)"=="MACOSX" 168$(USE_SHL$(TNR)VERSIONMAP): $(SHL$(TNR)OBJS) $(SHL$(TNR)LIBS) 169.ENDIF 170 171# .ERRREMOVE is needed as a recipe line like "$(AWK) ... > $@" would create $@ 172# even if the $(AWK) part fails: 173$(USE_SHL$(TNR)VERSIONMAP) .ERRREMOVE: $(SHL$(TNR)VERSIONMAP) 174 @@-$(RM) -f $@ 175# The following files will only be generated and needed on Mac OS X as temporary files 176# in order to generate exported symbols list out of Linux/Solaris map files 177.IF "$(OS)"=="MACOSX" 178 @-$(RM) -f $@.symregexp >& $(NULLDEV) 179 @-$(RM) -f $@.expsymlist >& $(NULLDEV) 180.ENDIF 181# Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what 182# happens if somebody will change it in the future 183.IF "$(COMID)"=="gcc3" 184 $(COMMAND_ECHO) tr -d "\015" < $(SHL$(TNR)VERSIONMAP) | $(AWK) -f $(SOLARENV)/bin/addsym.awk > $@ 185.ELIF "$(COMNAME)"=="sunpro5" 186 $(COMMAND_ECHO) tr -d "\015" < $(SHL$(TNR)VERSIONMAP) | $(GREP) -v $(IGNORE_SYMBOLS) > $@ 187.ELSE # "$(COMID)"=="gcc3" 188 $(COMMAND_ECHO) tr -d "\015" < $(SHL$(TNR)VERSIONMAP) > $@ 189.ENDIF # "$(COMID)"=="gcc3" 190 @chmod a+w $@ 191# Mac OS X post-processing generate an exported symbols list from the generated map file 192# for details on exported symbols list see man ld on Mac OS X 193.IF "$(OS)"=="MACOSX" 194 @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep -v "\*\|?" > $@.exported-symbols 195 @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep "\*\|?" > $@.symbols-regexp 196# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS 197# Extract RTTI symbols from all the objects that will be used to build a shared library 198.IF "$(SHL$(TNR)OBJS)"!="" 199 -echo $(foreach,i,$(SHL$(TNR)OBJS:s/.obj/.o/) $i) | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols 200.ENDIF 201.IF "$(SHL$(TNR)LIBS)"!="" 202 $(COMMAND_ECHO)-$(TYPE) $(foreach,j,$(SHL$(TNR)LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols 203.ENDIF 204# overwrite the map file generate into the local output tree with the generated 205# exported symbols list 206 cp $@.exported-symbols $@ 207.ENDIF # .IF "$(OS)"=="MACOSX" 208.ENDIF # "$(SHL$(TNR)VERSIONMAP)"!="" 209.ENDIF # "$(USE_SHL$(TNR)VERSIONMAP)"!="" 210.ENDIF # "$(GUI)" != "UNX" 211 212.IF "$(UNIXVERSIONNAMES)"!="" 213.IF "$(OS)"!="MACOSX" 214.IF "$(GUI)"=="UNX" 215SHL$(TNR)SONAME=\"$(SONAME_SWITCH)$(SHL$(TNR)TARGETN:f)\" 216.ENDIF # "$(GUI)"!="UNX" 217.ENDIF # "$(OS)"!="MACOSX" 218.ENDIF # "$(UNIXVERSIONNAMES)"!="" 219 220.IF "$(SHL$(TNR)RES)"!="" 221SHL$(TNR)ALLRES+=$(SHL$(TNR)RES) 222SHL$(TNR)LINKRES*=$(MISC)/$(SHL$(TNR)TARGET).res 223SHL$(TNR)LINKRESO*=$(MISC)/$(SHL$(TNR)TARGET)_res.o 224.ENDIF # "$(SHL$(TNR)RES)"!="" 225 226.IF "$(SHL$(TNR)DEFAULTRES)$(use_shl_versions)"!="" 227SHL$(TNR)DEFAULTRES*=$(MISC)/$(SHL$(TNR)TARGET)_def.res 228SHL$(TNR)ALLRES+=$(SHL$(TNR)DEFAULTRES) 229SHL$(TNR)LINKRES*=$(MISC)/$(SHL$(TNR)TARGET).res 230SHL$(TNR)LINKRESO*=$(MISC)/$(SHL$(TNR)TARGET)_res.o 231.ENDIF # "$(SHL$(TNR)DEFAULTRES)$(use_shl_versions)"!="" 232 233#.IF "$(SHL$(TNR)TARGETN)"!="" 234 235.IF "$(linkinc)"!="" 236.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2" 237.IF "$(SHL$(TNR)LIBS)"!="" 238$(MISC)/$(SHL$(TNR)TARGET)_linkinc.ls .PHONY: 239 @@-$(RM) $@ 240 $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL$(TNR)LIBS) $(i:s/.lib/.lin/)) >> $@ 241.ENDIF # "$(SHL$(TNR)LIBS)"!="" 242.ENDIF 243 244LINKINCTARGETS+=$(MISC)/$(SHL$(TNR)TARGETN:b)_linkinc.ls 245$(SHL$(TNR)TARGETN) : $(LINKINCTARGETS) 246 247.ELSE 248.IF "$(SHL$(TNR)USE_EXPORTS)"=="name" 249.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2" 250.IF "$(COM)"!="GCC" 251.IF "$(SHL$(TNR)LIBS)"!="" 252SHL$(TNR)LINKLIST=$(MISC)/$(SHL$(TNR)TARGET)_link.lst 253SHL$(TNR)LINKLISTPARAM=@$(SHL$(TNR)LINKLIST) 254$(SHL$(TNR)LINKLIST) : $(SHL$(TNR)LIBS) 255 @@-$(RM) $@ 256 $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL$(TNR)LIBS) $(i:s/.lib/.lin/)) >> $@ 257.ENDIF # "$(SHL$(TNR)LIBS)"!="" 258.ENDIF # "$(COM)"!="GCC" 259.ENDIF 260.ENDIF # "$(SHL$(TNR)USE_EXPORTS)"=="name" 261 262$(MISC)/%linkinc.ls: 263 @echo . > $@ 264.ENDIF # "$(linkinc)"!="" 265 266.IF "$(GUI)" == "OS2" 267#21/02/2006 YD dll names must be 8.3, invoke fix script 268#check osl/os2/module.c/osl_loadModule() 269SHL$(TNR)TARGET8=$(shell @fix_shl.cmd $(SHL$(TNR)TARGET)) 270.ENDIF 271 272 273$(SHL$(TNR)TARGETN) : \ 274 $(SHL$(TNR)OBJS)\ 275 $(SHL$(TNR)LIBS)\ 276 $(USE_$(TNR)IMPLIB_DEPS)\ 277 $(USE_SHL$(TNR)DEF)\ 278 $(USE_SHL$(TNR)VERSIONMAP)\ 279 $(SHL$(TNR)RES)\ 280 $(SHL$(TNR)DEPN) \ 281 $(SHL$(TNR)LINKLIST) 282 @echo "Making: " $(@:f) 283.IF "$(GUI)" == "WNT" 284.IF "$(SHL$(TNR)DEFAULTRES)"!="" 285 @@-$(RM) $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc 286.IF "$(SHL$(TNR)ICON)" != "" 287 @echo 1 ICON $(SHL$(TNR)ICON) >> $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc 288.ENDIF 289.IF "$(use_shl_versions)" != "" 290.IF "$(SHL$(TNR)ADD_VERINFO)"!="" 291 @echo $(EMQ)#include $(EMQ)"$(SHL$(TNR)ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc 292.ELSE # "$(SHL$(TNR)ADD_VERINFO)"!="" 293 @echo $(EMQ)#define ADDITIONAL_VERINFO1 >> $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc 294 @echo $(EMQ)#define ADDITIONAL_VERINFO2 >> $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc 295 @echo $(EMQ)#define ADDITIONAL_VERINFO3 >> $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc 296.ENDIF # "$(SHL$(TNR)ADD_VERINFO)"!="" 297 @echo $(EMQ)#define VERVARIANT $(BUILD) >> $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc 298 @echo $(EMQ)#define ORG_NAME $(SHL$(TNR)TARGET)$(DLLPOST) >> $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc 299 @echo $(EMQ)#define INTERNAL_NAME $(SHL$(TNR)TARGET:b) >> $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc 300 @echo $(EMQ)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc 301.ENDIF # "$(use_shl_versions)" != "" 302 $(COMMAND_ECHO)$(RC) -DWIN32 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc 303.ENDIF # "$(SHL$(TNR)DEFAULTRES)"!="" 304.IF "$(SHL$(TNR)ALLRES)"!="" 305 $(COMMAND_ECHO)$(TYPE) $(SHL$(TNR)ALLRES) > $(SHL$(TNR)LINKRES) 306.IF "$(COM)"=="GCC" 307 windres $(SHL$(TNR)LINKRES) $(SHL$(TNR)LINKRESO) 308.ENDIF # "$(COM)"=="GCC" 309.ENDIF # "$(SHL$(TNR)ALLRES)"!="" 310.IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def 311 @echo dlltool --dllname $(SHL$(TNR)TARGET)$(DLLPOST) \ 312 --kill-at \\ > $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd 313 @noop $(assign ALL$(TNR)OBJLIST:=$(STDOBJ) $(SHL$(TNR)OBJS) $(SHL$(TNR)LINKRESO) $(shell $(TYPE) /dev/null $(SHL$(TNR)LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g)) 314.IF "$(DEFLIB$(TNR)NAME)"!="" # do not have to include objs 315 @noop $(assign DEF$(TNR)OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB$(TNR)NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g)) 316 @noop $(foreach,i,$(DEF$(TNR)OBJLIST) $(assign ALL$(TNR)OBJLIST:=$(ALL$(TNR)OBJLIST:s?$i??))) 317.ENDIF # "$(DEFLIB$(TNR)NAME)"!="" 318 @echo --output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd 319.IF "$(SHL$(TNR)DEF)"!="" 320 @echo --input-def $(SHL$(TNR)DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd 321.ELSE 322 @echo $(SHL$(TNR)VERSIONOBJ) $(SHL$(TNR)DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd 323.ENDIF 324 @echo $(ALL$(TNR)OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd 325 @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \ 326 $(STDOBJ) $(SHL$(TNR)VERSIONOBJ) $(SHL$(TNR)DESCRIPTIONOBJ) $(SHL$(TNR)OBJS) $(SHL$(TNR)LINKRESO) \ 327 `$(TYPE) /dev/null $(SHL$(TNR)LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \ 328 -Wl,--exclude-libs,ALL,--start-group $(SHL$(TNR)STDLIBS) -Wl,--end-group \ 329 $(SHL$(TNR)STDSHL) $(STDSHL$(TNR)) $(MISC)/$(@:b)_exp.o $(MINGWSSTDENDOBJ) \ 330 -Wl,-Map,$(MISC)/$(@:b).map >> $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd 331 .IF "$(VERBOSE)" == "TRUE" 332 @$(TYPE) $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd 333 .ENDIF 334 @+source $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd 335.ELSE 336.IF "$(linkinc)"=="" 337.IF "$(SHL$(TNR)USE_EXPORTS)"!="name" 338.IF "$(USE_DEFFILE)"!="" 339 $(COMMAND_ECHO)$(SHL$(TNR)LINKER) @$(mktmp \ 340 $(SHL$(TNR)LINKFLAGS) \ 341 $(LINKFLAGSSHL) \ 342 $(SHL$(TNR)STACK) $(SHL$(TNR)BASEX) \ 343 -out:$@ \ 344 -map:$(MISC)/$(@:b).map \ 345 -def:$(SHL$(TNR)DEF) \ 346 $(USE_$(TNR)IMPLIB) \ 347 $(STDOBJ) \ 348 $(SHL$(TNR)VERSIONOBJ) $(SHL$(TNR)OBJS) \ 349 $(SHL$(TNR)LIBS) \ 350 $(SHL$(TNR)STDLIBS) \ 351 $(SHL$(TNR)STDSHL) $(STDSHL$(TNR)) \ 352 $(SHL$(TNR)LINKRES) \ 353 ) 354# double check if target was really written... still making sense? 355 @@$(LS) $@ 356 @echo linking $@.manifest ... 357.IF "$(VISTA_MANIFEST)"!="" 358 $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) 359 $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) 360.ELSE 361 $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) 362.ENDIF # "$(VISTA_MANIFEST)"!="" 363 $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) 364 $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) 365.ELSE # "$(USE_DEFFILE)"!="" 366 $(COMMAND_ECHO)$(SHL$(TNR)LINKER) @$(mktmp $(SHL$(TNR)LINKFLAGS) \ 367 $(LINKFLAGSSHL) $(SHL$(TNR)BASEX) \ 368 $(SHL$(TNR)STACK) -out:$(SHL$(TNR)TARGETN) \ 369 -map:$(MISC)/$(@:B).map \ 370 $(LB)/$(SHL$(TNR)IMPLIB).exp \ 371 $(STDOBJ) \ 372 $(SHL$(TNR)OBJS) $(SHL$(TNR)VERSIONOBJ) \ 373 $(SHL$(TNR)LIBS) \ 374 $(SHL$(TNR)STDLIBS) \ 375 $(SHL$(TNR)STDSHL) $(STDSHL$(TNR)) \ 376 $(SHL$(TNR)LINKRES) \ 377 ) 378# double check if target was really written... still making sense? 379 @@$(LS) $@ 380 @echo linking $@.manifest ... 381.IF "$(VISTA_MANIFEST)"!="" 382 $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) 383 $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) 384.ELSE 385 $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) 386.ENDIF # "$(VISTA_MANIFEST)"!="" 387 $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) 388 $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) 389.ENDIF # "$(USE_DEFFILE)"!="" 390.ELSE # "$(SHL$(TNR)USE_EXPORTS)"!="name" 391 $(COMMAND_ECHO)$(SHL$(TNR)LINKER) @$(mktmp $(SHL$(TNR)LINKFLAGS) \ 392 $(LINKFLAGSSHL) $(SHL$(TNR)BASEX) \ 393 $(SHL$(TNR)STACK) -out:$(SHL$(TNR)TARGETN) \ 394 -map:$(MISC)/$(@:B).map \ 395 $(USE_$(TNR)IMPLIB) \ 396 $(STDOBJ) \ 397 $(SHL$(TNR)OBJS) $(SHL$(TNR)VERSIONOBJ)) \ 398 $(SHL$(TNR)LINKLISTPARAM) \ 399 @$(mktmp $(SHL$(TNR)STDLIBS) \ 400 $(SHL$(TNR)STDSHL) $(STDSHL$(TNR)) \ 401 $(SHL$(TNR)LINKRES) \ 402 ) 403 @echo linking $@.manifest ... 404.IF "$(VISTA_MANIFEST)"!="" 405 $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) 406 $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) 407.ELSE 408 $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) 409.ENDIF # "$(VISTA_MANIFEST)"!="" 410 $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) 411 $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) 412.ENDIF # "$(SHL$(TNR)USE_EXPORTS)"!="name" 413.ELSE # "$(linkinc)"=="" 414 $(COMMAND_ECHO)-$(RM) del $(MISC)/$(SHL$(TNR)TARGET).lnk 415 $(COMMAND_ECHO)-$(RM) $(MISC)/$(SHL$(TNR)TARGET).lst 416 $(COMMAND_ECHO)$(TYPE) $(mktmp \ 417 $(SHL$(TNR)LINKFLAGS) \ 418 $(LINKFLAGSSHL) $(SHL$(TNR)BASEX) \ 419 $(SHL$(TNR)STACK) $(MAPFILE) \ 420 -out:$@ \ 421 $(LB)/$(SHL$(TNR)IMPLIB).exp \ 422 $(STDOBJ) \ 423 $(SHL$(TNR)OBJS) \ 424 $(SHL$(TNR)STDLIBS) \ 425 $(SHL$(TNR)STDSHL) $(STDSHL$(TNR)) \ 426 $(SHL$(TNR)LINKRES) \ 427 ) >> $(MISC)/$(SHL$(TNR)TARGET).lnk 428 $(COMMAND_ECHO)$(TYPE) $(MISC)/$(SHL$(TNR)TARGETN:b)_linkinc.ls >> $(MISC)/$(SHL$(TNR)TARGET).lnk 429 $(COMMAND_ECHO)$(SHL$(TNR)LINKER) @$(MISC)/$(SHL$(TNR)TARGET).lnk 430 @echo linking $@.manifest ... 431.IF "$(VISTA_MANIFEST)"!="" 432 $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) 433 $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) 434.ELSE 435 $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) 436.ENDIF # "$(VISTA_MANIFEST)"!="" 437 $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) 438 $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) 439.ENDIF # "$(linkinc)"=="" 440.ENDIF # "$(COM)"=="GCC" 441.ENDIF # "$(GUI)" == "WNT" 442.IF "$(GUI)"=="UNX" 443.IF "$(OS)"=="MACOSX" 444 @-$(RM) $(MISC)/$(@:b).list 445 @-$(RM) $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd 446 @echo $(STDSLO) $(SHL$(TNR)OBJS:s/.obj/.o/) \ 447 $(SHL$(TNR)VERSIONOBJ) \ 448 `cat /dev/null $(SHL$(TNR)LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list 449 @echo -n $(SHL$(TNR)LINKER) $(SHL$(TNR)LINKFLAGS) $(SHL$(TNR)VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \ 450 $(SHL$(TNR)STDLIBS) $(SHL$(TNR)ARCHIVES) $(SHL$(TNR)STDSHL) $(STDSHL$(TNR)) -filelist $(MISC)/$(@:b).list $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd 451 @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \ 452 `cat $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd` \ 453 >> $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd 454 .IF "$(VERBOSE)" == "TRUE" 455 @cat $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd 456 .ENDIF 457 @+source $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd 458 @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \ 459 shl $(SHL$(TNR)RPATH) $@ 460.IF "$(SHL$(TNR)CREATEJNILIB)"!="" 461 @echo "Making: " $(@:f).jnilib 462 @macosx-create-bundle $@ 463.ENDIF # "$(SHL$(TNR)CREATEJNILIB)"!="" 464.IF "$(UPDATER)"=="YES" 465.IF "$(SHL$(TNR)NOCHECK)"=="" 466 $(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS$(TNR)) $(SHL$(TNR)TARGETN) 467.ENDIF # "$(SHL$(TNR)NOCHECK)"!="" 468.ENDIF 469.ELSE # "$(OS)"=="MACOSX" 470 @-$(RM) $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd 471 @echo $(SHL$(TNR)LINKER) $(SHL$(TNR)LINKFLAGS) $(SHL$(TNR)SONAME) $(LINKFLAGSSHL) $(SHL$(TNR)VERSIONMAPPARA) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) $(STDSLO) $(SHL$(TNR)OBJS:s/.obj/.o/) \ 472 $(SHL$(TNR)VERSIONOBJ) -o $@ \ 473 `cat /dev/null $(SHL$(TNR)LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \ 474 $(SHL$(TNR)STDLIBS) $(SHL$(TNR)ARCHIVES) $(SHL$(TNR)STDSHL) $(STDSHL$(TNR)) $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd 475 .IF "$(VERBOSE)" == "TRUE" 476 @cat $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd 477 .ENDIF 478 @+source $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd 479.IF "$(UPDATER)"=="YES" 480.IF "$(SHL$(TNR)NOCHECK)"=="" 481 $(COMMAND_ECHO)-$(RM) $(SHL$(TNR)TARGETN:d)check_$(SHL$(TNR)TARGETN:f) 482 $(COMMAND_ECHO)$(RENAME) $(SHL$(TNR)TARGETN) $(SHL$(TNR)TARGETN:d)check_$(SHL$(TNR)TARGETN:f) 483.IF "$(VERBOSE)"=="TRUE" 484 $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS$(TNR)) $(SHL$(TNR)TARGETN:d)check_$(SHL$(TNR)TARGETN:f) 485.ELSE 486 $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS$(TNR)) -- -s $(SHL$(TNR)TARGETN:d)check_$(SHL$(TNR)TARGETN:f) 487.ENDIF 488.ENDIF # "$(SHL$(TNR)NOCHECK)"!="" 489.ENDIF # "$(UPDATER)"=="YES" 490.ENDIF # "$(OS)"=="MACOSX" 491.IF "$(UNIXVERSIONNAMES)"!="" 492 $(COMMAND_ECHO)$(RM) $(LB)/$(SHL$(TNR)TARGETN:b) 493 $(COMMAND_ECHO)cd $(LB) && ln -s $(SHL$(TNR)TARGETN:f) $(SHL$(TNR)TARGETN:b) 494.ENDIF # "$(UNIXVERSIONNAMES)"!="" 495.IF "$(VERBOSE)" == "TRUE" 496 @ls -l $@ 497.ENDIF 498.ENDIF # "$(GUI)" == "UNX" 499 500.IF "$(GUI)" == "OS2" 501 502.IF "$(SHL$(TNR)DEFAULTRES)"!="" 503 @+-$(RM) $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc > $(NULLDEV) 504.IF "$(SHL$(TNR)ICON)" != "" 505 @-+echo 1 ICON $(SHL$(TNR)ICON) >> $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc 506.ENDIF 507.IF "$(use_shl_versions)" != "" 508.IF "$(SHL$(TNR)ADD_VERINFO)"!="" 509 @-+echo $(EMQ)#include $(EMQ)"$(SHL$(TNR)ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc 510.ENDIF # "$(SHL$(TNR)ADD_VERINFO)"!="" 511 @-+echo MENU 1 BEGIN END >> $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc 512# @-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc 513.ENDIF # "$(use_shl_versions)" != "" 514# YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR) 515 $(COMMAND_ECHO)$(RC) -r -DOS2 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc 516.ENDIF # "$(SHL$(TNR)DEFAULTRES)"!="" 517 518.IF "$(SHL$(TNR)ALLRES)"!="" 519 $(COMMAND_ECHO)+$(TYPE) $(SHL$(TNR)ALLRES) > $(SHL$(TNR)LINKRES) 520.ENDIF # "$(SHL$(TNR)ALLRES)"!="" 521 522.IF "$(USE_DEFFILE)"!="" 523 524 $(COMMAND_ECHO)$(SHL$(TNR)LINKER) $(SHL$(TNR)LINKFLAGS) $(LINKFLAGSSHL) -o $@ \ 525 $(SHL$(TNR)DEF) \ 526 $(STDOBJ) \ 527 -L$(LB) \ 528 -L$(SOLARVERSION)/$(INPATH)/lib \ 529 $(SHL$(TNR)OBJS) $(SHL$(TNR)VERSIONOBJ) \ 530 $(SHL$(TNR)LIBS) \ 531 $(SHL$(TNR)LINKRES) \ 532 $(SHL$(TNR)STDLIBS) \ 533 $(SHL$(TNR)STDSHL) $(STDSHL$(TNR)) 534 535.ELSE # "$(USE_DEFFILE)"!="" 536 537 $(COMMAND_ECHO)$(SHL$(TNR)LINKER) $(SHL$(TNR)LINKFLAGS) \ 538 $(LINKFLAGSSHL) $(SHL$(TNR)BASEX) \ 539 $(SHL$(TNR)STACK) -o $(SHL$(TNR)TARGETN) \ 540 $(SHL$(TNR)DEF) \ 541 $(STDOBJ) \ 542 -L$(LB) \ 543 -L$(SOLARVERSION)/$(INPATH)/lib \ 544 $(SHL$(TNR)OBJS) $(SHL$(TNR)VERSIONOBJ) \ 545 $(SHL$(TNR)LIBS) \ 546 $(SHL$(TNR)LINKRES) \ 547 $(SHL$(TNR)STDLIBS) \ 548 $(SHL$(TNR)STDSHL) $(STDSHL$(TNR)) 549 550.ENDIF # "$(USE_DEFFILE)"!="" 551 552.IF "$(SHL$(TNR)USE_EXPORTS)"=="name" 553#03/11/2012 if 'name' is used, export from DLL file (only names, no ordinals) 554 @echo Build import library from DLL file. 555 $(COMMAND_ECHO)+$(IMPLIB) $(IMPLIBFLAGS) $(LB)/$(SHL$(TNR)TARGETN:b).lib $@ 556.ENDIF # "$(SHL$(TNR)USE_EXPORTS)"=="" 557 558.IF "$(SHL$(TNR)TARGET8)" != "$(SHL$(TNR)TARGET)" 559 $(COMMAND_ECHO)+$(COPY) $@ $(@:d)$(SHL$(TNR)TARGET8).dll 560.ENDIF 561 562.ENDIF # "$(GUI)" == "OS2" 563 564.ENDIF # "$(SHL$(TNR)TARGETN)"!="" 565 566# unroll end 567####################################################### 568 569#------------------------------------------------------------------------- 570 571####################################################### 572# Anweisungen fuer das Linken 573# unroll begin 574 575.IF "$(SHL$(TNR)IMPLIBN)" != "" 576 577.IF "$(UPDATER)"=="YES" 578USELIB$(TNR)DEPN+=$(SHL$(TNR)LIBS) 579.ELSE 580.ENDIF 581 582.IF "$(USE_DEFFILE)"!="" 583USE_SHL$(TNR)TARGET=$(SHL$(TNR)TARGETN) 584.ENDIF 585 586.IF "$(GUI)" != "UNX" 587$(SHL$(TNR)IMPLIBN): \ 588 $(SHL$(TNR)DEF) \ 589 $(USE_SHL$(TNR)TARGET) \ 590 $(USELIB$(TNR)DEPN) \ 591 $(USELIBDEPN) 592.ELSE 593$(SHL$(TNR)IMPLIBN): \ 594 $(SHL$(TNR)LIBS) 595.ENDIF 596 @echo "Making: " $(@:f) 597.IF "$(GUI)" == "WNT" 598.IF "$(COM)"=="GCC" 599 @echo no ImportLibs on mingw 600 @-$(RM) $@ 601 @$(TOUCH) $@ 602.ELSE # "$(COM)=="GCC" 603# bei use_deffile implib von linker erstellt 604.IF "$(USE_DEFFILE)"=="" 605 $(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL$(TNR)IMPLIBN) \ 606 -def:$(SHL$(TNR)DEF) ) 607.ELSE # "$(USE_DEFFILE)=="" 608 @echo build of $(SHL$(TNR)TARGETN) creates $@ 609 @$(TOUCH) $@ 610.ENDIF # "$(USE_DEFFILE)=="" 611.ENDIF # "$(COM)"=="GCC" 612 613.ELIF "$(GUI)" == "OS2" 614 615 @echo Import libs generated with .def file or with .dll file. 616# make 'dmake' happy 617 @-$(RM) $@ 618 @$(TOUCH) $@ 619 620.ELSE 621 @echo no ImportLibs on Mac and *ix 622 @-$(RM) $@ 623 @$(TOUCH) $@ 624.ENDIF 625.ENDIF 626 627# unroll end 628####################################################### 629 630