diff options
Diffstat (limited to 'solenv/gbuild/platform/windows.mk')
-rw-r--r-- | solenv/gbuild/platform/windows.mk | 190 |
1 files changed, 92 insertions, 98 deletions
diff --git a/solenv/gbuild/platform/windows.mk b/solenv/gbuild/platform/windows.mk index 05d73080af60..5fff55f4bf09 100644 --- a/solenv/gbuild/platform/windows.mk +++ b/solenv/gbuild/platform/windows.mk @@ -37,6 +37,7 @@ gb_CXX := cl gb_LINK := link gb_AWK := awk gb_CLASSPATHSEP := ; +gb_RC := rc # use CC/CXX if they are nondefaults ifneq ($(origin CC),default) @@ -67,6 +68,13 @@ gb_COMPILERDEFS := \ gb_CPUDEFS := -DINTEL -D_X86_=1 +gb_RCDEFS := \ + -DWINVER=0x0400 \ + -DWIN32 \ + +gb_RCFLAGS := \ + -V + gb_CFLAGS := \ -Gd \ -GR \ @@ -211,6 +219,16 @@ endif gb_COMPILERNOOPTFLAGS := -Od +ifeq ($(gb_FULLDEPS),$(true)) +gb_COMPILERDEPFLAGS := -showIncludes +define gb_create_deps +| $(GBUILDDIR)/filter-showIncludes.pl $(2) $(1) $(3) +endef +else +gb_COMPILERDEPFLAGS := +define gb_create_deps +endef +endif # Helper class gb_Helper_SRCDIR_NATIVE := $(shell cygpath -m $(SRCDIR) | $(gb_AWK) -- '{ print tolower(substr($$0,1,1)) substr($$0,2) }') @@ -239,27 +257,6 @@ endef # CObject class -ifeq ($(gb_FULLDEPS),$(true)) -define gb_CObject__command_deponcompile -$(call gb_Helper_abbreviate_dirs_native,\ - $(OUTDIR)/bin/makedepend$(gb_Executable_EXT) \ - $(filter-out -DPRECOMPILED_HEADERS,$(4)) $(5) \ - -I$(dir $(3)) \ - $(filter-out -I$(COMPATH)% %/pch -I$(JAVA_HOME),$(6)) \ - $(3) \ - -f - \ - | $(gb_AWK) -f $(GBUILDDIR)/processdeps.awk \ - -v OBJECTFILE=$(1) \ - -v OUTDIR=$(OUTDIR)/ \ - -v WORKDIR=$(WORKDIR)/ \ - -v SRCDIR=$(SRCDIR)/ \ - -v REPODIR=$(REPODIR)/ \ - > $(call gb_CObject_get_dep_target,$(2))) -endef -else -CObject__command_deponcompile = -endif - define gb_CObject__command $(call gb_Output_announce,$(2),$(true),C ,3) $(call gb_Helper_abbreviate_dirs_native,\ @@ -268,37 +265,16 @@ $(call gb_Helper_abbreviate_dirs_native,\ $(gb_CC) \ $(DEFS) $(CFLAGS) -Fd$(PDBFILE) \ $(PCHFLAGS) \ + $(gb_COMPILERDEPFLAGS) \ -I$(realpath $(dir $(3))) \ $(INCLUDE) \ -c $(realpath $(3)) \ - -Fo$(1)) -$(call gb_CObject__command_deponcompile,$(1),$(2),$(3),$(DEFS),$(CFLAGS),$(INCLUDE)) + -Fo$(1)) $(call gb_create_deps,$(1),$(call gb_CObject_get_dep_target,$(2)),$(realpath $(3))) endef # CxxObject class -ifeq ($(gb_FULLDEPS),$(true)) -define gb_CxxObject__command_deponcompile -$(call gb_Helper_abbreviate_dirs_native,\ - $(OUTDIR)/bin/makedepend$(gb_Executable_EXT) \ - $(filter-out -DPRECOMPILED_HEADERS,$(4)) $(5) \ - -I$(dir $(3)) \ - $(filter-out -I$(COMPATH)% %/pch -I$(JAVA_HOME),$(6)) \ - $(3) \ - -f - \ - | $(gb_AWK) -f $(GBUILDDIR)/processdeps.awk \ - -v OBJECTFILE=$(1) \ - -v OUTDIR=$(OUTDIR)/ \ - -v WORKDIR=$(WORKDIR)/ \ - -v SRCDIR=$(SRCDIR)/ \ - -v REPODIR=$(REPODIR)/ \ - > $(call gb_CxxObject_get_dep_target,$(2))) - endef -else -gb_CxxObject__command_deponcompile = -endif - define gb_CxxObject__command $(call gb_Output_announce,$(2),$(true),CXX,3) $(call gb_Helper_abbreviate_dirs_native,\ @@ -307,40 +283,18 @@ $(call gb_Helper_abbreviate_dirs_native,\ $(gb_CXX) \ $(DEFS) $(CXXFLAGS) -Fd$(PDBFILE)\ $(PCHFLAGS) \ + $(gb_COMPILERDEPFLAGS) \ -I$(realpath $(dir $(3))) \ $(INCLUDE_STL) $(INCLUDE) \ -c $(realpath $(3)) \ - -Fo$(1)) -$(call gb_CxxObject__command_deponcompile,$(1),$(2),$(3),$(DEFS),$(CFLAGS),$(INCLUDE)) + -Fo$(1)) $(call gb_create_deps,$(1),$(call gb_CxxObject_get_dep_target,$(2)),$(realpath $(3))) endef # PrecompiledHeader class gb_PrecompiledHeader_get_enableflags = -Yu$(1).hxx \ - -Fp$(call gb_PrecompiledHeader_get_target,$(1)) - -ifeq ($(gb_FULLDEPS),$(true)) -define gb_PrecompiledHeader__command_deponcompile -$(call gb_Helper_abbreviate_dirs_native,\ - $(OUTDIR)/bin/makedepend$(gb_Executable_EXT) \ - $(4) $(5) \ - -I$(dir $(3)) \ - $(filter-out -I$(COMPATH)% -I$(JAVA_HOME),$(6)) \ - $(3) \ - -f - \ - | $(gb_AWK) -f $(GBUILDDIR)/processdeps.awk \ - -v OBJECTFILE=$(1) \ - -v OUTDIR=$(OUTDIR)/ \ - -v WORKDIR=$(WORKDIR)/ \ - -v SRCDIR=$(SRCDIR)/ \ - -v REPODIR=$(REPODIR)/ \ - > $(call gb_PrecompiledHeader_get_dep_target,$(2))) -endef -else -gb_PrecompiledHeader__command_deponcompile = -endif - + -Fp$(call gb_PrecompiledHeader_get_target,$(1)) define gb_PrecompiledHeader__command $(call gb_Output_announce,$(2),$(true),PCH,1) @@ -349,39 +303,17 @@ $(call gb_Helper_abbreviate_dirs_native,\ unset INCLUDE && \ $(gb_CXX) \ $(4) $(5) -Fd$(PDBFILE) \ + $(gb_COMPILERDEPFLAGS) \ -I$(realpath $(dir $(3))) \ $(6) \ -c $(realpath $(3)) \ - -Yc$(notdir $(patsubst %.cxx,%.hxx,$(3))) -Fp$(1) -Fo$(1).obj) -$(call gb_PrecompiledHeader__command_deponcompile,$(1),$(2),$(3),$(4),$(5),$(6)) + -Yc$(notdir $(patsubst %.cxx,%.hxx,$(3))) -Fp$(1) -Fo$(1).obj) $(call gb_create_deps,$(1),$(call gb_PrecompiledHeader_get_dep_target,$(2)),$(realpath $(3))) endef # NoexPrecompiledHeader class gb_NoexPrecompiledHeader_get_enableflags = -Yu$(1).hxx \ - -Fp$(call gb_NoexPrecompiledHeader_get_target,$(1)) - -ifeq ($(gb_FULLDEPS),$(true)) -define gb_NoexPrecompiledHeader__command_deponcompile -$(call gb_Helper_abbreviate_dirs_native,\ - $(OUTDIR)/bin/makedepend$(gb_Executable_EXT) \ - $(4) $(5) \ - -I$(dir $(3)) \ - $(filter-out -I$(COMPATH)% -I$(JAVA_HOME),$(6)) \ - $(3) \ - -f - \ - | $(gb_AWK) -f $(GBUILDDIR)/processdeps.awk \ - -v OBJECTFILE=$(1) \ - -v OUTDIR=$(OUTDIR)/ \ - -v WORKDIR=$(WORKDIR)/ \ - -v SRCDIR=$(SRCDIR)/ \ - -v REPODIR=$(REPODIR)/ \ - > $(call gb_NoexPrecompiledHeader_get_dep_target,$(2))) -endef -else -gb_NoexPrecompiledHeader__command_deponcompile = -endif - + -Fp$(call gb_NoexPrecompiledHeader_get_target,$(1)) define gb_NoexPrecompiledHeader__command $(call gb_Output_announce,$(2),$(true),PCH,1) @@ -390,14 +322,13 @@ $(call gb_Helper_abbreviate_dirs_native,\ unset INCLUDE && \ $(gb_CXX) \ $(4) $(5) -Fd$(PDBFILE) \ + $(gb_COMPILERDEPFLAGS) \ -I$(realpath $(dir $(3))) \ $(6) \ -c $(realpath $(3)) \ - -Yc$(notdir $(patsubst %.cxx,%.hxx,$(3))) -Fp$(1) -Fo$(1).obj) -$(call gb_NoexPrecompiledHeader__command_deponcompile,$(1),$(2),$(3),$(4),$(5),$(6)) + -Yc$(notdir $(patsubst %.cxx,%.hxx,$(3))) -Fp$(1) -Fo$(1).obj) $(call gb_create_deps,$(1),$(call gb_NoexPrecompiledHeader,$(2)),$(realpath $(3))) endef - # LinkTarget class gb_LinkTarget_CFLAGS := $(gb_CFLAGS) $(gb_CFLAGS_WERROR) $(gb_COMPILEROPTFLAGS) @@ -421,7 +352,7 @@ $(call gb_Helper_abbreviate_dirs_native,\ $(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \ $(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \ $(foreach extraobjectlist,$(EXTRAOBJECTLISTS),$(shell cat $(extraobjectlist))) \ - $(PCHOBJS))) && \ + $(PCHOBJS) $(NATIVERES))) && \ $(gb_LINK) \ $(if $(filter Library CppunitTest,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \ $(if $(filter StaticLibrary,$(TARGETTYPE)),$(gb_StaticLibrary_TARGETTYPEFLAGS)) \ @@ -447,8 +378,11 @@ gb_Library_PLAINEXT := .lib gb_Library_PLAINLIBS_NONE += \ advapi32 \ gdi32 \ + gdiplus \ gnu_getopt \ + imm32\ kernel32 \ + msimg32 \ msvcrt \ msvcprt \ mpr \ @@ -461,6 +395,7 @@ gb_Library_PLAINLIBS_NONE += \ user32 \ uuid \ uwinapi \ + winspool \ z \ gb_Library_LAYER := \ @@ -525,6 +460,26 @@ $(call gb_LinkTarget_get_headers_target,$(2)) : PDBFILE = $(call gb_LinkTarget_g endef +define gb_Library_add_default_nativeres +$(call gb_WinResTarget_WinResTarget_init,$(1)/$(2)) +$(call gb_WinResTarget_add_file,$(1)/$(2),solenv/inc/shlinfo) +$(call gb_WinResTarget_set_defs,$(1)/$(2),\ + $$(DEFS) \ + -DADDITIONAL_VERINFO1 \ + -DADDITIONAL_VERINFO2 \ + -DADDITIONAL_VERINFO3 \ +) +$(call gb_Library_add_nativeres,$(1),$(2)) +$(call gb_Library_get_clean_target,$(1)) : $(call gb_WinResTarget_get_clean_target,$(1)/$(2)) + +endef + +define gb_Library_add_nativeres +$(call gb_LinkTarget_get_target,$(call gb_Library__get_linktargetname,$(1))) : $(call gb_WinResTarget_get_target,$(1)/$(2)) +$(call gb_LinkTarget_get_target,$(call gb_Library__get_linktargetname,$(1))) : NATIVERES += $(call gb_WinResTarget_get_target,$(1)/$(2)) + +endef + define gb_Library_get_dllname $(patsubst $(1):%,%,$(filter $(1):%,$(gb_Library_DLLFILENAMES))) endef @@ -685,6 +640,45 @@ else gb_SrsPartTarget__command_dep = endif +# WinResTarget class + +gb_WinResTarget_POSTFIX :=.res + +define gb_WinResTarget__command +$(call gb_Output_announce,$(2),$(true),RES,3) +$(call gb_Helper_abbreviate_dirs_native,\ + mkdir -p $(dir $(1)) && \ + $(gb_RC) \ + $(DEFS) $(FLAGS) \ + -I$(dir $(3)) \ + $(INCLUDE) \ + -Fo$(1) \ + $(RCFILE) ) +endef + +$(eval $(call gb_Helper_make_dep_targets,\ + WinResTarget \ +)) + +ifeq ($(gb_FULLDEPS),$(true)) +define gb_WinResTarget__command_dep +$(call gb_Helper_abbreviate_dirs_native,\ + $(OUTDIR)/bin/makedepend$(gb_Executable_EXT) \ + $(INCLUDE) \ + $(DEFS) \ + $(2) \ + -f - \ + | $(gb_AWK) -f $(GBUILDDIR)/processdeps.awk \ + -v OBJECTFILE=$(call gb_WinResTarget_get_target,$(1)) \ + -v OUTDIR=$(OUTDIR)/ \ + -v WORKDIR=$(WORKDIR)/ \ + -v SRCDIR=$(SRCDIR)/ \ + -v REPODIR=$(REPODIR)/ \ + > $(call gb_WinResTarget_get_dep_target,$(1))) +endef +else +gb_WinResTarget__command_dep = +endif # ComponentTarget |