diff options
Diffstat (limited to 'solenv/inc/tg_app.mk')
-rw-r--r-- | solenv/inc/tg_app.mk | 320 |
1 files changed, 320 insertions, 0 deletions
diff --git a/solenv/inc/tg_app.mk b/solenv/inc/tg_app.mk new file mode 100644 index 000000000000..29ea4ca9221a --- /dev/null +++ b/solenv/inc/tg_app.mk @@ -0,0 +1,320 @@ +#************************************************************************* +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# Copyright 2008 by Sun Microsystems, Inc. +# +# OpenOffice.org - a multi-platform office productivity suite +# +# $RCSfile: tg_app.mk,v $ +# +# $Revision: 1.75 $ +# +# This file is part of OpenOffice.org. +# +# OpenOffice.org is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License version 3 +# only, as published by the Free Software Foundation. +# +# OpenOffice.org is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License version 3 for more details +# (a copy is included in the LICENSE file that accompanied this code). +# +# You should have received a copy of the GNU Lesser General Public License +# version 3 along with OpenOffice.org. If not, see +# <http://www.openoffice.org/license.html> +# for a copy of the LGPLv3 License. +# +#************************************************************************* + +####################################################### +# instructions for linking +# unroll begin + +.IF "$(GUI)" == "OS2" && "$(TARGETTYPE)" == "GUI" +APP$(TNR)DEF = $(MISC)/$(APP$(TNR)TARGET).def +.ENDIF + +.IF "$(APP$(TNR)LINKTYPE)" != "" +#must be either STATIC or SHARED +APP$(TNR)LINKTYPEFLAG=$(APPLINK$(APP$(TNR)LINKTYPE)) +.ENDIF + +# decide how to link +.IF "$(APP$(TNR)CODETYPE)"=="C" +APP$(TNR)LINKER=$(LINKC) +APP$(TNR)STDLIB=$(subst,CPPRUNTIME, $(STDLIB)) +APP$(TNR)LINKFLAGS+=$(LINKCFLAGS) +.ELSE # "$(APP$(TNR)CODETYPE)"=="C" +APP$(TNR)LINKER=$(LINK) +APP$(TNR)STDLIB=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDLIB)) +APP$(TNR)LINKFLAGS+=$(LINKFLAGS) +.ENDIF # "$(APP$(TNR)CODETYPE)"=="C" + +APP$(TNR)RPATH*=OOO +LINKFLAGSRUNPATH_$(APP$(TNR)RPATH)*=/ERROR:/Bad_APP$(TNR)RPATH_value +.IF "$(OS)" != "MACOSX" +APP$(TNR)LINKFLAGS+=$(LINKFLAGSRUNPATH_$(APP$(TNR)RPATH)) +.ENDIF + +.IF "$(APP$(TNR)STACK)" != "" +.IF "$(LINKFLAGSTACK)" != "" +APP$(TNR)STACKN=$(LINKFLAGSTACK)$(APP$(TNR)STACK) +.ENDIF +.ELSE +APP$(TNR)STACKN= +.ENDIF + +.IF "$(APP$(TNR)NOSAL)"=="" +.IF "$(TARGETTYPE)" == "GUI" +APP$(TNR)OBJS+= $(STDOBJVCL) +.ENDIF +.ENDIF + +.IF "$(GUI)$(COM)" == "WNTGCC" +APP$(TNR)RESO= +.IF "$(APP$(TNR)LINKRES)" != "" || "$(APP$(TNR)RES)" != "" +APP$(TNR)RESO=$(MISC)/$(APP$(TNR)TARGET:b)_res.o +.ENDIF +.ENDIF + +.IF "$(GUI)" == "UNX" +APP$(TNR)DEPN+:=$(APP$(TNR)DEPNU) +USE_APP$(TNR)DEF= +.ENDIF + +.IF "$(APP$(TNR)TARGETN)"!="" + +.IF "$(APP$(TNR)PRODUCTNAME)"!="" +APP$(TNR)PRODUCTDEF+:=-DPRODUCT_NAME=\"$(APP$(TNR)PRODUCTNAME)\" +.ENDIF # "$(APP$(TNR)PRODUCTNAME)"!="" + +.IF "$(linkinc)"!="" +.IF "$(GUI)"=="WNT" || "$(GUI)"=="OS2" +.IF "$(APP$(TNR)LIBS)"!="" +$(MISC)/$(APP$(TNR)TARGET)_linkinc.ls .PHONY: + @@-$(RM) $@ + sed -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(APP$(TNR)LIBS) $(i:s/.lib/.lin/)) >> $@ +.ENDIF #"$(APP$(TNR)LIBS)"!="" +.ENDIF + +LINKINCTARGETS+=$(MISC)/$(APP$(TNR)TARGETN:b)_linkinc.ls +$(APP$(TNR)TARGETN) : $(LINKINCTARGETS) +.ENDIF # "$(linkinc)"!="" + +# Allow for target specific LIBSALCPPRT override +APP$(TNR)LIBSALCPPRT*=$(LIBSALCPPRT) + +.IF "$(GUI)" == "OS2" +_APP$(TNR)IMP_ORD = $(APP$(TNR)STDLIBS:^"$(SOLARVERSION)/$(INPATH)/lib/") $(APP$(TNR)STDLIBS:^"$(LB)/") +APP$(TNR)IMP_ORD = $(foreach,i,$(_APP$(TNR)IMP_ORD) $(shell @-ls $i)) +.ELSE +APP$(TNR)IMP_ORD = +.ENDIF + +$(APP$(TNR)TARGETN): $(APP$(TNR)OBJS) $(APP$(TNR)LIBS) \ + $(APP$(TNR)RES) \ + $(APP$(TNR)IMP_ORD) \ + $(APP$(TNR)ICON) $(APP$(TNR)DEPN) $(USE_APP$(TNR)DEF) + @echo "Making: " $(@:f) +.IF "$(GUI)"=="UNX" +.IF "$(OS)"=="MACOSX" + @echo unx + @-$(RM) $(MISC)/$(@:b).list + @-$(RM) $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd + @-$(RM) $(MISC)/$(@:b).strip + @echo $(STDSLO) $(APP$(TNR)OBJS:s/.obj/.o/) \ + `cat /dev/null $(APP$(TNR)LIBS) | sed s\#$(ROUT)\#$(OUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list + @echo -n $(APP$(TNR)LINKER) $(APP$(TNR)LINKFLAGS) $(LINKFLAGSAPP) -L$(PRJ)/$(INPATH)/lib $(SOLARLIB) -o $@ \ + $(APP$(TNR)LINKTYPEFLAG) $(APP$(TNR)STDLIBS) $(APP$(TNR)STDLIB) $(STDLIB$(TNR)) -filelist $(MISC)/$(@:b).list > $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd + @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \ + `cat $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd` \ + >> $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd + .IF "$(VERBOSE)" == "TRUE" + @cat $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd + .ENDIF + @+source $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd +# Need to strip __objcInit symbol to avoid duplicate symbols when loading +# libraries at runtime + @-nm $@ | grep -v ' U ' | $(AWK) '{ print $$NF }' | grep -F -x '__objcInit' > $(MISC)/$(@:b).strip + @strip -i -R $(MISC)/$(@:b).strip -X $@ + @ls -l $@ + @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \ + app $(APP$(TNR)RPATH) $@ +.IF "$(TARGETTYPE)"=="GUI" + @echo "Making: " $(@:f).app + @macosx-create-bundle $@ +.ENDIF # "$(TARGETTYPE)"=="GUI" +.ELSE # "$(OS)"=="MACOSX" + @echo unx + @-$(RM) $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd + @echo $(APP$(TNR)LINKER) $(APP$(TNR)LINKFLAGS) $(LINKFLAGSAPP) -L$(PRJ)/$(INPATH)/lib $(SOLARLIB) $(STDSLO) \ + $(APP$(TNR)OBJS:s/.obj/.o/) '\' > $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd + @cat $(mktmp /dev/null $(APP$(TNR)LIBS)) | xargs -n 1 cat | sed s\#$(ROUT)\#$(OUT)\#g | sed 's#$$# \\#' >> $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd + @echo $(APP$(TNR)LINKTYPEFLAG) $(APP$(TNR)LIBSALCPPRT) $(APP$(TNR)STDLIBS) $(APP$(TNR)STDLIB) $(STDLIB$(TNR)) -o $@ >> $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd + .IF "$(VERBOSE)" == "TRUE" + @cat $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd + .ENDIF + @+source $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd + .IF "$(VERBOSE)" == "TRUE" + @ls -l $@ + .ENDIF +.ENDIF # "$(OS)"=="MACOSX" +.ENDIF +.IF "$(GUI)" == "WNT" + @@-$(MKDIR) $(@:d:d) +.IF "$(APP$(TNR)LINKRES)" != "" + @@-$(RM) $(MISC)/$(APP$(TNR)LINKRES:b).rc +.IF "$(APP$(TNR)ICON)" != "" + @-echo 1 ICON $(EMQ)"$(APP$(TNR)ICON:s/\/\\/)$(EMQ)" >> $(MISC)/$(APP$(TNR)LINKRES:b).rc +.ENDIF # "$(APP$(TNR)ICON)" != "" +.IF "$(APP$(TNR)VERINFO)" != "" + @-echo $(EMQ)#define VERVARIANT $(BUILD) >> $(MISC)/$(APP$(TNR)LINKRES:b).rc + @-echo $(EMQ)#include $(EMQ)"$(APP$(TNR)VERINFO)$(EMQ)" >> $(MISC)/$(APP$(TNR)LINKRES:b).rc +.ENDIF # "$(APP$(TNR)VERINFO)" != "" + $(COMMAND_ECHO)$(RC) -DWIN32 $(APP$(TNR)PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP$(TNR)LINKRES:b).rc +.ENDIF # "$(APP$(TNR)LINKRES)" != "" +.IF "$(COM)" == "GCC" + @echo mingw +.IF "$(APP$(TNR)LINKRES)" != "" || "$(APP$(TNR)RES)" != "" + @cat $(APP$(TNR)LINKRES) $(subst,/res/,/res{$(subst,$(BIN), $(@:d))} $(APP$(TNR)RES)) > $(MISC)/$(@:b)_all.res + windres $(MISC)/$(@:b)_all.res $(APP$(TNR)RESO) +.ENDIF + @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSAPP) $(MINGWSSTDOBJ) -L$(PRJ)/$(INPATH)/lib $(SOLARLIB) $(STDSLO) \ + $(APP$(TNR)BASEX) $(APP$(TNR)STACKN) -o $@ $(APP$(TNR)OBJS) \ + -Wl,-Map,$(MISC)/$(@:b).map $(STDOBJ) $(APP$(TNR)RESO) \ + `$(TYPE) /dev/null $(APP$(TNR)LIBS) | sed s#$(ROUT)#$(OUT)#g` \ + $(APP_LINKTYPE) $(APP$(TNR)LIBSALCPPRT) \ + -Wl,--start-group $(APP$(TNR)STDLIBS) -Wl,--end-group $(APP$(TNR)STDLIB) \ + $(STDLIB$(TNR)) $(MINGWSSTDENDOBJ) > $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd + # need this empty line, else dmake somehow gets confused by the .IFs and .ENDIFs + .IF "$(VERBOSE)" == "TRUE" + @$(TYPE) $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd + .ENDIF + @+source $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd + @ls -l $@ +.ELSE # "$(COM)" == "GCC" +.IF "$(linkinc)" == "" + $(COMMAND_ECHO)$(APP$(TNR)LINKER) @$(mktmp \ + $(APP$(TNR)LINKFLAGS) \ + $(LINKFLAGSAPP) $(APP$(TNR)BASEX) \ + $(APP$(TNR)STACKN) \ + -out:$@ \ + -map:$(MISC)/{$(subst,/,_ $(APP$(TNR)TARGET)).map} \ + $(STDOBJ) \ + $(APP$(TNR)LINKRES) \ + $(APP$(TNR)RES) \ + $(APP$(TNR)OBJS) \ + $(APP$(TNR)LIBS) \ + $(APP$(TNR)STDLIBS) \ + $(APP$(TNR)STDLIB) $(STDLIB$(TNR)) \ + ) + @-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);1 $(FI) +.ELSE + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);1 $(FI) +.ENDIF # "$(VISTA_MANIFEST)"!="" + $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI) + $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI) +.ELSE + $(COMMAND_ECHO)-$(RM) $(MISC)\$(APP$(TNR)TARGET).lnk + $(COMMAND_ECHO)-$(RM) $(MISC)\$(APP$(TNR)TARGET).lst + $(COMMAND_ECHO)-$(RM) $(MISC)\linkobj.lst + for %_i in ($(MISC)\*.obj) do type %_i >> $(MISC)\linkobj.lst + type $(mktmp,$(MISC)\$(APP$(TNR)TARGET).lst + $(APP$(TNR)LINKFLAGS) \ + $(LINKFLAGSAPP) $(APP$(TNR)BASEX) \ + $(APP$(TNR)STACKN) \ + -out:$@ \ + $(STDOBJ) \ + $(APP$(TNR)LINKRES) \ + $(APP$(TNR)RES) \ + $(APP$(TNR)OBJS) \ + $(APP$(TNR)LIBS) \ + $(APP$(TNR)STDLIBS) \ + $(APP$(TNR)STDLIB) $(STDLIB$(TNR))) + $(COMMAND_ECHO)$(SED)$(SED) -e 's/\(\.\.\\\)\{2,4\}/..\\/g' $(MISC)\$(APP$(TNR)TARGETN:b)_linkobj.lst >> $(MISC)\$(APP$(TNR)TARGET).lst + $(COMMAND_ECHO)$(SED)$(IFEXIST) $(MISC)/$(APP$(TNR)TARGET).lst $(THEN) type $(MISC)/$(APP$(TNR)TARGET).lst >> $(MISC)/$(APP$(TNR)TARGET).lnk $(FI) + $(COMMAND_ECHO)$(SED)$(APP$(TNR)LINKER) @$(MISC)\$(APP$(TNR)TARGET).lnk +.ENDIF # "$(linkinc)" == "" +.ENDIF # "$(COM)" == "GCC" +.IF "$(APP$(TNR)TARGET)" == "loader" + $(COMMAND_ECHO)$(PERL) loader.pl $@ + $(COMMAND_ECHO)$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe + $(COMMAND_ECHO)$(RM) $@ + $(COMMAND_ECHO)$(RENAME) $(@:d)_new.exe $(@:d)loader.exe +.ENDIF # "$(TARGET)" == "setup" + +.ENDIF # "$(GUI)" == "WNT" + +.IF "$(GUI)" == "OS2" + @+-$(MKDIR) $(@:d:d) >& $(NULLDEV) +.IF "$(APP$(TNR)LINKRES)" != "" + @+-$(RM) $(MISC)/$(APP$(TNR)LINKRES:b).rc >& $(NULLDEV) +.IF "$(APP$(TNR)ICON)" != "" + @-+$(WRAPCMD) echo 1 ICON $(EMQ)"$(APP$(TNR)ICON)$(EMQ)" | $(SED) 'sX\\X\\\\Xg' >> $(MISC)/$(APP$(TNR)LINKRES:b).rc +.ENDIF # "$(APP$(TNR)ICON)" != "" +.IF "$(APP$(TNR)VERINFO)" != "" + @-+echo $(EMQ)#define VERVARIANT $(BUILD) >> $(MISC)/$(APP$(TNR)LINKRES:b).rc + @-+echo $(EMQ)#include $(EMQ)"$(APP$(TNR)VERINFO)$(EMQ)" >> $(MISC)/$(APP$(TNR)LINKRES:b).rc +.ENDIF # "$(APP$(TNR)VERINFO)" != "" + $(COMMAND_ECHO)$(RC) -r -DOS2 $(APP$(TNR)PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP$(TNR)LINKRES:b).rc +.ENDIF # "$(APP$(TNR)LINKRES)" != "" + +.IF "$(TARGETTYPE)" == "GUI" + @echo NAME $(APP$(TNR)TARGET) WINDOWAPI > $(MISC)/$(APP$(TNR)TARGET).def +.ENDIF + + .IF "$(VERBOSE)" == "TRUE" + @+echo $(APP$(TNR)LINKFLAGS) \ + $(LINKFLAGSAPP) $(APP$(TNR)BASEX) \ + $(APP$(TNR)STACKN) \ + -o $@ \ + -Zmap -L$(LB) \ + -L$(SOLARVERSION)/$(INPATH)/lib \ + $(STDOBJ) \ + $(APP$(TNR)LINKRES) \ + $(APP$(TNR)RES) \ + $(APP$(TNR)DEF) \ + $(APP$(TNR)OBJS) \ + $(APP$(TNR)LIBS) \ + $(APP$(TNR)STDLIBS:^"-l") \ + $(APP$(TNR)STDLIB:^"-l") $(STDLIB$(TNR):^"-l") + .ENDIF + $(COMMAND_ECHO)$(APP$(TNR)LINKER) -v \ + $(APP$(TNR)LINKFLAGS) \ + $(LINKFLAGSAPP) $(APP$(TNR)BASEX) \ + $(APP$(TNR)STACKN) \ + -o $@ \ + -Zmap -L$(LB) \ + -L$(SOLARVERSION)/$(INPATH)/lib \ + $(STDOBJ) \ + $(APP$(TNR)LINKRES) \ + $(APP$(TNR)RES) \ + $(APP$(TNR)DEF) \ + $(APP$(TNR)OBJS) \ + $(APP$(TNR)LIBS) \ + $(APP$(TNR)STDLIBS:^"-l") \ + $(APP$(TNR)STDLIB:^"-l") $(STDLIB$(TNR):^"-l") + + +.IF "$(APP$(TNR)TARGET)" == "loader" + $(COMMAND_ECHO)+$(PERL) loader.pl $@ + $(COMMAND_ECHO)+$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe + $(COMMAND_ECHO)+$(RM) $@ + $(COMMAND_ECHO)+$(RENAME) $(@:d)_new.exe $(@:d)loader.exe +.ENDIF # "$(TARGET)" == "setup" + +.ENDIF # "$(GUI)" == "OS2" + +.ENDIF # "$(APP$(TNR)TARGETN)"!="" + + +# Instruction for linking +# unroll end +####################################################### + |