diff options
Diffstat (limited to 'solenv/inc/_tg_shl.mk')
-rw-r--r-- | solenv/inc/_tg_shl.mk | 5980 |
1 files changed, 5980 insertions, 0 deletions
diff --git a/solenv/inc/_tg_shl.mk b/solenv/inc/_tg_shl.mk new file mode 100644 index 000000000000..41d48c839949 --- /dev/null +++ b/solenv/inc/_tg_shl.mk @@ -0,0 +1,5980 @@ +# unroll begin + +.IF "$(SHL1TARGETN)"!="" + +.IF "$(OS)"=="AIX" +SHL1STDLIBS= +.ENDIF + +.IF "$(SHLLINKARCONLY)" != "" +SHL1STDLIBS= +STDSHL= +.ELSE +SHL1ARCHIVES= +.ENDIF + +# decide how to link +.IF "$(SHL1CODETYPE)"=="C" +SHL1LINKER=$(LINKC) +SHL1STDSHL=$(subst,CPPRUNTIME, $(STDSHL)) +SHL1LINKFLAGS+=$(LINKCFLAGS) +.ELSE # "$(SHL1CODETYPE)"=="C" +SHL1LINKER=$(LINK) +SHL1STDSHL=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDSHL)) +SHL1LINKFLAGS+=$(LINKFLAGS) +.ENDIF # "$(SHL1CODETYPE)"=="C" + +SHL1RPATH*=OOO +LINKFLAGSRUNPATH_$(SHL1RPATH)*=/ERROR:/Bad_SHL1RPATH_value +SHL1LINKFLAGS+=$(LINKFLAGSRUNPATH_$(SHL1RPATH)) + +.IF "$(SHL1USE_EXPORTS)"=="" +SHL1DEF*=$(MISC)/$(SHL1TARGET).def +.ENDIF # "$(SHL1USE_EXPORTS)"=="" + +EXTRALIBPATHS1=$(EXTRALIBPATHS) +.IF "$(UPDATER)"=="YES" +.IF "$(SHL1NOCHECK)"=="" +.IF "$(SOLAR_STLLIBPATH)"!="" +EXTRALIBPATHS1+=-L$(SOLAR_STLLIBPATH) +.ENDIF +.ENDIF # "$(SHL1NOCHECK)"!="" +.ENDIF +#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +#+++++++++++ version object ++++++++++++++++++++++++++++++++++++++++ +#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +.IF "$(L10N_framework)"=="" +.IF "$(VERSIONOBJ)"!="" +SHL1VERSIONOBJ:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL1TARGET))}$(VERSIONOBJ:f) +USE_VERSIONH:=$(INCCOM)/$(SHL1VERSIONOBJ:b).h +.IF "$(GUI)" == "UNX" +SHL1VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL1TARGET))}$(VERSIONOBJ:f:s/.o/.obj/) +.ELSE # "$(GUI)" == "UNX" +SHL1VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL1TARGET))}$(VERSIONOBJ:f) +.ENDIF # "$(GUI)" == "UNX" +$(MISC)/$(SHL1VERSIONOBJ:b).c : $(SOLARENV)/src/version.c $(INCCOM)/$(SHL1VERSIONOBJ:b).h +# $(COPY) $(SOLARENV)/src/version.c $@ + $(COMMAND_ECHO)$(TYPE) $(SOLARENV)/src/version.c | $(SED) s/_version.h/$(SHL1VERSIONOBJ:b).h/ > $@ + +.INIT : $(SHL1VERSIONOBJDEP) +.ENDIF # "$(VERSIONOBJ)"!="" +.ENDIF + +.IF "$(GUI)" != "UNX" +.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2" +.IF "$(SHL1IMPLIB)" == "" +SHL1IMPLIB=i$(TARGET)_t1 +.ENDIF # "$(SHL1IMPLIB)" == "" +.IF "$(COM)" != "GCC" +USE_1IMPLIB=-implib:$(LB)/$(SHL1IMPLIB).lib +.ENDIF # "$(COM)" != "GCC" +SHL1IMPLIBN=$(LB)/$(SHL1IMPLIB).lib +ALLTAR : $(SHL1IMPLIBN) + +.IF "$(USE_DEFFILE)"=="" +USE_1IMPLIB_DEPS=$(LB)/$(SHL1IMPLIB).lib +.ENDIF # "$(USE_DEFFILE)"=="" +.ENDIF # "$(GUI)" == "WNT" || "$(GUI)" == "OS2" +USE_SHL1DEF=$(SHL1DEF) +.ELSE # "$(GUI)" != "UNX" +USE_SHL1DEF= +SHL1DEPN+:=$(SHL1DEPNU) + +.IF "$(SHL1VERSIONMAP)"=="" +# to activate vmaps remove "#" +USE_SHL1VERSIONMAP=$(MISC)/$(SHL1TARGET).vmap +.ENDIF # "$(SHL1VERSIONMAP)"=="" + +.IF "$(USE_SHL1VERSIONMAP)"!="" + +.IF "$(SHL1FILTERFILE)"!="" +.IF "$(SHL1VERSIONMAP)"!="" +#eine von beiden ist zuviel +USE_SHL1VERSIONMAP=$(MISC)/$(SHL1TARGET).vmap +$(USE_SHL1VERSIONMAP) .PHONY: + @echo ----------------------------- + @echo you should only use versionmap OR exportfile + @echo ----------------------------- +# force_dmake_to_error + +.ENDIF # "$(SHL1VERSIONMAP)"!="" + +SHL1VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL1VERSIONMAP) + +$(USE_SHL1VERSIONMAP): \ + $(SHL1OBJS)\ + $(SHL1LIBS)\ + $(SHL1FILTERFILE) + @$(RM) $@.dump +.IF "$(SHL1OBJS)"!="" +# dump remaining objects on the fly +.IF "$(OS)"=="MACOSX" + @-nm $(SHL1OBJS:s/.obj/.o/) > $@.dump +.ELSE + @nm $(SHL1OBJS:s/.obj/.o/) > $@.dump +.ENDIF +.ENDIF # "$(SHL1OBJS)!"="" + @$(TYPE) /dev/null $(SHL1LIBS:s/.lib/.dump/) >> $@.dump + $(COMMAND_ECHO) $(PERL) $(SOLARENV)/bin/mapgen.pl -d $@.dump -s $(SHL1INTERFACE) -f $(SHL1FILTERFILE) -m $@ + +.ELSE # "$(SHL1FILTERFILE)"!="" +USE_SHL1VERSIONMAP=$(MISC)/$(SHL1TARGET).vmap +$(USE_SHL1VERSIONMAP) : +.IF "$(VERBOSE)" == "TRUE" + @echo ----------------------------- + @echo SHL1FILTERFILE not set! + @echo ----------------------------- + @$(TOUCH) $@ + @echo dummy file to keep the dependencies for later use. +.ELSE + @$(TOUCH) $@ +.ENDIF +# force_dmake_to_error +.ENDIF # "$(SHL1FILTERFILE)"!="" +.ELSE # "$(USE_SHL1VERSIONMAP)"!="" + +#and now for the plain non-generic way... +.IF "$(SHL1VERSIONMAP)"!="" +USE_SHL1VERSIONMAP=$(MISC)/$(SHL1VERSIONMAP:b)_$(SHL1TARGET)$(SHL1VERSIONMAP:e) +SHL1VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL1VERSIONMAP) + +.IF "$(OS)"=="MACOSX" +$(USE_SHL1VERSIONMAP): $(SHL1OBJS) $(SHL1LIBS) +.ENDIF + +# .ERRREMOVE is needed as a recipe line like "$(AWK) ... > $@" would create $@ +# even if the $(AWK) part fails: +$(USE_SHL1VERSIONMAP) .ERRREMOVE: $(SHL1VERSIONMAP) + @@-$(RM) -f $@ +# The following files will only be generated and needed on Mac OS X as temporary files +# in order to generate exported symbols list out of Linux/Solaris map files +.IF "$(OS)"=="MACOSX" + @-$(RM) -f $@.symregexp >& $(NULLDEV) + @-$(RM) -f $@.expsymlist >& $(NULLDEV) +.ENDIF +# Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what +# happens if somebody will change it in the future +.IF "$(COMID)"=="gcc3" + $(COMMAND_ECHO) tr -d "\015" < $(SHL1VERSIONMAP) | $(AWK) -f $(SOLARENV)/bin/addsym.awk > $@ +.ELIF "$(COMNAME)"=="sunpro5" + $(COMMAND_ECHO) tr -d "\015" < $(SHL1VERSIONMAP) | $(GREP) -v $(IGNORE_SYMBOLS) > $@ +.ELSE # "$(COMID)"=="gcc3" + $(COMMAND_ECHO) tr -d "\015" < $(SHL1VERSIONMAP) > $@ +.ENDIF # "$(COMID)"=="gcc3" + @chmod a+w $@ +# Mac OS X post-processing generate an exported symbols list from the generated map file +# for details on exported symbols list see man ld on Mac OS X +.IF "$(OS)"=="MACOSX" + @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep -v "\*\|?" > $@.exported-symbols + @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep "\*\|?" > $@.symbols-regexp +# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS +# Extract RTTI symbols from all the objects that will be used to build a shared library +.IF "$(SHL1OBJS)"!="" + -echo $(foreach,i,$(SHL1OBJS:s/.obj/.o/) $i) | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols +.ENDIF +.IF "$(SHL1LIBS)"!="" + $(COMMAND_ECHO)-$(TYPE) $(foreach,j,$(SHL1LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols +.ENDIF +# overwrite the map file generate into the local output tree with the generated +# exported symbols list + cp $@.exported-symbols $@ +.ENDIF # .IF "$(OS)"=="MACOSX" +.ENDIF # "$(SHL1VERSIONMAP)"!="" +.ENDIF # "$(USE_SHL1VERSIONMAP)"!="" +.ENDIF # "$(GUI)" != "UNX" + +.IF "$(UNIXVERSIONNAMES)"!="" +.IF "$(OS)"!="MACOSX" +.IF "$(GUI)"=="UNX" +SHL1SONAME=\"$(SONAME_SWITCH)$(SHL1TARGETN:f)\" +.ENDIF # "$(GUI)"!="UNX" +.ENDIF # "$(OS)"!="MACOSX" +.ENDIF # "$(UNIXVERSIONNAMES)"!="" + +.IF "$(SHL1RES)"!="" +SHL1ALLRES+=$(SHL1RES) +SHL1LINKRES*=$(MISC)/$(SHL1TARGET).res +SHL1LINKRESO*=$(MISC)/$(SHL1TARGET)_res.o +.ENDIF # "$(SHL1RES)"!="" + +.IF "$(SHL1DEFAULTRES)$(use_shl_versions)"!="" +SHL1DEFAULTRES*=$(MISC)/$(SHL1TARGET)_def.res +SHL1ALLRES+=$(SHL1DEFAULTRES) +SHL1LINKRES*=$(MISC)/$(SHL1TARGET).res +SHL1LINKRESO*=$(MISC)/$(SHL1TARGET)_res.o +.ENDIF # "$(SHL1DEFAULTRES)$(use_shl_versions)"!="" + +#.IF "$(SHL1TARGETN)"!="" + +.IF "$(linkinc)"!="" +.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2" +.IF "$(SHL1LIBS)"!="" +$(MISC)/$(SHL1TARGET)_linkinc.ls .PHONY: + @@-$(RM) $@ + $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL1LIBS) $(i:s/.lib/.lin/)) >> $@ +.ENDIF # "$(SHL1LIBS)"!="" +.ENDIF + +LINKINCTARGETS+=$(MISC)/$(SHL1TARGETN:b)_linkinc.ls +$(SHL1TARGETN) : $(LINKINCTARGETS) + +.ELSE +.IF "$(SHL1USE_EXPORTS)"=="name" +.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2" +.IF "$(COM)"!="GCC" +.IF "$(SHL1LIBS)"!="" +SHL1LINKLIST=$(MISC)/$(SHL1TARGET)_link.lst +SHL1LINKLISTPARAM=@$(SHL1LINKLIST) +$(SHL1LINKLIST) : $(SHL1LIBS) + @@-$(RM) $@ + $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL1LIBS) $(i:s/.lib/.lin/)) >> $@ +.ENDIF # "$(SHL1LIBS)"!="" +.ENDIF # "$(COM)"!="GCC" +.ENDIF +.ENDIF # "$(SHL1USE_EXPORTS)"=="name" + +$(MISC)/%linkinc.ls: + @echo . > $@ +.ENDIF # "$(linkinc)"!="" + +.IF "$(GUI)" == "OS2" +#21/02/2006 YD dll names must be 8.3, invoke fix script +#check osl/os2/module.c/osl_loadModule() +SHL1TARGET8=$(shell @fix_shl $(SHL1TARGET)) +.ENDIF + +.IF "$(GUI)" == "OS2" +_SHL1IMP_ORD = $(SHL1STDLIBS:^"$(SOLARVERSION)/$(INPATH)/lib/") $(SHL1STDLIBS:^"$(LB)/") +SHL1IMP_ORD = $(foreach,i,$(_SHL1IMP_ORD) $(shell @-ls $i)) +.ELSE +SHL1IMP_ORD = +.ENDIF + + +$(SHL1TARGETN) : \ + $(SHL1OBJS)\ + $(SHL1LIBS)\ + $(USE_1IMPLIB_DEPS)\ + $(USE_SHL1DEF)\ + $(USE_SHL1VERSIONMAP)\ + $(SHL1RES)\ + $(SHL1DEPN) \ + $(SHL1IMP_ORD) \ + $(SHL1LINKLIST) + @echo "Making: " $(@:f) +.IF "$(GUI)" == "WNT" +.IF "$(SHL1DEFAULTRES)"!="" + @@-$(RM) $(MISC)/$(SHL1DEFAULTRES:b).rc +.IF "$(SHL1ICON)" != "" + @echo 1 ICON $(SHL1ICON) >> $(MISC)/$(SHL1DEFAULTRES:b).rc +.ENDIF +.IF "$(use_shl_versions)" != "" +.IF "$(SHL1ADD_VERINFO)"!="" + @echo $(EMQ)#include $(EMQ)"$(SHL1ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL1DEFAULTRES:b).rc +.ELSE # "$(SHL1ADD_VERINFO)"!="" + @echo $(EMQ)#define ADDITIONAL_VERINFO1 >> $(MISC)/$(SHL1DEFAULTRES:b).rc + @echo $(EMQ)#define ADDITIONAL_VERINFO2 >> $(MISC)/$(SHL1DEFAULTRES:b).rc + @echo $(EMQ)#define ADDITIONAL_VERINFO3 >> $(MISC)/$(SHL1DEFAULTRES:b).rc +.ENDIF # "$(SHL1ADD_VERINFO)"!="" + @echo $(EMQ)#define VERVARIANT $(BUILD) >> $(MISC)/$(SHL1DEFAULTRES:b).rc + @echo $(EMQ)#define ORG_NAME $(SHL1TARGET)$(DLLPOST) >> $(MISC)/$(SHL1DEFAULTRES:b).rc + @echo $(EMQ)#define INTERNAL_NAME $(SHL1TARGET:b) >> $(MISC)/$(SHL1DEFAULTRES:b).rc + @echo $(EMQ)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)/$(SHL1DEFAULTRES:b).rc +.ENDIF # "$(use_shl_versions)" != "" + $(COMMAND_ECHO)$(RC) -DWIN32 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL1DEFAULTRES:b).rc +.ENDIF # "$(SHL1DEFAULTRES)"!="" +.IF "$(SHL1ALLRES)"!="" + $(COMMAND_ECHO)$(TYPE) $(SHL1ALLRES) > $(SHL1LINKRES) +.IF "$(COM)"=="GCC" + windres $(SHL1LINKRES) $(SHL1LINKRESO) +.ENDIF # "$(COM)"=="GCC" +.ENDIF # "$(SHL1ALLRES)"!="" +.IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def + @echo dlltool --dllname $(SHL1TARGET)$(DLLPOST) \ + --kill-at \\ > $(MISC)/$(TARGET).$(@:b)_1.cmd + @noop $(assign ALL1OBJLIST:=$(STDOBJ) $(SHL1OBJS) $(SHL1LINKRESO) $(shell $(TYPE) /dev/null $(SHL1LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g)) +.IF "$(DEFLIB1NAME)"!="" # do not have to include objs + @noop $(assign DEF1OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB1NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g)) + @noop $(foreach,i,$(DEF1OBJLIST) $(assign ALL1OBJLIST:=$(ALL1OBJLIST:s?$i??))) +.ENDIF # "$(DEFLIB1NAME)"!="" + @echo --output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_1.cmd +.IF "$(SHL1DEF)"!="" + @echo --input-def $(SHL1DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_1.cmd +.ELSE + @echo $(SHL1VERSIONOBJ) $(SHL1DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_1.cmd +.ENDIF + @echo $(ALL1OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_1.cmd + @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \ + $(STDOBJ) $(SHL1VERSIONOBJ) $(SHL1DESCRIPTIONOBJ) $(SHL1OBJS) $(SHL1LINKRESO) \ + `$(TYPE) /dev/null $(SHL1LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \ + -Wl,--exclude-libs,ALL,--start-group $(SHL1STDLIBS) -Wl,--end-group \ + $(SHL1STDSHL) $(STDSHL1) $(MISC)/$(@:b)_exp.o $(MINGWSSTDENDOBJ) \ + -Wl,-Map,$(MISC)/$(@:b).map >> $(MISC)/$(TARGET).$(@:b)_1.cmd + .IF "$(VERBOSE)" == "TRUE" + @$(TYPE) $(MISC)/$(TARGET).$(@:b)_1.cmd + .ENDIF + @+source $(MISC)/$(TARGET).$(@:b)_1.cmd +.ELSE +.IF "$(linkinc)"=="" +.IF "$(SHL1USE_EXPORTS)"!="name" +.IF "$(USE_DEFFILE)"!="" + $(COMMAND_ECHO)$(SHL1LINKER) @$(mktmp \ + $(SHL1LINKFLAGS) \ + $(LINKFLAGSSHL) \ + $(SHL1STACK) $(SHL1BASEX) \ + -out:$@ \ + -map:$(MISC)/$(@:b).map \ + -def:$(SHL1DEF) \ + $(USE_1IMPLIB) \ + $(STDOBJ) \ + $(SHL1VERSIONOBJ) $(SHL1OBJS) \ + $(SHL1LIBS) \ + $(SHL1STDLIBS) \ + $(SHL1STDSHL) $(STDSHL1) \ + $(SHL1LINKRES) \ + ) $(LINKOUTPUTFILTER) +# double check if target was really written... still making sense? + @@$(LS) $@ + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ELSE # "$(USE_DEFFILE)"!="" + $(COMMAND_ECHO)$(SHL1LINKER) @$(mktmp $(SHL1LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL1BASEX) \ + $(SHL1STACK) -out:$(SHL1TARGETN) \ + -map:$(MISC)/$(@:B).map \ + $(LB)/$(SHL1IMPLIB).exp \ + $(STDOBJ) \ + $(SHL1OBJS) $(SHL1VERSIONOBJ) \ + $(SHL1LIBS) \ + $(SHL1STDLIBS) \ + $(SHL1STDSHL) $(STDSHL1) \ + $(SHL1LINKRES) \ + ) $(LINKOUTPUTFILTER) +# double check if target was really written... still making sense? + @@$(LS) $@ + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ENDIF # "$(USE_DEFFILE)"!="" +.ELSE # "$(SHL1USE_EXPORTS)"!="name" + $(COMMAND_ECHO)$(SHL1LINKER) @$(mktmp $(SHL1LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL1BASEX) \ + $(SHL1STACK) -out:$(SHL1TARGETN) \ + -map:$(MISC)/$(@:B).map \ + $(USE_1IMPLIB) \ + $(STDOBJ) \ + $(SHL1OBJS) $(SHL1VERSIONOBJ)) \ + $(SHL1LINKLISTPARAM) \ + @$(mktmp $(SHL1STDLIBS) \ + $(SHL1STDSHL) $(STDSHL1) \ + $(SHL1LINKRES) \ + ) + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ENDIF # "$(SHL1USE_EXPORTS)"!="name" +.ELSE # "$(linkinc)"=="" + $(COMMAND_ECHO)-$(RM) del $(MISC)/$(SHL1TARGET).lnk + $(COMMAND_ECHO)-$(RM) $(MISC)/$(SHL1TARGET).lst + $(COMMAND_ECHO)$(TYPE) $(mktmp \ + $(SHL1LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL1BASEX) \ + $(SHL1STACK) $(MAPFILE) \ + -out:$@ \ + $(LB)/$(SHL1IMPLIB).exp \ + $(STDOBJ) \ + $(SHL1OBJS) \ + $(SHL1STDLIBS) \ + $(SHL1STDSHL) $(STDSHL1) \ + $(SHL1LINKRES) \ + ) >> $(MISC)/$(SHL1TARGET).lnk + $(COMMAND_ECHO)$(TYPE) $(MISC)/$(SHL1TARGETN:b)_linkinc.ls >> $(MISC)/$(SHL1TARGET).lnk + $(COMMAND_ECHO)$(SHL1LINKER) @$(MISC)/$(SHL1TARGET).lnk + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ENDIF # "$(linkinc)"=="" +.ENDIF # "$(COM)"=="GCC" +.ENDIF # "$(GUI)" == "WNT" +.IF "$(GUI)"=="UNX" +.IF "$(OS)"=="MACOSX" + @-$(RM) $(MISC)/$(@:b).list + @-$(RM) $(MISC)/$(TARGET).$(@:b)_1.cmd + @echo $(STDSLO) $(SHL1OBJS:s/.obj/.o/) \ + $(SHL1VERSIONOBJ) \ + `cat /dev/null $(SHL1LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list + @echo -n $(SHL1LINKER) $(SHL1LINKFLAGS) $(SHL1VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \ + $(SHL1STDLIBS) $(SHL1ARCHIVES) $(SHL1STDSHL) $(STDSHL1) -filelist $(MISC)/$(@:b).list $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_1.cmd + @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \ + `cat $(MISC)/$(TARGET).$(@:b)_1.cmd` \ + >> $(MISC)/$(TARGET).$(@:b)_1.cmd + .IF "$(VERBOSE)" == "TRUE" + @cat $(MISC)/$(TARGET).$(@:b)_1.cmd + .ENDIF + @+source $(MISC)/$(TARGET).$(@:b)_1.cmd + @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \ + shl $(SHL1RPATH) $@ +.IF "$(SHL1CREATEJNILIB)"!="" + @echo "Making: " $(@:f).jnilib + @macosx-create-bundle $@ +.ENDIF # "$(SHL1CREATEJNILIB)"!="" +.IF "$(UPDATER)"=="YES" +.IF "$(SHL1NOCHECK)"=="" + $(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS1) $(SHL1TARGETN) +.ENDIF # "$(SHL1NOCHECK)"!="" +.ENDIF +.ELSE # "$(OS)"=="MACOSX" + @-$(RM) $(MISC)/$(TARGET).$(@:b)_1.cmd + @echo $(SHL1LINKER) $(SHL1LINKFLAGS) $(SHL1SONAME) $(LINKFLAGSSHL) $(SHL1VERSIONMAPPARA) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) $(STDSLO) $(SHL1OBJS:s/.obj/.o/) \ + $(SHL1VERSIONOBJ) -o $@ \ + `cat /dev/null $(SHL1LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \ + $(SHL1STDLIBS) $(SHL1ARCHIVES) $(SHL1STDSHL) $(STDSHL1) $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_1.cmd + .IF "$(VERBOSE)" == "TRUE" + @cat $(MISC)/$(TARGET).$(@:b)_1.cmd + .ENDIF + @+source $(MISC)/$(TARGET).$(@:b)_1.cmd +.IF "$(UPDATER)"=="YES" +.IF "$(SHL1NOCHECK)"=="" + $(COMMAND_ECHO)-$(RM) $(SHL1TARGETN:d)check_$(SHL1TARGETN:f) + $(COMMAND_ECHO)$(RENAME) $(SHL1TARGETN) $(SHL1TARGETN:d)check_$(SHL1TARGETN:f) +.IF "$(VERBOSE)"=="TRUE" + $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS1) $(SHL1TARGETN:d)check_$(SHL1TARGETN:f) +.ELSE + $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS1) -- -s $(SHL1TARGETN:d)check_$(SHL1TARGETN:f) +.ENDIF +.ENDIF # "$(SHL1NOCHECK)"!="" +.ENDIF # "$(UPDATER)"=="YES" +.ENDIF # "$(OS)"=="MACOSX" +.IF "$(UNIXVERSIONNAMES)"!="" + $(COMMAND_ECHO)$(RM) $(LB)/$(SHL1TARGETN:b) + $(COMMAND_ECHO)cd $(LB) && ln -s $(SHL1TARGETN:f) $(SHL1TARGETN:b) +.ENDIF # "$(UNIXVERSIONNAMES)"!="" +.IF "$(VERBOSE)" == "TRUE" + @ls -l $@ +.ENDIF +.ENDIF # "$(GUI)" == "UNX" + +.IF "$(GUI)" == "OS2" + +.IF "$(SHL1DEFAULTRES)"!="" + @+-$(RM) $(MISC)/$(SHL1DEFAULTRES:b).rc >& $(NULLDEV) +.IF "$(SHL1ICON)" != "" + @-+echo 1 ICON $(SHL1ICON) >> $(MISC)/$(SHL1DEFAULTRES:b).rc +.ENDIF +.IF "$(use_shl_versions)" != "" +.IF "$(SHL1ADD_VERINFO)"!="" + @-+echo $(EMQ)#include $(EMQ)"$(SHL1ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL1DEFAULTRES:b).rc +.ENDIF # "$(SHL1ADD_VERINFO)"!="" + @-+echo MENU 1 BEGIN END >> $(MISC)/$(SHL1DEFAULTRES:b).rc +# @-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)/$(SHL1DEFAULTRES:b).rc +.ENDIF # "$(use_shl_versions)" != "" +# YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR) + $(COMMAND_ECHO)$(RC) -r -DOS2 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL1DEFAULTRES:b).rc +.ENDIF # "$(SHL1DEFAULTRES)"!="" + +.IF "$(SHL1ALLRES)"!="" + $(COMMAND_ECHO)+$(TYPE) $(SHL1ALLRES) > $(SHL1LINKRES) +.ENDIF # "$(SHL1ALLRES)"!="" + +.IF "$(USE_DEFFILE)"!="" + + $(COMMAND_ECHO)$(SHL1LINKER) $(SHL1LINKFLAGS) $(LINKFLAGSSHL) -o $@ \ + $(SHL1DEF) \ + $(STDOBJ) \ + -L$(LB) \ + -L$(SOLARVERSION)/$(INPATH)/lib \ + $(SHL1OBJS) $(SHL1VERSIONOBJ) \ + $(SHL1LIBS) \ + $(SHL1STDLIBS:^"-l") \ + $(SHL1LINKRES) \ + $(SHL1STDSHL:^"-l") $(STDSHL1:^"-l") + +.ELSE # "$(USE_DEFFILE)"!="" + + $(COMMAND_ECHO)$(SHL1LINKER) -v $(SHL1LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL1BASEX) \ + $(SHL1STACK) -o $(SHL1TARGETN) \ + $(SHL1DEF) \ + $(STDOBJ) \ + -L$(LB) \ + -L$(SOLARVERSION)/$(INPATH)/lib \ + $(SHL1OBJS) $(SHL1VERSIONOBJ) \ + $(SHL1LIBS) \ + $(SHL1STDLIBS:^"-l") \ + $(SHL1LINKRES) \ + $(SHL1STDSHL:^"-l") $(STDSHL1:^"-l") \ + $(LINKOUTPUTFILTER) + @$(LS) $@ >& $(NULLDEV) + +.ENDIF # "$(USE_DEFFILE)"!="" + +.IF "$(SHL1TARGET8)" != "$(SHL1TARGET)" + $(COMMAND_ECHO)+$(COPY) $@ $(@:d)$(SHL1TARGET8).dll +.ENDIF + +.ENDIF # "$(GUI)" == "OS2" + +.ENDIF # "$(SHL1TARGETN)"!="" + +# unroll begin + +.IF "$(SHL2TARGETN)"!="" + +.IF "$(OS)"=="AIX" +SHL2STDLIBS= +.ENDIF + +.IF "$(SHLLINKARCONLY)" != "" +SHL2STDLIBS= +STDSHL= +.ELSE +SHL2ARCHIVES= +.ENDIF + +# decide how to link +.IF "$(SHL2CODETYPE)"=="C" +SHL2LINKER=$(LINKC) +SHL2STDSHL=$(subst,CPPRUNTIME, $(STDSHL)) +SHL2LINKFLAGS+=$(LINKCFLAGS) +.ELSE # "$(SHL2CODETYPE)"=="C" +SHL2LINKER=$(LINK) +SHL2STDSHL=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDSHL)) +SHL2LINKFLAGS+=$(LINKFLAGS) +.ENDIF # "$(SHL2CODETYPE)"=="C" + +SHL2RPATH*=OOO +LINKFLAGSRUNPATH_$(SHL2RPATH)*=/ERROR:/Bad_SHL2RPATH_value +SHL2LINKFLAGS+=$(LINKFLAGSRUNPATH_$(SHL2RPATH)) + +.IF "$(SHL2USE_EXPORTS)"=="" +SHL2DEF*=$(MISC)/$(SHL2TARGET).def +.ENDIF # "$(SHL2USE_EXPORTS)"=="" + +EXTRALIBPATHS2=$(EXTRALIBPATHS) +.IF "$(UPDATER)"=="YES" +.IF "$(SHL2NOCHECK)"=="" +.IF "$(SOLAR_STLLIBPATH)"!="" +EXTRALIBPATHS2+=-L$(SOLAR_STLLIBPATH) +.ENDIF +.ENDIF # "$(SHL2NOCHECK)"!="" +.ENDIF +#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +#+++++++++++ version object ++++++++++++++++++++++++++++++++++++++++ +#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +.IF "$(L10N_framework)"=="" +.IF "$(VERSIONOBJ)"!="" +SHL2VERSIONOBJ:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL2TARGET))}$(VERSIONOBJ:f) +USE_VERSIONH:=$(INCCOM)/$(SHL2VERSIONOBJ:b).h +.IF "$(GUI)" == "UNX" +SHL2VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL2TARGET))}$(VERSIONOBJ:f:s/.o/.obj/) +.ELSE # "$(GUI)" == "UNX" +SHL2VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL2TARGET))}$(VERSIONOBJ:f) +.ENDIF # "$(GUI)" == "UNX" +$(MISC)/$(SHL2VERSIONOBJ:b).c : $(SOLARENV)/src/version.c $(INCCOM)/$(SHL2VERSIONOBJ:b).h +# $(COPY) $(SOLARENV)/src/version.c $@ + $(COMMAND_ECHO)$(TYPE) $(SOLARENV)/src/version.c | $(SED) s/_version.h/$(SHL2VERSIONOBJ:b).h/ > $@ + +.INIT : $(SHL2VERSIONOBJDEP) +.ENDIF # "$(VERSIONOBJ)"!="" +.ENDIF + +.IF "$(GUI)" != "UNX" +.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2" +.IF "$(SHL2IMPLIB)" == "" +SHL2IMPLIB=i$(TARGET)_t2 +.ENDIF # "$(SHL2IMPLIB)" == "" +.IF "$(COM)" != "GCC" +USE_2IMPLIB=-implib:$(LB)/$(SHL2IMPLIB).lib +.ENDIF # "$(COM)" != "GCC" +SHL2IMPLIBN=$(LB)/$(SHL2IMPLIB).lib +ALLTAR : $(SHL2IMPLIBN) + +.IF "$(USE_DEFFILE)"=="" +USE_2IMPLIB_DEPS=$(LB)/$(SHL2IMPLIB).lib +.ENDIF # "$(USE_DEFFILE)"=="" +.ENDIF # "$(GUI)" == "WNT" || "$(GUI)" == "OS2" +USE_SHL2DEF=$(SHL2DEF) +.ELSE # "$(GUI)" != "UNX" +USE_SHL2DEF= +SHL2DEPN+:=$(SHL2DEPNU) + +.IF "$(SHL2VERSIONMAP)"=="" +# to activate vmaps remove "#" +USE_SHL2VERSIONMAP=$(MISC)/$(SHL2TARGET).vmap +.ENDIF # "$(SHL2VERSIONMAP)"=="" + +.IF "$(USE_SHL2VERSIONMAP)"!="" + +.IF "$(SHL2FILTERFILE)"!="" +.IF "$(SHL2VERSIONMAP)"!="" +#eine von beiden ist zuviel +USE_SHL2VERSIONMAP=$(MISC)/$(SHL2TARGET).vmap +$(USE_SHL2VERSIONMAP) .PHONY: + @echo ----------------------------- + @echo you should only use versionmap OR exportfile + @echo ----------------------------- +# force_dmake_to_error + +.ENDIF # "$(SHL2VERSIONMAP)"!="" + +SHL2VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL2VERSIONMAP) + +$(USE_SHL2VERSIONMAP): \ + $(SHL2OBJS)\ + $(SHL2LIBS)\ + $(SHL2FILTERFILE) + @$(RM) $@.dump +.IF "$(SHL2OBJS)"!="" +# dump remaining objects on the fly +.IF "$(OS)"=="MACOSX" + @-nm $(SHL2OBJS:s/.obj/.o/) > $@.dump +.ELSE + @nm $(SHL2OBJS:s/.obj/.o/) > $@.dump +.ENDIF +.ENDIF # "$(SHL2OBJS)!"="" + @$(TYPE) /dev/null $(SHL2LIBS:s/.lib/.dump/) >> $@.dump + $(COMMAND_ECHO) $(PERL) $(SOLARENV)/bin/mapgen.pl -d $@.dump -s $(SHL2INTERFACE) -f $(SHL2FILTERFILE) -m $@ + +.ELSE # "$(SHL2FILTERFILE)"!="" +USE_SHL2VERSIONMAP=$(MISC)/$(SHL2TARGET).vmap +$(USE_SHL2VERSIONMAP) : +.IF "$(VERBOSE)" == "TRUE" + @echo ----------------------------- + @echo SHL2FILTERFILE not set! + @echo ----------------------------- + @$(TOUCH) $@ + @echo dummy file to keep the dependencies for later use. +.ELSE + @$(TOUCH) $@ +.ENDIF +# force_dmake_to_error +.ENDIF # "$(SHL2FILTERFILE)"!="" +.ELSE # "$(USE_SHL2VERSIONMAP)"!="" + +#and now for the plain non-generic way... +.IF "$(SHL2VERSIONMAP)"!="" +USE_SHL2VERSIONMAP=$(MISC)/$(SHL2VERSIONMAP:b)_$(SHL2TARGET)$(SHL2VERSIONMAP:e) +SHL2VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL2VERSIONMAP) + +.IF "$(OS)"=="MACOSX" +$(USE_SHL2VERSIONMAP): $(SHL2OBJS) $(SHL2LIBS) +.ENDIF + +# .ERRREMOVE is needed as a recipe line like "$(AWK) ... > $@" would create $@ +# even if the $(AWK) part fails: +$(USE_SHL2VERSIONMAP) .ERRREMOVE: $(SHL2VERSIONMAP) + @@-$(RM) -f $@ +# The following files will only be generated and needed on Mac OS X as temporary files +# in order to generate exported symbols list out of Linux/Solaris map files +.IF "$(OS)"=="MACOSX" + @-$(RM) -f $@.symregexp >& $(NULLDEV) + @-$(RM) -f $@.expsymlist >& $(NULLDEV) +.ENDIF +# Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what +# happens if somebody will change it in the future +.IF "$(COMID)"=="gcc3" + $(COMMAND_ECHO) tr -d "\015" < $(SHL2VERSIONMAP) | $(AWK) -f $(SOLARENV)/bin/addsym.awk > $@ +.ELIF "$(COMNAME)"=="sunpro5" + $(COMMAND_ECHO) tr -d "\015" < $(SHL2VERSIONMAP) | $(GREP) -v $(IGNORE_SYMBOLS) > $@ +.ELSE # "$(COMID)"=="gcc3" + $(COMMAND_ECHO) tr -d "\015" < $(SHL2VERSIONMAP) > $@ +.ENDIF # "$(COMID)"=="gcc3" + @chmod a+w $@ +# Mac OS X post-processing generate an exported symbols list from the generated map file +# for details on exported symbols list see man ld on Mac OS X +.IF "$(OS)"=="MACOSX" + @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep -v "\*\|?" > $@.exported-symbols + @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep "\*\|?" > $@.symbols-regexp +# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS +# Extract RTTI symbols from all the objects that will be used to build a shared library +.IF "$(SHL2OBJS)"!="" + -echo $(foreach,i,$(SHL2OBJS:s/.obj/.o/) $i) | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols +.ENDIF +.IF "$(SHL2LIBS)"!="" + $(COMMAND_ECHO)-$(TYPE) $(foreach,j,$(SHL2LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols +.ENDIF +# overwrite the map file generate into the local output tree with the generated +# exported symbols list + cp $@.exported-symbols $@ +.ENDIF # .IF "$(OS)"=="MACOSX" +.ENDIF # "$(SHL2VERSIONMAP)"!="" +.ENDIF # "$(USE_SHL2VERSIONMAP)"!="" +.ENDIF # "$(GUI)" != "UNX" + +.IF "$(UNIXVERSIONNAMES)"!="" +.IF "$(OS)"!="MACOSX" +.IF "$(GUI)"=="UNX" +SHL2SONAME=\"$(SONAME_SWITCH)$(SHL2TARGETN:f)\" +.ENDIF # "$(GUI)"!="UNX" +.ENDIF # "$(OS)"!="MACOSX" +.ENDIF # "$(UNIXVERSIONNAMES)"!="" + +.IF "$(SHL2RES)"!="" +SHL2ALLRES+=$(SHL2RES) +SHL2LINKRES*=$(MISC)/$(SHL2TARGET).res +SHL2LINKRESO*=$(MISC)/$(SHL2TARGET)_res.o +.ENDIF # "$(SHL2RES)"!="" + +.IF "$(SHL2DEFAULTRES)$(use_shl_versions)"!="" +SHL2DEFAULTRES*=$(MISC)/$(SHL2TARGET)_def.res +SHL2ALLRES+=$(SHL2DEFAULTRES) +SHL2LINKRES*=$(MISC)/$(SHL2TARGET).res +SHL2LINKRESO*=$(MISC)/$(SHL2TARGET)_res.o +.ENDIF # "$(SHL2DEFAULTRES)$(use_shl_versions)"!="" + +#.IF "$(SHL2TARGETN)"!="" + +.IF "$(linkinc)"!="" +.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2" +.IF "$(SHL2LIBS)"!="" +$(MISC)/$(SHL2TARGET)_linkinc.ls .PHONY: + @@-$(RM) $@ + $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL2LIBS) $(i:s/.lib/.lin/)) >> $@ +.ENDIF # "$(SHL2LIBS)"!="" +.ENDIF + +LINKINCTARGETS+=$(MISC)/$(SHL2TARGETN:b)_linkinc.ls +$(SHL2TARGETN) : $(LINKINCTARGETS) + +.ELSE +.IF "$(SHL2USE_EXPORTS)"=="name" +.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2" +.IF "$(COM)"!="GCC" +.IF "$(SHL2LIBS)"!="" +SHL2LINKLIST=$(MISC)/$(SHL2TARGET)_link.lst +SHL2LINKLISTPARAM=@$(SHL2LINKLIST) +$(SHL2LINKLIST) : $(SHL2LIBS) + @@-$(RM) $@ + $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL2LIBS) $(i:s/.lib/.lin/)) >> $@ +.ENDIF # "$(SHL2LIBS)"!="" +.ENDIF # "$(COM)"!="GCC" +.ENDIF +.ENDIF # "$(SHL2USE_EXPORTS)"=="name" + +$(MISC)/%linkinc.ls: + @echo . > $@ +.ENDIF # "$(linkinc)"!="" + +.IF "$(GUI)" == "OS2" +#21/02/2006 YD dll names must be 8.3, invoke fix script +#check osl/os2/module.c/osl_loadModule() +SHL2TARGET8=$(shell @fix_shl $(SHL2TARGET)) +.ENDIF + +.IF "$(GUI)" == "OS2" +_SHL2IMP_ORD = $(SHL2STDLIBS:^"$(SOLARVERSION)/$(INPATH)/lib/") $(SHL2STDLIBS:^"$(LB)/") +SHL2IMP_ORD = $(foreach,i,$(_SHL2IMP_ORD) $(shell @-ls $i)) +.ELSE +SHL2IMP_ORD = +.ENDIF + + +$(SHL2TARGETN) : \ + $(SHL2OBJS)\ + $(SHL2LIBS)\ + $(USE_2IMPLIB_DEPS)\ + $(USE_SHL2DEF)\ + $(USE_SHL2VERSIONMAP)\ + $(SHL2RES)\ + $(SHL2DEPN) \ + $(SHL2IMP_ORD) \ + $(SHL2LINKLIST) + @echo "Making: " $(@:f) +.IF "$(GUI)" == "WNT" +.IF "$(SHL2DEFAULTRES)"!="" + @@-$(RM) $(MISC)/$(SHL2DEFAULTRES:b).rc +.IF "$(SHL2ICON)" != "" + @echo 1 ICON $(SHL2ICON) >> $(MISC)/$(SHL2DEFAULTRES:b).rc +.ENDIF +.IF "$(use_shl_versions)" != "" +.IF "$(SHL2ADD_VERINFO)"!="" + @echo $(EMQ)#include $(EMQ)"$(SHL2ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL2DEFAULTRES:b).rc +.ELSE # "$(SHL2ADD_VERINFO)"!="" + @echo $(EMQ)#define ADDITIONAL_VERINFO1 >> $(MISC)/$(SHL2DEFAULTRES:b).rc + @echo $(EMQ)#define ADDITIONAL_VERINFO2 >> $(MISC)/$(SHL2DEFAULTRES:b).rc + @echo $(EMQ)#define ADDITIONAL_VERINFO3 >> $(MISC)/$(SHL2DEFAULTRES:b).rc +.ENDIF # "$(SHL2ADD_VERINFO)"!="" + @echo $(EMQ)#define VERVARIANT $(BUILD) >> $(MISC)/$(SHL2DEFAULTRES:b).rc + @echo $(EMQ)#define ORG_NAME $(SHL2TARGET)$(DLLPOST) >> $(MISC)/$(SHL2DEFAULTRES:b).rc + @echo $(EMQ)#define INTERNAL_NAME $(SHL2TARGET:b) >> $(MISC)/$(SHL2DEFAULTRES:b).rc + @echo $(EMQ)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)/$(SHL2DEFAULTRES:b).rc +.ENDIF # "$(use_shl_versions)" != "" + $(COMMAND_ECHO)$(RC) -DWIN32 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL2DEFAULTRES:b).rc +.ENDIF # "$(SHL2DEFAULTRES)"!="" +.IF "$(SHL2ALLRES)"!="" + $(COMMAND_ECHO)$(TYPE) $(SHL2ALLRES) > $(SHL2LINKRES) +.IF "$(COM)"=="GCC" + windres $(SHL2LINKRES) $(SHL2LINKRESO) +.ENDIF # "$(COM)"=="GCC" +.ENDIF # "$(SHL2ALLRES)"!="" +.IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def + @echo dlltool --dllname $(SHL2TARGET)$(DLLPOST) \ + --kill-at \\ > $(MISC)/$(TARGET).$(@:b)_2.cmd + @noop $(assign ALL2OBJLIST:=$(STDOBJ) $(SHL2OBJS) $(SHL2LINKRESO) $(shell $(TYPE) /dev/null $(SHL2LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g)) +.IF "$(DEFLIB2NAME)"!="" # do not have to include objs + @noop $(assign DEF2OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB2NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g)) + @noop $(foreach,i,$(DEF2OBJLIST) $(assign ALL2OBJLIST:=$(ALL2OBJLIST:s?$i??))) +.ENDIF # "$(DEFLIB2NAME)"!="" + @echo --output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_2.cmd +.IF "$(SHL2DEF)"!="" + @echo --input-def $(SHL2DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_2.cmd +.ELSE + @echo $(SHL2VERSIONOBJ) $(SHL2DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_2.cmd +.ENDIF + @echo $(ALL2OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_2.cmd + @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \ + $(STDOBJ) $(SHL2VERSIONOBJ) $(SHL2DESCRIPTIONOBJ) $(SHL2OBJS) $(SHL2LINKRESO) \ + `$(TYPE) /dev/null $(SHL2LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \ + -Wl,--exclude-libs,ALL,--start-group $(SHL2STDLIBS) -Wl,--end-group \ + $(SHL2STDSHL) $(STDSHL2) $(MISC)/$(@:b)_exp.o $(MINGWSSTDENDOBJ) \ + -Wl,-Map,$(MISC)/$(@:b).map >> $(MISC)/$(TARGET).$(@:b)_2.cmd + .IF "$(VERBOSE)" == "TRUE" + @$(TYPE) $(MISC)/$(TARGET).$(@:b)_2.cmd + .ENDIF + @+source $(MISC)/$(TARGET).$(@:b)_2.cmd +.ELSE +.IF "$(linkinc)"=="" +.IF "$(SHL2USE_EXPORTS)"!="name" +.IF "$(USE_DEFFILE)"!="" + $(COMMAND_ECHO)$(SHL2LINKER) @$(mktmp \ + $(SHL2LINKFLAGS) \ + $(LINKFLAGSSHL) \ + $(SHL2STACK) $(SHL2BASEX) \ + -out:$@ \ + -map:$(MISC)/$(@:b).map \ + -def:$(SHL2DEF) \ + $(USE_2IMPLIB) \ + $(STDOBJ) \ + $(SHL2VERSIONOBJ) $(SHL2OBJS) \ + $(SHL2LIBS) \ + $(SHL2STDLIBS) \ + $(SHL2STDSHL) $(STDSHL2) \ + $(SHL2LINKRES) \ + ) $(LINKOUTPUTFILTER) +# double check if target was really written... still making sense? + @@$(LS) $@ + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ELSE # "$(USE_DEFFILE)"!="" + $(COMMAND_ECHO)$(SHL2LINKER) @$(mktmp $(SHL2LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL2BASEX) \ + $(SHL2STACK) -out:$(SHL2TARGETN) \ + -map:$(MISC)/$(@:B).map \ + $(LB)/$(SHL2IMPLIB).exp \ + $(STDOBJ) \ + $(SHL2OBJS) $(SHL2VERSIONOBJ) \ + $(SHL2LIBS) \ + $(SHL2STDLIBS) \ + $(SHL2STDSHL) $(STDSHL2) \ + $(SHL2LINKRES) \ + ) $(LINKOUTPUTFILTER) +# double check if target was really written... still making sense? + @@$(LS) $@ + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ENDIF # "$(USE_DEFFILE)"!="" +.ELSE # "$(SHL2USE_EXPORTS)"!="name" + $(COMMAND_ECHO)$(SHL2LINKER) @$(mktmp $(SHL2LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL2BASEX) \ + $(SHL2STACK) -out:$(SHL2TARGETN) \ + -map:$(MISC)/$(@:B).map \ + $(USE_2IMPLIB) \ + $(STDOBJ) \ + $(SHL2OBJS) $(SHL2VERSIONOBJ)) \ + $(SHL2LINKLISTPARAM) \ + @$(mktmp $(SHL2STDLIBS) \ + $(SHL2STDSHL) $(STDSHL2) \ + $(SHL2LINKRES) \ + ) + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ENDIF # "$(SHL2USE_EXPORTS)"!="name" +.ELSE # "$(linkinc)"=="" + $(COMMAND_ECHO)-$(RM) del $(MISC)/$(SHL2TARGET).lnk + $(COMMAND_ECHO)-$(RM) $(MISC)/$(SHL2TARGET).lst + $(COMMAND_ECHO)$(TYPE) $(mktmp \ + $(SHL2LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL2BASEX) \ + $(SHL2STACK) $(MAPFILE) \ + -out:$@ \ + $(LB)/$(SHL2IMPLIB).exp \ + $(STDOBJ) \ + $(SHL2OBJS) \ + $(SHL2STDLIBS) \ + $(SHL2STDSHL) $(STDSHL2) \ + $(SHL2LINKRES) \ + ) >> $(MISC)/$(SHL2TARGET).lnk + $(COMMAND_ECHO)$(TYPE) $(MISC)/$(SHL2TARGETN:b)_linkinc.ls >> $(MISC)/$(SHL2TARGET).lnk + $(COMMAND_ECHO)$(SHL2LINKER) @$(MISC)/$(SHL2TARGET).lnk + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ENDIF # "$(linkinc)"=="" +.ENDIF # "$(COM)"=="GCC" +.ENDIF # "$(GUI)" == "WNT" +.IF "$(GUI)"=="UNX" +.IF "$(OS)"=="MACOSX" + @-$(RM) $(MISC)/$(@:b).list + @-$(RM) $(MISC)/$(TARGET).$(@:b)_2.cmd + @echo $(STDSLO) $(SHL2OBJS:s/.obj/.o/) \ + $(SHL2VERSIONOBJ) \ + `cat /dev/null $(SHL2LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list + @echo -n $(SHL2LINKER) $(SHL2LINKFLAGS) $(SHL2VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \ + $(SHL2STDLIBS) $(SHL2ARCHIVES) $(SHL2STDSHL) $(STDSHL2) -filelist $(MISC)/$(@:b).list $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_2.cmd + @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \ + `cat $(MISC)/$(TARGET).$(@:b)_2.cmd` \ + >> $(MISC)/$(TARGET).$(@:b)_2.cmd + .IF "$(VERBOSE)" == "TRUE" + @cat $(MISC)/$(TARGET).$(@:b)_2.cmd + .ENDIF + @+source $(MISC)/$(TARGET).$(@:b)_2.cmd + @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \ + shl $(SHL2RPATH) $@ +.IF "$(SHL2CREATEJNILIB)"!="" + @echo "Making: " $(@:f).jnilib + @macosx-create-bundle $@ +.ENDIF # "$(SHL2CREATEJNILIB)"!="" +.IF "$(UPDATER)"=="YES" +.IF "$(SHL2NOCHECK)"=="" + $(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS2) $(SHL2TARGETN) +.ENDIF # "$(SHL2NOCHECK)"!="" +.ENDIF +.ELSE # "$(OS)"=="MACOSX" + @-$(RM) $(MISC)/$(TARGET).$(@:b)_2.cmd + @echo $(SHL2LINKER) $(SHL2LINKFLAGS) $(SHL2SONAME) $(LINKFLAGSSHL) $(SHL2VERSIONMAPPARA) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) $(STDSLO) $(SHL2OBJS:s/.obj/.o/) \ + $(SHL2VERSIONOBJ) -o $@ \ + `cat /dev/null $(SHL2LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \ + $(SHL2STDLIBS) $(SHL2ARCHIVES) $(SHL2STDSHL) $(STDSHL2) $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_2.cmd + .IF "$(VERBOSE)" == "TRUE" + @cat $(MISC)/$(TARGET).$(@:b)_2.cmd + .ENDIF + @+source $(MISC)/$(TARGET).$(@:b)_2.cmd +.IF "$(UPDATER)"=="YES" +.IF "$(SHL2NOCHECK)"=="" + $(COMMAND_ECHO)-$(RM) $(SHL2TARGETN:d)check_$(SHL2TARGETN:f) + $(COMMAND_ECHO)$(RENAME) $(SHL2TARGETN) $(SHL2TARGETN:d)check_$(SHL2TARGETN:f) +.IF "$(VERBOSE)"=="TRUE" + $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS2) $(SHL2TARGETN:d)check_$(SHL2TARGETN:f) +.ELSE + $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS2) -- -s $(SHL2TARGETN:d)check_$(SHL2TARGETN:f) +.ENDIF +.ENDIF # "$(SHL2NOCHECK)"!="" +.ENDIF # "$(UPDATER)"=="YES" +.ENDIF # "$(OS)"=="MACOSX" +.IF "$(UNIXVERSIONNAMES)"!="" + $(COMMAND_ECHO)$(RM) $(LB)/$(SHL2TARGETN:b) + $(COMMAND_ECHO)cd $(LB) && ln -s $(SHL2TARGETN:f) $(SHL2TARGETN:b) +.ENDIF # "$(UNIXVERSIONNAMES)"!="" +.IF "$(VERBOSE)" == "TRUE" + @ls -l $@ +.ENDIF +.ENDIF # "$(GUI)" == "UNX" + +.IF "$(GUI)" == "OS2" + +.IF "$(SHL2DEFAULTRES)"!="" + @+-$(RM) $(MISC)/$(SHL2DEFAULTRES:b).rc >& $(NULLDEV) +.IF "$(SHL2ICON)" != "" + @-+echo 1 ICON $(SHL2ICON) >> $(MISC)/$(SHL2DEFAULTRES:b).rc +.ENDIF +.IF "$(use_shl_versions)" != "" +.IF "$(SHL2ADD_VERINFO)"!="" + @-+echo $(EMQ)#include $(EMQ)"$(SHL2ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL2DEFAULTRES:b).rc +.ENDIF # "$(SHL2ADD_VERINFO)"!="" + @-+echo MENU 1 BEGIN END >> $(MISC)/$(SHL2DEFAULTRES:b).rc +# @-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)/$(SHL2DEFAULTRES:b).rc +.ENDIF # "$(use_shl_versions)" != "" +# YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR) + $(COMMAND_ECHO)$(RC) -r -DOS2 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL2DEFAULTRES:b).rc +.ENDIF # "$(SHL2DEFAULTRES)"!="" + +.IF "$(SHL2ALLRES)"!="" + $(COMMAND_ECHO)+$(TYPE) $(SHL2ALLRES) > $(SHL2LINKRES) +.ENDIF # "$(SHL2ALLRES)"!="" + +.IF "$(USE_DEFFILE)"!="" + + $(COMMAND_ECHO)$(SHL2LINKER) $(SHL2LINKFLAGS) $(LINKFLAGSSHL) -o $@ \ + $(SHL2DEF) \ + $(STDOBJ) \ + -L$(LB) \ + -L$(SOLARVERSION)/$(INPATH)/lib \ + $(SHL2OBJS) $(SHL2VERSIONOBJ) \ + $(SHL2LIBS) \ + $(SHL2STDLIBS:^"-l") \ + $(SHL2LINKRES) \ + $(SHL2STDSHL:^"-l") $(STDSHL2:^"-l") + +.ELSE # "$(USE_DEFFILE)"!="" + + $(COMMAND_ECHO)$(SHL2LINKER) -v $(SHL2LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL2BASEX) \ + $(SHL2STACK) -o $(SHL2TARGETN) \ + $(SHL2DEF) \ + $(STDOBJ) \ + -L$(LB) \ + -L$(SOLARVERSION)/$(INPATH)/lib \ + $(SHL2OBJS) $(SHL2VERSIONOBJ) \ + $(SHL2LIBS) \ + $(SHL2STDLIBS:^"-l") \ + $(SHL2LINKRES) \ + $(SHL2STDSHL:^"-l") $(STDSHL2:^"-l") \ + $(LINKOUTPUTFILTER) + @$(LS) $@ >& $(NULLDEV) + +.ENDIF # "$(USE_DEFFILE)"!="" + +.IF "$(SHL2TARGET8)" != "$(SHL2TARGET)" + $(COMMAND_ECHO)+$(COPY) $@ $(@:d)$(SHL2TARGET8).dll +.ENDIF + +.ENDIF # "$(GUI)" == "OS2" + +.ENDIF # "$(SHL2TARGETN)"!="" + +# unroll begin + +.IF "$(SHL3TARGETN)"!="" + +.IF "$(OS)"=="AIX" +SHL3STDLIBS= +.ENDIF + +.IF "$(SHLLINKARCONLY)" != "" +SHL3STDLIBS= +STDSHL= +.ELSE +SHL3ARCHIVES= +.ENDIF + +# decide how to link +.IF "$(SHL3CODETYPE)"=="C" +SHL3LINKER=$(LINKC) +SHL3STDSHL=$(subst,CPPRUNTIME, $(STDSHL)) +SHL3LINKFLAGS+=$(LINKCFLAGS) +.ELSE # "$(SHL3CODETYPE)"=="C" +SHL3LINKER=$(LINK) +SHL3STDSHL=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDSHL)) +SHL3LINKFLAGS+=$(LINKFLAGS) +.ENDIF # "$(SHL3CODETYPE)"=="C" + +SHL3RPATH*=OOO +LINKFLAGSRUNPATH_$(SHL3RPATH)*=/ERROR:/Bad_SHL3RPATH_value +SHL3LINKFLAGS+=$(LINKFLAGSRUNPATH_$(SHL3RPATH)) + +.IF "$(SHL3USE_EXPORTS)"=="" +SHL3DEF*=$(MISC)/$(SHL3TARGET).def +.ENDIF # "$(SHL3USE_EXPORTS)"=="" + +EXTRALIBPATHS3=$(EXTRALIBPATHS) +.IF "$(UPDATER)"=="YES" +.IF "$(SHL3NOCHECK)"=="" +.IF "$(SOLAR_STLLIBPATH)"!="" +EXTRALIBPATHS3+=-L$(SOLAR_STLLIBPATH) +.ENDIF +.ENDIF # "$(SHL3NOCHECK)"!="" +.ENDIF +#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +#+++++++++++ version object ++++++++++++++++++++++++++++++++++++++++ +#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +.IF "$(L10N_framework)"=="" +.IF "$(VERSIONOBJ)"!="" +SHL3VERSIONOBJ:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL3TARGET))}$(VERSIONOBJ:f) +USE_VERSIONH:=$(INCCOM)/$(SHL3VERSIONOBJ:b).h +.IF "$(GUI)" == "UNX" +SHL3VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL3TARGET))}$(VERSIONOBJ:f:s/.o/.obj/) +.ELSE # "$(GUI)" == "UNX" +SHL3VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL3TARGET))}$(VERSIONOBJ:f) +.ENDIF # "$(GUI)" == "UNX" +$(MISC)/$(SHL3VERSIONOBJ:b).c : $(SOLARENV)/src/version.c $(INCCOM)/$(SHL3VERSIONOBJ:b).h +# $(COPY) $(SOLARENV)/src/version.c $@ + $(COMMAND_ECHO)$(TYPE) $(SOLARENV)/src/version.c | $(SED) s/_version.h/$(SHL3VERSIONOBJ:b).h/ > $@ + +.INIT : $(SHL3VERSIONOBJDEP) +.ENDIF # "$(VERSIONOBJ)"!="" +.ENDIF + +.IF "$(GUI)" != "UNX" +.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2" +.IF "$(SHL3IMPLIB)" == "" +SHL3IMPLIB=i$(TARGET)_t3 +.ENDIF # "$(SHL3IMPLIB)" == "" +.IF "$(COM)" != "GCC" +USE_3IMPLIB=-implib:$(LB)/$(SHL3IMPLIB).lib +.ENDIF # "$(COM)" != "GCC" +SHL3IMPLIBN=$(LB)/$(SHL3IMPLIB).lib +ALLTAR : $(SHL3IMPLIBN) + +.IF "$(USE_DEFFILE)"=="" +USE_3IMPLIB_DEPS=$(LB)/$(SHL3IMPLIB).lib +.ENDIF # "$(USE_DEFFILE)"=="" +.ENDIF # "$(GUI)" == "WNT" || "$(GUI)" == "OS2" +USE_SHL3DEF=$(SHL3DEF) +.ELSE # "$(GUI)" != "UNX" +USE_SHL3DEF= +SHL3DEPN+:=$(SHL3DEPNU) + +.IF "$(SHL3VERSIONMAP)"=="" +# to activate vmaps remove "#" +USE_SHL3VERSIONMAP=$(MISC)/$(SHL3TARGET).vmap +.ENDIF # "$(SHL3VERSIONMAP)"=="" + +.IF "$(USE_SHL3VERSIONMAP)"!="" + +.IF "$(SHL3FILTERFILE)"!="" +.IF "$(SHL3VERSIONMAP)"!="" +#eine von beiden ist zuviel +USE_SHL3VERSIONMAP=$(MISC)/$(SHL3TARGET).vmap +$(USE_SHL3VERSIONMAP) .PHONY: + @echo ----------------------------- + @echo you should only use versionmap OR exportfile + @echo ----------------------------- +# force_dmake_to_error + +.ENDIF # "$(SHL3VERSIONMAP)"!="" + +SHL3VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL3VERSIONMAP) + +$(USE_SHL3VERSIONMAP): \ + $(SHL3OBJS)\ + $(SHL3LIBS)\ + $(SHL3FILTERFILE) + @$(RM) $@.dump +.IF "$(SHL3OBJS)"!="" +# dump remaining objects on the fly +.IF "$(OS)"=="MACOSX" + @-nm $(SHL3OBJS:s/.obj/.o/) > $@.dump +.ELSE + @nm $(SHL3OBJS:s/.obj/.o/) > $@.dump +.ENDIF +.ENDIF # "$(SHL3OBJS)!"="" + @$(TYPE) /dev/null $(SHL3LIBS:s/.lib/.dump/) >> $@.dump + $(COMMAND_ECHO) $(PERL) $(SOLARENV)/bin/mapgen.pl -d $@.dump -s $(SHL3INTERFACE) -f $(SHL3FILTERFILE) -m $@ + +.ELSE # "$(SHL3FILTERFILE)"!="" +USE_SHL3VERSIONMAP=$(MISC)/$(SHL3TARGET).vmap +$(USE_SHL3VERSIONMAP) : +.IF "$(VERBOSE)" == "TRUE" + @echo ----------------------------- + @echo SHL3FILTERFILE not set! + @echo ----------------------------- + @$(TOUCH) $@ + @echo dummy file to keep the dependencies for later use. +.ELSE + @$(TOUCH) $@ +.ENDIF +# force_dmake_to_error +.ENDIF # "$(SHL3FILTERFILE)"!="" +.ELSE # "$(USE_SHL3VERSIONMAP)"!="" + +#and now for the plain non-generic way... +.IF "$(SHL3VERSIONMAP)"!="" +USE_SHL3VERSIONMAP=$(MISC)/$(SHL3VERSIONMAP:b)_$(SHL3TARGET)$(SHL3VERSIONMAP:e) +SHL3VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL3VERSIONMAP) + +.IF "$(OS)"=="MACOSX" +$(USE_SHL3VERSIONMAP): $(SHL3OBJS) $(SHL3LIBS) +.ENDIF + +# .ERRREMOVE is needed as a recipe line like "$(AWK) ... > $@" would create $@ +# even if the $(AWK) part fails: +$(USE_SHL3VERSIONMAP) .ERRREMOVE: $(SHL3VERSIONMAP) + @@-$(RM) -f $@ +# The following files will only be generated and needed on Mac OS X as temporary files +# in order to generate exported symbols list out of Linux/Solaris map files +.IF "$(OS)"=="MACOSX" + @-$(RM) -f $@.symregexp >& $(NULLDEV) + @-$(RM) -f $@.expsymlist >& $(NULLDEV) +.ENDIF +# Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what +# happens if somebody will change it in the future +.IF "$(COMID)"=="gcc3" + $(COMMAND_ECHO) tr -d "\015" < $(SHL3VERSIONMAP) | $(AWK) -f $(SOLARENV)/bin/addsym.awk > $@ +.ELIF "$(COMNAME)"=="sunpro5" + $(COMMAND_ECHO) tr -d "\015" < $(SHL3VERSIONMAP) | $(GREP) -v $(IGNORE_SYMBOLS) > $@ +.ELSE # "$(COMID)"=="gcc3" + $(COMMAND_ECHO) tr -d "\015" < $(SHL3VERSIONMAP) > $@ +.ENDIF # "$(COMID)"=="gcc3" + @chmod a+w $@ +# Mac OS X post-processing generate an exported symbols list from the generated map file +# for details on exported symbols list see man ld on Mac OS X +.IF "$(OS)"=="MACOSX" + @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep -v "\*\|?" > $@.exported-symbols + @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep "\*\|?" > $@.symbols-regexp +# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS +# Extract RTTI symbols from all the objects that will be used to build a shared library +.IF "$(SHL3OBJS)"!="" + -echo $(foreach,i,$(SHL3OBJS:s/.obj/.o/) $i) | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols +.ENDIF +.IF "$(SHL3LIBS)"!="" + $(COMMAND_ECHO)-$(TYPE) $(foreach,j,$(SHL3LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols +.ENDIF +# overwrite the map file generate into the local output tree with the generated +# exported symbols list + cp $@.exported-symbols $@ +.ENDIF # .IF "$(OS)"=="MACOSX" +.ENDIF # "$(SHL3VERSIONMAP)"!="" +.ENDIF # "$(USE_SHL3VERSIONMAP)"!="" +.ENDIF # "$(GUI)" != "UNX" + +.IF "$(UNIXVERSIONNAMES)"!="" +.IF "$(OS)"!="MACOSX" +.IF "$(GUI)"=="UNX" +SHL3SONAME=\"$(SONAME_SWITCH)$(SHL3TARGETN:f)\" +.ENDIF # "$(GUI)"!="UNX" +.ENDIF # "$(OS)"!="MACOSX" +.ENDIF # "$(UNIXVERSIONNAMES)"!="" + +.IF "$(SHL3RES)"!="" +SHL3ALLRES+=$(SHL3RES) +SHL3LINKRES*=$(MISC)/$(SHL3TARGET).res +SHL3LINKRESO*=$(MISC)/$(SHL3TARGET)_res.o +.ENDIF # "$(SHL3RES)"!="" + +.IF "$(SHL3DEFAULTRES)$(use_shl_versions)"!="" +SHL3DEFAULTRES*=$(MISC)/$(SHL3TARGET)_def.res +SHL3ALLRES+=$(SHL3DEFAULTRES) +SHL3LINKRES*=$(MISC)/$(SHL3TARGET).res +SHL3LINKRESO*=$(MISC)/$(SHL3TARGET)_res.o +.ENDIF # "$(SHL3DEFAULTRES)$(use_shl_versions)"!="" + +#.IF "$(SHL3TARGETN)"!="" + +.IF "$(linkinc)"!="" +.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2" +.IF "$(SHL3LIBS)"!="" +$(MISC)/$(SHL3TARGET)_linkinc.ls .PHONY: + @@-$(RM) $@ + $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL3LIBS) $(i:s/.lib/.lin/)) >> $@ +.ENDIF # "$(SHL3LIBS)"!="" +.ENDIF + +LINKINCTARGETS+=$(MISC)/$(SHL3TARGETN:b)_linkinc.ls +$(SHL3TARGETN) : $(LINKINCTARGETS) + +.ELSE +.IF "$(SHL3USE_EXPORTS)"=="name" +.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2" +.IF "$(COM)"!="GCC" +.IF "$(SHL3LIBS)"!="" +SHL3LINKLIST=$(MISC)/$(SHL3TARGET)_link.lst +SHL3LINKLISTPARAM=@$(SHL3LINKLIST) +$(SHL3LINKLIST) : $(SHL3LIBS) + @@-$(RM) $@ + $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL3LIBS) $(i:s/.lib/.lin/)) >> $@ +.ENDIF # "$(SHL3LIBS)"!="" +.ENDIF # "$(COM)"!="GCC" +.ENDIF +.ENDIF # "$(SHL3USE_EXPORTS)"=="name" + +$(MISC)/%linkinc.ls: + @echo . > $@ +.ENDIF # "$(linkinc)"!="" + +.IF "$(GUI)" == "OS2" +#21/02/2006 YD dll names must be 8.3, invoke fix script +#check osl/os2/module.c/osl_loadModule() +SHL3TARGET8=$(shell @fix_shl $(SHL3TARGET)) +.ENDIF + +.IF "$(GUI)" == "OS2" +_SHL3IMP_ORD = $(SHL3STDLIBS:^"$(SOLARVERSION)/$(INPATH)/lib/") $(SHL3STDLIBS:^"$(LB)/") +SHL3IMP_ORD = $(foreach,i,$(_SHL3IMP_ORD) $(shell @-ls $i)) +.ELSE +SHL3IMP_ORD = +.ENDIF + + +$(SHL3TARGETN) : \ + $(SHL3OBJS)\ + $(SHL3LIBS)\ + $(USE_3IMPLIB_DEPS)\ + $(USE_SHL3DEF)\ + $(USE_SHL3VERSIONMAP)\ + $(SHL3RES)\ + $(SHL3DEPN) \ + $(SHL3IMP_ORD) \ + $(SHL3LINKLIST) + @echo "Making: " $(@:f) +.IF "$(GUI)" == "WNT" +.IF "$(SHL3DEFAULTRES)"!="" + @@-$(RM) $(MISC)/$(SHL3DEFAULTRES:b).rc +.IF "$(SHL3ICON)" != "" + @echo 1 ICON $(SHL3ICON) >> $(MISC)/$(SHL3DEFAULTRES:b).rc +.ENDIF +.IF "$(use_shl_versions)" != "" +.IF "$(SHL3ADD_VERINFO)"!="" + @echo $(EMQ)#include $(EMQ)"$(SHL3ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL3DEFAULTRES:b).rc +.ELSE # "$(SHL3ADD_VERINFO)"!="" + @echo $(EMQ)#define ADDITIONAL_VERINFO1 >> $(MISC)/$(SHL3DEFAULTRES:b).rc + @echo $(EMQ)#define ADDITIONAL_VERINFO2 >> $(MISC)/$(SHL3DEFAULTRES:b).rc + @echo $(EMQ)#define ADDITIONAL_VERINFO3 >> $(MISC)/$(SHL3DEFAULTRES:b).rc +.ENDIF # "$(SHL3ADD_VERINFO)"!="" + @echo $(EMQ)#define VERVARIANT $(BUILD) >> $(MISC)/$(SHL3DEFAULTRES:b).rc + @echo $(EMQ)#define ORG_NAME $(SHL3TARGET)$(DLLPOST) >> $(MISC)/$(SHL3DEFAULTRES:b).rc + @echo $(EMQ)#define INTERNAL_NAME $(SHL3TARGET:b) >> $(MISC)/$(SHL3DEFAULTRES:b).rc + @echo $(EMQ)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)/$(SHL3DEFAULTRES:b).rc +.ENDIF # "$(use_shl_versions)" != "" + $(COMMAND_ECHO)$(RC) -DWIN32 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL3DEFAULTRES:b).rc +.ENDIF # "$(SHL3DEFAULTRES)"!="" +.IF "$(SHL3ALLRES)"!="" + $(COMMAND_ECHO)$(TYPE) $(SHL3ALLRES) > $(SHL3LINKRES) +.IF "$(COM)"=="GCC" + windres $(SHL3LINKRES) $(SHL3LINKRESO) +.ENDIF # "$(COM)"=="GCC" +.ENDIF # "$(SHL3ALLRES)"!="" +.IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def + @echo dlltool --dllname $(SHL3TARGET)$(DLLPOST) \ + --kill-at \\ > $(MISC)/$(TARGET).$(@:b)_3.cmd + @noop $(assign ALL3OBJLIST:=$(STDOBJ) $(SHL3OBJS) $(SHL3LINKRESO) $(shell $(TYPE) /dev/null $(SHL3LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g)) +.IF "$(DEFLIB3NAME)"!="" # do not have to include objs + @noop $(assign DEF3OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB3NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g)) + @noop $(foreach,i,$(DEF3OBJLIST) $(assign ALL3OBJLIST:=$(ALL3OBJLIST:s?$i??))) +.ENDIF # "$(DEFLIB3NAME)"!="" + @echo --output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_3.cmd +.IF "$(SHL3DEF)"!="" + @echo --input-def $(SHL3DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_3.cmd +.ELSE + @echo $(SHL3VERSIONOBJ) $(SHL3DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_3.cmd +.ENDIF + @echo $(ALL3OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_3.cmd + @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \ + $(STDOBJ) $(SHL3VERSIONOBJ) $(SHL3DESCRIPTIONOBJ) $(SHL3OBJS) $(SHL3LINKRESO) \ + `$(TYPE) /dev/null $(SHL3LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \ + -Wl,--exclude-libs,ALL,--start-group $(SHL3STDLIBS) -Wl,--end-group \ + $(SHL3STDSHL) $(STDSHL3) $(MISC)/$(@:b)_exp.o $(MINGWSSTDENDOBJ) \ + -Wl,-Map,$(MISC)/$(@:b).map >> $(MISC)/$(TARGET).$(@:b)_3.cmd + .IF "$(VERBOSE)" == "TRUE" + @$(TYPE) $(MISC)/$(TARGET).$(@:b)_3.cmd + .ENDIF + @+source $(MISC)/$(TARGET).$(@:b)_3.cmd +.ELSE +.IF "$(linkinc)"=="" +.IF "$(SHL3USE_EXPORTS)"!="name" +.IF "$(USE_DEFFILE)"!="" + $(COMMAND_ECHO)$(SHL3LINKER) @$(mktmp \ + $(SHL3LINKFLAGS) \ + $(LINKFLAGSSHL) \ + $(SHL3STACK) $(SHL3BASEX) \ + -out:$@ \ + -map:$(MISC)/$(@:b).map \ + -def:$(SHL3DEF) \ + $(USE_3IMPLIB) \ + $(STDOBJ) \ + $(SHL3VERSIONOBJ) $(SHL3OBJS) \ + $(SHL3LIBS) \ + $(SHL3STDLIBS) \ + $(SHL3STDSHL) $(STDSHL3) \ + $(SHL3LINKRES) \ + ) $(LINKOUTPUTFILTER) +# double check if target was really written... still making sense? + @@$(LS) $@ + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ELSE # "$(USE_DEFFILE)"!="" + $(COMMAND_ECHO)$(SHL3LINKER) @$(mktmp $(SHL3LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL3BASEX) \ + $(SHL3STACK) -out:$(SHL3TARGETN) \ + -map:$(MISC)/$(@:B).map \ + $(LB)/$(SHL3IMPLIB).exp \ + $(STDOBJ) \ + $(SHL3OBJS) $(SHL3VERSIONOBJ) \ + $(SHL3LIBS) \ + $(SHL3STDLIBS) \ + $(SHL3STDSHL) $(STDSHL3) \ + $(SHL3LINKRES) \ + ) $(LINKOUTPUTFILTER) +# double check if target was really written... still making sense? + @@$(LS) $@ + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ENDIF # "$(USE_DEFFILE)"!="" +.ELSE # "$(SHL3USE_EXPORTS)"!="name" + $(COMMAND_ECHO)$(SHL3LINKER) @$(mktmp $(SHL3LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL3BASEX) \ + $(SHL3STACK) -out:$(SHL3TARGETN) \ + -map:$(MISC)/$(@:B).map \ + $(USE_3IMPLIB) \ + $(STDOBJ) \ + $(SHL3OBJS) $(SHL3VERSIONOBJ)) \ + $(SHL3LINKLISTPARAM) \ + @$(mktmp $(SHL3STDLIBS) \ + $(SHL3STDSHL) $(STDSHL3) \ + $(SHL3LINKRES) \ + ) + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ENDIF # "$(SHL3USE_EXPORTS)"!="name" +.ELSE # "$(linkinc)"=="" + $(COMMAND_ECHO)-$(RM) del $(MISC)/$(SHL3TARGET).lnk + $(COMMAND_ECHO)-$(RM) $(MISC)/$(SHL3TARGET).lst + $(COMMAND_ECHO)$(TYPE) $(mktmp \ + $(SHL3LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL3BASEX) \ + $(SHL3STACK) $(MAPFILE) \ + -out:$@ \ + $(LB)/$(SHL3IMPLIB).exp \ + $(STDOBJ) \ + $(SHL3OBJS) \ + $(SHL3STDLIBS) \ + $(SHL3STDSHL) $(STDSHL3) \ + $(SHL3LINKRES) \ + ) >> $(MISC)/$(SHL3TARGET).lnk + $(COMMAND_ECHO)$(TYPE) $(MISC)/$(SHL3TARGETN:b)_linkinc.ls >> $(MISC)/$(SHL3TARGET).lnk + $(COMMAND_ECHO)$(SHL3LINKER) @$(MISC)/$(SHL3TARGET).lnk + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ENDIF # "$(linkinc)"=="" +.ENDIF # "$(COM)"=="GCC" +.ENDIF # "$(GUI)" == "WNT" +.IF "$(GUI)"=="UNX" +.IF "$(OS)"=="MACOSX" + @-$(RM) $(MISC)/$(@:b).list + @-$(RM) $(MISC)/$(TARGET).$(@:b)_3.cmd + @echo $(STDSLO) $(SHL3OBJS:s/.obj/.o/) \ + $(SHL3VERSIONOBJ) \ + `cat /dev/null $(SHL3LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list + @echo -n $(SHL3LINKER) $(SHL3LINKFLAGS) $(SHL3VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \ + $(SHL3STDLIBS) $(SHL3ARCHIVES) $(SHL3STDSHL) $(STDSHL3) -filelist $(MISC)/$(@:b).list $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_3.cmd + @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \ + `cat $(MISC)/$(TARGET).$(@:b)_3.cmd` \ + >> $(MISC)/$(TARGET).$(@:b)_3.cmd + .IF "$(VERBOSE)" == "TRUE" + @cat $(MISC)/$(TARGET).$(@:b)_3.cmd + .ENDIF + @+source $(MISC)/$(TARGET).$(@:b)_3.cmd + @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \ + shl $(SHL3RPATH) $@ +.IF "$(SHL3CREATEJNILIB)"!="" + @echo "Making: " $(@:f).jnilib + @macosx-create-bundle $@ +.ENDIF # "$(SHL3CREATEJNILIB)"!="" +.IF "$(UPDATER)"=="YES" +.IF "$(SHL3NOCHECK)"=="" + $(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS3) $(SHL3TARGETN) +.ENDIF # "$(SHL3NOCHECK)"!="" +.ENDIF +.ELSE # "$(OS)"=="MACOSX" + @-$(RM) $(MISC)/$(TARGET).$(@:b)_3.cmd + @echo $(SHL3LINKER) $(SHL3LINKFLAGS) $(SHL3SONAME) $(LINKFLAGSSHL) $(SHL3VERSIONMAPPARA) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) $(STDSLO) $(SHL3OBJS:s/.obj/.o/) \ + $(SHL3VERSIONOBJ) -o $@ \ + `cat /dev/null $(SHL3LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \ + $(SHL3STDLIBS) $(SHL3ARCHIVES) $(SHL3STDSHL) $(STDSHL3) $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_3.cmd + .IF "$(VERBOSE)" == "TRUE" + @cat $(MISC)/$(TARGET).$(@:b)_3.cmd + .ENDIF + @+source $(MISC)/$(TARGET).$(@:b)_3.cmd +.IF "$(UPDATER)"=="YES" +.IF "$(SHL3NOCHECK)"=="" + $(COMMAND_ECHO)-$(RM) $(SHL3TARGETN:d)check_$(SHL3TARGETN:f) + $(COMMAND_ECHO)$(RENAME) $(SHL3TARGETN) $(SHL3TARGETN:d)check_$(SHL3TARGETN:f) +.IF "$(VERBOSE)"=="TRUE" + $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS3) $(SHL3TARGETN:d)check_$(SHL3TARGETN:f) +.ELSE + $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS3) -- -s $(SHL3TARGETN:d)check_$(SHL3TARGETN:f) +.ENDIF +.ENDIF # "$(SHL3NOCHECK)"!="" +.ENDIF # "$(UPDATER)"=="YES" +.ENDIF # "$(OS)"=="MACOSX" +.IF "$(UNIXVERSIONNAMES)"!="" + $(COMMAND_ECHO)$(RM) $(LB)/$(SHL3TARGETN:b) + $(COMMAND_ECHO)cd $(LB) && ln -s $(SHL3TARGETN:f) $(SHL3TARGETN:b) +.ENDIF # "$(UNIXVERSIONNAMES)"!="" +.IF "$(VERBOSE)" == "TRUE" + @ls -l $@ +.ENDIF +.ENDIF # "$(GUI)" == "UNX" + +.IF "$(GUI)" == "OS2" + +.IF "$(SHL3DEFAULTRES)"!="" + @+-$(RM) $(MISC)/$(SHL3DEFAULTRES:b).rc >& $(NULLDEV) +.IF "$(SHL3ICON)" != "" + @-+echo 1 ICON $(SHL3ICON) >> $(MISC)/$(SHL3DEFAULTRES:b).rc +.ENDIF +.IF "$(use_shl_versions)" != "" +.IF "$(SHL3ADD_VERINFO)"!="" + @-+echo $(EMQ)#include $(EMQ)"$(SHL3ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL3DEFAULTRES:b).rc +.ENDIF # "$(SHL3ADD_VERINFO)"!="" + @-+echo MENU 1 BEGIN END >> $(MISC)/$(SHL3DEFAULTRES:b).rc +# @-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)/$(SHL3DEFAULTRES:b).rc +.ENDIF # "$(use_shl_versions)" != "" +# YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR) + $(COMMAND_ECHO)$(RC) -r -DOS2 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL3DEFAULTRES:b).rc +.ENDIF # "$(SHL3DEFAULTRES)"!="" + +.IF "$(SHL3ALLRES)"!="" + $(COMMAND_ECHO)+$(TYPE) $(SHL3ALLRES) > $(SHL3LINKRES) +.ENDIF # "$(SHL3ALLRES)"!="" + +.IF "$(USE_DEFFILE)"!="" + + $(COMMAND_ECHO)$(SHL3LINKER) $(SHL3LINKFLAGS) $(LINKFLAGSSHL) -o $@ \ + $(SHL3DEF) \ + $(STDOBJ) \ + -L$(LB) \ + -L$(SOLARVERSION)/$(INPATH)/lib \ + $(SHL3OBJS) $(SHL3VERSIONOBJ) \ + $(SHL3LIBS) \ + $(SHL3STDLIBS:^"-l") \ + $(SHL3LINKRES) \ + $(SHL3STDSHL:^"-l") $(STDSHL3:^"-l") + +.ELSE # "$(USE_DEFFILE)"!="" + + $(COMMAND_ECHO)$(SHL3LINKER) -v $(SHL3LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL3BASEX) \ + $(SHL3STACK) -o $(SHL3TARGETN) \ + $(SHL3DEF) \ + $(STDOBJ) \ + -L$(LB) \ + -L$(SOLARVERSION)/$(INPATH)/lib \ + $(SHL3OBJS) $(SHL3VERSIONOBJ) \ + $(SHL3LIBS) \ + $(SHL3STDLIBS:^"-l") \ + $(SHL3LINKRES) \ + $(SHL3STDSHL:^"-l") $(STDSHL3:^"-l") \ + $(LINKOUTPUTFILTER) + @$(LS) $@ >& $(NULLDEV) + +.ENDIF # "$(USE_DEFFILE)"!="" + +.IF "$(SHL3TARGET8)" != "$(SHL3TARGET)" + $(COMMAND_ECHO)+$(COPY) $@ $(@:d)$(SHL3TARGET8).dll +.ENDIF + +.ENDIF # "$(GUI)" == "OS2" + +.ENDIF # "$(SHL3TARGETN)"!="" + +# unroll begin + +.IF "$(SHL4TARGETN)"!="" + +.IF "$(OS)"=="AIX" +SHL4STDLIBS= +.ENDIF + +.IF "$(SHLLINKARCONLY)" != "" +SHL4STDLIBS= +STDSHL= +.ELSE +SHL4ARCHIVES= +.ENDIF + +# decide how to link +.IF "$(SHL4CODETYPE)"=="C" +SHL4LINKER=$(LINKC) +SHL4STDSHL=$(subst,CPPRUNTIME, $(STDSHL)) +SHL4LINKFLAGS+=$(LINKCFLAGS) +.ELSE # "$(SHL4CODETYPE)"=="C" +SHL4LINKER=$(LINK) +SHL4STDSHL=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDSHL)) +SHL4LINKFLAGS+=$(LINKFLAGS) +.ENDIF # "$(SHL4CODETYPE)"=="C" + +SHL4RPATH*=OOO +LINKFLAGSRUNPATH_$(SHL4RPATH)*=/ERROR:/Bad_SHL4RPATH_value +SHL4LINKFLAGS+=$(LINKFLAGSRUNPATH_$(SHL4RPATH)) + +.IF "$(SHL4USE_EXPORTS)"=="" +SHL4DEF*=$(MISC)/$(SHL4TARGET).def +.ENDIF # "$(SHL4USE_EXPORTS)"=="" + +EXTRALIBPATHS4=$(EXTRALIBPATHS) +.IF "$(UPDATER)"=="YES" +.IF "$(SHL4NOCHECK)"=="" +.IF "$(SOLAR_STLLIBPATH)"!="" +EXTRALIBPATHS4+=-L$(SOLAR_STLLIBPATH) +.ENDIF +.ENDIF # "$(SHL4NOCHECK)"!="" +.ENDIF +#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +#+++++++++++ version object ++++++++++++++++++++++++++++++++++++++++ +#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +.IF "$(L10N_framework)"=="" +.IF "$(VERSIONOBJ)"!="" +SHL4VERSIONOBJ:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL4TARGET))}$(VERSIONOBJ:f) +USE_VERSIONH:=$(INCCOM)/$(SHL4VERSIONOBJ:b).h +.IF "$(GUI)" == "UNX" +SHL4VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL4TARGET))}$(VERSIONOBJ:f:s/.o/.obj/) +.ELSE # "$(GUI)" == "UNX" +SHL4VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL4TARGET))}$(VERSIONOBJ:f) +.ENDIF # "$(GUI)" == "UNX" +$(MISC)/$(SHL4VERSIONOBJ:b).c : $(SOLARENV)/src/version.c $(INCCOM)/$(SHL4VERSIONOBJ:b).h +# $(COPY) $(SOLARENV)/src/version.c $@ + $(COMMAND_ECHO)$(TYPE) $(SOLARENV)/src/version.c | $(SED) s/_version.h/$(SHL4VERSIONOBJ:b).h/ > $@ + +.INIT : $(SHL4VERSIONOBJDEP) +.ENDIF # "$(VERSIONOBJ)"!="" +.ENDIF + +.IF "$(GUI)" != "UNX" +.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2" +.IF "$(SHL4IMPLIB)" == "" +SHL4IMPLIB=i$(TARGET)_t4 +.ENDIF # "$(SHL4IMPLIB)" == "" +.IF "$(COM)" != "GCC" +USE_4IMPLIB=-implib:$(LB)/$(SHL4IMPLIB).lib +.ENDIF # "$(COM)" != "GCC" +SHL4IMPLIBN=$(LB)/$(SHL4IMPLIB).lib +ALLTAR : $(SHL4IMPLIBN) + +.IF "$(USE_DEFFILE)"=="" +USE_4IMPLIB_DEPS=$(LB)/$(SHL4IMPLIB).lib +.ENDIF # "$(USE_DEFFILE)"=="" +.ENDIF # "$(GUI)" == "WNT" || "$(GUI)" == "OS2" +USE_SHL4DEF=$(SHL4DEF) +.ELSE # "$(GUI)" != "UNX" +USE_SHL4DEF= +SHL4DEPN+:=$(SHL4DEPNU) + +.IF "$(SHL4VERSIONMAP)"=="" +# to activate vmaps remove "#" +USE_SHL4VERSIONMAP=$(MISC)/$(SHL4TARGET).vmap +.ENDIF # "$(SHL4VERSIONMAP)"=="" + +.IF "$(USE_SHL4VERSIONMAP)"!="" + +.IF "$(SHL4FILTERFILE)"!="" +.IF "$(SHL4VERSIONMAP)"!="" +#eine von beiden ist zuviel +USE_SHL4VERSIONMAP=$(MISC)/$(SHL4TARGET).vmap +$(USE_SHL4VERSIONMAP) .PHONY: + @echo ----------------------------- + @echo you should only use versionmap OR exportfile + @echo ----------------------------- +# force_dmake_to_error + +.ENDIF # "$(SHL4VERSIONMAP)"!="" + +SHL4VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL4VERSIONMAP) + +$(USE_SHL4VERSIONMAP): \ + $(SHL4OBJS)\ + $(SHL4LIBS)\ + $(SHL4FILTERFILE) + @$(RM) $@.dump +.IF "$(SHL4OBJS)"!="" +# dump remaining objects on the fly +.IF "$(OS)"=="MACOSX" + @-nm $(SHL4OBJS:s/.obj/.o/) > $@.dump +.ELSE + @nm $(SHL4OBJS:s/.obj/.o/) > $@.dump +.ENDIF +.ENDIF # "$(SHL4OBJS)!"="" + @$(TYPE) /dev/null $(SHL4LIBS:s/.lib/.dump/) >> $@.dump + $(COMMAND_ECHO) $(PERL) $(SOLARENV)/bin/mapgen.pl -d $@.dump -s $(SHL4INTERFACE) -f $(SHL4FILTERFILE) -m $@ + +.ELSE # "$(SHL4FILTERFILE)"!="" +USE_SHL4VERSIONMAP=$(MISC)/$(SHL4TARGET).vmap +$(USE_SHL4VERSIONMAP) : +.IF "$(VERBOSE)" == "TRUE" + @echo ----------------------------- + @echo SHL4FILTERFILE not set! + @echo ----------------------------- + @$(TOUCH) $@ + @echo dummy file to keep the dependencies for later use. +.ELSE + @$(TOUCH) $@ +.ENDIF +# force_dmake_to_error +.ENDIF # "$(SHL4FILTERFILE)"!="" +.ELSE # "$(USE_SHL4VERSIONMAP)"!="" + +#and now for the plain non-generic way... +.IF "$(SHL4VERSIONMAP)"!="" +USE_SHL4VERSIONMAP=$(MISC)/$(SHL4VERSIONMAP:b)_$(SHL4TARGET)$(SHL4VERSIONMAP:e) +SHL4VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL4VERSIONMAP) + +.IF "$(OS)"=="MACOSX" +$(USE_SHL4VERSIONMAP): $(SHL4OBJS) $(SHL4LIBS) +.ENDIF + +# .ERRREMOVE is needed as a recipe line like "$(AWK) ... > $@" would create $@ +# even if the $(AWK) part fails: +$(USE_SHL4VERSIONMAP) .ERRREMOVE: $(SHL4VERSIONMAP) + @@-$(RM) -f $@ +# The following files will only be generated and needed on Mac OS X as temporary files +# in order to generate exported symbols list out of Linux/Solaris map files +.IF "$(OS)"=="MACOSX" + @-$(RM) -f $@.symregexp >& $(NULLDEV) + @-$(RM) -f $@.expsymlist >& $(NULLDEV) +.ENDIF +# Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what +# happens if somebody will change it in the future +.IF "$(COMID)"=="gcc3" + $(COMMAND_ECHO) tr -d "\015" < $(SHL4VERSIONMAP) | $(AWK) -f $(SOLARENV)/bin/addsym.awk > $@ +.ELIF "$(COMNAME)"=="sunpro5" + $(COMMAND_ECHO) tr -d "\015" < $(SHL4VERSIONMAP) | $(GREP) -v $(IGNORE_SYMBOLS) > $@ +.ELSE # "$(COMID)"=="gcc3" + $(COMMAND_ECHO) tr -d "\015" < $(SHL4VERSIONMAP) > $@ +.ENDIF # "$(COMID)"=="gcc3" + @chmod a+w $@ +# Mac OS X post-processing generate an exported symbols list from the generated map file +# for details on exported symbols list see man ld on Mac OS X +.IF "$(OS)"=="MACOSX" + @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep -v "\*\|?" > $@.exported-symbols + @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep "\*\|?" > $@.symbols-regexp +# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS +# Extract RTTI symbols from all the objects that will be used to build a shared library +.IF "$(SHL4OBJS)"!="" + -echo $(foreach,i,$(SHL4OBJS:s/.obj/.o/) $i) | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols +.ENDIF +.IF "$(SHL4LIBS)"!="" + $(COMMAND_ECHO)-$(TYPE) $(foreach,j,$(SHL4LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols +.ENDIF +# overwrite the map file generate into the local output tree with the generated +# exported symbols list + cp $@.exported-symbols $@ +.ENDIF # .IF "$(OS)"=="MACOSX" +.ENDIF # "$(SHL4VERSIONMAP)"!="" +.ENDIF # "$(USE_SHL4VERSIONMAP)"!="" +.ENDIF # "$(GUI)" != "UNX" + +.IF "$(UNIXVERSIONNAMES)"!="" +.IF "$(OS)"!="MACOSX" +.IF "$(GUI)"=="UNX" +SHL4SONAME=\"$(SONAME_SWITCH)$(SHL4TARGETN:f)\" +.ENDIF # "$(GUI)"!="UNX" +.ENDIF # "$(OS)"!="MACOSX" +.ENDIF # "$(UNIXVERSIONNAMES)"!="" + +.IF "$(SHL4RES)"!="" +SHL4ALLRES+=$(SHL4RES) +SHL4LINKRES*=$(MISC)/$(SHL4TARGET).res +SHL4LINKRESO*=$(MISC)/$(SHL4TARGET)_res.o +.ENDIF # "$(SHL4RES)"!="" + +.IF "$(SHL4DEFAULTRES)$(use_shl_versions)"!="" +SHL4DEFAULTRES*=$(MISC)/$(SHL4TARGET)_def.res +SHL4ALLRES+=$(SHL4DEFAULTRES) +SHL4LINKRES*=$(MISC)/$(SHL4TARGET).res +SHL4LINKRESO*=$(MISC)/$(SHL4TARGET)_res.o +.ENDIF # "$(SHL4DEFAULTRES)$(use_shl_versions)"!="" + +#.IF "$(SHL4TARGETN)"!="" + +.IF "$(linkinc)"!="" +.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2" +.IF "$(SHL4LIBS)"!="" +$(MISC)/$(SHL4TARGET)_linkinc.ls .PHONY: + @@-$(RM) $@ + $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL4LIBS) $(i:s/.lib/.lin/)) >> $@ +.ENDIF # "$(SHL4LIBS)"!="" +.ENDIF + +LINKINCTARGETS+=$(MISC)/$(SHL4TARGETN:b)_linkinc.ls +$(SHL4TARGETN) : $(LINKINCTARGETS) + +.ELSE +.IF "$(SHL4USE_EXPORTS)"=="name" +.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2" +.IF "$(COM)"!="GCC" +.IF "$(SHL4LIBS)"!="" +SHL4LINKLIST=$(MISC)/$(SHL4TARGET)_link.lst +SHL4LINKLISTPARAM=@$(SHL4LINKLIST) +$(SHL4LINKLIST) : $(SHL4LIBS) + @@-$(RM) $@ + $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL4LIBS) $(i:s/.lib/.lin/)) >> $@ +.ENDIF # "$(SHL4LIBS)"!="" +.ENDIF # "$(COM)"!="GCC" +.ENDIF +.ENDIF # "$(SHL4USE_EXPORTS)"=="name" + +$(MISC)/%linkinc.ls: + @echo . > $@ +.ENDIF # "$(linkinc)"!="" + +.IF "$(GUI)" == "OS2" +#21/02/2006 YD dll names must be 8.3, invoke fix script +#check osl/os2/module.c/osl_loadModule() +SHL4TARGET8=$(shell @fix_shl $(SHL4TARGET)) +.ENDIF + +.IF "$(GUI)" == "OS2" +_SHL4IMP_ORD = $(SHL4STDLIBS:^"$(SOLARVERSION)/$(INPATH)/lib/") $(SHL4STDLIBS:^"$(LB)/") +SHL4IMP_ORD = $(foreach,i,$(_SHL4IMP_ORD) $(shell @-ls $i)) +.ELSE +SHL4IMP_ORD = +.ENDIF + + +$(SHL4TARGETN) : \ + $(SHL4OBJS)\ + $(SHL4LIBS)\ + $(USE_4IMPLIB_DEPS)\ + $(USE_SHL4DEF)\ + $(USE_SHL4VERSIONMAP)\ + $(SHL4RES)\ + $(SHL4DEPN) \ + $(SHL4IMP_ORD) \ + $(SHL4LINKLIST) + @echo "Making: " $(@:f) +.IF "$(GUI)" == "WNT" +.IF "$(SHL4DEFAULTRES)"!="" + @@-$(RM) $(MISC)/$(SHL4DEFAULTRES:b).rc +.IF "$(SHL4ICON)" != "" + @echo 1 ICON $(SHL4ICON) >> $(MISC)/$(SHL4DEFAULTRES:b).rc +.ENDIF +.IF "$(use_shl_versions)" != "" +.IF "$(SHL4ADD_VERINFO)"!="" + @echo $(EMQ)#include $(EMQ)"$(SHL4ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL4DEFAULTRES:b).rc +.ELSE # "$(SHL4ADD_VERINFO)"!="" + @echo $(EMQ)#define ADDITIONAL_VERINFO1 >> $(MISC)/$(SHL4DEFAULTRES:b).rc + @echo $(EMQ)#define ADDITIONAL_VERINFO2 >> $(MISC)/$(SHL4DEFAULTRES:b).rc + @echo $(EMQ)#define ADDITIONAL_VERINFO3 >> $(MISC)/$(SHL4DEFAULTRES:b).rc +.ENDIF # "$(SHL4ADD_VERINFO)"!="" + @echo $(EMQ)#define VERVARIANT $(BUILD) >> $(MISC)/$(SHL4DEFAULTRES:b).rc + @echo $(EMQ)#define ORG_NAME $(SHL4TARGET)$(DLLPOST) >> $(MISC)/$(SHL4DEFAULTRES:b).rc + @echo $(EMQ)#define INTERNAL_NAME $(SHL4TARGET:b) >> $(MISC)/$(SHL4DEFAULTRES:b).rc + @echo $(EMQ)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)/$(SHL4DEFAULTRES:b).rc +.ENDIF # "$(use_shl_versions)" != "" + $(COMMAND_ECHO)$(RC) -DWIN32 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL4DEFAULTRES:b).rc +.ENDIF # "$(SHL4DEFAULTRES)"!="" +.IF "$(SHL4ALLRES)"!="" + $(COMMAND_ECHO)$(TYPE) $(SHL4ALLRES) > $(SHL4LINKRES) +.IF "$(COM)"=="GCC" + windres $(SHL4LINKRES) $(SHL4LINKRESO) +.ENDIF # "$(COM)"=="GCC" +.ENDIF # "$(SHL4ALLRES)"!="" +.IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def + @echo dlltool --dllname $(SHL4TARGET)$(DLLPOST) \ + --kill-at \\ > $(MISC)/$(TARGET).$(@:b)_4.cmd + @noop $(assign ALL4OBJLIST:=$(STDOBJ) $(SHL4OBJS) $(SHL4LINKRESO) $(shell $(TYPE) /dev/null $(SHL4LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g)) +.IF "$(DEFLIB4NAME)"!="" # do not have to include objs + @noop $(assign DEF4OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB4NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g)) + @noop $(foreach,i,$(DEF4OBJLIST) $(assign ALL4OBJLIST:=$(ALL4OBJLIST:s?$i??))) +.ENDIF # "$(DEFLIB4NAME)"!="" + @echo --output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_4.cmd +.IF "$(SHL4DEF)"!="" + @echo --input-def $(SHL4DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_4.cmd +.ELSE + @echo $(SHL4VERSIONOBJ) $(SHL4DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_4.cmd +.ENDIF + @echo $(ALL4OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_4.cmd + @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \ + $(STDOBJ) $(SHL4VERSIONOBJ) $(SHL4DESCRIPTIONOBJ) $(SHL4OBJS) $(SHL4LINKRESO) \ + `$(TYPE) /dev/null $(SHL4LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \ + -Wl,--exclude-libs,ALL,--start-group $(SHL4STDLIBS) -Wl,--end-group \ + $(SHL4STDSHL) $(STDSHL4) $(MISC)/$(@:b)_exp.o $(MINGWSSTDENDOBJ) \ + -Wl,-Map,$(MISC)/$(@:b).map >> $(MISC)/$(TARGET).$(@:b)_4.cmd + .IF "$(VERBOSE)" == "TRUE" + @$(TYPE) $(MISC)/$(TARGET).$(@:b)_4.cmd + .ENDIF + @+source $(MISC)/$(TARGET).$(@:b)_4.cmd +.ELSE +.IF "$(linkinc)"=="" +.IF "$(SHL4USE_EXPORTS)"!="name" +.IF "$(USE_DEFFILE)"!="" + $(COMMAND_ECHO)$(SHL4LINKER) @$(mktmp \ + $(SHL4LINKFLAGS) \ + $(LINKFLAGSSHL) \ + $(SHL4STACK) $(SHL4BASEX) \ + -out:$@ \ + -map:$(MISC)/$(@:b).map \ + -def:$(SHL4DEF) \ + $(USE_4IMPLIB) \ + $(STDOBJ) \ + $(SHL4VERSIONOBJ) $(SHL4OBJS) \ + $(SHL4LIBS) \ + $(SHL4STDLIBS) \ + $(SHL4STDSHL) $(STDSHL4) \ + $(SHL4LINKRES) \ + ) $(LINKOUTPUTFILTER) +# double check if target was really written... still making sense? + @@$(LS) $@ + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ELSE # "$(USE_DEFFILE)"!="" + $(COMMAND_ECHO)$(SHL4LINKER) @$(mktmp $(SHL4LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL4BASEX) \ + $(SHL4STACK) -out:$(SHL4TARGETN) \ + -map:$(MISC)/$(@:B).map \ + $(LB)/$(SHL4IMPLIB).exp \ + $(STDOBJ) \ + $(SHL4OBJS) $(SHL4VERSIONOBJ) \ + $(SHL4LIBS) \ + $(SHL4STDLIBS) \ + $(SHL4STDSHL) $(STDSHL4) \ + $(SHL4LINKRES) \ + ) $(LINKOUTPUTFILTER) +# double check if target was really written... still making sense? + @@$(LS) $@ + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ENDIF # "$(USE_DEFFILE)"!="" +.ELSE # "$(SHL4USE_EXPORTS)"!="name" + $(COMMAND_ECHO)$(SHL4LINKER) @$(mktmp $(SHL4LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL4BASEX) \ + $(SHL4STACK) -out:$(SHL4TARGETN) \ + -map:$(MISC)/$(@:B).map \ + $(USE_4IMPLIB) \ + $(STDOBJ) \ + $(SHL4OBJS) $(SHL4VERSIONOBJ)) \ + $(SHL4LINKLISTPARAM) \ + @$(mktmp $(SHL4STDLIBS) \ + $(SHL4STDSHL) $(STDSHL4) \ + $(SHL4LINKRES) \ + ) + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ENDIF # "$(SHL4USE_EXPORTS)"!="name" +.ELSE # "$(linkinc)"=="" + $(COMMAND_ECHO)-$(RM) del $(MISC)/$(SHL4TARGET).lnk + $(COMMAND_ECHO)-$(RM) $(MISC)/$(SHL4TARGET).lst + $(COMMAND_ECHO)$(TYPE) $(mktmp \ + $(SHL4LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL4BASEX) \ + $(SHL4STACK) $(MAPFILE) \ + -out:$@ \ + $(LB)/$(SHL4IMPLIB).exp \ + $(STDOBJ) \ + $(SHL4OBJS) \ + $(SHL4STDLIBS) \ + $(SHL4STDSHL) $(STDSHL4) \ + $(SHL4LINKRES) \ + ) >> $(MISC)/$(SHL4TARGET).lnk + $(COMMAND_ECHO)$(TYPE) $(MISC)/$(SHL4TARGETN:b)_linkinc.ls >> $(MISC)/$(SHL4TARGET).lnk + $(COMMAND_ECHO)$(SHL4LINKER) @$(MISC)/$(SHL4TARGET).lnk + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ENDIF # "$(linkinc)"=="" +.ENDIF # "$(COM)"=="GCC" +.ENDIF # "$(GUI)" == "WNT" +.IF "$(GUI)"=="UNX" +.IF "$(OS)"=="MACOSX" + @-$(RM) $(MISC)/$(@:b).list + @-$(RM) $(MISC)/$(TARGET).$(@:b)_4.cmd + @echo $(STDSLO) $(SHL4OBJS:s/.obj/.o/) \ + $(SHL4VERSIONOBJ) \ + `cat /dev/null $(SHL4LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list + @echo -n $(SHL4LINKER) $(SHL4LINKFLAGS) $(SHL4VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \ + $(SHL4STDLIBS) $(SHL4ARCHIVES) $(SHL4STDSHL) $(STDSHL4) -filelist $(MISC)/$(@:b).list $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_4.cmd + @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \ + `cat $(MISC)/$(TARGET).$(@:b)_4.cmd` \ + >> $(MISC)/$(TARGET).$(@:b)_4.cmd + .IF "$(VERBOSE)" == "TRUE" + @cat $(MISC)/$(TARGET).$(@:b)_4.cmd + .ENDIF + @+source $(MISC)/$(TARGET).$(@:b)_4.cmd + @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \ + shl $(SHL4RPATH) $@ +.IF "$(SHL4CREATEJNILIB)"!="" + @echo "Making: " $(@:f).jnilib + @macosx-create-bundle $@ +.ENDIF # "$(SHL4CREATEJNILIB)"!="" +.IF "$(UPDATER)"=="YES" +.IF "$(SHL4NOCHECK)"=="" + $(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS4) $(SHL4TARGETN) +.ENDIF # "$(SHL4NOCHECK)"!="" +.ENDIF +.ELSE # "$(OS)"=="MACOSX" + @-$(RM) $(MISC)/$(TARGET).$(@:b)_4.cmd + @echo $(SHL4LINKER) $(SHL4LINKFLAGS) $(SHL4SONAME) $(LINKFLAGSSHL) $(SHL4VERSIONMAPPARA) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) $(STDSLO) $(SHL4OBJS:s/.obj/.o/) \ + $(SHL4VERSIONOBJ) -o $@ \ + `cat /dev/null $(SHL4LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \ + $(SHL4STDLIBS) $(SHL4ARCHIVES) $(SHL4STDSHL) $(STDSHL4) $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_4.cmd + .IF "$(VERBOSE)" == "TRUE" + @cat $(MISC)/$(TARGET).$(@:b)_4.cmd + .ENDIF + @+source $(MISC)/$(TARGET).$(@:b)_4.cmd +.IF "$(UPDATER)"=="YES" +.IF "$(SHL4NOCHECK)"=="" + $(COMMAND_ECHO)-$(RM) $(SHL4TARGETN:d)check_$(SHL4TARGETN:f) + $(COMMAND_ECHO)$(RENAME) $(SHL4TARGETN) $(SHL4TARGETN:d)check_$(SHL4TARGETN:f) +.IF "$(VERBOSE)"=="TRUE" + $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS4) $(SHL4TARGETN:d)check_$(SHL4TARGETN:f) +.ELSE + $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS4) -- -s $(SHL4TARGETN:d)check_$(SHL4TARGETN:f) +.ENDIF +.ENDIF # "$(SHL4NOCHECK)"!="" +.ENDIF # "$(UPDATER)"=="YES" +.ENDIF # "$(OS)"=="MACOSX" +.IF "$(UNIXVERSIONNAMES)"!="" + $(COMMAND_ECHO)$(RM) $(LB)/$(SHL4TARGETN:b) + $(COMMAND_ECHO)cd $(LB) && ln -s $(SHL4TARGETN:f) $(SHL4TARGETN:b) +.ENDIF # "$(UNIXVERSIONNAMES)"!="" +.IF "$(VERBOSE)" == "TRUE" + @ls -l $@ +.ENDIF +.ENDIF # "$(GUI)" == "UNX" + +.IF "$(GUI)" == "OS2" + +.IF "$(SHL4DEFAULTRES)"!="" + @+-$(RM) $(MISC)/$(SHL4DEFAULTRES:b).rc >& $(NULLDEV) +.IF "$(SHL4ICON)" != "" + @-+echo 1 ICON $(SHL4ICON) >> $(MISC)/$(SHL4DEFAULTRES:b).rc +.ENDIF +.IF "$(use_shl_versions)" != "" +.IF "$(SHL4ADD_VERINFO)"!="" + @-+echo $(EMQ)#include $(EMQ)"$(SHL4ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL4DEFAULTRES:b).rc +.ENDIF # "$(SHL4ADD_VERINFO)"!="" + @-+echo MENU 1 BEGIN END >> $(MISC)/$(SHL4DEFAULTRES:b).rc +# @-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)/$(SHL4DEFAULTRES:b).rc +.ENDIF # "$(use_shl_versions)" != "" +# YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR) + $(COMMAND_ECHO)$(RC) -r -DOS2 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL4DEFAULTRES:b).rc +.ENDIF # "$(SHL4DEFAULTRES)"!="" + +.IF "$(SHL4ALLRES)"!="" + $(COMMAND_ECHO)+$(TYPE) $(SHL4ALLRES) > $(SHL4LINKRES) +.ENDIF # "$(SHL4ALLRES)"!="" + +.IF "$(USE_DEFFILE)"!="" + + $(COMMAND_ECHO)$(SHL4LINKER) $(SHL4LINKFLAGS) $(LINKFLAGSSHL) -o $@ \ + $(SHL4DEF) \ + $(STDOBJ) \ + -L$(LB) \ + -L$(SOLARVERSION)/$(INPATH)/lib \ + $(SHL4OBJS) $(SHL4VERSIONOBJ) \ + $(SHL4LIBS) \ + $(SHL4STDLIBS:^"-l") \ + $(SHL4LINKRES) \ + $(SHL4STDSHL:^"-l") $(STDSHL4:^"-l") + +.ELSE # "$(USE_DEFFILE)"!="" + + $(COMMAND_ECHO)$(SHL4LINKER) -v $(SHL4LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL4BASEX) \ + $(SHL4STACK) -o $(SHL4TARGETN) \ + $(SHL4DEF) \ + $(STDOBJ) \ + -L$(LB) \ + -L$(SOLARVERSION)/$(INPATH)/lib \ + $(SHL4OBJS) $(SHL4VERSIONOBJ) \ + $(SHL4LIBS) \ + $(SHL4STDLIBS:^"-l") \ + $(SHL4LINKRES) \ + $(SHL4STDSHL:^"-l") $(STDSHL4:^"-l") \ + $(LINKOUTPUTFILTER) + @$(LS) $@ >& $(NULLDEV) + +.ENDIF # "$(USE_DEFFILE)"!="" + +.IF "$(SHL4TARGET8)" != "$(SHL4TARGET)" + $(COMMAND_ECHO)+$(COPY) $@ $(@:d)$(SHL4TARGET8).dll +.ENDIF + +.ENDIF # "$(GUI)" == "OS2" + +.ENDIF # "$(SHL4TARGETN)"!="" + +# unroll begin + +.IF "$(SHL5TARGETN)"!="" + +.IF "$(OS)"=="AIX" +SHL5STDLIBS= +.ENDIF + +.IF "$(SHLLINKARCONLY)" != "" +SHL5STDLIBS= +STDSHL= +.ELSE +SHL5ARCHIVES= +.ENDIF + +# decide how to link +.IF "$(SHL5CODETYPE)"=="C" +SHL5LINKER=$(LINKC) +SHL5STDSHL=$(subst,CPPRUNTIME, $(STDSHL)) +SHL5LINKFLAGS+=$(LINKCFLAGS) +.ELSE # "$(SHL5CODETYPE)"=="C" +SHL5LINKER=$(LINK) +SHL5STDSHL=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDSHL)) +SHL5LINKFLAGS+=$(LINKFLAGS) +.ENDIF # "$(SHL5CODETYPE)"=="C" + +SHL5RPATH*=OOO +LINKFLAGSRUNPATH_$(SHL5RPATH)*=/ERROR:/Bad_SHL5RPATH_value +SHL5LINKFLAGS+=$(LINKFLAGSRUNPATH_$(SHL5RPATH)) + +.IF "$(SHL5USE_EXPORTS)"=="" +SHL5DEF*=$(MISC)/$(SHL5TARGET).def +.ENDIF # "$(SHL5USE_EXPORTS)"=="" + +EXTRALIBPATHS5=$(EXTRALIBPATHS) +.IF "$(UPDATER)"=="YES" +.IF "$(SHL5NOCHECK)"=="" +.IF "$(SOLAR_STLLIBPATH)"!="" +EXTRALIBPATHS5+=-L$(SOLAR_STLLIBPATH) +.ENDIF +.ENDIF # "$(SHL5NOCHECK)"!="" +.ENDIF +#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +#+++++++++++ version object ++++++++++++++++++++++++++++++++++++++++ +#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +.IF "$(L10N_framework)"=="" +.IF "$(VERSIONOBJ)"!="" +SHL5VERSIONOBJ:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL5TARGET))}$(VERSIONOBJ:f) +USE_VERSIONH:=$(INCCOM)/$(SHL5VERSIONOBJ:b).h +.IF "$(GUI)" == "UNX" +SHL5VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL5TARGET))}$(VERSIONOBJ:f:s/.o/.obj/) +.ELSE # "$(GUI)" == "UNX" +SHL5VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL5TARGET))}$(VERSIONOBJ:f) +.ENDIF # "$(GUI)" == "UNX" +$(MISC)/$(SHL5VERSIONOBJ:b).c : $(SOLARENV)/src/version.c $(INCCOM)/$(SHL5VERSIONOBJ:b).h +# $(COPY) $(SOLARENV)/src/version.c $@ + $(COMMAND_ECHO)$(TYPE) $(SOLARENV)/src/version.c | $(SED) s/_version.h/$(SHL5VERSIONOBJ:b).h/ > $@ + +.INIT : $(SHL5VERSIONOBJDEP) +.ENDIF # "$(VERSIONOBJ)"!="" +.ENDIF + +.IF "$(GUI)" != "UNX" +.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2" +.IF "$(SHL5IMPLIB)" == "" +SHL5IMPLIB=i$(TARGET)_t5 +.ENDIF # "$(SHL5IMPLIB)" == "" +.IF "$(COM)" != "GCC" +USE_5IMPLIB=-implib:$(LB)/$(SHL5IMPLIB).lib +.ENDIF # "$(COM)" != "GCC" +SHL5IMPLIBN=$(LB)/$(SHL5IMPLIB).lib +ALLTAR : $(SHL5IMPLIBN) + +.IF "$(USE_DEFFILE)"=="" +USE_5IMPLIB_DEPS=$(LB)/$(SHL5IMPLIB).lib +.ENDIF # "$(USE_DEFFILE)"=="" +.ENDIF # "$(GUI)" == "WNT" || "$(GUI)" == "OS2" +USE_SHL5DEF=$(SHL5DEF) +.ELSE # "$(GUI)" != "UNX" +USE_SHL5DEF= +SHL5DEPN+:=$(SHL5DEPNU) + +.IF "$(SHL5VERSIONMAP)"=="" +# to activate vmaps remove "#" +USE_SHL5VERSIONMAP=$(MISC)/$(SHL5TARGET).vmap +.ENDIF # "$(SHL5VERSIONMAP)"=="" + +.IF "$(USE_SHL5VERSIONMAP)"!="" + +.IF "$(SHL5FILTERFILE)"!="" +.IF "$(SHL5VERSIONMAP)"!="" +#eine von beiden ist zuviel +USE_SHL5VERSIONMAP=$(MISC)/$(SHL5TARGET).vmap +$(USE_SHL5VERSIONMAP) .PHONY: + @echo ----------------------------- + @echo you should only use versionmap OR exportfile + @echo ----------------------------- +# force_dmake_to_error + +.ENDIF # "$(SHL5VERSIONMAP)"!="" + +SHL5VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL5VERSIONMAP) + +$(USE_SHL5VERSIONMAP): \ + $(SHL5OBJS)\ + $(SHL5LIBS)\ + $(SHL5FILTERFILE) + @$(RM) $@.dump +.IF "$(SHL5OBJS)"!="" +# dump remaining objects on the fly +.IF "$(OS)"=="MACOSX" + @-nm $(SHL5OBJS:s/.obj/.o/) > $@.dump +.ELSE + @nm $(SHL5OBJS:s/.obj/.o/) > $@.dump +.ENDIF +.ENDIF # "$(SHL5OBJS)!"="" + @$(TYPE) /dev/null $(SHL5LIBS:s/.lib/.dump/) >> $@.dump + $(COMMAND_ECHO) $(PERL) $(SOLARENV)/bin/mapgen.pl -d $@.dump -s $(SHL5INTERFACE) -f $(SHL5FILTERFILE) -m $@ + +.ELSE # "$(SHL5FILTERFILE)"!="" +USE_SHL5VERSIONMAP=$(MISC)/$(SHL5TARGET).vmap +$(USE_SHL5VERSIONMAP) : +.IF "$(VERBOSE)" == "TRUE" + @echo ----------------------------- + @echo SHL5FILTERFILE not set! + @echo ----------------------------- + @$(TOUCH) $@ + @echo dummy file to keep the dependencies for later use. +.ELSE + @$(TOUCH) $@ +.ENDIF +# force_dmake_to_error +.ENDIF # "$(SHL5FILTERFILE)"!="" +.ELSE # "$(USE_SHL5VERSIONMAP)"!="" + +#and now for the plain non-generic way... +.IF "$(SHL5VERSIONMAP)"!="" +USE_SHL5VERSIONMAP=$(MISC)/$(SHL5VERSIONMAP:b)_$(SHL5TARGET)$(SHL5VERSIONMAP:e) +SHL5VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL5VERSIONMAP) + +.IF "$(OS)"=="MACOSX" +$(USE_SHL5VERSIONMAP): $(SHL5OBJS) $(SHL5LIBS) +.ENDIF + +# .ERRREMOVE is needed as a recipe line like "$(AWK) ... > $@" would create $@ +# even if the $(AWK) part fails: +$(USE_SHL5VERSIONMAP) .ERRREMOVE: $(SHL5VERSIONMAP) + @@-$(RM) -f $@ +# The following files will only be generated and needed on Mac OS X as temporary files +# in order to generate exported symbols list out of Linux/Solaris map files +.IF "$(OS)"=="MACOSX" + @-$(RM) -f $@.symregexp >& $(NULLDEV) + @-$(RM) -f $@.expsymlist >& $(NULLDEV) +.ENDIF +# Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what +# happens if somebody will change it in the future +.IF "$(COMID)"=="gcc3" + $(COMMAND_ECHO) tr -d "\015" < $(SHL5VERSIONMAP) | $(AWK) -f $(SOLARENV)/bin/addsym.awk > $@ +.ELIF "$(COMNAME)"=="sunpro5" + $(COMMAND_ECHO) tr -d "\015" < $(SHL5VERSIONMAP) | $(GREP) -v $(IGNORE_SYMBOLS) > $@ +.ELSE # "$(COMID)"=="gcc3" + $(COMMAND_ECHO) tr -d "\015" < $(SHL5VERSIONMAP) > $@ +.ENDIF # "$(COMID)"=="gcc3" + @chmod a+w $@ +# Mac OS X post-processing generate an exported symbols list from the generated map file +# for details on exported symbols list see man ld on Mac OS X +.IF "$(OS)"=="MACOSX" + @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep -v "\*\|?" > $@.exported-symbols + @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep "\*\|?" > $@.symbols-regexp +# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS +# Extract RTTI symbols from all the objects that will be used to build a shared library +.IF "$(SHL5OBJS)"!="" + -echo $(foreach,i,$(SHL5OBJS:s/.obj/.o/) $i) | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols +.ENDIF +.IF "$(SHL5LIBS)"!="" + $(COMMAND_ECHO)-$(TYPE) $(foreach,j,$(SHL5LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols +.ENDIF +# overwrite the map file generate into the local output tree with the generated +# exported symbols list + cp $@.exported-symbols $@ +.ENDIF # .IF "$(OS)"=="MACOSX" +.ENDIF # "$(SHL5VERSIONMAP)"!="" +.ENDIF # "$(USE_SHL5VERSIONMAP)"!="" +.ENDIF # "$(GUI)" != "UNX" + +.IF "$(UNIXVERSIONNAMES)"!="" +.IF "$(OS)"!="MACOSX" +.IF "$(GUI)"=="UNX" +SHL5SONAME=\"$(SONAME_SWITCH)$(SHL5TARGETN:f)\" +.ENDIF # "$(GUI)"!="UNX" +.ENDIF # "$(OS)"!="MACOSX" +.ENDIF # "$(UNIXVERSIONNAMES)"!="" + +.IF "$(SHL5RES)"!="" +SHL5ALLRES+=$(SHL5RES) +SHL5LINKRES*=$(MISC)/$(SHL5TARGET).res +SHL5LINKRESO*=$(MISC)/$(SHL5TARGET)_res.o +.ENDIF # "$(SHL5RES)"!="" + +.IF "$(SHL5DEFAULTRES)$(use_shl_versions)"!="" +SHL5DEFAULTRES*=$(MISC)/$(SHL5TARGET)_def.res +SHL5ALLRES+=$(SHL5DEFAULTRES) +SHL5LINKRES*=$(MISC)/$(SHL5TARGET).res +SHL5LINKRESO*=$(MISC)/$(SHL5TARGET)_res.o +.ENDIF # "$(SHL5DEFAULTRES)$(use_shl_versions)"!="" + +#.IF "$(SHL5TARGETN)"!="" + +.IF "$(linkinc)"!="" +.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2" +.IF "$(SHL5LIBS)"!="" +$(MISC)/$(SHL5TARGET)_linkinc.ls .PHONY: + @@-$(RM) $@ + $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL5LIBS) $(i:s/.lib/.lin/)) >> $@ +.ENDIF # "$(SHL5LIBS)"!="" +.ENDIF + +LINKINCTARGETS+=$(MISC)/$(SHL5TARGETN:b)_linkinc.ls +$(SHL5TARGETN) : $(LINKINCTARGETS) + +.ELSE +.IF "$(SHL5USE_EXPORTS)"=="name" +.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2" +.IF "$(COM)"!="GCC" +.IF "$(SHL5LIBS)"!="" +SHL5LINKLIST=$(MISC)/$(SHL5TARGET)_link.lst +SHL5LINKLISTPARAM=@$(SHL5LINKLIST) +$(SHL5LINKLIST) : $(SHL5LIBS) + @@-$(RM) $@ + $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL5LIBS) $(i:s/.lib/.lin/)) >> $@ +.ENDIF # "$(SHL5LIBS)"!="" +.ENDIF # "$(COM)"!="GCC" +.ENDIF +.ENDIF # "$(SHL5USE_EXPORTS)"=="name" + +$(MISC)/%linkinc.ls: + @echo . > $@ +.ENDIF # "$(linkinc)"!="" + +.IF "$(GUI)" == "OS2" +#21/02/2006 YD dll names must be 8.3, invoke fix script +#check osl/os2/module.c/osl_loadModule() +SHL5TARGET8=$(shell @fix_shl $(SHL5TARGET)) +.ENDIF + +.IF "$(GUI)" == "OS2" +_SHL5IMP_ORD = $(SHL5STDLIBS:^"$(SOLARVERSION)/$(INPATH)/lib/") $(SHL5STDLIBS:^"$(LB)/") +SHL5IMP_ORD = $(foreach,i,$(_SHL5IMP_ORD) $(shell @-ls $i)) +.ELSE +SHL5IMP_ORD = +.ENDIF + + +$(SHL5TARGETN) : \ + $(SHL5OBJS)\ + $(SHL5LIBS)\ + $(USE_5IMPLIB_DEPS)\ + $(USE_SHL5DEF)\ + $(USE_SHL5VERSIONMAP)\ + $(SHL5RES)\ + $(SHL5DEPN) \ + $(SHL5IMP_ORD) \ + $(SHL5LINKLIST) + @echo "Making: " $(@:f) +.IF "$(GUI)" == "WNT" +.IF "$(SHL5DEFAULTRES)"!="" + @@-$(RM) $(MISC)/$(SHL5DEFAULTRES:b).rc +.IF "$(SHL5ICON)" != "" + @echo 1 ICON $(SHL5ICON) >> $(MISC)/$(SHL5DEFAULTRES:b).rc +.ENDIF +.IF "$(use_shl_versions)" != "" +.IF "$(SHL5ADD_VERINFO)"!="" + @echo $(EMQ)#include $(EMQ)"$(SHL5ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL5DEFAULTRES:b).rc +.ELSE # "$(SHL5ADD_VERINFO)"!="" + @echo $(EMQ)#define ADDITIONAL_VERINFO1 >> $(MISC)/$(SHL5DEFAULTRES:b).rc + @echo $(EMQ)#define ADDITIONAL_VERINFO2 >> $(MISC)/$(SHL5DEFAULTRES:b).rc + @echo $(EMQ)#define ADDITIONAL_VERINFO3 >> $(MISC)/$(SHL5DEFAULTRES:b).rc +.ENDIF # "$(SHL5ADD_VERINFO)"!="" + @echo $(EMQ)#define VERVARIANT $(BUILD) >> $(MISC)/$(SHL5DEFAULTRES:b).rc + @echo $(EMQ)#define ORG_NAME $(SHL5TARGET)$(DLLPOST) >> $(MISC)/$(SHL5DEFAULTRES:b).rc + @echo $(EMQ)#define INTERNAL_NAME $(SHL5TARGET:b) >> $(MISC)/$(SHL5DEFAULTRES:b).rc + @echo $(EMQ)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)/$(SHL5DEFAULTRES:b).rc +.ENDIF # "$(use_shl_versions)" != "" + $(COMMAND_ECHO)$(RC) -DWIN32 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL5DEFAULTRES:b).rc +.ENDIF # "$(SHL5DEFAULTRES)"!="" +.IF "$(SHL5ALLRES)"!="" + $(COMMAND_ECHO)$(TYPE) $(SHL5ALLRES) > $(SHL5LINKRES) +.IF "$(COM)"=="GCC" + windres $(SHL5LINKRES) $(SHL5LINKRESO) +.ENDIF # "$(COM)"=="GCC" +.ENDIF # "$(SHL5ALLRES)"!="" +.IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def + @echo dlltool --dllname $(SHL5TARGET)$(DLLPOST) \ + --kill-at \\ > $(MISC)/$(TARGET).$(@:b)_5.cmd + @noop $(assign ALL5OBJLIST:=$(STDOBJ) $(SHL5OBJS) $(SHL5LINKRESO) $(shell $(TYPE) /dev/null $(SHL5LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g)) +.IF "$(DEFLIB5NAME)"!="" # do not have to include objs + @noop $(assign DEF5OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB5NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g)) + @noop $(foreach,i,$(DEF5OBJLIST) $(assign ALL5OBJLIST:=$(ALL5OBJLIST:s?$i??))) +.ENDIF # "$(DEFLIB5NAME)"!="" + @echo --output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_5.cmd +.IF "$(SHL5DEF)"!="" + @echo --input-def $(SHL5DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_5.cmd +.ELSE + @echo $(SHL5VERSIONOBJ) $(SHL5DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_5.cmd +.ENDIF + @echo $(ALL5OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_5.cmd + @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \ + $(STDOBJ) $(SHL5VERSIONOBJ) $(SHL5DESCRIPTIONOBJ) $(SHL5OBJS) $(SHL5LINKRESO) \ + `$(TYPE) /dev/null $(SHL5LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \ + -Wl,--exclude-libs,ALL,--start-group $(SHL5STDLIBS) -Wl,--end-group \ + $(SHL5STDSHL) $(STDSHL5) $(MISC)/$(@:b)_exp.o $(MINGWSSTDENDOBJ) \ + -Wl,-Map,$(MISC)/$(@:b).map >> $(MISC)/$(TARGET).$(@:b)_5.cmd + .IF "$(VERBOSE)" == "TRUE" + @$(TYPE) $(MISC)/$(TARGET).$(@:b)_5.cmd + .ENDIF + @+source $(MISC)/$(TARGET).$(@:b)_5.cmd +.ELSE +.IF "$(linkinc)"=="" +.IF "$(SHL5USE_EXPORTS)"!="name" +.IF "$(USE_DEFFILE)"!="" + $(COMMAND_ECHO)$(SHL5LINKER) @$(mktmp \ + $(SHL5LINKFLAGS) \ + $(LINKFLAGSSHL) \ + $(SHL5STACK) $(SHL5BASEX) \ + -out:$@ \ + -map:$(MISC)/$(@:b).map \ + -def:$(SHL5DEF) \ + $(USE_5IMPLIB) \ + $(STDOBJ) \ + $(SHL5VERSIONOBJ) $(SHL5OBJS) \ + $(SHL5LIBS) \ + $(SHL5STDLIBS) \ + $(SHL5STDSHL) $(STDSHL5) \ + $(SHL5LINKRES) \ + ) $(LINKOUTPUTFILTER) +# double check if target was really written... still making sense? + @@$(LS) $@ + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ELSE # "$(USE_DEFFILE)"!="" + $(COMMAND_ECHO)$(SHL5LINKER) @$(mktmp $(SHL5LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL5BASEX) \ + $(SHL5STACK) -out:$(SHL5TARGETN) \ + -map:$(MISC)/$(@:B).map \ + $(LB)/$(SHL5IMPLIB).exp \ + $(STDOBJ) \ + $(SHL5OBJS) $(SHL5VERSIONOBJ) \ + $(SHL5LIBS) \ + $(SHL5STDLIBS) \ + $(SHL5STDSHL) $(STDSHL5) \ + $(SHL5LINKRES) \ + ) $(LINKOUTPUTFILTER) +# double check if target was really written... still making sense? + @@$(LS) $@ + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ENDIF # "$(USE_DEFFILE)"!="" +.ELSE # "$(SHL5USE_EXPORTS)"!="name" + $(COMMAND_ECHO)$(SHL5LINKER) @$(mktmp $(SHL5LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL5BASEX) \ + $(SHL5STACK) -out:$(SHL5TARGETN) \ + -map:$(MISC)/$(@:B).map \ + $(USE_5IMPLIB) \ + $(STDOBJ) \ + $(SHL5OBJS) $(SHL5VERSIONOBJ)) \ + $(SHL5LINKLISTPARAM) \ + @$(mktmp $(SHL5STDLIBS) \ + $(SHL5STDSHL) $(STDSHL5) \ + $(SHL5LINKRES) \ + ) + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ENDIF # "$(SHL5USE_EXPORTS)"!="name" +.ELSE # "$(linkinc)"=="" + $(COMMAND_ECHO)-$(RM) del $(MISC)/$(SHL5TARGET).lnk + $(COMMAND_ECHO)-$(RM) $(MISC)/$(SHL5TARGET).lst + $(COMMAND_ECHO)$(TYPE) $(mktmp \ + $(SHL5LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL5BASEX) \ + $(SHL5STACK) $(MAPFILE) \ + -out:$@ \ + $(LB)/$(SHL5IMPLIB).exp \ + $(STDOBJ) \ + $(SHL5OBJS) \ + $(SHL5STDLIBS) \ + $(SHL5STDSHL) $(STDSHL5) \ + $(SHL5LINKRES) \ + ) >> $(MISC)/$(SHL5TARGET).lnk + $(COMMAND_ECHO)$(TYPE) $(MISC)/$(SHL5TARGETN:b)_linkinc.ls >> $(MISC)/$(SHL5TARGET).lnk + $(COMMAND_ECHO)$(SHL5LINKER) @$(MISC)/$(SHL5TARGET).lnk + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ENDIF # "$(linkinc)"=="" +.ENDIF # "$(COM)"=="GCC" +.ENDIF # "$(GUI)" == "WNT" +.IF "$(GUI)"=="UNX" +.IF "$(OS)"=="MACOSX" + @-$(RM) $(MISC)/$(@:b).list + @-$(RM) $(MISC)/$(TARGET).$(@:b)_5.cmd + @echo $(STDSLO) $(SHL5OBJS:s/.obj/.o/) \ + $(SHL5VERSIONOBJ) \ + `cat /dev/null $(SHL5LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list + @echo -n $(SHL5LINKER) $(SHL5LINKFLAGS) $(SHL5VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \ + $(SHL5STDLIBS) $(SHL5ARCHIVES) $(SHL5STDSHL) $(STDSHL5) -filelist $(MISC)/$(@:b).list $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_5.cmd + @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \ + `cat $(MISC)/$(TARGET).$(@:b)_5.cmd` \ + >> $(MISC)/$(TARGET).$(@:b)_5.cmd + .IF "$(VERBOSE)" == "TRUE" + @cat $(MISC)/$(TARGET).$(@:b)_5.cmd + .ENDIF + @+source $(MISC)/$(TARGET).$(@:b)_5.cmd + @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \ + shl $(SHL5RPATH) $@ +.IF "$(SHL5CREATEJNILIB)"!="" + @echo "Making: " $(@:f).jnilib + @macosx-create-bundle $@ +.ENDIF # "$(SHL5CREATEJNILIB)"!="" +.IF "$(UPDATER)"=="YES" +.IF "$(SHL5NOCHECK)"=="" + $(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS5) $(SHL5TARGETN) +.ENDIF # "$(SHL5NOCHECK)"!="" +.ENDIF +.ELSE # "$(OS)"=="MACOSX" + @-$(RM) $(MISC)/$(TARGET).$(@:b)_5.cmd + @echo $(SHL5LINKER) $(SHL5LINKFLAGS) $(SHL5SONAME) $(LINKFLAGSSHL) $(SHL5VERSIONMAPPARA) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) $(STDSLO) $(SHL5OBJS:s/.obj/.o/) \ + $(SHL5VERSIONOBJ) -o $@ \ + `cat /dev/null $(SHL5LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \ + $(SHL5STDLIBS) $(SHL5ARCHIVES) $(SHL5STDSHL) $(STDSHL5) $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_5.cmd + .IF "$(VERBOSE)" == "TRUE" + @cat $(MISC)/$(TARGET).$(@:b)_5.cmd + .ENDIF + @+source $(MISC)/$(TARGET).$(@:b)_5.cmd +.IF "$(UPDATER)"=="YES" +.IF "$(SHL5NOCHECK)"=="" + $(COMMAND_ECHO)-$(RM) $(SHL5TARGETN:d)check_$(SHL5TARGETN:f) + $(COMMAND_ECHO)$(RENAME) $(SHL5TARGETN) $(SHL5TARGETN:d)check_$(SHL5TARGETN:f) +.IF "$(VERBOSE)"=="TRUE" + $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS5) $(SHL5TARGETN:d)check_$(SHL5TARGETN:f) +.ELSE + $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS5) -- -s $(SHL5TARGETN:d)check_$(SHL5TARGETN:f) +.ENDIF +.ENDIF # "$(SHL5NOCHECK)"!="" +.ENDIF # "$(UPDATER)"=="YES" +.ENDIF # "$(OS)"=="MACOSX" +.IF "$(UNIXVERSIONNAMES)"!="" + $(COMMAND_ECHO)$(RM) $(LB)/$(SHL5TARGETN:b) + $(COMMAND_ECHO)cd $(LB) && ln -s $(SHL5TARGETN:f) $(SHL5TARGETN:b) +.ENDIF # "$(UNIXVERSIONNAMES)"!="" +.IF "$(VERBOSE)" == "TRUE" + @ls -l $@ +.ENDIF +.ENDIF # "$(GUI)" == "UNX" + +.IF "$(GUI)" == "OS2" + +.IF "$(SHL5DEFAULTRES)"!="" + @+-$(RM) $(MISC)/$(SHL5DEFAULTRES:b).rc >& $(NULLDEV) +.IF "$(SHL5ICON)" != "" + @-+echo 1 ICON $(SHL5ICON) >> $(MISC)/$(SHL5DEFAULTRES:b).rc +.ENDIF +.IF "$(use_shl_versions)" != "" +.IF "$(SHL5ADD_VERINFO)"!="" + @-+echo $(EMQ)#include $(EMQ)"$(SHL5ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL5DEFAULTRES:b).rc +.ENDIF # "$(SHL5ADD_VERINFO)"!="" + @-+echo MENU 1 BEGIN END >> $(MISC)/$(SHL5DEFAULTRES:b).rc +# @-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)/$(SHL5DEFAULTRES:b).rc +.ENDIF # "$(use_shl_versions)" != "" +# YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR) + $(COMMAND_ECHO)$(RC) -r -DOS2 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL5DEFAULTRES:b).rc +.ENDIF # "$(SHL5DEFAULTRES)"!="" + +.IF "$(SHL5ALLRES)"!="" + $(COMMAND_ECHO)+$(TYPE) $(SHL5ALLRES) > $(SHL5LINKRES) +.ENDIF # "$(SHL5ALLRES)"!="" + +.IF "$(USE_DEFFILE)"!="" + + $(COMMAND_ECHO)$(SHL5LINKER) $(SHL5LINKFLAGS) $(LINKFLAGSSHL) -o $@ \ + $(SHL5DEF) \ + $(STDOBJ) \ + -L$(LB) \ + -L$(SOLARVERSION)/$(INPATH)/lib \ + $(SHL5OBJS) $(SHL5VERSIONOBJ) \ + $(SHL5LIBS) \ + $(SHL5STDLIBS:^"-l") \ + $(SHL5LINKRES) \ + $(SHL5STDSHL:^"-l") $(STDSHL5:^"-l") + +.ELSE # "$(USE_DEFFILE)"!="" + + $(COMMAND_ECHO)$(SHL5LINKER) -v $(SHL5LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL5BASEX) \ + $(SHL5STACK) -o $(SHL5TARGETN) \ + $(SHL5DEF) \ + $(STDOBJ) \ + -L$(LB) \ + -L$(SOLARVERSION)/$(INPATH)/lib \ + $(SHL5OBJS) $(SHL5VERSIONOBJ) \ + $(SHL5LIBS) \ + $(SHL5STDLIBS:^"-l") \ + $(SHL5LINKRES) \ + $(SHL5STDSHL:^"-l") $(STDSHL5:^"-l") \ + $(LINKOUTPUTFILTER) + @$(LS) $@ >& $(NULLDEV) + +.ENDIF # "$(USE_DEFFILE)"!="" + +.IF "$(SHL5TARGET8)" != "$(SHL5TARGET)" + $(COMMAND_ECHO)+$(COPY) $@ $(@:d)$(SHL5TARGET8).dll +.ENDIF + +.ENDIF # "$(GUI)" == "OS2" + +.ENDIF # "$(SHL5TARGETN)"!="" + +# unroll begin + +.IF "$(SHL6TARGETN)"!="" + +.IF "$(OS)"=="AIX" +SHL6STDLIBS= +.ENDIF + +.IF "$(SHLLINKARCONLY)" != "" +SHL6STDLIBS= +STDSHL= +.ELSE +SHL6ARCHIVES= +.ENDIF + +# decide how to link +.IF "$(SHL6CODETYPE)"=="C" +SHL6LINKER=$(LINKC) +SHL6STDSHL=$(subst,CPPRUNTIME, $(STDSHL)) +SHL6LINKFLAGS+=$(LINKCFLAGS) +.ELSE # "$(SHL6CODETYPE)"=="C" +SHL6LINKER=$(LINK) +SHL6STDSHL=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDSHL)) +SHL6LINKFLAGS+=$(LINKFLAGS) +.ENDIF # "$(SHL6CODETYPE)"=="C" + +SHL6RPATH*=OOO +LINKFLAGSRUNPATH_$(SHL6RPATH)*=/ERROR:/Bad_SHL6RPATH_value +SHL6LINKFLAGS+=$(LINKFLAGSRUNPATH_$(SHL6RPATH)) + +.IF "$(SHL6USE_EXPORTS)"=="" +SHL6DEF*=$(MISC)/$(SHL6TARGET).def +.ENDIF # "$(SHL6USE_EXPORTS)"=="" + +EXTRALIBPATHS6=$(EXTRALIBPATHS) +.IF "$(UPDATER)"=="YES" +.IF "$(SHL6NOCHECK)"=="" +.IF "$(SOLAR_STLLIBPATH)"!="" +EXTRALIBPATHS6+=-L$(SOLAR_STLLIBPATH) +.ENDIF +.ENDIF # "$(SHL6NOCHECK)"!="" +.ENDIF +#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +#+++++++++++ version object ++++++++++++++++++++++++++++++++++++++++ +#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +.IF "$(L10N_framework)"=="" +.IF "$(VERSIONOBJ)"!="" +SHL6VERSIONOBJ:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL6TARGET))}$(VERSIONOBJ:f) +USE_VERSIONH:=$(INCCOM)/$(SHL6VERSIONOBJ:b).h +.IF "$(GUI)" == "UNX" +SHL6VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL6TARGET))}$(VERSIONOBJ:f:s/.o/.obj/) +.ELSE # "$(GUI)" == "UNX" +SHL6VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL6TARGET))}$(VERSIONOBJ:f) +.ENDIF # "$(GUI)" == "UNX" +$(MISC)/$(SHL6VERSIONOBJ:b).c : $(SOLARENV)/src/version.c $(INCCOM)/$(SHL6VERSIONOBJ:b).h +# $(COPY) $(SOLARENV)/src/version.c $@ + $(COMMAND_ECHO)$(TYPE) $(SOLARENV)/src/version.c | $(SED) s/_version.h/$(SHL6VERSIONOBJ:b).h/ > $@ + +.INIT : $(SHL6VERSIONOBJDEP) +.ENDIF # "$(VERSIONOBJ)"!="" +.ENDIF + +.IF "$(GUI)" != "UNX" +.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2" +.IF "$(SHL6IMPLIB)" == "" +SHL6IMPLIB=i$(TARGET)_t6 +.ENDIF # "$(SHL6IMPLIB)" == "" +.IF "$(COM)" != "GCC" +USE_6IMPLIB=-implib:$(LB)/$(SHL6IMPLIB).lib +.ENDIF # "$(COM)" != "GCC" +SHL6IMPLIBN=$(LB)/$(SHL6IMPLIB).lib +ALLTAR : $(SHL6IMPLIBN) + +.IF "$(USE_DEFFILE)"=="" +USE_6IMPLIB_DEPS=$(LB)/$(SHL6IMPLIB).lib +.ENDIF # "$(USE_DEFFILE)"=="" +.ENDIF # "$(GUI)" == "WNT" || "$(GUI)" == "OS2" +USE_SHL6DEF=$(SHL6DEF) +.ELSE # "$(GUI)" != "UNX" +USE_SHL6DEF= +SHL6DEPN+:=$(SHL6DEPNU) + +.IF "$(SHL6VERSIONMAP)"=="" +# to activate vmaps remove "#" +USE_SHL6VERSIONMAP=$(MISC)/$(SHL6TARGET).vmap +.ENDIF # "$(SHL6VERSIONMAP)"=="" + +.IF "$(USE_SHL6VERSIONMAP)"!="" + +.IF "$(SHL6FILTERFILE)"!="" +.IF "$(SHL6VERSIONMAP)"!="" +#eine von beiden ist zuviel +USE_SHL6VERSIONMAP=$(MISC)/$(SHL6TARGET).vmap +$(USE_SHL6VERSIONMAP) .PHONY: + @echo ----------------------------- + @echo you should only use versionmap OR exportfile + @echo ----------------------------- +# force_dmake_to_error + +.ENDIF # "$(SHL6VERSIONMAP)"!="" + +SHL6VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL6VERSIONMAP) + +$(USE_SHL6VERSIONMAP): \ + $(SHL6OBJS)\ + $(SHL6LIBS)\ + $(SHL6FILTERFILE) + @$(RM) $@.dump +.IF "$(SHL6OBJS)"!="" +# dump remaining objects on the fly +.IF "$(OS)"=="MACOSX" + @-nm $(SHL6OBJS:s/.obj/.o/) > $@.dump +.ELSE + @nm $(SHL6OBJS:s/.obj/.o/) > $@.dump +.ENDIF +.ENDIF # "$(SHL6OBJS)!"="" + @$(TYPE) /dev/null $(SHL6LIBS:s/.lib/.dump/) >> $@.dump + $(COMMAND_ECHO) $(PERL) $(SOLARENV)/bin/mapgen.pl -d $@.dump -s $(SHL6INTERFACE) -f $(SHL6FILTERFILE) -m $@ + +.ELSE # "$(SHL6FILTERFILE)"!="" +USE_SHL6VERSIONMAP=$(MISC)/$(SHL6TARGET).vmap +$(USE_SHL6VERSIONMAP) : +.IF "$(VERBOSE)" == "TRUE" + @echo ----------------------------- + @echo SHL6FILTERFILE not set! + @echo ----------------------------- + @$(TOUCH) $@ + @echo dummy file to keep the dependencies for later use. +.ELSE + @$(TOUCH) $@ +.ENDIF +# force_dmake_to_error +.ENDIF # "$(SHL6FILTERFILE)"!="" +.ELSE # "$(USE_SHL6VERSIONMAP)"!="" + +#and now for the plain non-generic way... +.IF "$(SHL6VERSIONMAP)"!="" +USE_SHL6VERSIONMAP=$(MISC)/$(SHL6VERSIONMAP:b)_$(SHL6TARGET)$(SHL6VERSIONMAP:e) +SHL6VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL6VERSIONMAP) + +.IF "$(OS)"=="MACOSX" +$(USE_SHL6VERSIONMAP): $(SHL6OBJS) $(SHL6LIBS) +.ENDIF + +# .ERRREMOVE is needed as a recipe line like "$(AWK) ... > $@" would create $@ +# even if the $(AWK) part fails: +$(USE_SHL6VERSIONMAP) .ERRREMOVE: $(SHL6VERSIONMAP) + @@-$(RM) -f $@ +# The following files will only be generated and needed on Mac OS X as temporary files +# in order to generate exported symbols list out of Linux/Solaris map files +.IF "$(OS)"=="MACOSX" + @-$(RM) -f $@.symregexp >& $(NULLDEV) + @-$(RM) -f $@.expsymlist >& $(NULLDEV) +.ENDIF +# Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what +# happens if somebody will change it in the future +.IF "$(COMID)"=="gcc3" + $(COMMAND_ECHO) tr -d "\015" < $(SHL6VERSIONMAP) | $(AWK) -f $(SOLARENV)/bin/addsym.awk > $@ +.ELIF "$(COMNAME)"=="sunpro5" + $(COMMAND_ECHO) tr -d "\015" < $(SHL6VERSIONMAP) | $(GREP) -v $(IGNORE_SYMBOLS) > $@ +.ELSE # "$(COMID)"=="gcc3" + $(COMMAND_ECHO) tr -d "\015" < $(SHL6VERSIONMAP) > $@ +.ENDIF # "$(COMID)"=="gcc3" + @chmod a+w $@ +# Mac OS X post-processing generate an exported symbols list from the generated map file +# for details on exported symbols list see man ld on Mac OS X +.IF "$(OS)"=="MACOSX" + @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep -v "\*\|?" > $@.exported-symbols + @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep "\*\|?" > $@.symbols-regexp +# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS +# Extract RTTI symbols from all the objects that will be used to build a shared library +.IF "$(SHL6OBJS)"!="" + -echo $(foreach,i,$(SHL6OBJS:s/.obj/.o/) $i) | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols +.ENDIF +.IF "$(SHL6LIBS)"!="" + $(COMMAND_ECHO)-$(TYPE) $(foreach,j,$(SHL6LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols +.ENDIF +# overwrite the map file generate into the local output tree with the generated +# exported symbols list + cp $@.exported-symbols $@ +.ENDIF # .IF "$(OS)"=="MACOSX" +.ENDIF # "$(SHL6VERSIONMAP)"!="" +.ENDIF # "$(USE_SHL6VERSIONMAP)"!="" +.ENDIF # "$(GUI)" != "UNX" + +.IF "$(UNIXVERSIONNAMES)"!="" +.IF "$(OS)"!="MACOSX" +.IF "$(GUI)"=="UNX" +SHL6SONAME=\"$(SONAME_SWITCH)$(SHL6TARGETN:f)\" +.ENDIF # "$(GUI)"!="UNX" +.ENDIF # "$(OS)"!="MACOSX" +.ENDIF # "$(UNIXVERSIONNAMES)"!="" + +.IF "$(SHL6RES)"!="" +SHL6ALLRES+=$(SHL6RES) +SHL6LINKRES*=$(MISC)/$(SHL6TARGET).res +SHL6LINKRESO*=$(MISC)/$(SHL6TARGET)_res.o +.ENDIF # "$(SHL6RES)"!="" + +.IF "$(SHL6DEFAULTRES)$(use_shl_versions)"!="" +SHL6DEFAULTRES*=$(MISC)/$(SHL6TARGET)_def.res +SHL6ALLRES+=$(SHL6DEFAULTRES) +SHL6LINKRES*=$(MISC)/$(SHL6TARGET).res +SHL6LINKRESO*=$(MISC)/$(SHL6TARGET)_res.o +.ENDIF # "$(SHL6DEFAULTRES)$(use_shl_versions)"!="" + +#.IF "$(SHL6TARGETN)"!="" + +.IF "$(linkinc)"!="" +.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2" +.IF "$(SHL6LIBS)"!="" +$(MISC)/$(SHL6TARGET)_linkinc.ls .PHONY: + @@-$(RM) $@ + $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL6LIBS) $(i:s/.lib/.lin/)) >> $@ +.ENDIF # "$(SHL6LIBS)"!="" +.ENDIF + +LINKINCTARGETS+=$(MISC)/$(SHL6TARGETN:b)_linkinc.ls +$(SHL6TARGETN) : $(LINKINCTARGETS) + +.ELSE +.IF "$(SHL6USE_EXPORTS)"=="name" +.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2" +.IF "$(COM)"!="GCC" +.IF "$(SHL6LIBS)"!="" +SHL6LINKLIST=$(MISC)/$(SHL6TARGET)_link.lst +SHL6LINKLISTPARAM=@$(SHL6LINKLIST) +$(SHL6LINKLIST) : $(SHL6LIBS) + @@-$(RM) $@ + $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL6LIBS) $(i:s/.lib/.lin/)) >> $@ +.ENDIF # "$(SHL6LIBS)"!="" +.ENDIF # "$(COM)"!="GCC" +.ENDIF +.ENDIF # "$(SHL6USE_EXPORTS)"=="name" + +$(MISC)/%linkinc.ls: + @echo . > $@ +.ENDIF # "$(linkinc)"!="" + +.IF "$(GUI)" == "OS2" +#21/02/2006 YD dll names must be 8.3, invoke fix script +#check osl/os2/module.c/osl_loadModule() +SHL6TARGET8=$(shell @fix_shl $(SHL6TARGET)) +.ENDIF + +.IF "$(GUI)" == "OS2" +_SHL6IMP_ORD = $(SHL6STDLIBS:^"$(SOLARVERSION)/$(INPATH)/lib/") $(SHL6STDLIBS:^"$(LB)/") +SHL6IMP_ORD = $(foreach,i,$(_SHL6IMP_ORD) $(shell @-ls $i)) +.ELSE +SHL6IMP_ORD = +.ENDIF + + +$(SHL6TARGETN) : \ + $(SHL6OBJS)\ + $(SHL6LIBS)\ + $(USE_6IMPLIB_DEPS)\ + $(USE_SHL6DEF)\ + $(USE_SHL6VERSIONMAP)\ + $(SHL6RES)\ + $(SHL6DEPN) \ + $(SHL6IMP_ORD) \ + $(SHL6LINKLIST) + @echo "Making: " $(@:f) +.IF "$(GUI)" == "WNT" +.IF "$(SHL6DEFAULTRES)"!="" + @@-$(RM) $(MISC)/$(SHL6DEFAULTRES:b).rc +.IF "$(SHL6ICON)" != "" + @echo 1 ICON $(SHL6ICON) >> $(MISC)/$(SHL6DEFAULTRES:b).rc +.ENDIF +.IF "$(use_shl_versions)" != "" +.IF "$(SHL6ADD_VERINFO)"!="" + @echo $(EMQ)#include $(EMQ)"$(SHL6ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL6DEFAULTRES:b).rc +.ELSE # "$(SHL6ADD_VERINFO)"!="" + @echo $(EMQ)#define ADDITIONAL_VERINFO1 >> $(MISC)/$(SHL6DEFAULTRES:b).rc + @echo $(EMQ)#define ADDITIONAL_VERINFO2 >> $(MISC)/$(SHL6DEFAULTRES:b).rc + @echo $(EMQ)#define ADDITIONAL_VERINFO3 >> $(MISC)/$(SHL6DEFAULTRES:b).rc +.ENDIF # "$(SHL6ADD_VERINFO)"!="" + @echo $(EMQ)#define VERVARIANT $(BUILD) >> $(MISC)/$(SHL6DEFAULTRES:b).rc + @echo $(EMQ)#define ORG_NAME $(SHL6TARGET)$(DLLPOST) >> $(MISC)/$(SHL6DEFAULTRES:b).rc + @echo $(EMQ)#define INTERNAL_NAME $(SHL6TARGET:b) >> $(MISC)/$(SHL6DEFAULTRES:b).rc + @echo $(EMQ)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)/$(SHL6DEFAULTRES:b).rc +.ENDIF # "$(use_shl_versions)" != "" + $(COMMAND_ECHO)$(RC) -DWIN32 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL6DEFAULTRES:b).rc +.ENDIF # "$(SHL6DEFAULTRES)"!="" +.IF "$(SHL6ALLRES)"!="" + $(COMMAND_ECHO)$(TYPE) $(SHL6ALLRES) > $(SHL6LINKRES) +.IF "$(COM)"=="GCC" + windres $(SHL6LINKRES) $(SHL6LINKRESO) +.ENDIF # "$(COM)"=="GCC" +.ENDIF # "$(SHL6ALLRES)"!="" +.IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def + @echo dlltool --dllname $(SHL6TARGET)$(DLLPOST) \ + --kill-at \\ > $(MISC)/$(TARGET).$(@:b)_6.cmd + @noop $(assign ALL6OBJLIST:=$(STDOBJ) $(SHL6OBJS) $(SHL6LINKRESO) $(shell $(TYPE) /dev/null $(SHL6LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g)) +.IF "$(DEFLIB6NAME)"!="" # do not have to include objs + @noop $(assign DEF6OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB6NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g)) + @noop $(foreach,i,$(DEF6OBJLIST) $(assign ALL6OBJLIST:=$(ALL6OBJLIST:s?$i??))) +.ENDIF # "$(DEFLIB6NAME)"!="" + @echo --output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_6.cmd +.IF "$(SHL6DEF)"!="" + @echo --input-def $(SHL6DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_6.cmd +.ELSE + @echo $(SHL6VERSIONOBJ) $(SHL6DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_6.cmd +.ENDIF + @echo $(ALL6OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_6.cmd + @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \ + $(STDOBJ) $(SHL6VERSIONOBJ) $(SHL6DESCRIPTIONOBJ) $(SHL6OBJS) $(SHL6LINKRESO) \ + `$(TYPE) /dev/null $(SHL6LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \ + -Wl,--exclude-libs,ALL,--start-group $(SHL6STDLIBS) -Wl,--end-group \ + $(SHL6STDSHL) $(STDSHL6) $(MISC)/$(@:b)_exp.o $(MINGWSSTDENDOBJ) \ + -Wl,-Map,$(MISC)/$(@:b).map >> $(MISC)/$(TARGET).$(@:b)_6.cmd + .IF "$(VERBOSE)" == "TRUE" + @$(TYPE) $(MISC)/$(TARGET).$(@:b)_6.cmd + .ENDIF + @+source $(MISC)/$(TARGET).$(@:b)_6.cmd +.ELSE +.IF "$(linkinc)"=="" +.IF "$(SHL6USE_EXPORTS)"!="name" +.IF "$(USE_DEFFILE)"!="" + $(COMMAND_ECHO)$(SHL6LINKER) @$(mktmp \ + $(SHL6LINKFLAGS) \ + $(LINKFLAGSSHL) \ + $(SHL6STACK) $(SHL6BASEX) \ + -out:$@ \ + -map:$(MISC)/$(@:b).map \ + -def:$(SHL6DEF) \ + $(USE_6IMPLIB) \ + $(STDOBJ) \ + $(SHL6VERSIONOBJ) $(SHL6OBJS) \ + $(SHL6LIBS) \ + $(SHL6STDLIBS) \ + $(SHL6STDSHL) $(STDSHL6) \ + $(SHL6LINKRES) \ + ) $(LINKOUTPUTFILTER) +# double check if target was really written... still making sense? + @@$(LS) $@ + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ELSE # "$(USE_DEFFILE)"!="" + $(COMMAND_ECHO)$(SHL6LINKER) @$(mktmp $(SHL6LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL6BASEX) \ + $(SHL6STACK) -out:$(SHL6TARGETN) \ + -map:$(MISC)/$(@:B).map \ + $(LB)/$(SHL6IMPLIB).exp \ + $(STDOBJ) \ + $(SHL6OBJS) $(SHL6VERSIONOBJ) \ + $(SHL6LIBS) \ + $(SHL6STDLIBS) \ + $(SHL6STDSHL) $(STDSHL6) \ + $(SHL6LINKRES) \ + ) $(LINKOUTPUTFILTER) +# double check if target was really written... still making sense? + @@$(LS) $@ + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ENDIF # "$(USE_DEFFILE)"!="" +.ELSE # "$(SHL6USE_EXPORTS)"!="name" + $(COMMAND_ECHO)$(SHL6LINKER) @$(mktmp $(SHL6LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL6BASEX) \ + $(SHL6STACK) -out:$(SHL6TARGETN) \ + -map:$(MISC)/$(@:B).map \ + $(USE_6IMPLIB) \ + $(STDOBJ) \ + $(SHL6OBJS) $(SHL6VERSIONOBJ)) \ + $(SHL6LINKLISTPARAM) \ + @$(mktmp $(SHL6STDLIBS) \ + $(SHL6STDSHL) $(STDSHL6) \ + $(SHL6LINKRES) \ + ) + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ENDIF # "$(SHL6USE_EXPORTS)"!="name" +.ELSE # "$(linkinc)"=="" + $(COMMAND_ECHO)-$(RM) del $(MISC)/$(SHL6TARGET).lnk + $(COMMAND_ECHO)-$(RM) $(MISC)/$(SHL6TARGET).lst + $(COMMAND_ECHO)$(TYPE) $(mktmp \ + $(SHL6LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL6BASEX) \ + $(SHL6STACK) $(MAPFILE) \ + -out:$@ \ + $(LB)/$(SHL6IMPLIB).exp \ + $(STDOBJ) \ + $(SHL6OBJS) \ + $(SHL6STDLIBS) \ + $(SHL6STDSHL) $(STDSHL6) \ + $(SHL6LINKRES) \ + ) >> $(MISC)/$(SHL6TARGET).lnk + $(COMMAND_ECHO)$(TYPE) $(MISC)/$(SHL6TARGETN:b)_linkinc.ls >> $(MISC)/$(SHL6TARGET).lnk + $(COMMAND_ECHO)$(SHL6LINKER) @$(MISC)/$(SHL6TARGET).lnk + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ENDIF # "$(linkinc)"=="" +.ENDIF # "$(COM)"=="GCC" +.ENDIF # "$(GUI)" == "WNT" +.IF "$(GUI)"=="UNX" +.IF "$(OS)"=="MACOSX" + @-$(RM) $(MISC)/$(@:b).list + @-$(RM) $(MISC)/$(TARGET).$(@:b)_6.cmd + @echo $(STDSLO) $(SHL6OBJS:s/.obj/.o/) \ + $(SHL6VERSIONOBJ) \ + `cat /dev/null $(SHL6LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list + @echo -n $(SHL6LINKER) $(SHL6LINKFLAGS) $(SHL6VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \ + $(SHL6STDLIBS) $(SHL6ARCHIVES) $(SHL6STDSHL) $(STDSHL6) -filelist $(MISC)/$(@:b).list $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_6.cmd + @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \ + `cat $(MISC)/$(TARGET).$(@:b)_6.cmd` \ + >> $(MISC)/$(TARGET).$(@:b)_6.cmd + .IF "$(VERBOSE)" == "TRUE" + @cat $(MISC)/$(TARGET).$(@:b)_6.cmd + .ENDIF + @+source $(MISC)/$(TARGET).$(@:b)_6.cmd + @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \ + shl $(SHL6RPATH) $@ +.IF "$(SHL6CREATEJNILIB)"!="" + @echo "Making: " $(@:f).jnilib + @macosx-create-bundle $@ +.ENDIF # "$(SHL6CREATEJNILIB)"!="" +.IF "$(UPDATER)"=="YES" +.IF "$(SHL6NOCHECK)"=="" + $(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS6) $(SHL6TARGETN) +.ENDIF # "$(SHL6NOCHECK)"!="" +.ENDIF +.ELSE # "$(OS)"=="MACOSX" + @-$(RM) $(MISC)/$(TARGET).$(@:b)_6.cmd + @echo $(SHL6LINKER) $(SHL6LINKFLAGS) $(SHL6SONAME) $(LINKFLAGSSHL) $(SHL6VERSIONMAPPARA) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) $(STDSLO) $(SHL6OBJS:s/.obj/.o/) \ + $(SHL6VERSIONOBJ) -o $@ \ + `cat /dev/null $(SHL6LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \ + $(SHL6STDLIBS) $(SHL6ARCHIVES) $(SHL6STDSHL) $(STDSHL6) $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_6.cmd + .IF "$(VERBOSE)" == "TRUE" + @cat $(MISC)/$(TARGET).$(@:b)_6.cmd + .ENDIF + @+source $(MISC)/$(TARGET).$(@:b)_6.cmd +.IF "$(UPDATER)"=="YES" +.IF "$(SHL6NOCHECK)"=="" + $(COMMAND_ECHO)-$(RM) $(SHL6TARGETN:d)check_$(SHL6TARGETN:f) + $(COMMAND_ECHO)$(RENAME) $(SHL6TARGETN) $(SHL6TARGETN:d)check_$(SHL6TARGETN:f) +.IF "$(VERBOSE)"=="TRUE" + $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS6) $(SHL6TARGETN:d)check_$(SHL6TARGETN:f) +.ELSE + $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS6) -- -s $(SHL6TARGETN:d)check_$(SHL6TARGETN:f) +.ENDIF +.ENDIF # "$(SHL6NOCHECK)"!="" +.ENDIF # "$(UPDATER)"=="YES" +.ENDIF # "$(OS)"=="MACOSX" +.IF "$(UNIXVERSIONNAMES)"!="" + $(COMMAND_ECHO)$(RM) $(LB)/$(SHL6TARGETN:b) + $(COMMAND_ECHO)cd $(LB) && ln -s $(SHL6TARGETN:f) $(SHL6TARGETN:b) +.ENDIF # "$(UNIXVERSIONNAMES)"!="" +.IF "$(VERBOSE)" == "TRUE" + @ls -l $@ +.ENDIF +.ENDIF # "$(GUI)" == "UNX" + +.IF "$(GUI)" == "OS2" + +.IF "$(SHL6DEFAULTRES)"!="" + @+-$(RM) $(MISC)/$(SHL6DEFAULTRES:b).rc >& $(NULLDEV) +.IF "$(SHL6ICON)" != "" + @-+echo 1 ICON $(SHL6ICON) >> $(MISC)/$(SHL6DEFAULTRES:b).rc +.ENDIF +.IF "$(use_shl_versions)" != "" +.IF "$(SHL6ADD_VERINFO)"!="" + @-+echo $(EMQ)#include $(EMQ)"$(SHL6ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL6DEFAULTRES:b).rc +.ENDIF # "$(SHL6ADD_VERINFO)"!="" + @-+echo MENU 1 BEGIN END >> $(MISC)/$(SHL6DEFAULTRES:b).rc +# @-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)/$(SHL6DEFAULTRES:b).rc +.ENDIF # "$(use_shl_versions)" != "" +# YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR) + $(COMMAND_ECHO)$(RC) -r -DOS2 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL6DEFAULTRES:b).rc +.ENDIF # "$(SHL6DEFAULTRES)"!="" + +.IF "$(SHL6ALLRES)"!="" + $(COMMAND_ECHO)+$(TYPE) $(SHL6ALLRES) > $(SHL6LINKRES) +.ENDIF # "$(SHL6ALLRES)"!="" + +.IF "$(USE_DEFFILE)"!="" + + $(COMMAND_ECHO)$(SHL6LINKER) $(SHL6LINKFLAGS) $(LINKFLAGSSHL) -o $@ \ + $(SHL6DEF) \ + $(STDOBJ) \ + -L$(LB) \ + -L$(SOLARVERSION)/$(INPATH)/lib \ + $(SHL6OBJS) $(SHL6VERSIONOBJ) \ + $(SHL6LIBS) \ + $(SHL6STDLIBS:^"-l") \ + $(SHL6LINKRES) \ + $(SHL6STDSHL:^"-l") $(STDSHL6:^"-l") + +.ELSE # "$(USE_DEFFILE)"!="" + + $(COMMAND_ECHO)$(SHL6LINKER) -v $(SHL6LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL6BASEX) \ + $(SHL6STACK) -o $(SHL6TARGETN) \ + $(SHL6DEF) \ + $(STDOBJ) \ + -L$(LB) \ + -L$(SOLARVERSION)/$(INPATH)/lib \ + $(SHL6OBJS) $(SHL6VERSIONOBJ) \ + $(SHL6LIBS) \ + $(SHL6STDLIBS:^"-l") \ + $(SHL6LINKRES) \ + $(SHL6STDSHL:^"-l") $(STDSHL6:^"-l") \ + $(LINKOUTPUTFILTER) + @$(LS) $@ >& $(NULLDEV) + +.ENDIF # "$(USE_DEFFILE)"!="" + +.IF "$(SHL6TARGET8)" != "$(SHL6TARGET)" + $(COMMAND_ECHO)+$(COPY) $@ $(@:d)$(SHL6TARGET8).dll +.ENDIF + +.ENDIF # "$(GUI)" == "OS2" + +.ENDIF # "$(SHL6TARGETN)"!="" + +# unroll begin + +.IF "$(SHL7TARGETN)"!="" + +.IF "$(OS)"=="AIX" +SHL7STDLIBS= +.ENDIF + +.IF "$(SHLLINKARCONLY)" != "" +SHL7STDLIBS= +STDSHL= +.ELSE +SHL7ARCHIVES= +.ENDIF + +# decide how to link +.IF "$(SHL7CODETYPE)"=="C" +SHL7LINKER=$(LINKC) +SHL7STDSHL=$(subst,CPPRUNTIME, $(STDSHL)) +SHL7LINKFLAGS+=$(LINKCFLAGS) +.ELSE # "$(SHL7CODETYPE)"=="C" +SHL7LINKER=$(LINK) +SHL7STDSHL=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDSHL)) +SHL7LINKFLAGS+=$(LINKFLAGS) +.ENDIF # "$(SHL7CODETYPE)"=="C" + +SHL7RPATH*=OOO +LINKFLAGSRUNPATH_$(SHL7RPATH)*=/ERROR:/Bad_SHL7RPATH_value +SHL7LINKFLAGS+=$(LINKFLAGSRUNPATH_$(SHL7RPATH)) + +.IF "$(SHL7USE_EXPORTS)"=="" +SHL7DEF*=$(MISC)/$(SHL7TARGET).def +.ENDIF # "$(SHL7USE_EXPORTS)"=="" + +EXTRALIBPATHS7=$(EXTRALIBPATHS) +.IF "$(UPDATER)"=="YES" +.IF "$(SHL7NOCHECK)"=="" +.IF "$(SOLAR_STLLIBPATH)"!="" +EXTRALIBPATHS7+=-L$(SOLAR_STLLIBPATH) +.ENDIF +.ENDIF # "$(SHL7NOCHECK)"!="" +.ENDIF +#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +#+++++++++++ version object ++++++++++++++++++++++++++++++++++++++++ +#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +.IF "$(L10N_framework)"=="" +.IF "$(VERSIONOBJ)"!="" +SHL7VERSIONOBJ:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL7TARGET))}$(VERSIONOBJ:f) +USE_VERSIONH:=$(INCCOM)/$(SHL7VERSIONOBJ:b).h +.IF "$(GUI)" == "UNX" +SHL7VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL7TARGET))}$(VERSIONOBJ:f:s/.o/.obj/) +.ELSE # "$(GUI)" == "UNX" +SHL7VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL7TARGET))}$(VERSIONOBJ:f) +.ENDIF # "$(GUI)" == "UNX" +$(MISC)/$(SHL7VERSIONOBJ:b).c : $(SOLARENV)/src/version.c $(INCCOM)/$(SHL7VERSIONOBJ:b).h +# $(COPY) $(SOLARENV)/src/version.c $@ + $(COMMAND_ECHO)$(TYPE) $(SOLARENV)/src/version.c | $(SED) s/_version.h/$(SHL7VERSIONOBJ:b).h/ > $@ + +.INIT : $(SHL7VERSIONOBJDEP) +.ENDIF # "$(VERSIONOBJ)"!="" +.ENDIF + +.IF "$(GUI)" != "UNX" +.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2" +.IF "$(SHL7IMPLIB)" == "" +SHL7IMPLIB=i$(TARGET)_t7 +.ENDIF # "$(SHL7IMPLIB)" == "" +.IF "$(COM)" != "GCC" +USE_7IMPLIB=-implib:$(LB)/$(SHL7IMPLIB).lib +.ENDIF # "$(COM)" != "GCC" +SHL7IMPLIBN=$(LB)/$(SHL7IMPLIB).lib +ALLTAR : $(SHL7IMPLIBN) + +.IF "$(USE_DEFFILE)"=="" +USE_7IMPLIB_DEPS=$(LB)/$(SHL7IMPLIB).lib +.ENDIF # "$(USE_DEFFILE)"=="" +.ENDIF # "$(GUI)" == "WNT" || "$(GUI)" == "OS2" +USE_SHL7DEF=$(SHL7DEF) +.ELSE # "$(GUI)" != "UNX" +USE_SHL7DEF= +SHL7DEPN+:=$(SHL7DEPNU) + +.IF "$(SHL7VERSIONMAP)"=="" +# to activate vmaps remove "#" +USE_SHL7VERSIONMAP=$(MISC)/$(SHL7TARGET).vmap +.ENDIF # "$(SHL7VERSIONMAP)"=="" + +.IF "$(USE_SHL7VERSIONMAP)"!="" + +.IF "$(SHL7FILTERFILE)"!="" +.IF "$(SHL7VERSIONMAP)"!="" +#eine von beiden ist zuviel +USE_SHL7VERSIONMAP=$(MISC)/$(SHL7TARGET).vmap +$(USE_SHL7VERSIONMAP) .PHONY: + @echo ----------------------------- + @echo you should only use versionmap OR exportfile + @echo ----------------------------- +# force_dmake_to_error + +.ENDIF # "$(SHL7VERSIONMAP)"!="" + +SHL7VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL7VERSIONMAP) + +$(USE_SHL7VERSIONMAP): \ + $(SHL7OBJS)\ + $(SHL7LIBS)\ + $(SHL7FILTERFILE) + @$(RM) $@.dump +.IF "$(SHL7OBJS)"!="" +# dump remaining objects on the fly +.IF "$(OS)"=="MACOSX" + @-nm $(SHL7OBJS:s/.obj/.o/) > $@.dump +.ELSE + @nm $(SHL7OBJS:s/.obj/.o/) > $@.dump +.ENDIF +.ENDIF # "$(SHL7OBJS)!"="" + @$(TYPE) /dev/null $(SHL7LIBS:s/.lib/.dump/) >> $@.dump + $(COMMAND_ECHO) $(PERL) $(SOLARENV)/bin/mapgen.pl -d $@.dump -s $(SHL7INTERFACE) -f $(SHL7FILTERFILE) -m $@ + +.ELSE # "$(SHL7FILTERFILE)"!="" +USE_SHL7VERSIONMAP=$(MISC)/$(SHL7TARGET).vmap +$(USE_SHL7VERSIONMAP) : +.IF "$(VERBOSE)" == "TRUE" + @echo ----------------------------- + @echo SHL7FILTERFILE not set! + @echo ----------------------------- + @$(TOUCH) $@ + @echo dummy file to keep the dependencies for later use. +.ELSE + @$(TOUCH) $@ +.ENDIF +# force_dmake_to_error +.ENDIF # "$(SHL7FILTERFILE)"!="" +.ELSE # "$(USE_SHL7VERSIONMAP)"!="" + +#and now for the plain non-generic way... +.IF "$(SHL7VERSIONMAP)"!="" +USE_SHL7VERSIONMAP=$(MISC)/$(SHL7VERSIONMAP:b)_$(SHL7TARGET)$(SHL7VERSIONMAP:e) +SHL7VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL7VERSIONMAP) + +.IF "$(OS)"=="MACOSX" +$(USE_SHL7VERSIONMAP): $(SHL7OBJS) $(SHL7LIBS) +.ENDIF + +# .ERRREMOVE is needed as a recipe line like "$(AWK) ... > $@" would create $@ +# even if the $(AWK) part fails: +$(USE_SHL7VERSIONMAP) .ERRREMOVE: $(SHL7VERSIONMAP) + @@-$(RM) -f $@ +# The following files will only be generated and needed on Mac OS X as temporary files +# in order to generate exported symbols list out of Linux/Solaris map files +.IF "$(OS)"=="MACOSX" + @-$(RM) -f $@.symregexp >& $(NULLDEV) + @-$(RM) -f $@.expsymlist >& $(NULLDEV) +.ENDIF +# Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what +# happens if somebody will change it in the future +.IF "$(COMID)"=="gcc3" + $(COMMAND_ECHO) tr -d "\015" < $(SHL7VERSIONMAP) | $(AWK) -f $(SOLARENV)/bin/addsym.awk > $@ +.ELIF "$(COMNAME)"=="sunpro5" + $(COMMAND_ECHO) tr -d "\015" < $(SHL7VERSIONMAP) | $(GREP) -v $(IGNORE_SYMBOLS) > $@ +.ELSE # "$(COMID)"=="gcc3" + $(COMMAND_ECHO) tr -d "\015" < $(SHL7VERSIONMAP) > $@ +.ENDIF # "$(COMID)"=="gcc3" + @chmod a+w $@ +# Mac OS X post-processing generate an exported symbols list from the generated map file +# for details on exported symbols list see man ld on Mac OS X +.IF "$(OS)"=="MACOSX" + @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep -v "\*\|?" > $@.exported-symbols + @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep "\*\|?" > $@.symbols-regexp +# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS +# Extract RTTI symbols from all the objects that will be used to build a shared library +.IF "$(SHL7OBJS)"!="" + -echo $(foreach,i,$(SHL7OBJS:s/.obj/.o/) $i) | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols +.ENDIF +.IF "$(SHL7LIBS)"!="" + $(COMMAND_ECHO)-$(TYPE) $(foreach,j,$(SHL7LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols +.ENDIF +# overwrite the map file generate into the local output tree with the generated +# exported symbols list + cp $@.exported-symbols $@ +.ENDIF # .IF "$(OS)"=="MACOSX" +.ENDIF # "$(SHL7VERSIONMAP)"!="" +.ENDIF # "$(USE_SHL7VERSIONMAP)"!="" +.ENDIF # "$(GUI)" != "UNX" + +.IF "$(UNIXVERSIONNAMES)"!="" +.IF "$(OS)"!="MACOSX" +.IF "$(GUI)"=="UNX" +SHL7SONAME=\"$(SONAME_SWITCH)$(SHL7TARGETN:f)\" +.ENDIF # "$(GUI)"!="UNX" +.ENDIF # "$(OS)"!="MACOSX" +.ENDIF # "$(UNIXVERSIONNAMES)"!="" + +.IF "$(SHL7RES)"!="" +SHL7ALLRES+=$(SHL7RES) +SHL7LINKRES*=$(MISC)/$(SHL7TARGET).res +SHL7LINKRESO*=$(MISC)/$(SHL7TARGET)_res.o +.ENDIF # "$(SHL7RES)"!="" + +.IF "$(SHL7DEFAULTRES)$(use_shl_versions)"!="" +SHL7DEFAULTRES*=$(MISC)/$(SHL7TARGET)_def.res +SHL7ALLRES+=$(SHL7DEFAULTRES) +SHL7LINKRES*=$(MISC)/$(SHL7TARGET).res +SHL7LINKRESO*=$(MISC)/$(SHL7TARGET)_res.o +.ENDIF # "$(SHL7DEFAULTRES)$(use_shl_versions)"!="" + +#.IF "$(SHL7TARGETN)"!="" + +.IF "$(linkinc)"!="" +.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2" +.IF "$(SHL7LIBS)"!="" +$(MISC)/$(SHL7TARGET)_linkinc.ls .PHONY: + @@-$(RM) $@ + $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL7LIBS) $(i:s/.lib/.lin/)) >> $@ +.ENDIF # "$(SHL7LIBS)"!="" +.ENDIF + +LINKINCTARGETS+=$(MISC)/$(SHL7TARGETN:b)_linkinc.ls +$(SHL7TARGETN) : $(LINKINCTARGETS) + +.ELSE +.IF "$(SHL7USE_EXPORTS)"=="name" +.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2" +.IF "$(COM)"!="GCC" +.IF "$(SHL7LIBS)"!="" +SHL7LINKLIST=$(MISC)/$(SHL7TARGET)_link.lst +SHL7LINKLISTPARAM=@$(SHL7LINKLIST) +$(SHL7LINKLIST) : $(SHL7LIBS) + @@-$(RM) $@ + $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL7LIBS) $(i:s/.lib/.lin/)) >> $@ +.ENDIF # "$(SHL7LIBS)"!="" +.ENDIF # "$(COM)"!="GCC" +.ENDIF +.ENDIF # "$(SHL7USE_EXPORTS)"=="name" + +$(MISC)/%linkinc.ls: + @echo . > $@ +.ENDIF # "$(linkinc)"!="" + +.IF "$(GUI)" == "OS2" +#21/02/2006 YD dll names must be 8.3, invoke fix script +#check osl/os2/module.c/osl_loadModule() +SHL7TARGET8=$(shell @fix_shl $(SHL7TARGET)) +.ENDIF + +.IF "$(GUI)" == "OS2" +_SHL7IMP_ORD = $(SHL7STDLIBS:^"$(SOLARVERSION)/$(INPATH)/lib/") $(SHL7STDLIBS:^"$(LB)/") +SHL7IMP_ORD = $(foreach,i,$(_SHL7IMP_ORD) $(shell @-ls $i)) +.ELSE +SHL7IMP_ORD = +.ENDIF + + +$(SHL7TARGETN) : \ + $(SHL7OBJS)\ + $(SHL7LIBS)\ + $(USE_7IMPLIB_DEPS)\ + $(USE_SHL7DEF)\ + $(USE_SHL7VERSIONMAP)\ + $(SHL7RES)\ + $(SHL7DEPN) \ + $(SHL7IMP_ORD) \ + $(SHL7LINKLIST) + @echo "Making: " $(@:f) +.IF "$(GUI)" == "WNT" +.IF "$(SHL7DEFAULTRES)"!="" + @@-$(RM) $(MISC)/$(SHL7DEFAULTRES:b).rc +.IF "$(SHL7ICON)" != "" + @echo 1 ICON $(SHL7ICON) >> $(MISC)/$(SHL7DEFAULTRES:b).rc +.ENDIF +.IF "$(use_shl_versions)" != "" +.IF "$(SHL7ADD_VERINFO)"!="" + @echo $(EMQ)#include $(EMQ)"$(SHL7ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL7DEFAULTRES:b).rc +.ELSE # "$(SHL7ADD_VERINFO)"!="" + @echo $(EMQ)#define ADDITIONAL_VERINFO1 >> $(MISC)/$(SHL7DEFAULTRES:b).rc + @echo $(EMQ)#define ADDITIONAL_VERINFO2 >> $(MISC)/$(SHL7DEFAULTRES:b).rc + @echo $(EMQ)#define ADDITIONAL_VERINFO3 >> $(MISC)/$(SHL7DEFAULTRES:b).rc +.ENDIF # "$(SHL7ADD_VERINFO)"!="" + @echo $(EMQ)#define VERVARIANT $(BUILD) >> $(MISC)/$(SHL7DEFAULTRES:b).rc + @echo $(EMQ)#define ORG_NAME $(SHL7TARGET)$(DLLPOST) >> $(MISC)/$(SHL7DEFAULTRES:b).rc + @echo $(EMQ)#define INTERNAL_NAME $(SHL7TARGET:b) >> $(MISC)/$(SHL7DEFAULTRES:b).rc + @echo $(EMQ)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)/$(SHL7DEFAULTRES:b).rc +.ENDIF # "$(use_shl_versions)" != "" + $(COMMAND_ECHO)$(RC) -DWIN32 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL7DEFAULTRES:b).rc +.ENDIF # "$(SHL7DEFAULTRES)"!="" +.IF "$(SHL7ALLRES)"!="" + $(COMMAND_ECHO)$(TYPE) $(SHL7ALLRES) > $(SHL7LINKRES) +.IF "$(COM)"=="GCC" + windres $(SHL7LINKRES) $(SHL7LINKRESO) +.ENDIF # "$(COM)"=="GCC" +.ENDIF # "$(SHL7ALLRES)"!="" +.IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def + @echo dlltool --dllname $(SHL7TARGET)$(DLLPOST) \ + --kill-at \\ > $(MISC)/$(TARGET).$(@:b)_7.cmd + @noop $(assign ALL7OBJLIST:=$(STDOBJ) $(SHL7OBJS) $(SHL7LINKRESO) $(shell $(TYPE) /dev/null $(SHL7LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g)) +.IF "$(DEFLIB7NAME)"!="" # do not have to include objs + @noop $(assign DEF7OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB7NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g)) + @noop $(foreach,i,$(DEF7OBJLIST) $(assign ALL7OBJLIST:=$(ALL7OBJLIST:s?$i??))) +.ENDIF # "$(DEFLIB7NAME)"!="" + @echo --output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_7.cmd +.IF "$(SHL7DEF)"!="" + @echo --input-def $(SHL7DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_7.cmd +.ELSE + @echo $(SHL7VERSIONOBJ) $(SHL7DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_7.cmd +.ENDIF + @echo $(ALL7OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_7.cmd + @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \ + $(STDOBJ) $(SHL7VERSIONOBJ) $(SHL7DESCRIPTIONOBJ) $(SHL7OBJS) $(SHL7LINKRESO) \ + `$(TYPE) /dev/null $(SHL7LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \ + -Wl,--exclude-libs,ALL,--start-group $(SHL7STDLIBS) -Wl,--end-group \ + $(SHL7STDSHL) $(STDSHL7) $(MISC)/$(@:b)_exp.o $(MINGWSSTDENDOBJ) \ + -Wl,-Map,$(MISC)/$(@:b).map >> $(MISC)/$(TARGET).$(@:b)_7.cmd + .IF "$(VERBOSE)" == "TRUE" + @$(TYPE) $(MISC)/$(TARGET).$(@:b)_7.cmd + .ENDIF + @+source $(MISC)/$(TARGET).$(@:b)_7.cmd +.ELSE +.IF "$(linkinc)"=="" +.IF "$(SHL7USE_EXPORTS)"!="name" +.IF "$(USE_DEFFILE)"!="" + $(COMMAND_ECHO)$(SHL7LINKER) @$(mktmp \ + $(SHL7LINKFLAGS) \ + $(LINKFLAGSSHL) \ + $(SHL7STACK) $(SHL7BASEX) \ + -out:$@ \ + -map:$(MISC)/$(@:b).map \ + -def:$(SHL7DEF) \ + $(USE_7IMPLIB) \ + $(STDOBJ) \ + $(SHL7VERSIONOBJ) $(SHL7OBJS) \ + $(SHL7LIBS) \ + $(SHL7STDLIBS) \ + $(SHL7STDSHL) $(STDSHL7) \ + $(SHL7LINKRES) \ + ) $(LINKOUTPUTFILTER) +# double check if target was really written... still making sense? + @@$(LS) $@ + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ELSE # "$(USE_DEFFILE)"!="" + $(COMMAND_ECHO)$(SHL7LINKER) @$(mktmp $(SHL7LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL7BASEX) \ + $(SHL7STACK) -out:$(SHL7TARGETN) \ + -map:$(MISC)/$(@:B).map \ + $(LB)/$(SHL7IMPLIB).exp \ + $(STDOBJ) \ + $(SHL7OBJS) $(SHL7VERSIONOBJ) \ + $(SHL7LIBS) \ + $(SHL7STDLIBS) \ + $(SHL7STDSHL) $(STDSHL7) \ + $(SHL7LINKRES) \ + ) $(LINKOUTPUTFILTER) +# double check if target was really written... still making sense? + @@$(LS) $@ + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ENDIF # "$(USE_DEFFILE)"!="" +.ELSE # "$(SHL7USE_EXPORTS)"!="name" + $(COMMAND_ECHO)$(SHL7LINKER) @$(mktmp $(SHL7LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL7BASEX) \ + $(SHL7STACK) -out:$(SHL7TARGETN) \ + -map:$(MISC)/$(@:B).map \ + $(USE_7IMPLIB) \ + $(STDOBJ) \ + $(SHL7OBJS) $(SHL7VERSIONOBJ)) \ + $(SHL7LINKLISTPARAM) \ + @$(mktmp $(SHL7STDLIBS) \ + $(SHL7STDSHL) $(STDSHL7) \ + $(SHL7LINKRES) \ + ) + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ENDIF # "$(SHL7USE_EXPORTS)"!="name" +.ELSE # "$(linkinc)"=="" + $(COMMAND_ECHO)-$(RM) del $(MISC)/$(SHL7TARGET).lnk + $(COMMAND_ECHO)-$(RM) $(MISC)/$(SHL7TARGET).lst + $(COMMAND_ECHO)$(TYPE) $(mktmp \ + $(SHL7LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL7BASEX) \ + $(SHL7STACK) $(MAPFILE) \ + -out:$@ \ + $(LB)/$(SHL7IMPLIB).exp \ + $(STDOBJ) \ + $(SHL7OBJS) \ + $(SHL7STDLIBS) \ + $(SHL7STDSHL) $(STDSHL7) \ + $(SHL7LINKRES) \ + ) >> $(MISC)/$(SHL7TARGET).lnk + $(COMMAND_ECHO)$(TYPE) $(MISC)/$(SHL7TARGETN:b)_linkinc.ls >> $(MISC)/$(SHL7TARGET).lnk + $(COMMAND_ECHO)$(SHL7LINKER) @$(MISC)/$(SHL7TARGET).lnk + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ENDIF # "$(linkinc)"=="" +.ENDIF # "$(COM)"=="GCC" +.ENDIF # "$(GUI)" == "WNT" +.IF "$(GUI)"=="UNX" +.IF "$(OS)"=="MACOSX" + @-$(RM) $(MISC)/$(@:b).list + @-$(RM) $(MISC)/$(TARGET).$(@:b)_7.cmd + @echo $(STDSLO) $(SHL7OBJS:s/.obj/.o/) \ + $(SHL7VERSIONOBJ) \ + `cat /dev/null $(SHL7LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list + @echo -n $(SHL7LINKER) $(SHL7LINKFLAGS) $(SHL7VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \ + $(SHL7STDLIBS) $(SHL7ARCHIVES) $(SHL7STDSHL) $(STDSHL7) -filelist $(MISC)/$(@:b).list $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_7.cmd + @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \ + `cat $(MISC)/$(TARGET).$(@:b)_7.cmd` \ + >> $(MISC)/$(TARGET).$(@:b)_7.cmd + .IF "$(VERBOSE)" == "TRUE" + @cat $(MISC)/$(TARGET).$(@:b)_7.cmd + .ENDIF + @+source $(MISC)/$(TARGET).$(@:b)_7.cmd + @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \ + shl $(SHL7RPATH) $@ +.IF "$(SHL7CREATEJNILIB)"!="" + @echo "Making: " $(@:f).jnilib + @macosx-create-bundle $@ +.ENDIF # "$(SHL7CREATEJNILIB)"!="" +.IF "$(UPDATER)"=="YES" +.IF "$(SHL7NOCHECK)"=="" + $(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS7) $(SHL7TARGETN) +.ENDIF # "$(SHL7NOCHECK)"!="" +.ENDIF +.ELSE # "$(OS)"=="MACOSX" + @-$(RM) $(MISC)/$(TARGET).$(@:b)_7.cmd + @echo $(SHL7LINKER) $(SHL7LINKFLAGS) $(SHL7SONAME) $(LINKFLAGSSHL) $(SHL7VERSIONMAPPARA) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) $(STDSLO) $(SHL7OBJS:s/.obj/.o/) \ + $(SHL7VERSIONOBJ) -o $@ \ + `cat /dev/null $(SHL7LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \ + $(SHL7STDLIBS) $(SHL7ARCHIVES) $(SHL7STDSHL) $(STDSHL7) $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_7.cmd + .IF "$(VERBOSE)" == "TRUE" + @cat $(MISC)/$(TARGET).$(@:b)_7.cmd + .ENDIF + @+source $(MISC)/$(TARGET).$(@:b)_7.cmd +.IF "$(UPDATER)"=="YES" +.IF "$(SHL7NOCHECK)"=="" + $(COMMAND_ECHO)-$(RM) $(SHL7TARGETN:d)check_$(SHL7TARGETN:f) + $(COMMAND_ECHO)$(RENAME) $(SHL7TARGETN) $(SHL7TARGETN:d)check_$(SHL7TARGETN:f) +.IF "$(VERBOSE)"=="TRUE" + $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS7) $(SHL7TARGETN:d)check_$(SHL7TARGETN:f) +.ELSE + $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS7) -- -s $(SHL7TARGETN:d)check_$(SHL7TARGETN:f) +.ENDIF +.ENDIF # "$(SHL7NOCHECK)"!="" +.ENDIF # "$(UPDATER)"=="YES" +.ENDIF # "$(OS)"=="MACOSX" +.IF "$(UNIXVERSIONNAMES)"!="" + $(COMMAND_ECHO)$(RM) $(LB)/$(SHL7TARGETN:b) + $(COMMAND_ECHO)cd $(LB) && ln -s $(SHL7TARGETN:f) $(SHL7TARGETN:b) +.ENDIF # "$(UNIXVERSIONNAMES)"!="" +.IF "$(VERBOSE)" == "TRUE" + @ls -l $@ +.ENDIF +.ENDIF # "$(GUI)" == "UNX" + +.IF "$(GUI)" == "OS2" + +.IF "$(SHL7DEFAULTRES)"!="" + @+-$(RM) $(MISC)/$(SHL7DEFAULTRES:b).rc >& $(NULLDEV) +.IF "$(SHL7ICON)" != "" + @-+echo 1 ICON $(SHL7ICON) >> $(MISC)/$(SHL7DEFAULTRES:b).rc +.ENDIF +.IF "$(use_shl_versions)" != "" +.IF "$(SHL7ADD_VERINFO)"!="" + @-+echo $(EMQ)#include $(EMQ)"$(SHL7ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL7DEFAULTRES:b).rc +.ENDIF # "$(SHL7ADD_VERINFO)"!="" + @-+echo MENU 1 BEGIN END >> $(MISC)/$(SHL7DEFAULTRES:b).rc +# @-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)/$(SHL7DEFAULTRES:b).rc +.ENDIF # "$(use_shl_versions)" != "" +# YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR) + $(COMMAND_ECHO)$(RC) -r -DOS2 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL7DEFAULTRES:b).rc +.ENDIF # "$(SHL7DEFAULTRES)"!="" + +.IF "$(SHL7ALLRES)"!="" + $(COMMAND_ECHO)+$(TYPE) $(SHL7ALLRES) > $(SHL7LINKRES) +.ENDIF # "$(SHL7ALLRES)"!="" + +.IF "$(USE_DEFFILE)"!="" + + $(COMMAND_ECHO)$(SHL7LINKER) $(SHL7LINKFLAGS) $(LINKFLAGSSHL) -o $@ \ + $(SHL7DEF) \ + $(STDOBJ) \ + -L$(LB) \ + -L$(SOLARVERSION)/$(INPATH)/lib \ + $(SHL7OBJS) $(SHL7VERSIONOBJ) \ + $(SHL7LIBS) \ + $(SHL7STDLIBS:^"-l") \ + $(SHL7LINKRES) \ + $(SHL7STDSHL:^"-l") $(STDSHL7:^"-l") + +.ELSE # "$(USE_DEFFILE)"!="" + + $(COMMAND_ECHO)$(SHL7LINKER) -v $(SHL7LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL7BASEX) \ + $(SHL7STACK) -o $(SHL7TARGETN) \ + $(SHL7DEF) \ + $(STDOBJ) \ + -L$(LB) \ + -L$(SOLARVERSION)/$(INPATH)/lib \ + $(SHL7OBJS) $(SHL7VERSIONOBJ) \ + $(SHL7LIBS) \ + $(SHL7STDLIBS:^"-l") \ + $(SHL7LINKRES) \ + $(SHL7STDSHL:^"-l") $(STDSHL7:^"-l") \ + $(LINKOUTPUTFILTER) + @$(LS) $@ >& $(NULLDEV) + +.ENDIF # "$(USE_DEFFILE)"!="" + +.IF "$(SHL7TARGET8)" != "$(SHL7TARGET)" + $(COMMAND_ECHO)+$(COPY) $@ $(@:d)$(SHL7TARGET8).dll +.ENDIF + +.ENDIF # "$(GUI)" == "OS2" + +.ENDIF # "$(SHL7TARGETN)"!="" + +# unroll begin + +.IF "$(SHL8TARGETN)"!="" + +.IF "$(OS)"=="AIX" +SHL8STDLIBS= +.ENDIF + +.IF "$(SHLLINKARCONLY)" != "" +SHL8STDLIBS= +STDSHL= +.ELSE +SHL8ARCHIVES= +.ENDIF + +# decide how to link +.IF "$(SHL8CODETYPE)"=="C" +SHL8LINKER=$(LINKC) +SHL8STDSHL=$(subst,CPPRUNTIME, $(STDSHL)) +SHL8LINKFLAGS+=$(LINKCFLAGS) +.ELSE # "$(SHL8CODETYPE)"=="C" +SHL8LINKER=$(LINK) +SHL8STDSHL=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDSHL)) +SHL8LINKFLAGS+=$(LINKFLAGS) +.ENDIF # "$(SHL8CODETYPE)"=="C" + +SHL8RPATH*=OOO +LINKFLAGSRUNPATH_$(SHL8RPATH)*=/ERROR:/Bad_SHL8RPATH_value +SHL8LINKFLAGS+=$(LINKFLAGSRUNPATH_$(SHL8RPATH)) + +.IF "$(SHL8USE_EXPORTS)"=="" +SHL8DEF*=$(MISC)/$(SHL8TARGET).def +.ENDIF # "$(SHL8USE_EXPORTS)"=="" + +EXTRALIBPATHS8=$(EXTRALIBPATHS) +.IF "$(UPDATER)"=="YES" +.IF "$(SHL8NOCHECK)"=="" +.IF "$(SOLAR_STLLIBPATH)"!="" +EXTRALIBPATHS8+=-L$(SOLAR_STLLIBPATH) +.ENDIF +.ENDIF # "$(SHL8NOCHECK)"!="" +.ENDIF +#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +#+++++++++++ version object ++++++++++++++++++++++++++++++++++++++++ +#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +.IF "$(L10N_framework)"=="" +.IF "$(VERSIONOBJ)"!="" +SHL8VERSIONOBJ:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL8TARGET))}$(VERSIONOBJ:f) +USE_VERSIONH:=$(INCCOM)/$(SHL8VERSIONOBJ:b).h +.IF "$(GUI)" == "UNX" +SHL8VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL8TARGET))}$(VERSIONOBJ:f:s/.o/.obj/) +.ELSE # "$(GUI)" == "UNX" +SHL8VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL8TARGET))}$(VERSIONOBJ:f) +.ENDIF # "$(GUI)" == "UNX" +$(MISC)/$(SHL8VERSIONOBJ:b).c : $(SOLARENV)/src/version.c $(INCCOM)/$(SHL8VERSIONOBJ:b).h +# $(COPY) $(SOLARENV)/src/version.c $@ + $(COMMAND_ECHO)$(TYPE) $(SOLARENV)/src/version.c | $(SED) s/_version.h/$(SHL8VERSIONOBJ:b).h/ > $@ + +.INIT : $(SHL8VERSIONOBJDEP) +.ENDIF # "$(VERSIONOBJ)"!="" +.ENDIF + +.IF "$(GUI)" != "UNX" +.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2" +.IF "$(SHL8IMPLIB)" == "" +SHL8IMPLIB=i$(TARGET)_t8 +.ENDIF # "$(SHL8IMPLIB)" == "" +.IF "$(COM)" != "GCC" +USE_8IMPLIB=-implib:$(LB)/$(SHL8IMPLIB).lib +.ENDIF # "$(COM)" != "GCC" +SHL8IMPLIBN=$(LB)/$(SHL8IMPLIB).lib +ALLTAR : $(SHL8IMPLIBN) + +.IF "$(USE_DEFFILE)"=="" +USE_8IMPLIB_DEPS=$(LB)/$(SHL8IMPLIB).lib +.ENDIF # "$(USE_DEFFILE)"=="" +.ENDIF # "$(GUI)" == "WNT" || "$(GUI)" == "OS2" +USE_SHL8DEF=$(SHL8DEF) +.ELSE # "$(GUI)" != "UNX" +USE_SHL8DEF= +SHL8DEPN+:=$(SHL8DEPNU) + +.IF "$(SHL8VERSIONMAP)"=="" +# to activate vmaps remove "#" +USE_SHL8VERSIONMAP=$(MISC)/$(SHL8TARGET).vmap +.ENDIF # "$(SHL8VERSIONMAP)"=="" + +.IF "$(USE_SHL8VERSIONMAP)"!="" + +.IF "$(SHL8FILTERFILE)"!="" +.IF "$(SHL8VERSIONMAP)"!="" +#eine von beiden ist zuviel +USE_SHL8VERSIONMAP=$(MISC)/$(SHL8TARGET).vmap +$(USE_SHL8VERSIONMAP) .PHONY: + @echo ----------------------------- + @echo you should only use versionmap OR exportfile + @echo ----------------------------- +# force_dmake_to_error + +.ENDIF # "$(SHL8VERSIONMAP)"!="" + +SHL8VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL8VERSIONMAP) + +$(USE_SHL8VERSIONMAP): \ + $(SHL8OBJS)\ + $(SHL8LIBS)\ + $(SHL8FILTERFILE) + @$(RM) $@.dump +.IF "$(SHL8OBJS)"!="" +# dump remaining objects on the fly +.IF "$(OS)"=="MACOSX" + @-nm $(SHL8OBJS:s/.obj/.o/) > $@.dump +.ELSE + @nm $(SHL8OBJS:s/.obj/.o/) > $@.dump +.ENDIF +.ENDIF # "$(SHL8OBJS)!"="" + @$(TYPE) /dev/null $(SHL8LIBS:s/.lib/.dump/) >> $@.dump + $(COMMAND_ECHO) $(PERL) $(SOLARENV)/bin/mapgen.pl -d $@.dump -s $(SHL8INTERFACE) -f $(SHL8FILTERFILE) -m $@ + +.ELSE # "$(SHL8FILTERFILE)"!="" +USE_SHL8VERSIONMAP=$(MISC)/$(SHL8TARGET).vmap +$(USE_SHL8VERSIONMAP) : +.IF "$(VERBOSE)" == "TRUE" + @echo ----------------------------- + @echo SHL8FILTERFILE not set! + @echo ----------------------------- + @$(TOUCH) $@ + @echo dummy file to keep the dependencies for later use. +.ELSE + @$(TOUCH) $@ +.ENDIF +# force_dmake_to_error +.ENDIF # "$(SHL8FILTERFILE)"!="" +.ELSE # "$(USE_SHL8VERSIONMAP)"!="" + +#and now for the plain non-generic way... +.IF "$(SHL8VERSIONMAP)"!="" +USE_SHL8VERSIONMAP=$(MISC)/$(SHL8VERSIONMAP:b)_$(SHL8TARGET)$(SHL8VERSIONMAP:e) +SHL8VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL8VERSIONMAP) + +.IF "$(OS)"=="MACOSX" +$(USE_SHL8VERSIONMAP): $(SHL8OBJS) $(SHL8LIBS) +.ENDIF + +# .ERRREMOVE is needed as a recipe line like "$(AWK) ... > $@" would create $@ +# even if the $(AWK) part fails: +$(USE_SHL8VERSIONMAP) .ERRREMOVE: $(SHL8VERSIONMAP) + @@-$(RM) -f $@ +# The following files will only be generated and needed on Mac OS X as temporary files +# in order to generate exported symbols list out of Linux/Solaris map files +.IF "$(OS)"=="MACOSX" + @-$(RM) -f $@.symregexp >& $(NULLDEV) + @-$(RM) -f $@.expsymlist >& $(NULLDEV) +.ENDIF +# Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what +# happens if somebody will change it in the future +.IF "$(COMID)"=="gcc3" + $(COMMAND_ECHO) tr -d "\015" < $(SHL8VERSIONMAP) | $(AWK) -f $(SOLARENV)/bin/addsym.awk > $@ +.ELIF "$(COMNAME)"=="sunpro5" + $(COMMAND_ECHO) tr -d "\015" < $(SHL8VERSIONMAP) | $(GREP) -v $(IGNORE_SYMBOLS) > $@ +.ELSE # "$(COMID)"=="gcc3" + $(COMMAND_ECHO) tr -d "\015" < $(SHL8VERSIONMAP) > $@ +.ENDIF # "$(COMID)"=="gcc3" + @chmod a+w $@ +# Mac OS X post-processing generate an exported symbols list from the generated map file +# for details on exported symbols list see man ld on Mac OS X +.IF "$(OS)"=="MACOSX" + @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep -v "\*\|?" > $@.exported-symbols + @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep "\*\|?" > $@.symbols-regexp +# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS +# Extract RTTI symbols from all the objects that will be used to build a shared library +.IF "$(SHL8OBJS)"!="" + -echo $(foreach,i,$(SHL8OBJS:s/.obj/.o/) $i) | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols +.ENDIF +.IF "$(SHL8LIBS)"!="" + $(COMMAND_ECHO)-$(TYPE) $(foreach,j,$(SHL8LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols +.ENDIF +# overwrite the map file generate into the local output tree with the generated +# exported symbols list + cp $@.exported-symbols $@ +.ENDIF # .IF "$(OS)"=="MACOSX" +.ENDIF # "$(SHL8VERSIONMAP)"!="" +.ENDIF # "$(USE_SHL8VERSIONMAP)"!="" +.ENDIF # "$(GUI)" != "UNX" + +.IF "$(UNIXVERSIONNAMES)"!="" +.IF "$(OS)"!="MACOSX" +.IF "$(GUI)"=="UNX" +SHL8SONAME=\"$(SONAME_SWITCH)$(SHL8TARGETN:f)\" +.ENDIF # "$(GUI)"!="UNX" +.ENDIF # "$(OS)"!="MACOSX" +.ENDIF # "$(UNIXVERSIONNAMES)"!="" + +.IF "$(SHL8RES)"!="" +SHL8ALLRES+=$(SHL8RES) +SHL8LINKRES*=$(MISC)/$(SHL8TARGET).res +SHL8LINKRESO*=$(MISC)/$(SHL8TARGET)_res.o +.ENDIF # "$(SHL8RES)"!="" + +.IF "$(SHL8DEFAULTRES)$(use_shl_versions)"!="" +SHL8DEFAULTRES*=$(MISC)/$(SHL8TARGET)_def.res +SHL8ALLRES+=$(SHL8DEFAULTRES) +SHL8LINKRES*=$(MISC)/$(SHL8TARGET).res +SHL8LINKRESO*=$(MISC)/$(SHL8TARGET)_res.o +.ENDIF # "$(SHL8DEFAULTRES)$(use_shl_versions)"!="" + +#.IF "$(SHL8TARGETN)"!="" + +.IF "$(linkinc)"!="" +.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2" +.IF "$(SHL8LIBS)"!="" +$(MISC)/$(SHL8TARGET)_linkinc.ls .PHONY: + @@-$(RM) $@ + $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL8LIBS) $(i:s/.lib/.lin/)) >> $@ +.ENDIF # "$(SHL8LIBS)"!="" +.ENDIF + +LINKINCTARGETS+=$(MISC)/$(SHL8TARGETN:b)_linkinc.ls +$(SHL8TARGETN) : $(LINKINCTARGETS) + +.ELSE +.IF "$(SHL8USE_EXPORTS)"=="name" +.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2" +.IF "$(COM)"!="GCC" +.IF "$(SHL8LIBS)"!="" +SHL8LINKLIST=$(MISC)/$(SHL8TARGET)_link.lst +SHL8LINKLISTPARAM=@$(SHL8LINKLIST) +$(SHL8LINKLIST) : $(SHL8LIBS) + @@-$(RM) $@ + $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL8LIBS) $(i:s/.lib/.lin/)) >> $@ +.ENDIF # "$(SHL8LIBS)"!="" +.ENDIF # "$(COM)"!="GCC" +.ENDIF +.ENDIF # "$(SHL8USE_EXPORTS)"=="name" + +$(MISC)/%linkinc.ls: + @echo . > $@ +.ENDIF # "$(linkinc)"!="" + +.IF "$(GUI)" == "OS2" +#21/02/2006 YD dll names must be 8.3, invoke fix script +#check osl/os2/module.c/osl_loadModule() +SHL8TARGET8=$(shell @fix_shl $(SHL8TARGET)) +.ENDIF + +.IF "$(GUI)" == "OS2" +_SHL8IMP_ORD = $(SHL8STDLIBS:^"$(SOLARVERSION)/$(INPATH)/lib/") $(SHL8STDLIBS:^"$(LB)/") +SHL8IMP_ORD = $(foreach,i,$(_SHL8IMP_ORD) $(shell @-ls $i)) +.ELSE +SHL8IMP_ORD = +.ENDIF + + +$(SHL8TARGETN) : \ + $(SHL8OBJS)\ + $(SHL8LIBS)\ + $(USE_8IMPLIB_DEPS)\ + $(USE_SHL8DEF)\ + $(USE_SHL8VERSIONMAP)\ + $(SHL8RES)\ + $(SHL8DEPN) \ + $(SHL8IMP_ORD) \ + $(SHL8LINKLIST) + @echo "Making: " $(@:f) +.IF "$(GUI)" == "WNT" +.IF "$(SHL8DEFAULTRES)"!="" + @@-$(RM) $(MISC)/$(SHL8DEFAULTRES:b).rc +.IF "$(SHL8ICON)" != "" + @echo 1 ICON $(SHL8ICON) >> $(MISC)/$(SHL8DEFAULTRES:b).rc +.ENDIF +.IF "$(use_shl_versions)" != "" +.IF "$(SHL8ADD_VERINFO)"!="" + @echo $(EMQ)#include $(EMQ)"$(SHL8ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL8DEFAULTRES:b).rc +.ELSE # "$(SHL8ADD_VERINFO)"!="" + @echo $(EMQ)#define ADDITIONAL_VERINFO1 >> $(MISC)/$(SHL8DEFAULTRES:b).rc + @echo $(EMQ)#define ADDITIONAL_VERINFO2 >> $(MISC)/$(SHL8DEFAULTRES:b).rc + @echo $(EMQ)#define ADDITIONAL_VERINFO3 >> $(MISC)/$(SHL8DEFAULTRES:b).rc +.ENDIF # "$(SHL8ADD_VERINFO)"!="" + @echo $(EMQ)#define VERVARIANT $(BUILD) >> $(MISC)/$(SHL8DEFAULTRES:b).rc + @echo $(EMQ)#define ORG_NAME $(SHL8TARGET)$(DLLPOST) >> $(MISC)/$(SHL8DEFAULTRES:b).rc + @echo $(EMQ)#define INTERNAL_NAME $(SHL8TARGET:b) >> $(MISC)/$(SHL8DEFAULTRES:b).rc + @echo $(EMQ)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)/$(SHL8DEFAULTRES:b).rc +.ENDIF # "$(use_shl_versions)" != "" + $(COMMAND_ECHO)$(RC) -DWIN32 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL8DEFAULTRES:b).rc +.ENDIF # "$(SHL8DEFAULTRES)"!="" +.IF "$(SHL8ALLRES)"!="" + $(COMMAND_ECHO)$(TYPE) $(SHL8ALLRES) > $(SHL8LINKRES) +.IF "$(COM)"=="GCC" + windres $(SHL8LINKRES) $(SHL8LINKRESO) +.ENDIF # "$(COM)"=="GCC" +.ENDIF # "$(SHL8ALLRES)"!="" +.IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def + @echo dlltool --dllname $(SHL8TARGET)$(DLLPOST) \ + --kill-at \\ > $(MISC)/$(TARGET).$(@:b)_8.cmd + @noop $(assign ALL8OBJLIST:=$(STDOBJ) $(SHL8OBJS) $(SHL8LINKRESO) $(shell $(TYPE) /dev/null $(SHL8LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g)) +.IF "$(DEFLIB8NAME)"!="" # do not have to include objs + @noop $(assign DEF8OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB8NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g)) + @noop $(foreach,i,$(DEF8OBJLIST) $(assign ALL8OBJLIST:=$(ALL8OBJLIST:s?$i??))) +.ENDIF # "$(DEFLIB8NAME)"!="" + @echo --output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_8.cmd +.IF "$(SHL8DEF)"!="" + @echo --input-def $(SHL8DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_8.cmd +.ELSE + @echo $(SHL8VERSIONOBJ) $(SHL8DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_8.cmd +.ENDIF + @echo $(ALL8OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_8.cmd + @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \ + $(STDOBJ) $(SHL8VERSIONOBJ) $(SHL8DESCRIPTIONOBJ) $(SHL8OBJS) $(SHL8LINKRESO) \ + `$(TYPE) /dev/null $(SHL8LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \ + -Wl,--exclude-libs,ALL,--start-group $(SHL8STDLIBS) -Wl,--end-group \ + $(SHL8STDSHL) $(STDSHL8) $(MISC)/$(@:b)_exp.o $(MINGWSSTDENDOBJ) \ + -Wl,-Map,$(MISC)/$(@:b).map >> $(MISC)/$(TARGET).$(@:b)_8.cmd + .IF "$(VERBOSE)" == "TRUE" + @$(TYPE) $(MISC)/$(TARGET).$(@:b)_8.cmd + .ENDIF + @+source $(MISC)/$(TARGET).$(@:b)_8.cmd +.ELSE +.IF "$(linkinc)"=="" +.IF "$(SHL8USE_EXPORTS)"!="name" +.IF "$(USE_DEFFILE)"!="" + $(COMMAND_ECHO)$(SHL8LINKER) @$(mktmp \ + $(SHL8LINKFLAGS) \ + $(LINKFLAGSSHL) \ + $(SHL8STACK) $(SHL8BASEX) \ + -out:$@ \ + -map:$(MISC)/$(@:b).map \ + -def:$(SHL8DEF) \ + $(USE_8IMPLIB) \ + $(STDOBJ) \ + $(SHL8VERSIONOBJ) $(SHL8OBJS) \ + $(SHL8LIBS) \ + $(SHL8STDLIBS) \ + $(SHL8STDSHL) $(STDSHL8) \ + $(SHL8LINKRES) \ + ) $(LINKOUTPUTFILTER) +# double check if target was really written... still making sense? + @@$(LS) $@ + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ELSE # "$(USE_DEFFILE)"!="" + $(COMMAND_ECHO)$(SHL8LINKER) @$(mktmp $(SHL8LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL8BASEX) \ + $(SHL8STACK) -out:$(SHL8TARGETN) \ + -map:$(MISC)/$(@:B).map \ + $(LB)/$(SHL8IMPLIB).exp \ + $(STDOBJ) \ + $(SHL8OBJS) $(SHL8VERSIONOBJ) \ + $(SHL8LIBS) \ + $(SHL8STDLIBS) \ + $(SHL8STDSHL) $(STDSHL8) \ + $(SHL8LINKRES) \ + ) $(LINKOUTPUTFILTER) +# double check if target was really written... still making sense? + @@$(LS) $@ + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ENDIF # "$(USE_DEFFILE)"!="" +.ELSE # "$(SHL8USE_EXPORTS)"!="name" + $(COMMAND_ECHO)$(SHL8LINKER) @$(mktmp $(SHL8LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL8BASEX) \ + $(SHL8STACK) -out:$(SHL8TARGETN) \ + -map:$(MISC)/$(@:B).map \ + $(USE_8IMPLIB) \ + $(STDOBJ) \ + $(SHL8OBJS) $(SHL8VERSIONOBJ)) \ + $(SHL8LINKLISTPARAM) \ + @$(mktmp $(SHL8STDLIBS) \ + $(SHL8STDSHL) $(STDSHL8) \ + $(SHL8LINKRES) \ + ) + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ENDIF # "$(SHL8USE_EXPORTS)"!="name" +.ELSE # "$(linkinc)"=="" + $(COMMAND_ECHO)-$(RM) del $(MISC)/$(SHL8TARGET).lnk + $(COMMAND_ECHO)-$(RM) $(MISC)/$(SHL8TARGET).lst + $(COMMAND_ECHO)$(TYPE) $(mktmp \ + $(SHL8LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL8BASEX) \ + $(SHL8STACK) $(MAPFILE) \ + -out:$@ \ + $(LB)/$(SHL8IMPLIB).exp \ + $(STDOBJ) \ + $(SHL8OBJS) \ + $(SHL8STDLIBS) \ + $(SHL8STDSHL) $(STDSHL8) \ + $(SHL8LINKRES) \ + ) >> $(MISC)/$(SHL8TARGET).lnk + $(COMMAND_ECHO)$(TYPE) $(MISC)/$(SHL8TARGETN:b)_linkinc.ls >> $(MISC)/$(SHL8TARGET).lnk + $(COMMAND_ECHO)$(SHL8LINKER) @$(MISC)/$(SHL8TARGET).lnk + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ENDIF # "$(linkinc)"=="" +.ENDIF # "$(COM)"=="GCC" +.ENDIF # "$(GUI)" == "WNT" +.IF "$(GUI)"=="UNX" +.IF "$(OS)"=="MACOSX" + @-$(RM) $(MISC)/$(@:b).list + @-$(RM) $(MISC)/$(TARGET).$(@:b)_8.cmd + @echo $(STDSLO) $(SHL8OBJS:s/.obj/.o/) \ + $(SHL8VERSIONOBJ) \ + `cat /dev/null $(SHL8LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list + @echo -n $(SHL8LINKER) $(SHL8LINKFLAGS) $(SHL8VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \ + $(SHL8STDLIBS) $(SHL8ARCHIVES) $(SHL8STDSHL) $(STDSHL8) -filelist $(MISC)/$(@:b).list $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_8.cmd + @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \ + `cat $(MISC)/$(TARGET).$(@:b)_8.cmd` \ + >> $(MISC)/$(TARGET).$(@:b)_8.cmd + .IF "$(VERBOSE)" == "TRUE" + @cat $(MISC)/$(TARGET).$(@:b)_8.cmd + .ENDIF + @+source $(MISC)/$(TARGET).$(@:b)_8.cmd + @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \ + shl $(SHL8RPATH) $@ +.IF "$(SHL8CREATEJNILIB)"!="" + @echo "Making: " $(@:f).jnilib + @macosx-create-bundle $@ +.ENDIF # "$(SHL8CREATEJNILIB)"!="" +.IF "$(UPDATER)"=="YES" +.IF "$(SHL8NOCHECK)"=="" + $(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS8) $(SHL8TARGETN) +.ENDIF # "$(SHL8NOCHECK)"!="" +.ENDIF +.ELSE # "$(OS)"=="MACOSX" + @-$(RM) $(MISC)/$(TARGET).$(@:b)_8.cmd + @echo $(SHL8LINKER) $(SHL8LINKFLAGS) $(SHL8SONAME) $(LINKFLAGSSHL) $(SHL8VERSIONMAPPARA) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) $(STDSLO) $(SHL8OBJS:s/.obj/.o/) \ + $(SHL8VERSIONOBJ) -o $@ \ + `cat /dev/null $(SHL8LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \ + $(SHL8STDLIBS) $(SHL8ARCHIVES) $(SHL8STDSHL) $(STDSHL8) $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_8.cmd + .IF "$(VERBOSE)" == "TRUE" + @cat $(MISC)/$(TARGET).$(@:b)_8.cmd + .ENDIF + @+source $(MISC)/$(TARGET).$(@:b)_8.cmd +.IF "$(UPDATER)"=="YES" +.IF "$(SHL8NOCHECK)"=="" + $(COMMAND_ECHO)-$(RM) $(SHL8TARGETN:d)check_$(SHL8TARGETN:f) + $(COMMAND_ECHO)$(RENAME) $(SHL8TARGETN) $(SHL8TARGETN:d)check_$(SHL8TARGETN:f) +.IF "$(VERBOSE)"=="TRUE" + $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS8) $(SHL8TARGETN:d)check_$(SHL8TARGETN:f) +.ELSE + $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS8) -- -s $(SHL8TARGETN:d)check_$(SHL8TARGETN:f) +.ENDIF +.ENDIF # "$(SHL8NOCHECK)"!="" +.ENDIF # "$(UPDATER)"=="YES" +.ENDIF # "$(OS)"=="MACOSX" +.IF "$(UNIXVERSIONNAMES)"!="" + $(COMMAND_ECHO)$(RM) $(LB)/$(SHL8TARGETN:b) + $(COMMAND_ECHO)cd $(LB) && ln -s $(SHL8TARGETN:f) $(SHL8TARGETN:b) +.ENDIF # "$(UNIXVERSIONNAMES)"!="" +.IF "$(VERBOSE)" == "TRUE" + @ls -l $@ +.ENDIF +.ENDIF # "$(GUI)" == "UNX" + +.IF "$(GUI)" == "OS2" + +.IF "$(SHL8DEFAULTRES)"!="" + @+-$(RM) $(MISC)/$(SHL8DEFAULTRES:b).rc >& $(NULLDEV) +.IF "$(SHL8ICON)" != "" + @-+echo 1 ICON $(SHL8ICON) >> $(MISC)/$(SHL8DEFAULTRES:b).rc +.ENDIF +.IF "$(use_shl_versions)" != "" +.IF "$(SHL8ADD_VERINFO)"!="" + @-+echo $(EMQ)#include $(EMQ)"$(SHL8ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL8DEFAULTRES:b).rc +.ENDIF # "$(SHL8ADD_VERINFO)"!="" + @-+echo MENU 1 BEGIN END >> $(MISC)/$(SHL8DEFAULTRES:b).rc +# @-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)/$(SHL8DEFAULTRES:b).rc +.ENDIF # "$(use_shl_versions)" != "" +# YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR) + $(COMMAND_ECHO)$(RC) -r -DOS2 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL8DEFAULTRES:b).rc +.ENDIF # "$(SHL8DEFAULTRES)"!="" + +.IF "$(SHL8ALLRES)"!="" + $(COMMAND_ECHO)+$(TYPE) $(SHL8ALLRES) > $(SHL8LINKRES) +.ENDIF # "$(SHL8ALLRES)"!="" + +.IF "$(USE_DEFFILE)"!="" + + $(COMMAND_ECHO)$(SHL8LINKER) $(SHL8LINKFLAGS) $(LINKFLAGSSHL) -o $@ \ + $(SHL8DEF) \ + $(STDOBJ) \ + -L$(LB) \ + -L$(SOLARVERSION)/$(INPATH)/lib \ + $(SHL8OBJS) $(SHL8VERSIONOBJ) \ + $(SHL8LIBS) \ + $(SHL8STDLIBS:^"-l") \ + $(SHL8LINKRES) \ + $(SHL8STDSHL:^"-l") $(STDSHL8:^"-l") + +.ELSE # "$(USE_DEFFILE)"!="" + + $(COMMAND_ECHO)$(SHL8LINKER) -v $(SHL8LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL8BASEX) \ + $(SHL8STACK) -o $(SHL8TARGETN) \ + $(SHL8DEF) \ + $(STDOBJ) \ + -L$(LB) \ + -L$(SOLARVERSION)/$(INPATH)/lib \ + $(SHL8OBJS) $(SHL8VERSIONOBJ) \ + $(SHL8LIBS) \ + $(SHL8STDLIBS:^"-l") \ + $(SHL8LINKRES) \ + $(SHL8STDSHL:^"-l") $(STDSHL8:^"-l") \ + $(LINKOUTPUTFILTER) + @$(LS) $@ >& $(NULLDEV) + +.ENDIF # "$(USE_DEFFILE)"!="" + +.IF "$(SHL8TARGET8)" != "$(SHL8TARGET)" + $(COMMAND_ECHO)+$(COPY) $@ $(@:d)$(SHL8TARGET8).dll +.ENDIF + +.ENDIF # "$(GUI)" == "OS2" + +.ENDIF # "$(SHL8TARGETN)"!="" + +# unroll begin + +.IF "$(SHL9TARGETN)"!="" + +.IF "$(OS)"=="AIX" +SHL9STDLIBS= +.ENDIF + +.IF "$(SHLLINKARCONLY)" != "" +SHL9STDLIBS= +STDSHL= +.ELSE +SHL9ARCHIVES= +.ENDIF + +# decide how to link +.IF "$(SHL9CODETYPE)"=="C" +SHL9LINKER=$(LINKC) +SHL9STDSHL=$(subst,CPPRUNTIME, $(STDSHL)) +SHL9LINKFLAGS+=$(LINKCFLAGS) +.ELSE # "$(SHL9CODETYPE)"=="C" +SHL9LINKER=$(LINK) +SHL9STDSHL=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDSHL)) +SHL9LINKFLAGS+=$(LINKFLAGS) +.ENDIF # "$(SHL9CODETYPE)"=="C" + +SHL9RPATH*=OOO +LINKFLAGSRUNPATH_$(SHL9RPATH)*=/ERROR:/Bad_SHL9RPATH_value +SHL9LINKFLAGS+=$(LINKFLAGSRUNPATH_$(SHL9RPATH)) + +.IF "$(SHL9USE_EXPORTS)"=="" +SHL9DEF*=$(MISC)/$(SHL9TARGET).def +.ENDIF # "$(SHL9USE_EXPORTS)"=="" + +EXTRALIBPATHS9=$(EXTRALIBPATHS) +.IF "$(UPDATER)"=="YES" +.IF "$(SHL9NOCHECK)"=="" +.IF "$(SOLAR_STLLIBPATH)"!="" +EXTRALIBPATHS9+=-L$(SOLAR_STLLIBPATH) +.ENDIF +.ENDIF # "$(SHL9NOCHECK)"!="" +.ENDIF +#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +#+++++++++++ version object ++++++++++++++++++++++++++++++++++++++++ +#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +.IF "$(L10N_framework)"=="" +.IF "$(VERSIONOBJ)"!="" +SHL9VERSIONOBJ:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL9TARGET))}$(VERSIONOBJ:f) +USE_VERSIONH:=$(INCCOM)/$(SHL9VERSIONOBJ:b).h +.IF "$(GUI)" == "UNX" +SHL9VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL9TARGET))}$(VERSIONOBJ:f:s/.o/.obj/) +.ELSE # "$(GUI)" == "UNX" +SHL9VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL9TARGET))}$(VERSIONOBJ:f) +.ENDIF # "$(GUI)" == "UNX" +$(MISC)/$(SHL9VERSIONOBJ:b).c : $(SOLARENV)/src/version.c $(INCCOM)/$(SHL9VERSIONOBJ:b).h +# $(COPY) $(SOLARENV)/src/version.c $@ + $(COMMAND_ECHO)$(TYPE) $(SOLARENV)/src/version.c | $(SED) s/_version.h/$(SHL9VERSIONOBJ:b).h/ > $@ + +.INIT : $(SHL9VERSIONOBJDEP) +.ENDIF # "$(VERSIONOBJ)"!="" +.ENDIF + +.IF "$(GUI)" != "UNX" +.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2" +.IF "$(SHL9IMPLIB)" == "" +SHL9IMPLIB=i$(TARGET)_t9 +.ENDIF # "$(SHL9IMPLIB)" == "" +.IF "$(COM)" != "GCC" +USE_9IMPLIB=-implib:$(LB)/$(SHL9IMPLIB).lib +.ENDIF # "$(COM)" != "GCC" +SHL9IMPLIBN=$(LB)/$(SHL9IMPLIB).lib +ALLTAR : $(SHL9IMPLIBN) + +.IF "$(USE_DEFFILE)"=="" +USE_9IMPLIB_DEPS=$(LB)/$(SHL9IMPLIB).lib +.ENDIF # "$(USE_DEFFILE)"=="" +.ENDIF # "$(GUI)" == "WNT" || "$(GUI)" == "OS2" +USE_SHL9DEF=$(SHL9DEF) +.ELSE # "$(GUI)" != "UNX" +USE_SHL9DEF= +SHL9DEPN+:=$(SHL9DEPNU) + +.IF "$(SHL9VERSIONMAP)"=="" +# to activate vmaps remove "#" +USE_SHL9VERSIONMAP=$(MISC)/$(SHL9TARGET).vmap +.ENDIF # "$(SHL9VERSIONMAP)"=="" + +.IF "$(USE_SHL9VERSIONMAP)"!="" + +.IF "$(SHL9FILTERFILE)"!="" +.IF "$(SHL9VERSIONMAP)"!="" +#eine von beiden ist zuviel +USE_SHL9VERSIONMAP=$(MISC)/$(SHL9TARGET).vmap +$(USE_SHL9VERSIONMAP) .PHONY: + @echo ----------------------------- + @echo you should only use versionmap OR exportfile + @echo ----------------------------- +# force_dmake_to_error + +.ENDIF # "$(SHL9VERSIONMAP)"!="" + +SHL9VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL9VERSIONMAP) + +$(USE_SHL9VERSIONMAP): \ + $(SHL9OBJS)\ + $(SHL9LIBS)\ + $(SHL9FILTERFILE) + @$(RM) $@.dump +.IF "$(SHL9OBJS)"!="" +# dump remaining objects on the fly +.IF "$(OS)"=="MACOSX" + @-nm $(SHL9OBJS:s/.obj/.o/) > $@.dump +.ELSE + @nm $(SHL9OBJS:s/.obj/.o/) > $@.dump +.ENDIF +.ENDIF # "$(SHL9OBJS)!"="" + @$(TYPE) /dev/null $(SHL9LIBS:s/.lib/.dump/) >> $@.dump + $(COMMAND_ECHO) $(PERL) $(SOLARENV)/bin/mapgen.pl -d $@.dump -s $(SHL9INTERFACE) -f $(SHL9FILTERFILE) -m $@ + +.ELSE # "$(SHL9FILTERFILE)"!="" +USE_SHL9VERSIONMAP=$(MISC)/$(SHL9TARGET).vmap +$(USE_SHL9VERSIONMAP) : +.IF "$(VERBOSE)" == "TRUE" + @echo ----------------------------- + @echo SHL9FILTERFILE not set! + @echo ----------------------------- + @$(TOUCH) $@ + @echo dummy file to keep the dependencies for later use. +.ELSE + @$(TOUCH) $@ +.ENDIF +# force_dmake_to_error +.ENDIF # "$(SHL9FILTERFILE)"!="" +.ELSE # "$(USE_SHL9VERSIONMAP)"!="" + +#and now for the plain non-generic way... +.IF "$(SHL9VERSIONMAP)"!="" +USE_SHL9VERSIONMAP=$(MISC)/$(SHL9VERSIONMAP:b)_$(SHL9TARGET)$(SHL9VERSIONMAP:e) +SHL9VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL9VERSIONMAP) + +.IF "$(OS)"=="MACOSX" +$(USE_SHL9VERSIONMAP): $(SHL9OBJS) $(SHL9LIBS) +.ENDIF + +# .ERRREMOVE is needed as a recipe line like "$(AWK) ... > $@" would create $@ +# even if the $(AWK) part fails: +$(USE_SHL9VERSIONMAP) .ERRREMOVE: $(SHL9VERSIONMAP) + @@-$(RM) -f $@ +# The following files will only be generated and needed on Mac OS X as temporary files +# in order to generate exported symbols list out of Linux/Solaris map files +.IF "$(OS)"=="MACOSX" + @-$(RM) -f $@.symregexp >& $(NULLDEV) + @-$(RM) -f $@.expsymlist >& $(NULLDEV) +.ENDIF +# Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what +# happens if somebody will change it in the future +.IF "$(COMID)"=="gcc3" + $(COMMAND_ECHO) tr -d "\015" < $(SHL9VERSIONMAP) | $(AWK) -f $(SOLARENV)/bin/addsym.awk > $@ +.ELIF "$(COMNAME)"=="sunpro5" + $(COMMAND_ECHO) tr -d "\015" < $(SHL9VERSIONMAP) | $(GREP) -v $(IGNORE_SYMBOLS) > $@ +.ELSE # "$(COMID)"=="gcc3" + $(COMMAND_ECHO) tr -d "\015" < $(SHL9VERSIONMAP) > $@ +.ENDIF # "$(COMID)"=="gcc3" + @chmod a+w $@ +# Mac OS X post-processing generate an exported symbols list from the generated map file +# for details on exported symbols list see man ld on Mac OS X +.IF "$(OS)"=="MACOSX" + @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep -v "\*\|?" > $@.exported-symbols + @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep "\*\|?" > $@.symbols-regexp +# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS +# Extract RTTI symbols from all the objects that will be used to build a shared library +.IF "$(SHL9OBJS)"!="" + -echo $(foreach,i,$(SHL9OBJS:s/.obj/.o/) $i) | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols +.ENDIF +.IF "$(SHL9LIBS)"!="" + $(COMMAND_ECHO)-$(TYPE) $(foreach,j,$(SHL9LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols +.ENDIF +# overwrite the map file generate into the local output tree with the generated +# exported symbols list + cp $@.exported-symbols $@ +.ENDIF # .IF "$(OS)"=="MACOSX" +.ENDIF # "$(SHL9VERSIONMAP)"!="" +.ENDIF # "$(USE_SHL9VERSIONMAP)"!="" +.ENDIF # "$(GUI)" != "UNX" + +.IF "$(UNIXVERSIONNAMES)"!="" +.IF "$(OS)"!="MACOSX" +.IF "$(GUI)"=="UNX" +SHL9SONAME=\"$(SONAME_SWITCH)$(SHL9TARGETN:f)\" +.ENDIF # "$(GUI)"!="UNX" +.ENDIF # "$(OS)"!="MACOSX" +.ENDIF # "$(UNIXVERSIONNAMES)"!="" + +.IF "$(SHL9RES)"!="" +SHL9ALLRES+=$(SHL9RES) +SHL9LINKRES*=$(MISC)/$(SHL9TARGET).res +SHL9LINKRESO*=$(MISC)/$(SHL9TARGET)_res.o +.ENDIF # "$(SHL9RES)"!="" + +.IF "$(SHL9DEFAULTRES)$(use_shl_versions)"!="" +SHL9DEFAULTRES*=$(MISC)/$(SHL9TARGET)_def.res +SHL9ALLRES+=$(SHL9DEFAULTRES) +SHL9LINKRES*=$(MISC)/$(SHL9TARGET).res +SHL9LINKRESO*=$(MISC)/$(SHL9TARGET)_res.o +.ENDIF # "$(SHL9DEFAULTRES)$(use_shl_versions)"!="" + +#.IF "$(SHL9TARGETN)"!="" + +.IF "$(linkinc)"!="" +.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2" +.IF "$(SHL9LIBS)"!="" +$(MISC)/$(SHL9TARGET)_linkinc.ls .PHONY: + @@-$(RM) $@ + $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL9LIBS) $(i:s/.lib/.lin/)) >> $@ +.ENDIF # "$(SHL9LIBS)"!="" +.ENDIF + +LINKINCTARGETS+=$(MISC)/$(SHL9TARGETN:b)_linkinc.ls +$(SHL9TARGETN) : $(LINKINCTARGETS) + +.ELSE +.IF "$(SHL9USE_EXPORTS)"=="name" +.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2" +.IF "$(COM)"!="GCC" +.IF "$(SHL9LIBS)"!="" +SHL9LINKLIST=$(MISC)/$(SHL9TARGET)_link.lst +SHL9LINKLISTPARAM=@$(SHL9LINKLIST) +$(SHL9LINKLIST) : $(SHL9LIBS) + @@-$(RM) $@ + $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL9LIBS) $(i:s/.lib/.lin/)) >> $@ +.ENDIF # "$(SHL9LIBS)"!="" +.ENDIF # "$(COM)"!="GCC" +.ENDIF +.ENDIF # "$(SHL9USE_EXPORTS)"=="name" + +$(MISC)/%linkinc.ls: + @echo . > $@ +.ENDIF # "$(linkinc)"!="" + +.IF "$(GUI)" == "OS2" +#21/02/2006 YD dll names must be 8.3, invoke fix script +#check osl/os2/module.c/osl_loadModule() +SHL9TARGET8=$(shell @fix_shl $(SHL9TARGET)) +.ENDIF + +.IF "$(GUI)" == "OS2" +_SHL9IMP_ORD = $(SHL9STDLIBS:^"$(SOLARVERSION)/$(INPATH)/lib/") $(SHL9STDLIBS:^"$(LB)/") +SHL9IMP_ORD = $(foreach,i,$(_SHL9IMP_ORD) $(shell @-ls $i)) +.ELSE +SHL9IMP_ORD = +.ENDIF + + +$(SHL9TARGETN) : \ + $(SHL9OBJS)\ + $(SHL9LIBS)\ + $(USE_9IMPLIB_DEPS)\ + $(USE_SHL9DEF)\ + $(USE_SHL9VERSIONMAP)\ + $(SHL9RES)\ + $(SHL9DEPN) \ + $(SHL9IMP_ORD) \ + $(SHL9LINKLIST) + @echo "Making: " $(@:f) +.IF "$(GUI)" == "WNT" +.IF "$(SHL9DEFAULTRES)"!="" + @@-$(RM) $(MISC)/$(SHL9DEFAULTRES:b).rc +.IF "$(SHL9ICON)" != "" + @echo 1 ICON $(SHL9ICON) >> $(MISC)/$(SHL9DEFAULTRES:b).rc +.ENDIF +.IF "$(use_shl_versions)" != "" +.IF "$(SHL9ADD_VERINFO)"!="" + @echo $(EMQ)#include $(EMQ)"$(SHL9ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL9DEFAULTRES:b).rc +.ELSE # "$(SHL9ADD_VERINFO)"!="" + @echo $(EMQ)#define ADDITIONAL_VERINFO1 >> $(MISC)/$(SHL9DEFAULTRES:b).rc + @echo $(EMQ)#define ADDITIONAL_VERINFO2 >> $(MISC)/$(SHL9DEFAULTRES:b).rc + @echo $(EMQ)#define ADDITIONAL_VERINFO3 >> $(MISC)/$(SHL9DEFAULTRES:b).rc +.ENDIF # "$(SHL9ADD_VERINFO)"!="" + @echo $(EMQ)#define VERVARIANT $(BUILD) >> $(MISC)/$(SHL9DEFAULTRES:b).rc + @echo $(EMQ)#define ORG_NAME $(SHL9TARGET)$(DLLPOST) >> $(MISC)/$(SHL9DEFAULTRES:b).rc + @echo $(EMQ)#define INTERNAL_NAME $(SHL9TARGET:b) >> $(MISC)/$(SHL9DEFAULTRES:b).rc + @echo $(EMQ)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)/$(SHL9DEFAULTRES:b).rc +.ENDIF # "$(use_shl_versions)" != "" + $(COMMAND_ECHO)$(RC) -DWIN32 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL9DEFAULTRES:b).rc +.ENDIF # "$(SHL9DEFAULTRES)"!="" +.IF "$(SHL9ALLRES)"!="" + $(COMMAND_ECHO)$(TYPE) $(SHL9ALLRES) > $(SHL9LINKRES) +.IF "$(COM)"=="GCC" + windres $(SHL9LINKRES) $(SHL9LINKRESO) +.ENDIF # "$(COM)"=="GCC" +.ENDIF # "$(SHL9ALLRES)"!="" +.IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def + @echo dlltool --dllname $(SHL9TARGET)$(DLLPOST) \ + --kill-at \\ > $(MISC)/$(TARGET).$(@:b)_9.cmd + @noop $(assign ALL9OBJLIST:=$(STDOBJ) $(SHL9OBJS) $(SHL9LINKRESO) $(shell $(TYPE) /dev/null $(SHL9LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g)) +.IF "$(DEFLIB9NAME)"!="" # do not have to include objs + @noop $(assign DEF9OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB9NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g)) + @noop $(foreach,i,$(DEF9OBJLIST) $(assign ALL9OBJLIST:=$(ALL9OBJLIST:s?$i??))) +.ENDIF # "$(DEFLIB9NAME)"!="" + @echo --output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_9.cmd +.IF "$(SHL9DEF)"!="" + @echo --input-def $(SHL9DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_9.cmd +.ELSE + @echo $(SHL9VERSIONOBJ) $(SHL9DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_9.cmd +.ENDIF + @echo $(ALL9OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_9.cmd + @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \ + $(STDOBJ) $(SHL9VERSIONOBJ) $(SHL9DESCRIPTIONOBJ) $(SHL9OBJS) $(SHL9LINKRESO) \ + `$(TYPE) /dev/null $(SHL9LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \ + -Wl,--exclude-libs,ALL,--start-group $(SHL9STDLIBS) -Wl,--end-group \ + $(SHL9STDSHL) $(STDSHL9) $(MISC)/$(@:b)_exp.o $(MINGWSSTDENDOBJ) \ + -Wl,-Map,$(MISC)/$(@:b).map >> $(MISC)/$(TARGET).$(@:b)_9.cmd + .IF "$(VERBOSE)" == "TRUE" + @$(TYPE) $(MISC)/$(TARGET).$(@:b)_9.cmd + .ENDIF + @+source $(MISC)/$(TARGET).$(@:b)_9.cmd +.ELSE +.IF "$(linkinc)"=="" +.IF "$(SHL9USE_EXPORTS)"!="name" +.IF "$(USE_DEFFILE)"!="" + $(COMMAND_ECHO)$(SHL9LINKER) @$(mktmp \ + $(SHL9LINKFLAGS) \ + $(LINKFLAGSSHL) \ + $(SHL9STACK) $(SHL9BASEX) \ + -out:$@ \ + -map:$(MISC)/$(@:b).map \ + -def:$(SHL9DEF) \ + $(USE_9IMPLIB) \ + $(STDOBJ) \ + $(SHL9VERSIONOBJ) $(SHL9OBJS) \ + $(SHL9LIBS) \ + $(SHL9STDLIBS) \ + $(SHL9STDSHL) $(STDSHL9) \ + $(SHL9LINKRES) \ + ) $(LINKOUTPUTFILTER) +# double check if target was really written... still making sense? + @@$(LS) $@ + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ELSE # "$(USE_DEFFILE)"!="" + $(COMMAND_ECHO)$(SHL9LINKER) @$(mktmp $(SHL9LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL9BASEX) \ + $(SHL9STACK) -out:$(SHL9TARGETN) \ + -map:$(MISC)/$(@:B).map \ + $(LB)/$(SHL9IMPLIB).exp \ + $(STDOBJ) \ + $(SHL9OBJS) $(SHL9VERSIONOBJ) \ + $(SHL9LIBS) \ + $(SHL9STDLIBS) \ + $(SHL9STDSHL) $(STDSHL9) \ + $(SHL9LINKRES) \ + ) $(LINKOUTPUTFILTER) +# double check if target was really written... still making sense? + @@$(LS) $@ + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ENDIF # "$(USE_DEFFILE)"!="" +.ELSE # "$(SHL9USE_EXPORTS)"!="name" + $(COMMAND_ECHO)$(SHL9LINKER) @$(mktmp $(SHL9LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL9BASEX) \ + $(SHL9STACK) -out:$(SHL9TARGETN) \ + -map:$(MISC)/$(@:B).map \ + $(USE_9IMPLIB) \ + $(STDOBJ) \ + $(SHL9OBJS) $(SHL9VERSIONOBJ)) \ + $(SHL9LINKLISTPARAM) \ + @$(mktmp $(SHL9STDLIBS) \ + $(SHL9STDSHL) $(STDSHL9) \ + $(SHL9LINKRES) \ + ) + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ENDIF # "$(SHL9USE_EXPORTS)"!="name" +.ELSE # "$(linkinc)"=="" + $(COMMAND_ECHO)-$(RM) del $(MISC)/$(SHL9TARGET).lnk + $(COMMAND_ECHO)-$(RM) $(MISC)/$(SHL9TARGET).lst + $(COMMAND_ECHO)$(TYPE) $(mktmp \ + $(SHL9LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL9BASEX) \ + $(SHL9STACK) $(MAPFILE) \ + -out:$@ \ + $(LB)/$(SHL9IMPLIB).exp \ + $(STDOBJ) \ + $(SHL9OBJS) \ + $(SHL9STDLIBS) \ + $(SHL9STDSHL) $(STDSHL9) \ + $(SHL9LINKRES) \ + ) >> $(MISC)/$(SHL9TARGET).lnk + $(COMMAND_ECHO)$(TYPE) $(MISC)/$(SHL9TARGETN:b)_linkinc.ls >> $(MISC)/$(SHL9TARGET).lnk + $(COMMAND_ECHO)$(SHL9LINKER) @$(MISC)/$(SHL9TARGET).lnk + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ENDIF # "$(linkinc)"=="" +.ENDIF # "$(COM)"=="GCC" +.ENDIF # "$(GUI)" == "WNT" +.IF "$(GUI)"=="UNX" +.IF "$(OS)"=="MACOSX" + @-$(RM) $(MISC)/$(@:b).list + @-$(RM) $(MISC)/$(TARGET).$(@:b)_9.cmd + @echo $(STDSLO) $(SHL9OBJS:s/.obj/.o/) \ + $(SHL9VERSIONOBJ) \ + `cat /dev/null $(SHL9LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list + @echo -n $(SHL9LINKER) $(SHL9LINKFLAGS) $(SHL9VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \ + $(SHL9STDLIBS) $(SHL9ARCHIVES) $(SHL9STDSHL) $(STDSHL9) -filelist $(MISC)/$(@:b).list $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_9.cmd + @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \ + `cat $(MISC)/$(TARGET).$(@:b)_9.cmd` \ + >> $(MISC)/$(TARGET).$(@:b)_9.cmd + .IF "$(VERBOSE)" == "TRUE" + @cat $(MISC)/$(TARGET).$(@:b)_9.cmd + .ENDIF + @+source $(MISC)/$(TARGET).$(@:b)_9.cmd + @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \ + shl $(SHL9RPATH) $@ +.IF "$(SHL9CREATEJNILIB)"!="" + @echo "Making: " $(@:f).jnilib + @macosx-create-bundle $@ +.ENDIF # "$(SHL9CREATEJNILIB)"!="" +.IF "$(UPDATER)"=="YES" +.IF "$(SHL9NOCHECK)"=="" + $(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS9) $(SHL9TARGETN) +.ENDIF # "$(SHL9NOCHECK)"!="" +.ENDIF +.ELSE # "$(OS)"=="MACOSX" + @-$(RM) $(MISC)/$(TARGET).$(@:b)_9.cmd + @echo $(SHL9LINKER) $(SHL9LINKFLAGS) $(SHL9SONAME) $(LINKFLAGSSHL) $(SHL9VERSIONMAPPARA) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) $(STDSLO) $(SHL9OBJS:s/.obj/.o/) \ + $(SHL9VERSIONOBJ) -o $@ \ + `cat /dev/null $(SHL9LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \ + $(SHL9STDLIBS) $(SHL9ARCHIVES) $(SHL9STDSHL) $(STDSHL9) $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_9.cmd + .IF "$(VERBOSE)" == "TRUE" + @cat $(MISC)/$(TARGET).$(@:b)_9.cmd + .ENDIF + @+source $(MISC)/$(TARGET).$(@:b)_9.cmd +.IF "$(UPDATER)"=="YES" +.IF "$(SHL9NOCHECK)"=="" + $(COMMAND_ECHO)-$(RM) $(SHL9TARGETN:d)check_$(SHL9TARGETN:f) + $(COMMAND_ECHO)$(RENAME) $(SHL9TARGETN) $(SHL9TARGETN:d)check_$(SHL9TARGETN:f) +.IF "$(VERBOSE)"=="TRUE" + $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS9) $(SHL9TARGETN:d)check_$(SHL9TARGETN:f) +.ELSE + $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS9) -- -s $(SHL9TARGETN:d)check_$(SHL9TARGETN:f) +.ENDIF +.ENDIF # "$(SHL9NOCHECK)"!="" +.ENDIF # "$(UPDATER)"=="YES" +.ENDIF # "$(OS)"=="MACOSX" +.IF "$(UNIXVERSIONNAMES)"!="" + $(COMMAND_ECHO)$(RM) $(LB)/$(SHL9TARGETN:b) + $(COMMAND_ECHO)cd $(LB) && ln -s $(SHL9TARGETN:f) $(SHL9TARGETN:b) +.ENDIF # "$(UNIXVERSIONNAMES)"!="" +.IF "$(VERBOSE)" == "TRUE" + @ls -l $@ +.ENDIF +.ENDIF # "$(GUI)" == "UNX" + +.IF "$(GUI)" == "OS2" + +.IF "$(SHL9DEFAULTRES)"!="" + @+-$(RM) $(MISC)/$(SHL9DEFAULTRES:b).rc >& $(NULLDEV) +.IF "$(SHL9ICON)" != "" + @-+echo 1 ICON $(SHL9ICON) >> $(MISC)/$(SHL9DEFAULTRES:b).rc +.ENDIF +.IF "$(use_shl_versions)" != "" +.IF "$(SHL9ADD_VERINFO)"!="" + @-+echo $(EMQ)#include $(EMQ)"$(SHL9ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL9DEFAULTRES:b).rc +.ENDIF # "$(SHL9ADD_VERINFO)"!="" + @-+echo MENU 1 BEGIN END >> $(MISC)/$(SHL9DEFAULTRES:b).rc +# @-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)/$(SHL9DEFAULTRES:b).rc +.ENDIF # "$(use_shl_versions)" != "" +# YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR) + $(COMMAND_ECHO)$(RC) -r -DOS2 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL9DEFAULTRES:b).rc +.ENDIF # "$(SHL9DEFAULTRES)"!="" + +.IF "$(SHL9ALLRES)"!="" + $(COMMAND_ECHO)+$(TYPE) $(SHL9ALLRES) > $(SHL9LINKRES) +.ENDIF # "$(SHL9ALLRES)"!="" + +.IF "$(USE_DEFFILE)"!="" + + $(COMMAND_ECHO)$(SHL9LINKER) $(SHL9LINKFLAGS) $(LINKFLAGSSHL) -o $@ \ + $(SHL9DEF) \ + $(STDOBJ) \ + -L$(LB) \ + -L$(SOLARVERSION)/$(INPATH)/lib \ + $(SHL9OBJS) $(SHL9VERSIONOBJ) \ + $(SHL9LIBS) \ + $(SHL9STDLIBS:^"-l") \ + $(SHL9LINKRES) \ + $(SHL9STDSHL:^"-l") $(STDSHL9:^"-l") + +.ELSE # "$(USE_DEFFILE)"!="" + + $(COMMAND_ECHO)$(SHL9LINKER) -v $(SHL9LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL9BASEX) \ + $(SHL9STACK) -o $(SHL9TARGETN) \ + $(SHL9DEF) \ + $(STDOBJ) \ + -L$(LB) \ + -L$(SOLARVERSION)/$(INPATH)/lib \ + $(SHL9OBJS) $(SHL9VERSIONOBJ) \ + $(SHL9LIBS) \ + $(SHL9STDLIBS:^"-l") \ + $(SHL9LINKRES) \ + $(SHL9STDSHL:^"-l") $(STDSHL9:^"-l") \ + $(LINKOUTPUTFILTER) + @$(LS) $@ >& $(NULLDEV) + +.ENDIF # "$(USE_DEFFILE)"!="" + +.IF "$(SHL9TARGET8)" != "$(SHL9TARGET)" + $(COMMAND_ECHO)+$(COPY) $@ $(@:d)$(SHL9TARGET8).dll +.ENDIF + +.ENDIF # "$(GUI)" == "OS2" + +.ENDIF # "$(SHL9TARGETN)"!="" + +# unroll begin + +.IF "$(SHL10TARGETN)"!="" + +.IF "$(OS)"=="AIX" +SHL10STDLIBS= +.ENDIF + +.IF "$(SHLLINKARCONLY)" != "" +SHL10STDLIBS= +STDSHL= +.ELSE +SHL10ARCHIVES= +.ENDIF + +# decide how to link +.IF "$(SHL10CODETYPE)"=="C" +SHL10LINKER=$(LINKC) +SHL10STDSHL=$(subst,CPPRUNTIME, $(STDSHL)) +SHL10LINKFLAGS+=$(LINKCFLAGS) +.ELSE # "$(SHL10CODETYPE)"=="C" +SHL10LINKER=$(LINK) +SHL10STDSHL=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDSHL)) +SHL10LINKFLAGS+=$(LINKFLAGS) +.ENDIF # "$(SHL10CODETYPE)"=="C" + +SHL10RPATH*=OOO +LINKFLAGSRUNPATH_$(SHL10RPATH)*=/ERROR:/Bad_SHL10RPATH_value +SHL10LINKFLAGS+=$(LINKFLAGSRUNPATH_$(SHL10RPATH)) + +.IF "$(SHL10USE_EXPORTS)"=="" +SHL10DEF*=$(MISC)/$(SHL10TARGET).def +.ENDIF # "$(SHL10USE_EXPORTS)"=="" + +EXTRALIBPATHS10=$(EXTRALIBPATHS) +.IF "$(UPDATER)"=="YES" +.IF "$(SHL10NOCHECK)"=="" +.IF "$(SOLAR_STLLIBPATH)"!="" +EXTRALIBPATHS10+=-L$(SOLAR_STLLIBPATH) +.ENDIF +.ENDIF # "$(SHL10NOCHECK)"!="" +.ENDIF +#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +#+++++++++++ version object ++++++++++++++++++++++++++++++++++++++++ +#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +.IF "$(L10N_framework)"=="" +.IF "$(VERSIONOBJ)"!="" +SHL10VERSIONOBJ:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL10TARGET))}$(VERSIONOBJ:f) +USE_VERSIONH:=$(INCCOM)/$(SHL10VERSIONOBJ:b).h +.IF "$(GUI)" == "UNX" +SHL10VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL10TARGET))}$(VERSIONOBJ:f:s/.o/.obj/) +.ELSE # "$(GUI)" == "UNX" +SHL10VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL10TARGET))}$(VERSIONOBJ:f) +.ENDIF # "$(GUI)" == "UNX" +$(MISC)/$(SHL10VERSIONOBJ:b).c : $(SOLARENV)/src/version.c $(INCCOM)/$(SHL10VERSIONOBJ:b).h +# $(COPY) $(SOLARENV)/src/version.c $@ + $(COMMAND_ECHO)$(TYPE) $(SOLARENV)/src/version.c | $(SED) s/_version.h/$(SHL10VERSIONOBJ:b).h/ > $@ + +.INIT : $(SHL10VERSIONOBJDEP) +.ENDIF # "$(VERSIONOBJ)"!="" +.ENDIF + +.IF "$(GUI)" != "UNX" +.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2" +.IF "$(SHL10IMPLIB)" == "" +SHL10IMPLIB=i$(TARGET)_t10 +.ENDIF # "$(SHL10IMPLIB)" == "" +.IF "$(COM)" != "GCC" +USE_10IMPLIB=-implib:$(LB)/$(SHL10IMPLIB).lib +.ENDIF # "$(COM)" != "GCC" +SHL10IMPLIBN=$(LB)/$(SHL10IMPLIB).lib +ALLTAR : $(SHL10IMPLIBN) + +.IF "$(USE_DEFFILE)"=="" +USE_10IMPLIB_DEPS=$(LB)/$(SHL10IMPLIB).lib +.ENDIF # "$(USE_DEFFILE)"=="" +.ENDIF # "$(GUI)" == "WNT" || "$(GUI)" == "OS2" +USE_SHL10DEF=$(SHL10DEF) +.ELSE # "$(GUI)" != "UNX" +USE_SHL10DEF= +SHL10DEPN+:=$(SHL10DEPNU) + +.IF "$(SHL10VERSIONMAP)"=="" +# to activate vmaps remove "#" +USE_SHL10VERSIONMAP=$(MISC)/$(SHL10TARGET).vmap +.ENDIF # "$(SHL10VERSIONMAP)"=="" + +.IF "$(USE_SHL10VERSIONMAP)"!="" + +.IF "$(SHL10FILTERFILE)"!="" +.IF "$(SHL10VERSIONMAP)"!="" +#eine von beiden ist zuviel +USE_SHL10VERSIONMAP=$(MISC)/$(SHL10TARGET).vmap +$(USE_SHL10VERSIONMAP) .PHONY: + @echo ----------------------------- + @echo you should only use versionmap OR exportfile + @echo ----------------------------- +# force_dmake_to_error + +.ENDIF # "$(SHL10VERSIONMAP)"!="" + +SHL10VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL10VERSIONMAP) + +$(USE_SHL10VERSIONMAP): \ + $(SHL10OBJS)\ + $(SHL10LIBS)\ + $(SHL10FILTERFILE) + @$(RM) $@.dump +.IF "$(SHL10OBJS)"!="" +# dump remaining objects on the fly +.IF "$(OS)"=="MACOSX" + @-nm $(SHL10OBJS:s/.obj/.o/) > $@.dump +.ELSE + @nm $(SHL10OBJS:s/.obj/.o/) > $@.dump +.ENDIF +.ENDIF # "$(SHL10OBJS)!"="" + @$(TYPE) /dev/null $(SHL10LIBS:s/.lib/.dump/) >> $@.dump + $(COMMAND_ECHO) $(PERL) $(SOLARENV)/bin/mapgen.pl -d $@.dump -s $(SHL10INTERFACE) -f $(SHL10FILTERFILE) -m $@ + +.ELSE # "$(SHL10FILTERFILE)"!="" +USE_SHL10VERSIONMAP=$(MISC)/$(SHL10TARGET).vmap +$(USE_SHL10VERSIONMAP) : +.IF "$(VERBOSE)" == "TRUE" + @echo ----------------------------- + @echo SHL10FILTERFILE not set! + @echo ----------------------------- + @$(TOUCH) $@ + @echo dummy file to keep the dependencies for later use. +.ELSE + @$(TOUCH) $@ +.ENDIF +# force_dmake_to_error +.ENDIF # "$(SHL10FILTERFILE)"!="" +.ELSE # "$(USE_SHL10VERSIONMAP)"!="" + +#and now for the plain non-generic way... +.IF "$(SHL10VERSIONMAP)"!="" +USE_SHL10VERSIONMAP=$(MISC)/$(SHL10VERSIONMAP:b)_$(SHL10TARGET)$(SHL10VERSIONMAP:e) +SHL10VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL10VERSIONMAP) + +.IF "$(OS)"=="MACOSX" +$(USE_SHL10VERSIONMAP): $(SHL10OBJS) $(SHL10LIBS) +.ENDIF + +# .ERRREMOVE is needed as a recipe line like "$(AWK) ... > $@" would create $@ +# even if the $(AWK) part fails: +$(USE_SHL10VERSIONMAP) .ERRREMOVE: $(SHL10VERSIONMAP) + @@-$(RM) -f $@ +# The following files will only be generated and needed on Mac OS X as temporary files +# in order to generate exported symbols list out of Linux/Solaris map files +.IF "$(OS)"=="MACOSX" + @-$(RM) -f $@.symregexp >& $(NULLDEV) + @-$(RM) -f $@.expsymlist >& $(NULLDEV) +.ENDIF +# Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what +# happens if somebody will change it in the future +.IF "$(COMID)"=="gcc3" + $(COMMAND_ECHO) tr -d "\015" < $(SHL10VERSIONMAP) | $(AWK) -f $(SOLARENV)/bin/addsym.awk > $@ +.ELIF "$(COMNAME)"=="sunpro5" + $(COMMAND_ECHO) tr -d "\015" < $(SHL10VERSIONMAP) | $(GREP) -v $(IGNORE_SYMBOLS) > $@ +.ELSE # "$(COMID)"=="gcc3" + $(COMMAND_ECHO) tr -d "\015" < $(SHL10VERSIONMAP) > $@ +.ENDIF # "$(COMID)"=="gcc3" + @chmod a+w $@ +# Mac OS X post-processing generate an exported symbols list from the generated map file +# for details on exported symbols list see man ld on Mac OS X +.IF "$(OS)"=="MACOSX" + @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep -v "\*\|?" > $@.exported-symbols + @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep "\*\|?" > $@.symbols-regexp +# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS +# Extract RTTI symbols from all the objects that will be used to build a shared library +.IF "$(SHL10OBJS)"!="" + -echo $(foreach,i,$(SHL10OBJS:s/.obj/.o/) $i) | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols +.ENDIF +.IF "$(SHL10LIBS)"!="" + $(COMMAND_ECHO)-$(TYPE) $(foreach,j,$(SHL10LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols +.ENDIF +# overwrite the map file generate into the local output tree with the generated +# exported symbols list + cp $@.exported-symbols $@ +.ENDIF # .IF "$(OS)"=="MACOSX" +.ENDIF # "$(SHL10VERSIONMAP)"!="" +.ENDIF # "$(USE_SHL10VERSIONMAP)"!="" +.ENDIF # "$(GUI)" != "UNX" + +.IF "$(UNIXVERSIONNAMES)"!="" +.IF "$(OS)"!="MACOSX" +.IF "$(GUI)"=="UNX" +SHL10SONAME=\"$(SONAME_SWITCH)$(SHL10TARGETN:f)\" +.ENDIF # "$(GUI)"!="UNX" +.ENDIF # "$(OS)"!="MACOSX" +.ENDIF # "$(UNIXVERSIONNAMES)"!="" + +.IF "$(SHL10RES)"!="" +SHL10ALLRES+=$(SHL10RES) +SHL10LINKRES*=$(MISC)/$(SHL10TARGET).res +SHL10LINKRESO*=$(MISC)/$(SHL10TARGET)_res.o +.ENDIF # "$(SHL10RES)"!="" + +.IF "$(SHL10DEFAULTRES)$(use_shl_versions)"!="" +SHL10DEFAULTRES*=$(MISC)/$(SHL10TARGET)_def.res +SHL10ALLRES+=$(SHL10DEFAULTRES) +SHL10LINKRES*=$(MISC)/$(SHL10TARGET).res +SHL10LINKRESO*=$(MISC)/$(SHL10TARGET)_res.o +.ENDIF # "$(SHL10DEFAULTRES)$(use_shl_versions)"!="" + +#.IF "$(SHL10TARGETN)"!="" + +.IF "$(linkinc)"!="" +.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2" +.IF "$(SHL10LIBS)"!="" +$(MISC)/$(SHL10TARGET)_linkinc.ls .PHONY: + @@-$(RM) $@ + $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL10LIBS) $(i:s/.lib/.lin/)) >> $@ +.ENDIF # "$(SHL10LIBS)"!="" +.ENDIF + +LINKINCTARGETS+=$(MISC)/$(SHL10TARGETN:b)_linkinc.ls +$(SHL10TARGETN) : $(LINKINCTARGETS) + +.ELSE +.IF "$(SHL10USE_EXPORTS)"=="name" +.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2" +.IF "$(COM)"!="GCC" +.IF "$(SHL10LIBS)"!="" +SHL10LINKLIST=$(MISC)/$(SHL10TARGET)_link.lst +SHL10LINKLISTPARAM=@$(SHL10LINKLIST) +$(SHL10LINKLIST) : $(SHL10LIBS) + @@-$(RM) $@ + $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL10LIBS) $(i:s/.lib/.lin/)) >> $@ +.ENDIF # "$(SHL10LIBS)"!="" +.ENDIF # "$(COM)"!="GCC" +.ENDIF +.ENDIF # "$(SHL10USE_EXPORTS)"=="name" + +$(MISC)/%linkinc.ls: + @echo . > $@ +.ENDIF # "$(linkinc)"!="" + +.IF "$(GUI)" == "OS2" +#21/02/2006 YD dll names must be 8.3, invoke fix script +#check osl/os2/module.c/osl_loadModule() +SHL10TARGET8=$(shell @fix_shl $(SHL10TARGET)) +.ENDIF + +.IF "$(GUI)" == "OS2" +_SHL10IMP_ORD = $(SHL10STDLIBS:^"$(SOLARVERSION)/$(INPATH)/lib/") $(SHL10STDLIBS:^"$(LB)/") +SHL10IMP_ORD = $(foreach,i,$(_SHL10IMP_ORD) $(shell @-ls $i)) +.ELSE +SHL10IMP_ORD = +.ENDIF + + +$(SHL10TARGETN) : \ + $(SHL10OBJS)\ + $(SHL10LIBS)\ + $(USE_10IMPLIB_DEPS)\ + $(USE_SHL10DEF)\ + $(USE_SHL10VERSIONMAP)\ + $(SHL10RES)\ + $(SHL10DEPN) \ + $(SHL10IMP_ORD) \ + $(SHL10LINKLIST) + @echo "Making: " $(@:f) +.IF "$(GUI)" == "WNT" +.IF "$(SHL10DEFAULTRES)"!="" + @@-$(RM) $(MISC)/$(SHL10DEFAULTRES:b).rc +.IF "$(SHL10ICON)" != "" + @echo 1 ICON $(SHL10ICON) >> $(MISC)/$(SHL10DEFAULTRES:b).rc +.ENDIF +.IF "$(use_shl_versions)" != "" +.IF "$(SHL10ADD_VERINFO)"!="" + @echo $(EMQ)#include $(EMQ)"$(SHL10ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL10DEFAULTRES:b).rc +.ELSE # "$(SHL10ADD_VERINFO)"!="" + @echo $(EMQ)#define ADDITIONAL_VERINFO1 >> $(MISC)/$(SHL10DEFAULTRES:b).rc + @echo $(EMQ)#define ADDITIONAL_VERINFO2 >> $(MISC)/$(SHL10DEFAULTRES:b).rc + @echo $(EMQ)#define ADDITIONAL_VERINFO3 >> $(MISC)/$(SHL10DEFAULTRES:b).rc +.ENDIF # "$(SHL10ADD_VERINFO)"!="" + @echo $(EMQ)#define VERVARIANT $(BUILD) >> $(MISC)/$(SHL10DEFAULTRES:b).rc + @echo $(EMQ)#define ORG_NAME $(SHL10TARGET)$(DLLPOST) >> $(MISC)/$(SHL10DEFAULTRES:b).rc + @echo $(EMQ)#define INTERNAL_NAME $(SHL10TARGET:b) >> $(MISC)/$(SHL10DEFAULTRES:b).rc + @echo $(EMQ)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)/$(SHL10DEFAULTRES:b).rc +.ENDIF # "$(use_shl_versions)" != "" + $(COMMAND_ECHO)$(RC) -DWIN32 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL10DEFAULTRES:b).rc +.ENDIF # "$(SHL10DEFAULTRES)"!="" +.IF "$(SHL10ALLRES)"!="" + $(COMMAND_ECHO)$(TYPE) $(SHL10ALLRES) > $(SHL10LINKRES) +.IF "$(COM)"=="GCC" + windres $(SHL10LINKRES) $(SHL10LINKRESO) +.ENDIF # "$(COM)"=="GCC" +.ENDIF # "$(SHL10ALLRES)"!="" +.IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def + @echo dlltool --dllname $(SHL10TARGET)$(DLLPOST) \ + --kill-at \\ > $(MISC)/$(TARGET).$(@:b)_10.cmd + @noop $(assign ALL10OBJLIST:=$(STDOBJ) $(SHL10OBJS) $(SHL10LINKRESO) $(shell $(TYPE) /dev/null $(SHL10LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g)) +.IF "$(DEFLIB10NAME)"!="" # do not have to include objs + @noop $(assign DEF10OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB10NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g)) + @noop $(foreach,i,$(DEF10OBJLIST) $(assign ALL10OBJLIST:=$(ALL10OBJLIST:s?$i??))) +.ENDIF # "$(DEFLIB10NAME)"!="" + @echo --output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_10.cmd +.IF "$(SHL10DEF)"!="" + @echo --input-def $(SHL10DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_10.cmd +.ELSE + @echo $(SHL10VERSIONOBJ) $(SHL10DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_10.cmd +.ENDIF + @echo $(ALL10OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_10.cmd + @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \ + $(STDOBJ) $(SHL10VERSIONOBJ) $(SHL10DESCRIPTIONOBJ) $(SHL10OBJS) $(SHL10LINKRESO) \ + `$(TYPE) /dev/null $(SHL10LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \ + -Wl,--exclude-libs,ALL,--start-group $(SHL10STDLIBS) -Wl,--end-group \ + $(SHL10STDSHL) $(STDSHL10) $(MISC)/$(@:b)_exp.o $(MINGWSSTDENDOBJ) \ + -Wl,-Map,$(MISC)/$(@:b).map >> $(MISC)/$(TARGET).$(@:b)_10.cmd + .IF "$(VERBOSE)" == "TRUE" + @$(TYPE) $(MISC)/$(TARGET).$(@:b)_10.cmd + .ENDIF + @+source $(MISC)/$(TARGET).$(@:b)_10.cmd +.ELSE +.IF "$(linkinc)"=="" +.IF "$(SHL10USE_EXPORTS)"!="name" +.IF "$(USE_DEFFILE)"!="" + $(COMMAND_ECHO)$(SHL10LINKER) @$(mktmp \ + $(SHL10LINKFLAGS) \ + $(LINKFLAGSSHL) \ + $(SHL10STACK) $(SHL10BASEX) \ + -out:$@ \ + -map:$(MISC)/$(@:b).map \ + -def:$(SHL10DEF) \ + $(USE_10IMPLIB) \ + $(STDOBJ) \ + $(SHL10VERSIONOBJ) $(SHL10OBJS) \ + $(SHL10LIBS) \ + $(SHL10STDLIBS) \ + $(SHL10STDSHL) $(STDSHL10) \ + $(SHL10LINKRES) \ + ) $(LINKOUTPUTFILTER) +# double check if target was really written... still making sense? + @@$(LS) $@ + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ELSE # "$(USE_DEFFILE)"!="" + $(COMMAND_ECHO)$(SHL10LINKER) @$(mktmp $(SHL10LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL10BASEX) \ + $(SHL10STACK) -out:$(SHL10TARGETN) \ + -map:$(MISC)/$(@:B).map \ + $(LB)/$(SHL10IMPLIB).exp \ + $(STDOBJ) \ + $(SHL10OBJS) $(SHL10VERSIONOBJ) \ + $(SHL10LIBS) \ + $(SHL10STDLIBS) \ + $(SHL10STDSHL) $(STDSHL10) \ + $(SHL10LINKRES) \ + ) $(LINKOUTPUTFILTER) +# double check if target was really written... still making sense? + @@$(LS) $@ + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ENDIF # "$(USE_DEFFILE)"!="" +.ELSE # "$(SHL10USE_EXPORTS)"!="name" + $(COMMAND_ECHO)$(SHL10LINKER) @$(mktmp $(SHL10LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL10BASEX) \ + $(SHL10STACK) -out:$(SHL10TARGETN) \ + -map:$(MISC)/$(@:B).map \ + $(USE_10IMPLIB) \ + $(STDOBJ) \ + $(SHL10OBJS) $(SHL10VERSIONOBJ)) \ + $(SHL10LINKLISTPARAM) \ + @$(mktmp $(SHL10STDLIBS) \ + $(SHL10STDSHL) $(STDSHL10) \ + $(SHL10LINKRES) \ + ) + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ENDIF # "$(SHL10USE_EXPORTS)"!="name" +.ELSE # "$(linkinc)"=="" + $(COMMAND_ECHO)-$(RM) del $(MISC)/$(SHL10TARGET).lnk + $(COMMAND_ECHO)-$(RM) $(MISC)/$(SHL10TARGET).lst + $(COMMAND_ECHO)$(TYPE) $(mktmp \ + $(SHL10LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL10BASEX) \ + $(SHL10STACK) $(MAPFILE) \ + -out:$@ \ + $(LB)/$(SHL10IMPLIB).exp \ + $(STDOBJ) \ + $(SHL10OBJS) \ + $(SHL10STDLIBS) \ + $(SHL10STDSHL) $(STDSHL10) \ + $(SHL10LINKRES) \ + ) >> $(MISC)/$(SHL10TARGET).lnk + $(COMMAND_ECHO)$(TYPE) $(MISC)/$(SHL10TARGETN:b)_linkinc.ls >> $(MISC)/$(SHL10TARGET).lnk + $(COMMAND_ECHO)$(SHL10LINKER) @$(MISC)/$(SHL10TARGET).lnk + @echo linking $@.manifest ... +.IF "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ENDIF # "$(linkinc)"=="" +.ENDIF # "$(COM)"=="GCC" +.ENDIF # "$(GUI)" == "WNT" +.IF "$(GUI)"=="UNX" +.IF "$(OS)"=="MACOSX" + @-$(RM) $(MISC)/$(@:b).list + @-$(RM) $(MISC)/$(TARGET).$(@:b)_10.cmd + @echo $(STDSLO) $(SHL10OBJS:s/.obj/.o/) \ + $(SHL10VERSIONOBJ) \ + `cat /dev/null $(SHL10LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list + @echo -n $(SHL10LINKER) $(SHL10LINKFLAGS) $(SHL10VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \ + $(SHL10STDLIBS) $(SHL10ARCHIVES) $(SHL10STDSHL) $(STDSHL10) -filelist $(MISC)/$(@:b).list $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_10.cmd + @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \ + `cat $(MISC)/$(TARGET).$(@:b)_10.cmd` \ + >> $(MISC)/$(TARGET).$(@:b)_10.cmd + .IF "$(VERBOSE)" == "TRUE" + @cat $(MISC)/$(TARGET).$(@:b)_10.cmd + .ENDIF + @+source $(MISC)/$(TARGET).$(@:b)_10.cmd + @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \ + shl $(SHL10RPATH) $@ +.IF "$(SHL10CREATEJNILIB)"!="" + @echo "Making: " $(@:f).jnilib + @macosx-create-bundle $@ +.ENDIF # "$(SHL10CREATEJNILIB)"!="" +.IF "$(UPDATER)"=="YES" +.IF "$(SHL10NOCHECK)"=="" + $(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS10) $(SHL10TARGETN) +.ENDIF # "$(SHL10NOCHECK)"!="" +.ENDIF +.ELSE # "$(OS)"=="MACOSX" + @-$(RM) $(MISC)/$(TARGET).$(@:b)_10.cmd + @echo $(SHL10LINKER) $(SHL10LINKFLAGS) $(SHL10SONAME) $(LINKFLAGSSHL) $(SHL10VERSIONMAPPARA) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) $(STDSLO) $(SHL10OBJS:s/.obj/.o/) \ + $(SHL10VERSIONOBJ) -o $@ \ + `cat /dev/null $(SHL10LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \ + $(SHL10STDLIBS) $(SHL10ARCHIVES) $(SHL10STDSHL) $(STDSHL10) $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_10.cmd + .IF "$(VERBOSE)" == "TRUE" + @cat $(MISC)/$(TARGET).$(@:b)_10.cmd + .ENDIF + @+source $(MISC)/$(TARGET).$(@:b)_10.cmd +.IF "$(UPDATER)"=="YES" +.IF "$(SHL10NOCHECK)"=="" + $(COMMAND_ECHO)-$(RM) $(SHL10TARGETN:d)check_$(SHL10TARGETN:f) + $(COMMAND_ECHO)$(RENAME) $(SHL10TARGETN) $(SHL10TARGETN:d)check_$(SHL10TARGETN:f) +.IF "$(VERBOSE)"=="TRUE" + $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS10) $(SHL10TARGETN:d)check_$(SHL10TARGETN:f) +.ELSE + $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS10) -- -s $(SHL10TARGETN:d)check_$(SHL10TARGETN:f) +.ENDIF +.ENDIF # "$(SHL10NOCHECK)"!="" +.ENDIF # "$(UPDATER)"=="YES" +.ENDIF # "$(OS)"=="MACOSX" +.IF "$(UNIXVERSIONNAMES)"!="" + $(COMMAND_ECHO)$(RM) $(LB)/$(SHL10TARGETN:b) + $(COMMAND_ECHO)cd $(LB) && ln -s $(SHL10TARGETN:f) $(SHL10TARGETN:b) +.ENDIF # "$(UNIXVERSIONNAMES)"!="" +.IF "$(VERBOSE)" == "TRUE" + @ls -l $@ +.ENDIF +.ENDIF # "$(GUI)" == "UNX" + +.IF "$(GUI)" == "OS2" + +.IF "$(SHL10DEFAULTRES)"!="" + @+-$(RM) $(MISC)/$(SHL10DEFAULTRES:b).rc >& $(NULLDEV) +.IF "$(SHL10ICON)" != "" + @-+echo 1 ICON $(SHL10ICON) >> $(MISC)/$(SHL10DEFAULTRES:b).rc +.ENDIF +.IF "$(use_shl_versions)" != "" +.IF "$(SHL10ADD_VERINFO)"!="" + @-+echo $(EMQ)#include $(EMQ)"$(SHL10ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL10DEFAULTRES:b).rc +.ENDIF # "$(SHL10ADD_VERINFO)"!="" + @-+echo MENU 1 BEGIN END >> $(MISC)/$(SHL10DEFAULTRES:b).rc +# @-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)/$(SHL10DEFAULTRES:b).rc +.ENDIF # "$(use_shl_versions)" != "" +# YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR) + $(COMMAND_ECHO)$(RC) -r -DOS2 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL10DEFAULTRES:b).rc +.ENDIF # "$(SHL10DEFAULTRES)"!="" + +.IF "$(SHL10ALLRES)"!="" + $(COMMAND_ECHO)+$(TYPE) $(SHL10ALLRES) > $(SHL10LINKRES) +.ENDIF # "$(SHL10ALLRES)"!="" + +.IF "$(USE_DEFFILE)"!="" + + $(COMMAND_ECHO)$(SHL10LINKER) $(SHL10LINKFLAGS) $(LINKFLAGSSHL) -o $@ \ + $(SHL10DEF) \ + $(STDOBJ) \ + -L$(LB) \ + -L$(SOLARVERSION)/$(INPATH)/lib \ + $(SHL10OBJS) $(SHL10VERSIONOBJ) \ + $(SHL10LIBS) \ + $(SHL10STDLIBS:^"-l") \ + $(SHL10LINKRES) \ + $(SHL10STDSHL:^"-l") $(STDSHL10:^"-l") + +.ELSE # "$(USE_DEFFILE)"!="" + + $(COMMAND_ECHO)$(SHL10LINKER) -v $(SHL10LINKFLAGS) \ + $(LINKFLAGSSHL) $(SHL10BASEX) \ + $(SHL10STACK) -o $(SHL10TARGETN) \ + $(SHL10DEF) \ + $(STDOBJ) \ + -L$(LB) \ + -L$(SOLARVERSION)/$(INPATH)/lib \ + $(SHL10OBJS) $(SHL10VERSIONOBJ) \ + $(SHL10LIBS) \ + $(SHL10STDLIBS:^"-l") \ + $(SHL10LINKRES) \ + $(SHL10STDSHL:^"-l") $(STDSHL10:^"-l") \ + $(LINKOUTPUTFILTER) + @$(LS) $@ >& $(NULLDEV) + +.ENDIF # "$(USE_DEFFILE)"!="" + +.IF "$(SHL10TARGET8)" != "$(SHL10TARGET)" + $(COMMAND_ECHO)+$(COPY) $@ $(@:d)$(SHL10TARGET8).dll +.ENDIF + +.ENDIF # "$(GUI)" == "OS2" + +.ENDIF # "$(SHL10TARGETN)"!="" + +# unroll begin + +.IF "$(SHL1IMPLIBN)" != "" + +.IF "$(UPDATER)"=="YES" +USELIB1DEPN+=$(SHL1LIBS) +.ELSE +.ENDIF + +.IF "$(USE_DEFFILE)"!="" +USE_SHL1TARGET=$(SHL1TARGETN) +.ENDIF + +.IF "$(GUI)" != "UNX" +$(SHL1IMPLIBN): \ + $(SHL1DEF) \ + $(USE_SHL1TARGET) \ + $(USELIB1DEPN) \ + $(USELIBDEPN) +.ELSE +$(SHL1IMPLIBN): \ + $(SHL1LIBS) +.ENDIF + @echo "Making: " $(@:f) +.IF "$(GUI)" == "WNT" +.IF "$(COM)"=="GCC" + @echo no ImportLibs on mingw + @-$(RM) $@ + @$(TOUCH) $@ +.ELSE # "$(COM)=="GCC" +# bei use_deffile implib von linker erstellt +.IF "$(USE_DEFFILE)"=="" + $(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL1IMPLIBN) \ + -def:$(SHL1DEF) ) +.ELSE # "$(USE_DEFFILE)=="" + @echo build of $(SHL1TARGETN) creates $@ + @$(TOUCH) $@ +.ENDIF # "$(USE_DEFFILE)=="" +.ENDIF # "$(COM)"=="GCC" + +.ELIF "$(GUI)" == "OS2" + +# touch creates an empty file, but this is not good for emxomfar, so +# create a dummy lib here + $(COMMAND_ECHO)-$(LIBMGR) $(LIBFLAGS) $@ $(SHL1VERSIONOBJ) + +@echo build of $(SHL1TARGETN) creates $@ + +.ELSE + @echo no ImportLibs on Mac and *ix + @-$(RM) $@ + @$(TOUCH) $@ +.ENDIF +.ENDIF + +# unroll begin + +.IF "$(SHL2IMPLIBN)" != "" + +.IF "$(UPDATER)"=="YES" +USELIB2DEPN+=$(SHL2LIBS) +.ELSE +.ENDIF + +.IF "$(USE_DEFFILE)"!="" +USE_SHL2TARGET=$(SHL2TARGETN) +.ENDIF + +.IF "$(GUI)" != "UNX" +$(SHL2IMPLIBN): \ + $(SHL2DEF) \ + $(USE_SHL2TARGET) \ + $(USELIB2DEPN) \ + $(USELIBDEPN) +.ELSE +$(SHL2IMPLIBN): \ + $(SHL2LIBS) +.ENDIF + @echo "Making: " $(@:f) +.IF "$(GUI)" == "WNT" +.IF "$(COM)"=="GCC" + @echo no ImportLibs on mingw + @-$(RM) $@ + @$(TOUCH) $@ +.ELSE # "$(COM)=="GCC" +# bei use_deffile implib von linker erstellt +.IF "$(USE_DEFFILE)"=="" + $(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL2IMPLIBN) \ + -def:$(SHL2DEF) ) +.ELSE # "$(USE_DEFFILE)=="" + @echo build of $(SHL2TARGETN) creates $@ + @$(TOUCH) $@ +.ENDIF # "$(USE_DEFFILE)=="" +.ENDIF # "$(COM)"=="GCC" + +.ELIF "$(GUI)" == "OS2" + +# touch creates an empty file, but this is not good for emxomfar, so +# create a dummy lib here + $(COMMAND_ECHO)-$(LIBMGR) $(LIBFLAGS) $@ $(SHL2VERSIONOBJ) + +@echo build of $(SHL2TARGETN) creates $@ + +.ELSE + @echo no ImportLibs on Mac and *ix + @-$(RM) $@ + @$(TOUCH) $@ +.ENDIF +.ENDIF + +# unroll begin + +.IF "$(SHL3IMPLIBN)" != "" + +.IF "$(UPDATER)"=="YES" +USELIB3DEPN+=$(SHL3LIBS) +.ELSE +.ENDIF + +.IF "$(USE_DEFFILE)"!="" +USE_SHL3TARGET=$(SHL3TARGETN) +.ENDIF + +.IF "$(GUI)" != "UNX" +$(SHL3IMPLIBN): \ + $(SHL3DEF) \ + $(USE_SHL3TARGET) \ + $(USELIB3DEPN) \ + $(USELIBDEPN) +.ELSE +$(SHL3IMPLIBN): \ + $(SHL3LIBS) +.ENDIF + @echo "Making: " $(@:f) +.IF "$(GUI)" == "WNT" +.IF "$(COM)"=="GCC" + @echo no ImportLibs on mingw + @-$(RM) $@ + @$(TOUCH) $@ +.ELSE # "$(COM)=="GCC" +# bei use_deffile implib von linker erstellt +.IF "$(USE_DEFFILE)"=="" + $(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL3IMPLIBN) \ + -def:$(SHL3DEF) ) +.ELSE # "$(USE_DEFFILE)=="" + @echo build of $(SHL3TARGETN) creates $@ + @$(TOUCH) $@ +.ENDIF # "$(USE_DEFFILE)=="" +.ENDIF # "$(COM)"=="GCC" + +.ELIF "$(GUI)" == "OS2" + +# touch creates an empty file, but this is not good for emxomfar, so +# create a dummy lib here + $(COMMAND_ECHO)-$(LIBMGR) $(LIBFLAGS) $@ $(SHL3VERSIONOBJ) + +@echo build of $(SHL3TARGETN) creates $@ + +.ELSE + @echo no ImportLibs on Mac and *ix + @-$(RM) $@ + @$(TOUCH) $@ +.ENDIF +.ENDIF + +# unroll begin + +.IF "$(SHL4IMPLIBN)" != "" + +.IF "$(UPDATER)"=="YES" +USELIB4DEPN+=$(SHL4LIBS) +.ELSE +.ENDIF + +.IF "$(USE_DEFFILE)"!="" +USE_SHL4TARGET=$(SHL4TARGETN) +.ENDIF + +.IF "$(GUI)" != "UNX" +$(SHL4IMPLIBN): \ + $(SHL4DEF) \ + $(USE_SHL4TARGET) \ + $(USELIB4DEPN) \ + $(USELIBDEPN) +.ELSE +$(SHL4IMPLIBN): \ + $(SHL4LIBS) +.ENDIF + @echo "Making: " $(@:f) +.IF "$(GUI)" == "WNT" +.IF "$(COM)"=="GCC" + @echo no ImportLibs on mingw + @-$(RM) $@ + @$(TOUCH) $@ +.ELSE # "$(COM)=="GCC" +# bei use_deffile implib von linker erstellt +.IF "$(USE_DEFFILE)"=="" + $(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL4IMPLIBN) \ + -def:$(SHL4DEF) ) +.ELSE # "$(USE_DEFFILE)=="" + @echo build of $(SHL4TARGETN) creates $@ + @$(TOUCH) $@ +.ENDIF # "$(USE_DEFFILE)=="" +.ENDIF # "$(COM)"=="GCC" + +.ELIF "$(GUI)" == "OS2" + +# touch creates an empty file, but this is not good for emxomfar, so +# create a dummy lib here + $(COMMAND_ECHO)-$(LIBMGR) $(LIBFLAGS) $@ $(SHL4VERSIONOBJ) + +@echo build of $(SHL4TARGETN) creates $@ + +.ELSE + @echo no ImportLibs on Mac and *ix + @-$(RM) $@ + @$(TOUCH) $@ +.ENDIF +.ENDIF + +# unroll begin + +.IF "$(SHL5IMPLIBN)" != "" + +.IF "$(UPDATER)"=="YES" +USELIB5DEPN+=$(SHL5LIBS) +.ELSE +.ENDIF + +.IF "$(USE_DEFFILE)"!="" +USE_SHL5TARGET=$(SHL5TARGETN) +.ENDIF + +.IF "$(GUI)" != "UNX" +$(SHL5IMPLIBN): \ + $(SHL5DEF) \ + $(USE_SHL5TARGET) \ + $(USELIB5DEPN) \ + $(USELIBDEPN) +.ELSE +$(SHL5IMPLIBN): \ + $(SHL5LIBS) +.ENDIF + @echo "Making: " $(@:f) +.IF "$(GUI)" == "WNT" +.IF "$(COM)"=="GCC" + @echo no ImportLibs on mingw + @-$(RM) $@ + @$(TOUCH) $@ +.ELSE # "$(COM)=="GCC" +# bei use_deffile implib von linker erstellt +.IF "$(USE_DEFFILE)"=="" + $(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL5IMPLIBN) \ + -def:$(SHL5DEF) ) +.ELSE # "$(USE_DEFFILE)=="" + @echo build of $(SHL5TARGETN) creates $@ + @$(TOUCH) $@ +.ENDIF # "$(USE_DEFFILE)=="" +.ENDIF # "$(COM)"=="GCC" + +.ELIF "$(GUI)" == "OS2" + +# touch creates an empty file, but this is not good for emxomfar, so +# create a dummy lib here + $(COMMAND_ECHO)-$(LIBMGR) $(LIBFLAGS) $@ $(SHL5VERSIONOBJ) + +@echo build of $(SHL5TARGETN) creates $@ + +.ELSE + @echo no ImportLibs on Mac and *ix + @-$(RM) $@ + @$(TOUCH) $@ +.ENDIF +.ENDIF + +# unroll begin + +.IF "$(SHL6IMPLIBN)" != "" + +.IF "$(UPDATER)"=="YES" +USELIB6DEPN+=$(SHL6LIBS) +.ELSE +.ENDIF + +.IF "$(USE_DEFFILE)"!="" +USE_SHL6TARGET=$(SHL6TARGETN) +.ENDIF + +.IF "$(GUI)" != "UNX" +$(SHL6IMPLIBN): \ + $(SHL6DEF) \ + $(USE_SHL6TARGET) \ + $(USELIB6DEPN) \ + $(USELIBDEPN) +.ELSE +$(SHL6IMPLIBN): \ + $(SHL6LIBS) +.ENDIF + @echo "Making: " $(@:f) +.IF "$(GUI)" == "WNT" +.IF "$(COM)"=="GCC" + @echo no ImportLibs on mingw + @-$(RM) $@ + @$(TOUCH) $@ +.ELSE # "$(COM)=="GCC" +# bei use_deffile implib von linker erstellt +.IF "$(USE_DEFFILE)"=="" + $(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL6IMPLIBN) \ + -def:$(SHL6DEF) ) +.ELSE # "$(USE_DEFFILE)=="" + @echo build of $(SHL6TARGETN) creates $@ + @$(TOUCH) $@ +.ENDIF # "$(USE_DEFFILE)=="" +.ENDIF # "$(COM)"=="GCC" + +.ELIF "$(GUI)" == "OS2" + +# touch creates an empty file, but this is not good for emxomfar, so +# create a dummy lib here + $(COMMAND_ECHO)-$(LIBMGR) $(LIBFLAGS) $@ $(SHL6VERSIONOBJ) + +@echo build of $(SHL6TARGETN) creates $@ + +.ELSE + @echo no ImportLibs on Mac and *ix + @-$(RM) $@ + @$(TOUCH) $@ +.ENDIF +.ENDIF + +# unroll begin + +.IF "$(SHL7IMPLIBN)" != "" + +.IF "$(UPDATER)"=="YES" +USELIB7DEPN+=$(SHL7LIBS) +.ELSE +.ENDIF + +.IF "$(USE_DEFFILE)"!="" +USE_SHL7TARGET=$(SHL7TARGETN) +.ENDIF + +.IF "$(GUI)" != "UNX" +$(SHL7IMPLIBN): \ + $(SHL7DEF) \ + $(USE_SHL7TARGET) \ + $(USELIB7DEPN) \ + $(USELIBDEPN) +.ELSE +$(SHL7IMPLIBN): \ + $(SHL7LIBS) +.ENDIF + @echo "Making: " $(@:f) +.IF "$(GUI)" == "WNT" +.IF "$(COM)"=="GCC" + @echo no ImportLibs on mingw + @-$(RM) $@ + @$(TOUCH) $@ +.ELSE # "$(COM)=="GCC" +# bei use_deffile implib von linker erstellt +.IF "$(USE_DEFFILE)"=="" + $(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL7IMPLIBN) \ + -def:$(SHL7DEF) ) +.ELSE # "$(USE_DEFFILE)=="" + @echo build of $(SHL7TARGETN) creates $@ + @$(TOUCH) $@ +.ENDIF # "$(USE_DEFFILE)=="" +.ENDIF # "$(COM)"=="GCC" + +.ELIF "$(GUI)" == "OS2" + +# touch creates an empty file, but this is not good for emxomfar, so +# create a dummy lib here + $(COMMAND_ECHO)-$(LIBMGR) $(LIBFLAGS) $@ $(SHL7VERSIONOBJ) + +@echo build of $(SHL7TARGETN) creates $@ + +.ELSE + @echo no ImportLibs on Mac and *ix + @-$(RM) $@ + @$(TOUCH) $@ +.ENDIF +.ENDIF + +# unroll begin + +.IF "$(SHL8IMPLIBN)" != "" + +.IF "$(UPDATER)"=="YES" +USELIB8DEPN+=$(SHL8LIBS) +.ELSE +.ENDIF + +.IF "$(USE_DEFFILE)"!="" +USE_SHL8TARGET=$(SHL8TARGETN) +.ENDIF + +.IF "$(GUI)" != "UNX" +$(SHL8IMPLIBN): \ + $(SHL8DEF) \ + $(USE_SHL8TARGET) \ + $(USELIB8DEPN) \ + $(USELIBDEPN) +.ELSE +$(SHL8IMPLIBN): \ + $(SHL8LIBS) +.ENDIF + @echo "Making: " $(@:f) +.IF "$(GUI)" == "WNT" +.IF "$(COM)"=="GCC" + @echo no ImportLibs on mingw + @-$(RM) $@ + @$(TOUCH) $@ +.ELSE # "$(COM)=="GCC" +# bei use_deffile implib von linker erstellt +.IF "$(USE_DEFFILE)"=="" + $(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL8IMPLIBN) \ + -def:$(SHL8DEF) ) +.ELSE # "$(USE_DEFFILE)=="" + @echo build of $(SHL8TARGETN) creates $@ + @$(TOUCH) $@ +.ENDIF # "$(USE_DEFFILE)=="" +.ENDIF # "$(COM)"=="GCC" + +.ELIF "$(GUI)" == "OS2" + +# touch creates an empty file, but this is not good for emxomfar, so +# create a dummy lib here + $(COMMAND_ECHO)-$(LIBMGR) $(LIBFLAGS) $@ $(SHL8VERSIONOBJ) + +@echo build of $(SHL8TARGETN) creates $@ + +.ELSE + @echo no ImportLibs on Mac and *ix + @-$(RM) $@ + @$(TOUCH) $@ +.ENDIF +.ENDIF + +# unroll begin + +.IF "$(SHL9IMPLIBN)" != "" + +.IF "$(UPDATER)"=="YES" +USELIB9DEPN+=$(SHL9LIBS) +.ELSE +.ENDIF + +.IF "$(USE_DEFFILE)"!="" +USE_SHL9TARGET=$(SHL9TARGETN) +.ENDIF + +.IF "$(GUI)" != "UNX" +$(SHL9IMPLIBN): \ + $(SHL9DEF) \ + $(USE_SHL9TARGET) \ + $(USELIB9DEPN) \ + $(USELIBDEPN) +.ELSE +$(SHL9IMPLIBN): \ + $(SHL9LIBS) +.ENDIF + @echo "Making: " $(@:f) +.IF "$(GUI)" == "WNT" +.IF "$(COM)"=="GCC" + @echo no ImportLibs on mingw + @-$(RM) $@ + @$(TOUCH) $@ +.ELSE # "$(COM)=="GCC" +# bei use_deffile implib von linker erstellt +.IF "$(USE_DEFFILE)"=="" + $(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL9IMPLIBN) \ + -def:$(SHL9DEF) ) +.ELSE # "$(USE_DEFFILE)=="" + @echo build of $(SHL9TARGETN) creates $@ + @$(TOUCH) $@ +.ENDIF # "$(USE_DEFFILE)=="" +.ENDIF # "$(COM)"=="GCC" + +.ELIF "$(GUI)" == "OS2" + +# touch creates an empty file, but this is not good for emxomfar, so +# create a dummy lib here + $(COMMAND_ECHO)-$(LIBMGR) $(LIBFLAGS) $@ $(SHL9VERSIONOBJ) + +@echo build of $(SHL9TARGETN) creates $@ + +.ELSE + @echo no ImportLibs on Mac and *ix + @-$(RM) $@ + @$(TOUCH) $@ +.ENDIF +.ENDIF + +# unroll begin + +.IF "$(SHL10IMPLIBN)" != "" + +.IF "$(UPDATER)"=="YES" +USELIB10DEPN+=$(SHL10LIBS) +.ELSE +.ENDIF + +.IF "$(USE_DEFFILE)"!="" +USE_SHL10TARGET=$(SHL10TARGETN) +.ENDIF + +.IF "$(GUI)" != "UNX" +$(SHL10IMPLIBN): \ + $(SHL10DEF) \ + $(USE_SHL10TARGET) \ + $(USELIB10DEPN) \ + $(USELIBDEPN) +.ELSE +$(SHL10IMPLIBN): \ + $(SHL10LIBS) +.ENDIF + @echo "Making: " $(@:f) +.IF "$(GUI)" == "WNT" +.IF "$(COM)"=="GCC" + @echo no ImportLibs on mingw + @-$(RM) $@ + @$(TOUCH) $@ +.ELSE # "$(COM)=="GCC" +# bei use_deffile implib von linker erstellt +.IF "$(USE_DEFFILE)"=="" + $(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL10IMPLIBN) \ + -def:$(SHL10DEF) ) +.ELSE # "$(USE_DEFFILE)=="" + @echo build of $(SHL10TARGETN) creates $@ + @$(TOUCH) $@ +.ENDIF # "$(USE_DEFFILE)=="" +.ENDIF # "$(COM)"=="GCC" + +.ELIF "$(GUI)" == "OS2" + +# touch creates an empty file, but this is not good for emxomfar, so +# create a dummy lib here + $(COMMAND_ECHO)-$(LIBMGR) $(LIBFLAGS) $@ $(SHL10VERSIONOBJ) + +@echo build of $(SHL10TARGETN) creates $@ + +.ELSE + @echo no ImportLibs on Mac and *ix + @-$(RM) $@ + @$(TOUCH) $@ +.ENDIF +.ENDIF + |