[Libreoffice-commits] .: 9 commits - set_soenv.in solenv/gbuild solenv/inc
Tor Lillqvist
tml at kemper.freedesktop.org
Mon May 23 07:43:08 PDT 2011
set_soenv.in | 8
solenv/gbuild/BuildDirs.mk | 2
solenv/gbuild/gbuild.mk | 2
solenv/gbuild/platform/winmingw.mk | 12
solenv/inc/_tg_shl.mk | 730 ++++++++++++++++++++++++-------------
solenv/inc/libs.mk | 10
solenv/inc/tg_shl.mk | 71 ++-
solenv/inc/wntgcci.mk | 4
8 files changed, 563 insertions(+), 276 deletions(-)
New commits:
commit 39fb55a7783997ae3441d416caf819fc1fc56ffa
Author: Tor Lillqvist <tlillqvist at novell.com>
Date: Mon May 23 17:15:48 2011 +0300
Rework DLL creation code for MinGW (cross-)compilation
Don't run dlltool --output-exp to create a separate object file with
just export data (.edata section). In the case where at least one
function in the objects being linked has been explicitly marked for
export, GNU ld will not look for export information in the object
files anyway. At least the GetVersion() function seems to be marked
for export explicitly. Just pass the .def file when linking.
GNU ld since 2.17 supports @cmdfile syntax, just like MSVC tools, so
no need to create a separate shell command file and source that. (Why
that even would work better than just running the ld command with a
long command line directly, I don't know.)
Actually I don't know why even bother with the @cmdfile, after all we
mainly intend WNTGCC to be used when cross-compiling, and there are no
short command-line length restrictions on modern OSes from which one
might want to cross-compile. But oh well.
Pass the necessary -L switches, i.e. SOLARLIB, when linking with GNU
ld. (For MSVC, the ILIB environment variable is used.)
Produce the import library when linking, no need to have a separate
rule to produce an import library for WNTGCC.
Re-unroll tg_shl.mk into _tg_shl.mk with the recently unbroken
mkunroll tool.
diff --git a/solenv/inc/_tg_shl.mk b/solenv/inc/_tg_shl.mk
index f6b7cda..0ca9437 100644
--- a/solenv/inc/_tg_shl.mk
+++ b/solenv/inc/_tg_shl.mk
@@ -64,8 +64,11 @@ SHL1IMPLIB=i$(TARGET)_t1
.ENDIF # "$(SHL1IMPLIB)" == ""
.IF "$(COM)" != "GCC"
USE_1IMPLIB=-implib:$(LB)/$(SHL1IMPLIB).lib
-.ENDIF # "$(COM)" != "GCC"
SHL1IMPLIBN=$(LB)/$(SHL1IMPLIB).lib
+.ELSE
+SHL1IMPLIBN=$(LB)/lib$(SHL1IMPLIB).dll.a
+USE_1IMPLIB=-Wl,--out-implib=$(SHL1IMPLIBN)
+.ENDIF # "$(COM)" != "GCC"
ALLTAR : $(SHL1IMPLIBN)
.IF "$(USE_DEFFILE)"==""
@@ -282,30 +285,54 @@ $(SHL1TARGETN) : \
.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
+# GNU ld since 2.17 supports @cmdfile syntax
+.IF "$(USE_DEFFILE)"!=""
+ @$(COMMAND_ECHO)tmpfile=$(mktmp $(strip \
+ $(SHL1LINKFLAGS) \
+ $(LINKFLAGSSHL) \
+ $(SOLARLIB) \
+ $(MINGWSSTDOBJ) \
+ -o $@ \
+ -Wl,-Map,$(MISC)/$(@:b).map \
+ $(SHL1DEF) \
+ $(USE_1IMPLIB) \
+ $(STDOBJ) \
+ $(SHL1VERSIONOBJ) $(SHL1OBJS) \
+ $(subst,$(ROUT),$(PRJ)/$(ROUT) $(shell cat /dev/null $(SHL1LIBS))) \
+ -Wl,--exclude-libs,ALL,--start-group $(SHL1STDLIBS) -Wl,--end-group \
+ $(SHL1STDSHL) $(STDSHL1) \
+ $(SHL1LINKRESO) \
+ )) && echo -n "$(LINK) " && cat $$tmpfile && $(LINK) @$$tmpfile && $(RM) $$tmpfile
+.ELSE
@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` \
+ $(COMMAND_ECHO)$(DLLTOOL) @@(mktmp \
+ --dllname $(SHL1TARGET)$(DLLPOST) \
+ --kill-at \
+ --output-exp $(MISC)/$(@:b)_exp.o \
+ $(SHL1VERSIONOBJ) \
+ @(ALL1OBJLIST)
+ )
+ $(COMMAND_ECHO)$(LINK) @$(mktmp $(strip \
+ $(SHL1LINKFLAGS) \
+ $(LINKFLAGSSHL) \
+ $(SOLARLIB) \
+ $(MINGWSSTDOBJ) \
+ -o $@ \
+ -Wl,-Map,$(MISC)/$(@:b).map \
+ $(MISC)/$(@:b)_exp.o \
+ $(USE_1IMPLIB) \
+ $(STDOBJ) \
+ $(SHL1VERSIONOBJ) $(SHL1OBJS) \
+ $(subst,$(ROUT),$(PRJ)/$(ROUT) $(shell cat /dev/null $(SHL1LIBS))) \
-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
+ $(SHL1STDSHL) $(STDSHL1) \
+ $(SHL1LINKRESO) \
+ ))
+.ENDIF
.ELSE
.IF "$(linkinc)"==""
.IF "$(SHL1USE_EXPORTS)"!="name"
@@ -420,7 +447,7 @@ $(SHL1TARGETN) : \
@echo $(STDSLO) $(SHL1OBJS:s/.obj/.o/) \
$(SHL1VERSIONOBJ) \
`cat /dev/null $(SHL1LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
- @/bin/echo -n $(SHL1LINKER) $(SHL1LINKFLAGS) $(SHL1VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \
+ @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` \
@@ -539,8 +566,11 @@ SHL2IMPLIB=i$(TARGET)_t2
.ENDIF # "$(SHL2IMPLIB)" == ""
.IF "$(COM)" != "GCC"
USE_2IMPLIB=-implib:$(LB)/$(SHL2IMPLIB).lib
-.ENDIF # "$(COM)" != "GCC"
SHL2IMPLIBN=$(LB)/$(SHL2IMPLIB).lib
+.ELSE
+SHL2IMPLIBN=$(LB)/lib$(SHL2IMPLIB).dll.a
+USE_2IMPLIB=-Wl,--out-implib=$(SHL2IMPLIBN)
+.ENDIF # "$(COM)" != "GCC"
ALLTAR : $(SHL2IMPLIBN)
.IF "$(USE_DEFFILE)"==""
@@ -757,30 +787,54 @@ $(SHL2TARGETN) : \
.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
+# GNU ld since 2.17 supports @cmdfile syntax
+.IF "$(USE_DEFFILE)"!=""
+ @$(COMMAND_ECHO)tmpfile=$(mktmp $(strip \
+ $(SHL2LINKFLAGS) \
+ $(LINKFLAGSSHL) \
+ $(SOLARLIB) \
+ $(MINGWSSTDOBJ) \
+ -o $@ \
+ -Wl,-Map,$(MISC)/$(@:b).map \
+ $(SHL2DEF) \
+ $(USE_2IMPLIB) \
+ $(STDOBJ) \
+ $(SHL2VERSIONOBJ) $(SHL2OBJS) \
+ $(subst,$(ROUT),$(PRJ)/$(ROUT) $(shell cat /dev/null $(SHL2LIBS))) \
+ -Wl,--exclude-libs,ALL,--start-group $(SHL2STDLIBS) -Wl,--end-group \
+ $(SHL2STDSHL) $(STDSHL2) \
+ $(SHL2LINKRESO) \
+ )) && echo -n "$(LINK) " && cat $$tmpfile && $(LINK) @$$tmpfile && $(RM) $$tmpfile
+.ELSE
@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` \
+ $(COMMAND_ECHO)$(DLLTOOL) @@(mktmp \
+ --dllname $(SHL2TARGET)$(DLLPOST) \
+ --kill-at \
+ --output-exp $(MISC)/$(@:b)_exp.o \
+ $(SHL2VERSIONOBJ) \
+ @(ALL2OBJLIST)
+ )
+ $(COMMAND_ECHO)$(LINK) @$(mktmp $(strip \
+ $(SHL2LINKFLAGS) \
+ $(LINKFLAGSSHL) \
+ $(SOLARLIB) \
+ $(MINGWSSTDOBJ) \
+ -o $@ \
+ -Wl,-Map,$(MISC)/$(@:b).map \
+ $(MISC)/$(@:b)_exp.o \
+ $(USE_2IMPLIB) \
+ $(STDOBJ) \
+ $(SHL2VERSIONOBJ) $(SHL2OBJS) \
+ $(subst,$(ROUT),$(PRJ)/$(ROUT) $(shell cat /dev/null $(SHL2LIBS))) \
-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
+ $(SHL2STDSHL) $(STDSHL2) \
+ $(SHL2LINKRESO) \
+ ))
+.ENDIF
.ELSE
.IF "$(linkinc)"==""
.IF "$(SHL2USE_EXPORTS)"!="name"
@@ -895,7 +949,7 @@ $(SHL2TARGETN) : \
@echo $(STDSLO) $(SHL2OBJS:s/.obj/.o/) \
$(SHL2VERSIONOBJ) \
`cat /dev/null $(SHL2LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
- @/bin/echo -n $(SHL2LINKER) $(SHL2LINKFLAGS) $(SHL2VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \
+ @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` \
@@ -1014,8 +1068,11 @@ SHL3IMPLIB=i$(TARGET)_t3
.ENDIF # "$(SHL3IMPLIB)" == ""
.IF "$(COM)" != "GCC"
USE_3IMPLIB=-implib:$(LB)/$(SHL3IMPLIB).lib
-.ENDIF # "$(COM)" != "GCC"
SHL3IMPLIBN=$(LB)/$(SHL3IMPLIB).lib
+.ELSE
+SHL3IMPLIBN=$(LB)/lib$(SHL3IMPLIB).dll.a
+USE_3IMPLIB=-Wl,--out-implib=$(SHL3IMPLIBN)
+.ENDIF # "$(COM)" != "GCC"
ALLTAR : $(SHL3IMPLIBN)
.IF "$(USE_DEFFILE)"==""
@@ -1232,30 +1289,54 @@ $(SHL3TARGETN) : \
.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
+# GNU ld since 2.17 supports @cmdfile syntax
+.IF "$(USE_DEFFILE)"!=""
+ @$(COMMAND_ECHO)tmpfile=$(mktmp $(strip \
+ $(SHL3LINKFLAGS) \
+ $(LINKFLAGSSHL) \
+ $(SOLARLIB) \
+ $(MINGWSSTDOBJ) \
+ -o $@ \
+ -Wl,-Map,$(MISC)/$(@:b).map \
+ $(SHL3DEF) \
+ $(USE_3IMPLIB) \
+ $(STDOBJ) \
+ $(SHL3VERSIONOBJ) $(SHL3OBJS) \
+ $(subst,$(ROUT),$(PRJ)/$(ROUT) $(shell cat /dev/null $(SHL3LIBS))) \
+ -Wl,--exclude-libs,ALL,--start-group $(SHL3STDLIBS) -Wl,--end-group \
+ $(SHL3STDSHL) $(STDSHL3) \
+ $(SHL3LINKRESO) \
+ )) && echo -n "$(LINK) " && cat $$tmpfile && $(LINK) @$$tmpfile && $(RM) $$tmpfile
+.ELSE
@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` \
+ $(COMMAND_ECHO)$(DLLTOOL) @@(mktmp \
+ --dllname $(SHL3TARGET)$(DLLPOST) \
+ --kill-at \
+ --output-exp $(MISC)/$(@:b)_exp.o \
+ $(SHL3VERSIONOBJ) \
+ @(ALL3OBJLIST)
+ )
+ $(COMMAND_ECHO)$(LINK) @$(mktmp $(strip \
+ $(SHL3LINKFLAGS) \
+ $(LINKFLAGSSHL) \
+ $(SOLARLIB) \
+ $(MINGWSSTDOBJ) \
+ -o $@ \
+ -Wl,-Map,$(MISC)/$(@:b).map \
+ $(MISC)/$(@:b)_exp.o \
+ $(USE_3IMPLIB) \
+ $(STDOBJ) \
+ $(SHL3VERSIONOBJ) $(SHL3OBJS) \
+ $(subst,$(ROUT),$(PRJ)/$(ROUT) $(shell cat /dev/null $(SHL3LIBS))) \
-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
+ $(SHL3STDSHL) $(STDSHL3) \
+ $(SHL3LINKRESO) \
+ ))
+.ENDIF
.ELSE
.IF "$(linkinc)"==""
.IF "$(SHL3USE_EXPORTS)"!="name"
@@ -1370,7 +1451,7 @@ $(SHL3TARGETN) : \
@echo $(STDSLO) $(SHL3OBJS:s/.obj/.o/) \
$(SHL3VERSIONOBJ) \
`cat /dev/null $(SHL3LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
- @/bin/echo -n $(SHL3LINKER) $(SHL3LINKFLAGS) $(SHL3VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \
+ @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` \
@@ -1489,8 +1570,11 @@ SHL4IMPLIB=i$(TARGET)_t4
.ENDIF # "$(SHL4IMPLIB)" == ""
.IF "$(COM)" != "GCC"
USE_4IMPLIB=-implib:$(LB)/$(SHL4IMPLIB).lib
-.ENDIF # "$(COM)" != "GCC"
SHL4IMPLIBN=$(LB)/$(SHL4IMPLIB).lib
+.ELSE
+SHL4IMPLIBN=$(LB)/lib$(SHL4IMPLIB).dll.a
+USE_4IMPLIB=-Wl,--out-implib=$(SHL4IMPLIBN)
+.ENDIF # "$(COM)" != "GCC"
ALLTAR : $(SHL4IMPLIBN)
.IF "$(USE_DEFFILE)"==""
@@ -1707,30 +1791,54 @@ $(SHL4TARGETN) : \
.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
+# GNU ld since 2.17 supports @cmdfile syntax
+.IF "$(USE_DEFFILE)"!=""
+ @$(COMMAND_ECHO)tmpfile=$(mktmp $(strip \
+ $(SHL4LINKFLAGS) \
+ $(LINKFLAGSSHL) \
+ $(SOLARLIB) \
+ $(MINGWSSTDOBJ) \
+ -o $@ \
+ -Wl,-Map,$(MISC)/$(@:b).map \
+ $(SHL4DEF) \
+ $(USE_4IMPLIB) \
+ $(STDOBJ) \
+ $(SHL4VERSIONOBJ) $(SHL4OBJS) \
+ $(subst,$(ROUT),$(PRJ)/$(ROUT) $(shell cat /dev/null $(SHL4LIBS))) \
+ -Wl,--exclude-libs,ALL,--start-group $(SHL4STDLIBS) -Wl,--end-group \
+ $(SHL4STDSHL) $(STDSHL4) \
+ $(SHL4LINKRESO) \
+ )) && echo -n "$(LINK) " && cat $$tmpfile && $(LINK) @$$tmpfile && $(RM) $$tmpfile
+.ELSE
@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` \
+ $(COMMAND_ECHO)$(DLLTOOL) @@(mktmp \
+ --dllname $(SHL4TARGET)$(DLLPOST) \
+ --kill-at \
+ --output-exp $(MISC)/$(@:b)_exp.o \
+ $(SHL4VERSIONOBJ) \
+ @(ALL4OBJLIST)
+ )
+ $(COMMAND_ECHO)$(LINK) @$(mktmp $(strip \
+ $(SHL4LINKFLAGS) \
+ $(LINKFLAGSSHL) \
+ $(SOLARLIB) \
+ $(MINGWSSTDOBJ) \
+ -o $@ \
+ -Wl,-Map,$(MISC)/$(@:b).map \
+ $(MISC)/$(@:b)_exp.o \
+ $(USE_4IMPLIB) \
+ $(STDOBJ) \
+ $(SHL4VERSIONOBJ) $(SHL4OBJS) \
+ $(subst,$(ROUT),$(PRJ)/$(ROUT) $(shell cat /dev/null $(SHL4LIBS))) \
-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
+ $(SHL4STDSHL) $(STDSHL4) \
+ $(SHL4LINKRESO) \
+ ))
+.ENDIF
.ELSE
.IF "$(linkinc)"==""
.IF "$(SHL4USE_EXPORTS)"!="name"
@@ -1845,7 +1953,7 @@ $(SHL4TARGETN) : \
@echo $(STDSLO) $(SHL4OBJS:s/.obj/.o/) \
$(SHL4VERSIONOBJ) \
`cat /dev/null $(SHL4LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
- @/bin/echo -n $(SHL4LINKER) $(SHL4LINKFLAGS) $(SHL4VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \
+ @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` \
@@ -1964,8 +2072,11 @@ SHL5IMPLIB=i$(TARGET)_t5
.ENDIF # "$(SHL5IMPLIB)" == ""
.IF "$(COM)" != "GCC"
USE_5IMPLIB=-implib:$(LB)/$(SHL5IMPLIB).lib
-.ENDIF # "$(COM)" != "GCC"
SHL5IMPLIBN=$(LB)/$(SHL5IMPLIB).lib
+.ELSE
+SHL5IMPLIBN=$(LB)/lib$(SHL5IMPLIB).dll.a
+USE_5IMPLIB=-Wl,--out-implib=$(SHL5IMPLIBN)
+.ENDIF # "$(COM)" != "GCC"
ALLTAR : $(SHL5IMPLIBN)
.IF "$(USE_DEFFILE)"==""
@@ -2182,30 +2293,54 @@ $(SHL5TARGETN) : \
.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
+# GNU ld since 2.17 supports @cmdfile syntax
+.IF "$(USE_DEFFILE)"!=""
+ @$(COMMAND_ECHO)tmpfile=$(mktmp $(strip \
+ $(SHL5LINKFLAGS) \
+ $(LINKFLAGSSHL) \
+ $(SOLARLIB) \
+ $(MINGWSSTDOBJ) \
+ -o $@ \
+ -Wl,-Map,$(MISC)/$(@:b).map \
+ $(SHL5DEF) \
+ $(USE_5IMPLIB) \
+ $(STDOBJ) \
+ $(SHL5VERSIONOBJ) $(SHL5OBJS) \
+ $(subst,$(ROUT),$(PRJ)/$(ROUT) $(shell cat /dev/null $(SHL5LIBS))) \
+ -Wl,--exclude-libs,ALL,--start-group $(SHL5STDLIBS) -Wl,--end-group \
+ $(SHL5STDSHL) $(STDSHL5) \
+ $(SHL5LINKRESO) \
+ )) && echo -n "$(LINK) " && cat $$tmpfile && $(LINK) @$$tmpfile && $(RM) $$tmpfile
+.ELSE
@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` \
+ $(COMMAND_ECHO)$(DLLTOOL) @@(mktmp \
+ --dllname $(SHL5TARGET)$(DLLPOST) \
+ --kill-at \
+ --output-exp $(MISC)/$(@:b)_exp.o \
+ $(SHL5VERSIONOBJ) \
+ @(ALL5OBJLIST)
+ )
+ $(COMMAND_ECHO)$(LINK) @$(mktmp $(strip \
+ $(SHL5LINKFLAGS) \
+ $(LINKFLAGSSHL) \
+ $(SOLARLIB) \
+ $(MINGWSSTDOBJ) \
+ -o $@ \
+ -Wl,-Map,$(MISC)/$(@:b).map \
+ $(MISC)/$(@:b)_exp.o \
+ $(USE_5IMPLIB) \
+ $(STDOBJ) \
+ $(SHL5VERSIONOBJ) $(SHL5OBJS) \
+ $(subst,$(ROUT),$(PRJ)/$(ROUT) $(shell cat /dev/null $(SHL5LIBS))) \
-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
+ $(SHL5STDSHL) $(STDSHL5) \
+ $(SHL5LINKRESO) \
+ ))
+.ENDIF
.ELSE
.IF "$(linkinc)"==""
.IF "$(SHL5USE_EXPORTS)"!="name"
@@ -2320,7 +2455,7 @@ $(SHL5TARGETN) : \
@echo $(STDSLO) $(SHL5OBJS:s/.obj/.o/) \
$(SHL5VERSIONOBJ) \
`cat /dev/null $(SHL5LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
- @/bin/echo -n $(SHL5LINKER) $(SHL5LINKFLAGS) $(SHL5VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \
+ @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` \
@@ -2439,8 +2574,11 @@ SHL6IMPLIB=i$(TARGET)_t6
.ENDIF # "$(SHL6IMPLIB)" == ""
.IF "$(COM)" != "GCC"
USE_6IMPLIB=-implib:$(LB)/$(SHL6IMPLIB).lib
-.ENDIF # "$(COM)" != "GCC"
SHL6IMPLIBN=$(LB)/$(SHL6IMPLIB).lib
+.ELSE
+SHL6IMPLIBN=$(LB)/lib$(SHL6IMPLIB).dll.a
+USE_6IMPLIB=-Wl,--out-implib=$(SHL6IMPLIBN)
+.ENDIF # "$(COM)" != "GCC"
ALLTAR : $(SHL6IMPLIBN)
.IF "$(USE_DEFFILE)"==""
@@ -2657,30 +2795,54 @@ $(SHL6TARGETN) : \
.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
+# GNU ld since 2.17 supports @cmdfile syntax
+.IF "$(USE_DEFFILE)"!=""
+ @$(COMMAND_ECHO)tmpfile=$(mktmp $(strip \
+ $(SHL6LINKFLAGS) \
+ $(LINKFLAGSSHL) \
+ $(SOLARLIB) \
+ $(MINGWSSTDOBJ) \
+ -o $@ \
+ -Wl,-Map,$(MISC)/$(@:b).map \
+ $(SHL6DEF) \
+ $(USE_6IMPLIB) \
+ $(STDOBJ) \
+ $(SHL6VERSIONOBJ) $(SHL6OBJS) \
+ $(subst,$(ROUT),$(PRJ)/$(ROUT) $(shell cat /dev/null $(SHL6LIBS))) \
+ -Wl,--exclude-libs,ALL,--start-group $(SHL6STDLIBS) -Wl,--end-group \
+ $(SHL6STDSHL) $(STDSHL6) \
+ $(SHL6LINKRESO) \
+ )) && echo -n "$(LINK) " && cat $$tmpfile && $(LINK) @$$tmpfile && $(RM) $$tmpfile
+.ELSE
@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` \
+ $(COMMAND_ECHO)$(DLLTOOL) @@(mktmp \
+ --dllname $(SHL6TARGET)$(DLLPOST) \
+ --kill-at \
+ --output-exp $(MISC)/$(@:b)_exp.o \
+ $(SHL6VERSIONOBJ) \
+ @(ALL6OBJLIST)
+ )
+ $(COMMAND_ECHO)$(LINK) @$(mktmp $(strip \
+ $(SHL6LINKFLAGS) \
+ $(LINKFLAGSSHL) \
+ $(SOLARLIB) \
+ $(MINGWSSTDOBJ) \
+ -o $@ \
+ -Wl,-Map,$(MISC)/$(@:b).map \
+ $(MISC)/$(@:b)_exp.o \
+ $(USE_6IMPLIB) \
+ $(STDOBJ) \
+ $(SHL6VERSIONOBJ) $(SHL6OBJS) \
+ $(subst,$(ROUT),$(PRJ)/$(ROUT) $(shell cat /dev/null $(SHL6LIBS))) \
-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
+ $(SHL6STDSHL) $(STDSHL6) \
+ $(SHL6LINKRESO) \
+ ))
+.ENDIF
.ELSE
.IF "$(linkinc)"==""
.IF "$(SHL6USE_EXPORTS)"!="name"
@@ -2795,7 +2957,7 @@ $(SHL6TARGETN) : \
@echo $(STDSLO) $(SHL6OBJS:s/.obj/.o/) \
$(SHL6VERSIONOBJ) \
`cat /dev/null $(SHL6LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
- @/bin/echo -n $(SHL6LINKER) $(SHL6LINKFLAGS) $(SHL6VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \
+ @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` \
@@ -2914,8 +3076,11 @@ SHL7IMPLIB=i$(TARGET)_t7
.ENDIF # "$(SHL7IMPLIB)" == ""
.IF "$(COM)" != "GCC"
USE_7IMPLIB=-implib:$(LB)/$(SHL7IMPLIB).lib
-.ENDIF # "$(COM)" != "GCC"
SHL7IMPLIBN=$(LB)/$(SHL7IMPLIB).lib
+.ELSE
+SHL7IMPLIBN=$(LB)/lib$(SHL7IMPLIB).dll.a
+USE_7IMPLIB=-Wl,--out-implib=$(SHL7IMPLIBN)
+.ENDIF # "$(COM)" != "GCC"
ALLTAR : $(SHL7IMPLIBN)
.IF "$(USE_DEFFILE)"==""
@@ -3132,30 +3297,54 @@ $(SHL7TARGETN) : \
.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
+# GNU ld since 2.17 supports @cmdfile syntax
+.IF "$(USE_DEFFILE)"!=""
+ @$(COMMAND_ECHO)tmpfile=$(mktmp $(strip \
+ $(SHL7LINKFLAGS) \
+ $(LINKFLAGSSHL) \
+ $(SOLARLIB) \
+ $(MINGWSSTDOBJ) \
+ -o $@ \
+ -Wl,-Map,$(MISC)/$(@:b).map \
+ $(SHL7DEF) \
+ $(USE_7IMPLIB) \
+ $(STDOBJ) \
+ $(SHL7VERSIONOBJ) $(SHL7OBJS) \
+ $(subst,$(ROUT),$(PRJ)/$(ROUT) $(shell cat /dev/null $(SHL7LIBS))) \
+ -Wl,--exclude-libs,ALL,--start-group $(SHL7STDLIBS) -Wl,--end-group \
+ $(SHL7STDSHL) $(STDSHL7) \
+ $(SHL7LINKRESO) \
+ )) && echo -n "$(LINK) " && cat $$tmpfile && $(LINK) @$$tmpfile && $(RM) $$tmpfile
+.ELSE
@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` \
+ $(COMMAND_ECHO)$(DLLTOOL) @@(mktmp \
+ --dllname $(SHL7TARGET)$(DLLPOST) \
+ --kill-at \
+ --output-exp $(MISC)/$(@:b)_exp.o \
+ $(SHL7VERSIONOBJ) \
+ @(ALL7OBJLIST)
+ )
+ $(COMMAND_ECHO)$(LINK) @$(mktmp $(strip \
+ $(SHL7LINKFLAGS) \
+ $(LINKFLAGSSHL) \
+ $(SOLARLIB) \
+ $(MINGWSSTDOBJ) \
+ -o $@ \
+ -Wl,-Map,$(MISC)/$(@:b).map \
+ $(MISC)/$(@:b)_exp.o \
+ $(USE_7IMPLIB) \
+ $(STDOBJ) \
+ $(SHL7VERSIONOBJ) $(SHL7OBJS) \
+ $(subst,$(ROUT),$(PRJ)/$(ROUT) $(shell cat /dev/null $(SHL7LIBS))) \
-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
+ $(SHL7STDSHL) $(STDSHL7) \
+ $(SHL7LINKRESO) \
+ ))
+.ENDIF
.ELSE
.IF "$(linkinc)"==""
.IF "$(SHL7USE_EXPORTS)"!="name"
@@ -3270,7 +3459,7 @@ $(SHL7TARGETN) : \
@echo $(STDSLO) $(SHL7OBJS:s/.obj/.o/) \
$(SHL7VERSIONOBJ) \
`cat /dev/null $(SHL7LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
- @/bin/echo -n $(SHL7LINKER) $(SHL7LINKFLAGS) $(SHL7VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \
+ @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` \
@@ -3389,8 +3578,11 @@ SHL8IMPLIB=i$(TARGET)_t8
.ENDIF # "$(SHL8IMPLIB)" == ""
.IF "$(COM)" != "GCC"
USE_8IMPLIB=-implib:$(LB)/$(SHL8IMPLIB).lib
-.ENDIF # "$(COM)" != "GCC"
SHL8IMPLIBN=$(LB)/$(SHL8IMPLIB).lib
+.ELSE
+SHL8IMPLIBN=$(LB)/lib$(SHL8IMPLIB).dll.a
+USE_8IMPLIB=-Wl,--out-implib=$(SHL8IMPLIBN)
+.ENDIF # "$(COM)" != "GCC"
ALLTAR : $(SHL8IMPLIBN)
.IF "$(USE_DEFFILE)"==""
@@ -3607,30 +3799,54 @@ $(SHL8TARGETN) : \
.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
+# GNU ld since 2.17 supports @cmdfile syntax
+.IF "$(USE_DEFFILE)"!=""
+ @$(COMMAND_ECHO)tmpfile=$(mktmp $(strip \
+ $(SHL8LINKFLAGS) \
+ $(LINKFLAGSSHL) \
+ $(SOLARLIB) \
+ $(MINGWSSTDOBJ) \
+ -o $@ \
+ -Wl,-Map,$(MISC)/$(@:b).map \
+ $(SHL8DEF) \
+ $(USE_8IMPLIB) \
+ $(STDOBJ) \
+ $(SHL8VERSIONOBJ) $(SHL8OBJS) \
+ $(subst,$(ROUT),$(PRJ)/$(ROUT) $(shell cat /dev/null $(SHL8LIBS))) \
+ -Wl,--exclude-libs,ALL,--start-group $(SHL8STDLIBS) -Wl,--end-group \
+ $(SHL8STDSHL) $(STDSHL8) \
+ $(SHL8LINKRESO) \
+ )) && echo -n "$(LINK) " && cat $$tmpfile && $(LINK) @$$tmpfile && $(RM) $$tmpfile
+.ELSE
@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` \
+ $(COMMAND_ECHO)$(DLLTOOL) @@(mktmp \
+ --dllname $(SHL8TARGET)$(DLLPOST) \
+ --kill-at \
+ --output-exp $(MISC)/$(@:b)_exp.o \
+ $(SHL8VERSIONOBJ) \
+ @(ALL8OBJLIST)
+ )
+ $(COMMAND_ECHO)$(LINK) @$(mktmp $(strip \
+ $(SHL8LINKFLAGS) \
+ $(LINKFLAGSSHL) \
+ $(SOLARLIB) \
+ $(MINGWSSTDOBJ) \
+ -o $@ \
+ -Wl,-Map,$(MISC)/$(@:b).map \
+ $(MISC)/$(@:b)_exp.o \
+ $(USE_8IMPLIB) \
+ $(STDOBJ) \
+ $(SHL8VERSIONOBJ) $(SHL8OBJS) \
+ $(subst,$(ROUT),$(PRJ)/$(ROUT) $(shell cat /dev/null $(SHL8LIBS))) \
-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
+ $(SHL8STDSHL) $(STDSHL8) \
+ $(SHL8LINKRESO) \
+ ))
+.ENDIF
.ELSE
.IF "$(linkinc)"==""
.IF "$(SHL8USE_EXPORTS)"!="name"
@@ -3745,7 +3961,7 @@ $(SHL8TARGETN) : \
@echo $(STDSLO) $(SHL8OBJS:s/.obj/.o/) \
$(SHL8VERSIONOBJ) \
`cat /dev/null $(SHL8LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
- @/bin/echo -n $(SHL8LINKER) $(SHL8LINKFLAGS) $(SHL8VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \
+ @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` \
@@ -3864,8 +4080,11 @@ SHL9IMPLIB=i$(TARGET)_t9
.ENDIF # "$(SHL9IMPLIB)" == ""
.IF "$(COM)" != "GCC"
USE_9IMPLIB=-implib:$(LB)/$(SHL9IMPLIB).lib
-.ENDIF # "$(COM)" != "GCC"
SHL9IMPLIBN=$(LB)/$(SHL9IMPLIB).lib
+.ELSE
+SHL9IMPLIBN=$(LB)/lib$(SHL9IMPLIB).dll.a
+USE_9IMPLIB=-Wl,--out-implib=$(SHL9IMPLIBN)
+.ENDIF # "$(COM)" != "GCC"
ALLTAR : $(SHL9IMPLIBN)
.IF "$(USE_DEFFILE)"==""
@@ -4082,30 +4301,54 @@ $(SHL9TARGETN) : \
.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
+# GNU ld since 2.17 supports @cmdfile syntax
+.IF "$(USE_DEFFILE)"!=""
+ @$(COMMAND_ECHO)tmpfile=$(mktmp $(strip \
+ $(SHL9LINKFLAGS) \
+ $(LINKFLAGSSHL) \
+ $(SOLARLIB) \
+ $(MINGWSSTDOBJ) \
+ -o $@ \
+ -Wl,-Map,$(MISC)/$(@:b).map \
+ $(SHL9DEF) \
+ $(USE_9IMPLIB) \
+ $(STDOBJ) \
+ $(SHL9VERSIONOBJ) $(SHL9OBJS) \
+ $(subst,$(ROUT),$(PRJ)/$(ROUT) $(shell cat /dev/null $(SHL9LIBS))) \
+ -Wl,--exclude-libs,ALL,--start-group $(SHL9STDLIBS) -Wl,--end-group \
+ $(SHL9STDSHL) $(STDSHL9) \
+ $(SHL9LINKRESO) \
+ )) && echo -n "$(LINK) " && cat $$tmpfile && $(LINK) @$$tmpfile && $(RM) $$tmpfile
+.ELSE
@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` \
+ $(COMMAND_ECHO)$(DLLTOOL) @@(mktmp \
+ --dllname $(SHL9TARGET)$(DLLPOST) \
+ --kill-at \
+ --output-exp $(MISC)/$(@:b)_exp.o \
+ $(SHL9VERSIONOBJ) \
+ @(ALL9OBJLIST)
+ )
+ $(COMMAND_ECHO)$(LINK) @$(mktmp $(strip \
+ $(SHL9LINKFLAGS) \
+ $(LINKFLAGSSHL) \
+ $(SOLARLIB) \
+ $(MINGWSSTDOBJ) \
+ -o $@ \
+ -Wl,-Map,$(MISC)/$(@:b).map \
+ $(MISC)/$(@:b)_exp.o \
+ $(USE_9IMPLIB) \
+ $(STDOBJ) \
+ $(SHL9VERSIONOBJ) $(SHL9OBJS) \
+ $(subst,$(ROUT),$(PRJ)/$(ROUT) $(shell cat /dev/null $(SHL9LIBS))) \
-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
+ $(SHL9STDSHL) $(STDSHL9) \
+ $(SHL9LINKRESO) \
+ ))
+.ENDIF
.ELSE
.IF "$(linkinc)"==""
.IF "$(SHL9USE_EXPORTS)"!="name"
@@ -4220,7 +4463,7 @@ $(SHL9TARGETN) : \
@echo $(STDSLO) $(SHL9OBJS:s/.obj/.o/) \
$(SHL9VERSIONOBJ) \
`cat /dev/null $(SHL9LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
- @/bin/echo -n $(SHL9LINKER) $(SHL9LINKFLAGS) $(SHL9VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \
+ @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` \
@@ -4339,8 +4582,11 @@ SHL10IMPLIB=i$(TARGET)_t10
.ENDIF # "$(SHL10IMPLIB)" == ""
.IF "$(COM)" != "GCC"
USE_10IMPLIB=-implib:$(LB)/$(SHL10IMPLIB).lib
-.ENDIF # "$(COM)" != "GCC"
SHL10IMPLIBN=$(LB)/$(SHL10IMPLIB).lib
+.ELSE
+SHL10IMPLIBN=$(LB)/lib$(SHL10IMPLIB).dll.a
+USE_10IMPLIB=-Wl,--out-implib=$(SHL10IMPLIBN)
+.ENDIF # "$(COM)" != "GCC"
ALLTAR : $(SHL10IMPLIBN)
.IF "$(USE_DEFFILE)"==""
@@ -4557,30 +4803,54 @@ $(SHL10TARGETN) : \
.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
+# GNU ld since 2.17 supports @cmdfile syntax
+.IF "$(USE_DEFFILE)"!=""
+ @$(COMMAND_ECHO)tmpfile=$(mktmp $(strip \
+ $(SHL10LINKFLAGS) \
+ $(LINKFLAGSSHL) \
+ $(SOLARLIB) \
+ $(MINGWSSTDOBJ) \
+ -o $@ \
+ -Wl,-Map,$(MISC)/$(@:b).map \
+ $(SHL10DEF) \
+ $(USE_10IMPLIB) \
+ $(STDOBJ) \
+ $(SHL10VERSIONOBJ) $(SHL10OBJS) \
+ $(subst,$(ROUT),$(PRJ)/$(ROUT) $(shell cat /dev/null $(SHL10LIBS))) \
+ -Wl,--exclude-libs,ALL,--start-group $(SHL10STDLIBS) -Wl,--end-group \
+ $(SHL10STDSHL) $(STDSHL10) \
+ $(SHL10LINKRESO) \
+ )) && echo -n "$(LINK) " && cat $$tmpfile && $(LINK) @$$tmpfile && $(RM) $$tmpfile
+.ELSE
@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` \
+ $(COMMAND_ECHO)$(DLLTOOL) @@(mktmp \
+ --dllname $(SHL10TARGET)$(DLLPOST) \
+ --kill-at \
+ --output-exp $(MISC)/$(@:b)_exp.o \
+ $(SHL10VERSIONOBJ) \
+ @(ALL10OBJLIST)
+ )
+ $(COMMAND_ECHO)$(LINK) @$(mktmp $(strip \
+ $(SHL10LINKFLAGS) \
+ $(LINKFLAGSSHL) \
+ $(SOLARLIB) \
+ $(MINGWSSTDOBJ) \
+ -o $@ \
+ -Wl,-Map,$(MISC)/$(@:b).map \
+ $(MISC)/$(@:b)_exp.o \
+ $(USE_10IMPLIB) \
+ $(STDOBJ) \
+ $(SHL10VERSIONOBJ) $(SHL10OBJS) \
+ $(subst,$(ROUT),$(PRJ)/$(ROUT) $(shell cat /dev/null $(SHL10LIBS))) \
-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
+ $(SHL10STDSHL) $(STDSHL10) \
+ $(SHL10LINKRESO) \
+ ))
+.ENDIF
.ELSE
.IF "$(linkinc)"==""
.IF "$(SHL10USE_EXPORTS)"!="name"
@@ -4695,7 +4965,7 @@ $(SHL10TARGETN) : \
@echo $(STDSLO) $(SHL10OBJS:s/.obj/.o/) \
$(SHL10VERSIONOBJ) \
`cat /dev/null $(SHL10LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
- @/bin/echo -n $(SHL10LINKER) $(SHL10LINKFLAGS) $(SHL10VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \
+ @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` \
@@ -4761,6 +5031,7 @@ USELIB1DEPN+=$(SHL1LIBS)
USE_SHL1TARGET=$(SHL1TARGETN)
.ENDIF
+.IF "$(GUI)$(COM)" != "WNTGCC"
.IF "$(GUI)" != "UNX"
$(SHL1IMPLIBN): \
$(SHL1DEF) \
@@ -4773,9 +5044,6 @@ $(SHL1IMPLIBN): \
.ENDIF
@echo "Making: " $(@:f)
.IF "$(GUI)" == "WNT"
-.IF "$(COM)"=="GCC"
- $(DLLTOOL) --output-lib=$(SHL1IMPLIBN) --input-def=$(SHL1DEF)
-.ELSE # "$(COM)=="GCC"
# bei use_deffile implib von linker erstellt
.IF "$(USE_DEFFILE)"==""
$(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL1IMPLIBN) \
@@ -4784,7 +5052,6 @@ $(SHL1IMPLIBN): \
@echo build of $(SHL1TARGETN) creates $@
@$(TOUCH) $@
.ENDIF # "$(USE_DEFFILE)==""
-.ENDIF # "$(COM)"=="GCC"
.ELSE
@echo no ImportLibs on Mac and *ix
@@ -4792,6 +5059,7 @@ $(SHL1IMPLIBN): \
@$(TOUCH) $@
.ENDIF
.ENDIF
+.ENDIF
# unroll begin
@@ -4806,6 +5074,7 @@ USELIB2DEPN+=$(SHL2LIBS)
USE_SHL2TARGET=$(SHL2TARGETN)
.ENDIF
+.IF "$(GUI)$(COM)" != "WNTGCC"
.IF "$(GUI)" != "UNX"
$(SHL2IMPLIBN): \
$(SHL2DEF) \
@@ -4818,9 +5087,6 @@ $(SHL2IMPLIBN): \
.ENDIF
@echo "Making: " $(@:f)
.IF "$(GUI)" == "WNT"
-.IF "$(COM)"=="GCC"
- $(DLLTOOL) --output-lib=$(SHL2IMPLIBN) --input-def=$(SHL2DEF)
-.ELSE # "$(COM)=="GCC"
# bei use_deffile implib von linker erstellt
.IF "$(USE_DEFFILE)"==""
$(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL2IMPLIBN) \
@@ -4829,7 +5095,6 @@ $(SHL2IMPLIBN): \
@echo build of $(SHL2TARGETN) creates $@
@$(TOUCH) $@
.ENDIF # "$(USE_DEFFILE)==""
-.ENDIF # "$(COM)"=="GCC"
.ELSE
@echo no ImportLibs on Mac and *ix
@@ -4837,6 +5102,7 @@ $(SHL2IMPLIBN): \
@$(TOUCH) $@
.ENDIF
.ENDIF
+.ENDIF
# unroll begin
@@ -4851,6 +5117,7 @@ USELIB3DEPN+=$(SHL3LIBS)
USE_SHL3TARGET=$(SHL3TARGETN)
.ENDIF
+.IF "$(GUI)$(COM)" != "WNTGCC"
.IF "$(GUI)" != "UNX"
$(SHL3IMPLIBN): \
$(SHL3DEF) \
@@ -4863,9 +5130,6 @@ $(SHL3IMPLIBN): \
.ENDIF
@echo "Making: " $(@:f)
.IF "$(GUI)" == "WNT"
-.IF "$(COM)"=="GCC"
- $(DLLTOOL) --output-lib=$(SHL3IMPLIBN) --input-def=$(SHL3DEF)
-.ELSE # "$(COM)=="GCC"
# bei use_deffile implib von linker erstellt
.IF "$(USE_DEFFILE)"==""
$(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL3IMPLIBN) \
@@ -4874,7 +5138,6 @@ $(SHL3IMPLIBN): \
@echo build of $(SHL3TARGETN) creates $@
@$(TOUCH) $@
.ENDIF # "$(USE_DEFFILE)==""
-.ENDIF # "$(COM)"=="GCC"
.ELSE
@echo no ImportLibs on Mac and *ix
@@ -4882,6 +5145,7 @@ $(SHL3IMPLIBN): \
@$(TOUCH) $@
.ENDIF
.ENDIF
+.ENDIF
# unroll begin
@@ -4896,6 +5160,7 @@ USELIB4DEPN+=$(SHL4LIBS)
USE_SHL4TARGET=$(SHL4TARGETN)
.ENDIF
+.IF "$(GUI)$(COM)" != "WNTGCC"
.IF "$(GUI)" != "UNX"
$(SHL4IMPLIBN): \
$(SHL4DEF) \
@@ -4908,9 +5173,6 @@ $(SHL4IMPLIBN): \
.ENDIF
@echo "Making: " $(@:f)
.IF "$(GUI)" == "WNT"
-.IF "$(COM)"=="GCC"
- $(DLLTOOL) --output-lib=$(SHL4IMPLIBN) --input-def=$(SHL4DEF)
-.ELSE # "$(COM)=="GCC"
# bei use_deffile implib von linker erstellt
.IF "$(USE_DEFFILE)"==""
$(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL4IMPLIBN) \
@@ -4919,7 +5181,6 @@ $(SHL4IMPLIBN): \
@echo build of $(SHL4TARGETN) creates $@
@$(TOUCH) $@
.ENDIF # "$(USE_DEFFILE)==""
-.ENDIF # "$(COM)"=="GCC"
.ELSE
@echo no ImportLibs on Mac and *ix
@@ -4927,6 +5188,7 @@ $(SHL4IMPLIBN): \
@$(TOUCH) $@
.ENDIF
.ENDIF
+.ENDIF
# unroll begin
@@ -4941,6 +5203,7 @@ USELIB5DEPN+=$(SHL5LIBS)
USE_SHL5TARGET=$(SHL5TARGETN)
.ENDIF
+.IF "$(GUI)$(COM)" != "WNTGCC"
.IF "$(GUI)" != "UNX"
$(SHL5IMPLIBN): \
$(SHL5DEF) \
@@ -4953,9 +5216,6 @@ $(SHL5IMPLIBN): \
.ENDIF
@echo "Making: " $(@:f)
.IF "$(GUI)" == "WNT"
-.IF "$(COM)"=="GCC"
- $(DLLTOOL) --output-lib=$(SHL5IMPLIBN) --input-def=$(SHL5DEF)
-.ELSE # "$(COM)=="GCC"
# bei use_deffile implib von linker erstellt
.IF "$(USE_DEFFILE)"==""
$(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL5IMPLIBN) \
@@ -4964,7 +5224,6 @@ $(SHL5IMPLIBN): \
@echo build of $(SHL5TARGETN) creates $@
@$(TOUCH) $@
.ENDIF # "$(USE_DEFFILE)==""
-.ENDIF # "$(COM)"=="GCC"
.ELSE
@echo no ImportLibs on Mac and *ix
@@ -4972,6 +5231,7 @@ $(SHL5IMPLIBN): \
@$(TOUCH) $@
.ENDIF
.ENDIF
+.ENDIF
# unroll begin
@@ -4986,6 +5246,7 @@ USELIB6DEPN+=$(SHL6LIBS)
USE_SHL6TARGET=$(SHL6TARGETN)
.ENDIF
+.IF "$(GUI)$(COM)" != "WNTGCC"
.IF "$(GUI)" != "UNX"
$(SHL6IMPLIBN): \
$(SHL6DEF) \
@@ -4998,9 +5259,6 @@ $(SHL6IMPLIBN): \
.ENDIF
@echo "Making: " $(@:f)
.IF "$(GUI)" == "WNT"
-.IF "$(COM)"=="GCC"
- $(DLLTOOL) --output-lib=$(SHL6IMPLIBN) --input-def=$(SHL6DEF)
-.ELSE # "$(COM)=="GCC"
# bei use_deffile implib von linker erstellt
.IF "$(USE_DEFFILE)"==""
$(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL6IMPLIBN) \
@@ -5009,7 +5267,6 @@ $(SHL6IMPLIBN): \
@echo build of $(SHL6TARGETN) creates $@
@$(TOUCH) $@
.ENDIF # "$(USE_DEFFILE)==""
-.ENDIF # "$(COM)"=="GCC"
.ELSE
@echo no ImportLibs on Mac and *ix
@@ -5017,6 +5274,7 @@ $(SHL6IMPLIBN): \
@$(TOUCH) $@
.ENDIF
.ENDIF
+.ENDIF
# unroll begin
@@ -5031,6 +5289,7 @@ USELIB7DEPN+=$(SHL7LIBS)
USE_SHL7TARGET=$(SHL7TARGETN)
.ENDIF
+.IF "$(GUI)$(COM)" != "WNTGCC"
.IF "$(GUI)" != "UNX"
$(SHL7IMPLIBN): \
$(SHL7DEF) \
@@ -5043,9 +5302,6 @@ $(SHL7IMPLIBN): \
.ENDIF
@echo "Making: " $(@:f)
.IF "$(GUI)" == "WNT"
-.IF "$(COM)"=="GCC"
- $(DLLTOOL) --output-lib=$(SHL7IMPLIBN) --input-def=$(SHL7DEF)
-.ELSE # "$(COM)=="GCC"
# bei use_deffile implib von linker erstellt
.IF "$(USE_DEFFILE)"==""
$(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL7IMPLIBN) \
@@ -5054,7 +5310,6 @@ $(SHL7IMPLIBN): \
@echo build of $(SHL7TARGETN) creates $@
@$(TOUCH) $@
.ENDIF # "$(USE_DEFFILE)==""
-.ENDIF # "$(COM)"=="GCC"
.ELSE
@echo no ImportLibs on Mac and *ix
@@ -5062,6 +5317,7 @@ $(SHL7IMPLIBN): \
@$(TOUCH) $@
.ENDIF
.ENDIF
+.ENDIF
# unroll begin
@@ -5076,6 +5332,7 @@ USELIB8DEPN+=$(SHL8LIBS)
USE_SHL8TARGET=$(SHL8TARGETN)
.ENDIF
+.IF "$(GUI)$(COM)" != "WNTGCC"
.IF "$(GUI)" != "UNX"
$(SHL8IMPLIBN): \
$(SHL8DEF) \
@@ -5088,9 +5345,6 @@ $(SHL8IMPLIBN): \
.ENDIF
@echo "Making: " $(@:f)
.IF "$(GUI)" == "WNT"
-.IF "$(COM)"=="GCC"
- $(DLLTOOL) --output-lib=$(SHL8IMPLIBN) --input-def=$(SHL8DEF)
-.ELSE # "$(COM)=="GCC"
# bei use_deffile implib von linker erstellt
.IF "$(USE_DEFFILE)"==""
$(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL8IMPLIBN) \
@@ -5099,7 +5353,6 @@ $(SHL8IMPLIBN): \
@echo build of $(SHL8TARGETN) creates $@
@$(TOUCH) $@
.ENDIF # "$(USE_DEFFILE)==""
-.ENDIF # "$(COM)"=="GCC"
.ELSE
@echo no ImportLibs on Mac and *ix
@@ -5107,6 +5360,7 @@ $(SHL8IMPLIBN): \
@$(TOUCH) $@
.ENDIF
.ENDIF
+.ENDIF
# unroll begin
@@ -5121,6 +5375,7 @@ USELIB9DEPN+=$(SHL9LIBS)
USE_SHL9TARGET=$(SHL9TARGETN)
.ENDIF
+.IF "$(GUI)$(COM)" != "WNTGCC"
.IF "$(GUI)" != "UNX"
$(SHL9IMPLIBN): \
$(SHL9DEF) \
@@ -5133,9 +5388,6 @@ $(SHL9IMPLIBN): \
.ENDIF
@echo "Making: " $(@:f)
.IF "$(GUI)" == "WNT"
-.IF "$(COM)"=="GCC"
- $(DLLTOOL) --output-lib=$(SHL9IMPLIBN) --input-def=$(SHL9DEF)
-.ELSE # "$(COM)=="GCC"
# bei use_deffile implib von linker erstellt
.IF "$(USE_DEFFILE)"==""
$(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL9IMPLIBN) \
@@ -5144,7 +5396,6 @@ $(SHL9IMPLIBN): \
@echo build of $(SHL9TARGETN) creates $@
@$(TOUCH) $@
.ENDIF # "$(USE_DEFFILE)==""
-.ENDIF # "$(COM)"=="GCC"
.ELSE
@echo no ImportLibs on Mac and *ix
@@ -5152,6 +5403,7 @@ $(SHL9IMPLIBN): \
@$(TOUCH) $@
.ENDIF
.ENDIF
+.ENDIF
# unroll begin
@@ -5166,6 +5418,7 @@ USELIB10DEPN+=$(SHL10LIBS)
USE_SHL10TARGET=$(SHL10TARGETN)
.ENDIF
+.IF "$(GUI)$(COM)" != "WNTGCC"
.IF "$(GUI)" != "UNX"
$(SHL10IMPLIBN): \
$(SHL10DEF) \
@@ -5178,9 +5431,6 @@ $(SHL10IMPLIBN): \
.ENDIF
@echo "Making: " $(@:f)
.IF "$(GUI)" == "WNT"
-.IF "$(COM)"=="GCC"
- $(DLLTOOL) --output-lib=$(SHL10IMPLIBN) --input-def=$(SHL10DEF)
-.ELSE # "$(COM)=="GCC"
# bei use_deffile implib von linker erstellt
.IF "$(USE_DEFFILE)"==""
$(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL10IMPLIBN) \
@@ -5189,7 +5439,6 @@ $(SHL10IMPLIBN): \
@echo build of $(SHL10TARGETN) creates $@
@$(TOUCH) $@
.ENDIF # "$(USE_DEFFILE)==""
-.ENDIF # "$(COM)"=="GCC"
.ELSE
@echo no ImportLibs on Mac and *ix
@@ -5197,4 +5446,5 @@ $(SHL10IMPLIBN): \
@$(TOUCH) $@
.ENDIF
.ENDIF
+.ENDIF
diff --git a/solenv/inc/tg_shl.mk b/solenv/inc/tg_shl.mk
index e94a952..1249827 100644
--- a/solenv/inc/tg_shl.mk
+++ b/solenv/inc/tg_shl.mk
@@ -93,8 +93,11 @@ SHL$(TNR)IMPLIB=i$(TARGET)_t$(TNR)
.ENDIF # "$(SHL$(TNR)IMPLIB)" == ""
.IF "$(COM)" != "GCC"
USE_$(TNR)IMPLIB=-implib:$(LB)/$(SHL$(TNR)IMPLIB).lib
-.ENDIF # "$(COM)" != "GCC"
SHL$(TNR)IMPLIBN=$(LB)/$(SHL$(TNR)IMPLIB).lib
+.ELSE
+SHL$(TNR)IMPLIBN=$(LB)/lib$(SHL$(TNR)IMPLIB).dll.a
+USE_$(TNR)IMPLIB=-Wl,--out-implib=$(SHL$(TNR)IMPLIBN)
+.ENDIF # "$(COM)" != "GCC"
ALLTAR : $(SHL$(TNR)IMPLIBN)
.IF "$(USE_DEFFILE)"==""
@@ -311,30 +314,54 @@ $(SHL$(TNR)TARGETN) : \
.ENDIF # "$(COM)"=="GCC"
.ENDIF # "$(SHL$(TNR)ALLRES)"!=""
.IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def
- @echo $(DLLTOOL) --dllname $(SHL$(TNR)TARGET)$(DLLPOST) \
- --kill-at \\ > $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd
+# GNU ld since 2.17 supports @cmdfile syntax
+.IF "$(USE_DEFFILE)"!=""
+ @$(COMMAND_ECHO)$(LINK) @$(mktmp $(strip \
+ $(SHL$(TNR)LINKFLAGS) \
+ $(LINKFLAGSSHL) \
+ $(SOLARLIB) \
+ $(MINGWSSTDOBJ) \
+ -o $@ \
+ -Wl,-Map,$(MISC)/$(@:b).map \
+ $(SHL$(TNR)DEF) \
+ $(USE_$(TNR)IMPLIB) \
+ $(STDOBJ) \
+ $(SHL$(TNR)VERSIONOBJ) $(SHL$(TNR)OBJS) \
+ $(subst,$(ROUT),$(PRJ)/$(ROUT) $(shell cat /dev/null $(SHL$(TNR)LIBS))) \
+ -Wl,--exclude-libs,ALL,--start-group $(SHL$(TNR)STDLIBS) -Wl,--end-group \
+ $(SHL$(TNR)STDSHL) $(STDSHL$(TNR)) \
+ $(SHL$(TNR)LINKRESO) \
+ ))
+.ELSE
@noop $(assign ALL$(TNR)OBJLIST:=$(STDOBJ) $(SHL$(TNR)OBJS) $(SHL$(TNR)LINKRESO) $(shell $(TYPE) /dev/null $(SHL$(TNR)LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g))
.IF "$(DEFLIB$(TNR)NAME)"!="" # do not have to include objs
@noop $(assign DEF$(TNR)OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB$(TNR)NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g))
@noop $(foreach,i,$(DEF$(TNR)OBJLIST) $(assign ALL$(TNR)OBJLIST:=$(ALL$(TNR)OBJLIST:s?$i??)))
.ENDIF # "$(DEFLIB$(TNR)NAME)"!=""
- @echo --output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd
-.IF "$(SHL$(TNR)DEF)"!=""
- @echo --input-def $(SHL$(TNR)DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd
-.ELSE
- @echo $(SHL$(TNR)VERSIONOBJ) $(SHL$(TNR)DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd
-.ENDIF
- @echo $(ALL$(TNR)OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd
- @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \
- $(STDOBJ) $(SHL$(TNR)VERSIONOBJ) $(SHL$(TNR)DESCRIPTIONOBJ) $(SHL$(TNR)OBJS) $(SHL$(TNR)LINKRESO) \
- `$(TYPE) /dev/null $(SHL$(TNR)LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
+ $(COMMAND_ECHO)$(DLLTOOL) @@(mktmp \
+ --dllname $(SHL$(TNR)TARGET)$(DLLPOST) \
+ --kill-at \
+ --output-exp $(MISC)/$(@:b)_exp.o \
+ $(SHL$(TNR)VERSIONOBJ) \
+ @(ALL$(TNR)OBJLIST)
+ )
+ $(COMMAND_ECHO)$(LINK) @$(mktmp $(strip \
+ $(SHL$(TNR)LINKFLAGS) \
+ $(LINKFLAGSSHL) \
+ $(SOLARLIB) \
+ $(MINGWSSTDOBJ) \
+ -o $@ \
+ -Wl,-Map,$(MISC)/$(@:b).map \
+ $(MISC)/$(@:b)_exp.o \
+ $(USE_$(TNR)IMPLIB) \
+ $(STDOBJ) \
+ $(SHL$(TNR)VERSIONOBJ) $(SHL$(TNR)OBJS) \
+ $(subst,$(ROUT),$(PRJ)/$(ROUT) $(shell cat /dev/null $(SHL$(TNR)LIBS))) \
-Wl,--exclude-libs,ALL,--start-group $(SHL$(TNR)STDLIBS) -Wl,--end-group \
- $(SHL$(TNR)STDSHL) $(STDSHL$(TNR)) $(MISC)/$(@:b)_exp.o $(MINGWSSTDENDOBJ) \
- -Wl,-Map,$(MISC)/$(@:b).map >> $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd
- .IF "$(VERBOSE)" == "TRUE"
- @$(TYPE) $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd
- .ENDIF
- @+source $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd
+ $(SHL$(TNR)STDSHL) $(STDSHL$(TNR)) \
+ $(SHL$(TNR)LINKRESO) \
+ ))
+.ENDIF
.ELSE
.IF "$(linkinc)"==""
.IF "$(SHL$(TNR)USE_EXPORTS)"!="name"
@@ -522,6 +549,7 @@ USELIB$(TNR)DEPN+=$(SHL$(TNR)LIBS)
USE_SHL$(TNR)TARGET=$(SHL$(TNR)TARGETN)
.ENDIF
+.IF "$(GUI)$(COM)" != "WNTGCC"
.IF "$(GUI)" != "UNX"
$(SHL$(TNR)IMPLIBN): \
$(SHL$(TNR)DEF) \
@@ -534,9 +562,6 @@ $(SHL$(TNR)IMPLIBN): \
.ENDIF
@echo "Making: " $(@:f)
.IF "$(GUI)" == "WNT"
-.IF "$(COM)"=="GCC"
- $(DLLTOOL) --output-lib=$(SHL$(TNR)IMPLIBN) --input-def=$(SHL$(TNR)DEF)
-.ELSE # "$(COM)=="GCC"
# bei use_deffile implib von linker erstellt
.IF "$(USE_DEFFILE)"==""
$(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL$(TNR)IMPLIBN) \
@@ -545,7 +570,6 @@ $(SHL$(TNR)IMPLIBN): \
@echo build of $(SHL$(TNR)TARGETN) creates $@
@$(TOUCH) $@
.ENDIF # "$(USE_DEFFILE)==""
-.ENDIF # "$(COM)"=="GCC"
.ELSE
@echo no ImportLibs on Mac and *ix
@@ -553,6 +577,7 @@ $(SHL$(TNR)IMPLIBN): \
@$(TOUCH) $@
.ENDIF
.ENDIF
+.ENDIF
# unroll end
#######################################################
commit 3b37cb0d4a3a33173fcc1d9326a5e942057582d4
Author: Tor Lillqvist <tlillqvist at novell.com>
Date: Mon May 23 17:13:22 2011 +0300
Match SALHELPERLIB for WNTGCC to what we produce
diff --git a/solenv/inc/libs.mk b/solenv/inc/libs.mk
index 4e64fc5..83fdd8d 100644
--- a/solenv/inc/libs.mk
+++ b/solenv/inc/libs.mk
@@ -61,7 +61,7 @@ I18NUTILLIB=-li18nutil$(COMID)
I18NISOLANGLIB=-li18nisolang$(ISOLANG_MAJOR)$(COMID)
I18NPAPERLIB=-li18npaper$(DLLPOSTFIX)
.IF "$(GUI)$(COM)"=="WNTGCC"
-SALHELPERLIB=-lsalhelper$(UDK_MAJOR)$(COMID)
+SALHELPERLIB=-lisalhelper
.ELSE # "$(GUI)$(COM)"=="WNTGCC"
SALHELPERLIB=-luno_salhelper$(COMID)
.ENDIF # "$(GUI)$(COM)"=="WNTGCC"
commit ef3158a4073044245ae901a5171f0e5421108094
Author: Tor Lillqvist <tlillqvist at novell.com>
Date: Mon May 23 16:50:17 2011 +0300
Match SAL_LIB for WNTGCC to what we produce
diff --git a/solenv/inc/libs.mk b/solenv/inc/libs.mk
index 74f4d34..4e64fc5 100644
--- a/solenv/inc/libs.mk
+++ b/solenv/inc/libs.mk
@@ -100,7 +100,7 @@ XMLOFFLIB=-lxo$(DLLPOSTFIX)
XMLOFFLLIB=-lxol
.IF "$(GUI)$(COM)"=="WNTGCC"
STORELIB=-lstore$(UDK_MAJOR)
-SALLIB=-lsal$(UDK_MAJOR)
+SALLIB=-luno_sal$(UDK_MAJOR)
.ELSE # "$(GUI)$(COM)"=="WNTGCC"
STORELIB=-lstore
SALLIB=-luno_sal
commit 00dd367f51d26ab0835b8bf6f347f92a9f52e7f2
Author: Tor Lillqvist <tlillqvist at novell.com>
Date: Mon May 23 16:42:26 2011 +0300
Use correct ICU library names when using MinGW cross-compiled "system" ones
diff --git a/solenv/inc/libs.mk b/solenv/inc/libs.mk
index 3ec4bdc..74f4d34 100644
--- a/solenv/inc/libs.mk
+++ b/solenv/inc/libs.mk
@@ -46,17 +46,17 @@ AWTLIB*=$(JAVA_HOME)/lib/jawt.lib
AWTLIB*=-ljawt
.ENDIF # "$(GUI)$(COM)"=="WNTGCC"
AVMEDIALIB=-lavmedia$(DLLPOSTFIX)
-.IF "$(GUI)$(COM)"=="WNTGCC"
+.IF "$(GUI)$(COM)"=="WNTGCC" && "$(SYSTEM_ICU)"!="YES"
ICUINLIB=-licuin$(ICU_MAJOR)$(ICU_MINOR)
ICULELIB=-licule$(ICU_MAJOR)$(ICU_MINOR)
ICUUCLIB=-licuuc$(ICU_MAJOR)$(ICU_MINOR)
ICUDATALIB=-licudt$(ICU_MAJOR)$(ICU_MINOR)
-.ELSE # "$(GUI)$(COM)"=="WNTGCC"
+.ELSE # "$(GUI)$(COM)"=="WNTGCC" && "$(SYSTEM_ICU)"!="YES"
ICUINLIB=-licui18n
ICULELIB=-licule
ICUUCLIB=-licuuc
ICUDATALIB=-licudata
-.ENDIF # "$(GUI)$(COM)"=="WNTGCC"
+.ENDIF # "$(GUI)$(COM)"=="WNTGCC" && "$(SYSTEM_ICU)"!="YES"
I18NUTILLIB=-li18nutil$(COMID)
I18NISOLANGLIB=-li18nisolang$(ISOLANG_MAJOR)$(COMID)
I18NPAPERLIB=-li18npaper$(DLLPOSTFIX)
commit 4e12474354bfd0fb7d52e1f011428b82f4ed94de
Author: Tor Lillqvist <tlillqvist at novell.com>
Date: Mon May 23 02:20:02 2011 +0300
Set SOLARLIB also for MinGW (cross-)compilation
Set it as on Cygwin, and with the -L flags in the same order as for
Linux &co for consistency.
diff --git a/set_soenv.in b/set_soenv.in
index a01a8d0..0744891 100755
--- a/set_soenv.in
+++ b/set_soenv.in
@@ -1303,10 +1303,10 @@ elsif ($platform =~ m/linux|netbsd|aix|freebsd|openbsd|dragonfly/)
$L.$JRETOOLKITDIR.
$L.$JRETHREADDIR;
}
-elsif ($platform =~ m/cygwin/)
-{ $SOLARLIB = $L.'$SOLARVER'.$ds.'$INPATH'.$LIB.
- $L.$par_dir.$LIB.
- $L.'$SOLARENV'.$ds.'$OUTPATH'.$LIB;
+elsif ($platform =~ m/cygwin|mingw32/)
+{ $SOLARLIB = $L.$par_dir.$LIB.
+ $L.'$SOLARENV'.$ds.'$OUTPATH'.$LIB.
+ $L.'$SOLARVER'.$ds.'$INPATH'.$LIB;
}
elsif ($platform =~ m/darwin/)
{ $SOLARLIB = $L.'$SOLARVER'.$ds.'$INPATH'.$LIB.
commit ee7fc4d14f299e703146f8303425d3980c472064
Author: Tor Lillqvist <tlillqvist at novell.com>
Date: Mon May 23 02:16:50 2011 +0300
Prefix --warn-once with -Wl, as it is a ld flag
diff --git a/solenv/inc/wntgcci.mk b/solenv/inc/wntgcci.mk
index 45d7346..0fb5695 100644
--- a/solenv/inc/wntgcci.mk
+++ b/solenv/inc/wntgcci.mk
@@ -114,9 +114,9 @@ MINGWLIBDIR=$(COMPATH)$/lib
MINGWSSTDOBJ=
MINGWSSTDENDOBJ=
LINKFLAGSAPPGUI=-mwindows
-LINKFLAGSSHLGUI=--warn-once -mwindows -shared
+LINKFLAGSSHLGUI=-Wl,--warn-once -mwindows -shared
LINKFLAGSAPPCUI=-mconsole
-LINKFLAGSSHLCUI=--warn-once -mconsole -shared
+LINKFLAGSSHLCUI=-Wl,--warn-once -mconsole -shared
LINKFLAGSTACK=
LINKFLAGSPROF=
LINKFLAGSDEBUG=-g
commit 941ba7e0b98e693ccf326325a377ea2ff7725c1a
Author: Tor Lillqvist <tlillqvist at novell.com>
Date: Sun May 22 15:26:56 2011 +0300
List gnu_getopt here, too
diff --git a/solenv/gbuild/platform/winmingw.mk b/solenv/gbuild/platform/winmingw.mk
index b9e9e03..d846f7c 100644
--- a/solenv/gbuild/platform/winmingw.mk
+++ b/solenv/gbuild/platform/winmingw.mk
@@ -478,6 +478,7 @@ gb_Library_PLAINLIBS_NONE += \
$(gb_MINGW_LIBGCC) \
advapi32 \
gdi32 \
+ gnu_getopt \
kernel32 \
msvcrt \
msvcprt \
commit 9f588169bbcae1d7dbdef2e8fef47c5440da06e1
Author: Tor Lillqvist <tlillqvist at novell.com>
Date: Sun May 22 15:26:19 2011 +0300
Check COM, not the weird USE_MINGW variable
diff --git a/solenv/gbuild/gbuild.mk b/solenv/gbuild/gbuild.mk
index 72e41e5..4c20c8d 100644
--- a/solenv/gbuild/gbuild.mk
+++ b/solenv/gbuild/gbuild.mk
@@ -148,7 +148,7 @@ include $(GBUILDDIR)/platform/linux-$(CPUNAME).mk
else ifeq ($(OS),MACOSX)
include $(GBUILDDIR)/platform/macosx.mk
else ifeq ($(OS),WNT)
-ifneq ($(USE_MINGW),)
+ifeq ($(COM),GCC)
include $(GBUILDDIR)/platform/winmingw.mk
else
include $(GBUILDDIR)/platform/windows.mk
commit 6497054f0a4180f52b802ac2a307da2aa3a1be48
Author: Tor Lillqvist <tlillqvist at novell.com>
Date: Sun May 22 15:25:31 2011 +0300
Use cygpath only when building on Windows
diff --git a/solenv/gbuild/BuildDirs.mk b/solenv/gbuild/BuildDirs.mk
index a8a823b..e2a7819 100644
--- a/solenv/gbuild/BuildDirs.mk
+++ b/solenv/gbuild/BuildDirs.mk
@@ -42,7 +42,7 @@ endif
# HACK
# unixify windoze paths
-ifeq ($(OS),WNT)
+ifeq ($(OS_FOR_BUILD),WNT)
override WORKDIR := $(shell cygpath -u $(WORKDIR))
override OUTDIR := $(shell cygpath -u $(OUTDIR))
override gb_REPOS := $(shell cygpath -u $(gb_REPOS))
diff --git a/solenv/gbuild/platform/winmingw.mk b/solenv/gbuild/platform/winmingw.mk
index a7d77aa..b9e9e03 100644
--- a/solenv/gbuild/platform/winmingw.mk
+++ b/solenv/gbuild/platform/winmingw.mk
@@ -29,7 +29,11 @@ GUI := WNT
COM := GCC
# set tmpdir to some mixed case path, suitable for native tools
+ifeq ($(OS_FOR_BUILD),WNT)
gb_TMPDIR:=$(if $(TMPDIR),$(shell cygpath -m $(TMPDIR)),$(shell cygpath -m /tmp))
+else
+gb_TMPDIR:=/tmp
+endif
gb_MKTEMP := mktemp --tmpdir=$(gb_TMPDIR) gbuild.XXXXXX
gb_CC := $(CC)
@@ -179,10 +183,17 @@ gb_STDLIBS := \
# Helper class
+ifeq ($(OS_FOR_BUILD),WNT)
gb_Helper_SRCDIR_NATIVE := $(shell cygpath -m $(SRCDIR) | $(gb_AWK) -- '{ print tolower(substr($$0,1,1)) substr($$0,2) }')
gb_Helper_WORKDIR_NATIVE := $(shell cygpath -m $(WORKDIR) | $(gb_AWK) -- '{ print tolower(substr($$0,1,1)) substr($$0,2) }')
gb_Helper_OUTDIR_NATIVE := $(shell cygpath -m $(OUTDIR) | $(gb_AWK) -- '{ print tolower(substr($$0,1,1)) substr($$0,2) }')
gb_Helper_REPODIR_NATIVE := $(shell cygpath -m $(REPODIR) | $(gb_AWK) -- '{ print tolower(substr($$0,1,1)) substr($$0,2) }')
+else
+gb_Helper_SRCDIR_NATIVE := $(SRCDIR)
+gb_Helper_WORKDIR_NATIVE := $(WORKDIR)
+gb_Helper_OUTDIR_NATIVE := $(OUTDIR)
+gb_Helper_REPODIR_NATIVE := $(REPODIR)
+endif
define gb_Helper_abbreviate_dirs_native
R=$(gb_Helper_REPODIR_NATIVE) && $(subst $(REPODIR)/,$$R/,$(subst $(gb_Helper_REPODIR_NATIVE)/,$$R/,O=$(gb_Helper_OUTDIR_NATIVE) && W=$(gb_Helper_WORKDIR_NATIVE) && S=$(gb_Helper_SRCDIR_NATIVE))) && \
More information about the Libreoffice-commits
mailing list