vcl2gnumake: #i116588# add: windows native resource files (thanks hjs !)

This commit is contained in:
Philipp Lohmann [pl] 2011-03-23 17:27:40 +01:00
parent 121d025d6a
commit 5ebffff3fa
6 changed files with 134 additions and 6 deletions

View file

@ -61,6 +61,7 @@ $$(eval $$(call gb_Output_error,Library $(1) must be registered in Repository.mk
endif
$(call gb_Library_get_target,$(1)) : AUXTARGETS :=
$(call gb_Library__Library_impl,$(1),$(call gb_Library__get_linktargetname,$(1)))
$(call gb_Library_add_default_nativeres,$(1),default)
endef

View file

@ -362,6 +362,7 @@ $(call gb_LinkTarget_get_target,$(1)) : PCH_NAME :=
$(call gb_LinkTarget_get_target,$(1)) : PCHOBJS :=
$(call gb_LinkTarget_get_headers_target,$(1)) \
$(call gb_LinkTarget_get_target,$(1)) : PDBFILE :=
$(call gb_LinkTarget_get_target,$(1)) : NATIVERES :=
ifeq ($(gb_FULLDEPS),$(true))
ifneq ($(wildcard $(call gb_LinkTarget_get_dep_target,$(1))),)

2
solenv/gbuild/TargetLocations.mk Normal file → Executable file
View file

@ -81,6 +81,7 @@ gb_SdiTarget_get_target = $(WORKDIR)/SdiTarget/$(1)
gb_SrsPartMergeTarget_get_target = $(WORKDIR)/SrsPartMergeTarget/$(1)
gb_SrsPartTarget_get_target = $(WORKDIR)/SrsPartTarget/$(1)
gb_SrsTarget_get_target = $(WORKDIR)/SrsTarget/$(1).srs
gb_WinResTarget_get_target = $(WORKDIR)/WinResTarget/$(1)$(gb_WinResTarget_POSTFIX)
define gb_Library_get_external_headers_target
$(patsubst $(1):%,$(WORKDIR)/ExternalHeaders/Library/%,$(filter $(1):%,$(gb_Library_FILENAMES)))
@ -105,6 +106,7 @@ $(eval $(call gb_Helper_make_clean_targets,\
JunitTest \
LinkTarget \
Module \
WinResTarget \
NoexPrecompiledHeader \
PackagePart \
PrecompiledHeader \

View file

@ -221,6 +221,7 @@ $(eval $(call gb_Deliver_init))
include $(foreach class, \
ComponentTarget \
AllLangResTarget \
WinResTarget \
LinkTarget \
Library \
StaticLibrary \

View file

@ -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 \
@ -180,7 +188,7 @@ gb_PrecompiledHeader_EXCEPTIONFLAGS := $(gb_LinkTarget_EXCEPTIONFLAGS)
gb_LinkTarget_NOEXCEPTIONFLAGS := \
-DEXCEPTIONS_OFF \
gb_NoexPrecompiledHeader_NOEXCEPTIONFLAGS := $(gb_LinkTarget_NOEXCEPTIONFLAGS)
gb_LinkTarget_LDFLAGS := \
@ -274,11 +282,11 @@ $(call gb_Helper_abbreviate_dirs_native,\
$(3) \
-f - \
| $(gb_AWK) -f $(GBUILDDIR)/processdeps.awk \
-v OBJECTFILE=$(1) \
-v OUTDIR=$(OUTDIR)/ \
-v OBJECTFILE=$(1) \
-v OUTDIR=$(OUTDIR)/ \
-v WORKDIR=$(WORKDIR)/ \
-v SRCDIR=$(SRCDIR)/ \
-v REPODIR=$(REPODIR)/ \
-v REPODIR=$(REPODIR)/ \
> $(call gb_CxxObject_get_dep_target,$(2)))
endef
else
@ -383,7 +391,6 @@ $(call gb_Helper_abbreviate_dirs_native,\
$(call gb_NoexPrecompiledHeader__command_deponcompile,$(1),$(2),$(3),$(4),$(5),$(6))
endef
# LinkTarget class
gb_LinkTarget_CFLAGS := $(gb_CFLAGS) $(gb_CFLAGS_WERROR) $(gb_COMPILEROPTFLAGS)
@ -406,7 +413,7 @@ $(call gb_Helper_abbreviate_dirs_native,\
echo "$(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \
$(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \
$(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \
$(PCHOBJS)" > $${RESPONSEFILE} && \
$(PCHOBJS) $(NATIVERES)" > $${RESPONSEFILE} && \
$(gb_LINK) \
$(if $(filter Library CppunitTest,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \
$(if $(filter StaticLibrary,$(TARGETTYPE)),$(gb_StaticLibrary_TARGETTYPEFLAGS)) \
@ -519,6 +526,20 @@ $(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/gbuild/shlinfo)
$(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
@ -672,6 +693,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

View file

@ -96,6 +96,13 @@ gb_CPUDEFS := \
-DINTEL \
-D_M_IX86 \
gb_RCDEFS := \
-DWINVER=0x0400 \
-DWIN32 \
gb_RCFLAGS := \
-V
gb_CFLAGS := \
-Wall \
-Wendif-labels \
@ -521,6 +528,20 @@ $(call gb_Deliver_add_deliverable,$(OUTDIR)/bin/$(notdir $(3)),$(3))
endef
define gb_Library_add_default_nativeres
$(call gb_WinResTarget_WinResTarget_init,$(1)/$(2))
$(call gb_WinResTarget_add_file,$(1)/$(2),solenv/gbuild/shlinfo)
$(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
@ -599,6 +620,48 @@ else
gb_SrsPartTarget__command_dep =
endif
# WinResTarget class
gb_WinResTarget_POSTFIX :=_res.o
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$(patsubst %_res.o,%.res,$(1)) \
$(RCFILE) )
windres $(patsubst %_res.o,%.res,$(1)) $(1)
rm $(patsubst %_res.o,%.res,$(1))
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
gb_XSLTPROCPRECOMMAND := PATH="$${PATH}:$(OUTDIR)/bin"