source: branches/gcc-kmk/Config.kmk@ 21779

Last change on this file since 21779 was 21778, checked in by dmik, 14 years ago

Add .orc path to includes when compiling resources.

This fixes builds from the top directory.

  • Property svn:eol-style set to native
File size: 6.4 KB
RevLine 
[21690]1## @file
2# Global Project Configuration File
3#
4
5#------------------------------------------------------------------------------
6# Global definitions
7#------------------------------------------------------------------------------
8
[21756]9##
[21767]10# Defines an import library target for the given DLL target.
11#
[21756]12# @param 1 DLL target name.
[21767]13# @param 2 .def file (defaults to <1>.def).
14# @param 3 .def file for debug (defaults to <2>).
[21777]15# @param 4 non-empty to disable .def post-processing with ImpDef.
[21756]16#
[21777]17odin_implib = $(evalcall odin_implib_common,$(1),$(2),$(3),$(4))
[21767]18
19define odin_implib_common
20 local target := $(1)
[21777]21 local def := $(abspath $(PATH_SUB_CURRENT)/$(if $(2),$(2),$(1).def))
22 local def_exp := $(notdir $(basename $(def))).exp.def
[21767]23ifneq ($(3),)
[21777]24 local def_debug := $(abspath $(PATH_SUB_CURRENT)/$(3))
25 local def_exp_debug := $(notdir $(basename $(def_debug))).exp.def
[21767]26endif
[21777]27 local no_def_exp := $(4)
[21756]28 $(eval $(def_odin_implib))
29endef
30
31define def_odin_implib
[21767]32 LIBRARIES += $(target)_imp
33 $(target)_imp_TEMPLATE = OdinCxx
34 $(target)_imp_NAME = $(target)
[21772]35 $$$$($(target)_imp_0_OUTDIR)/$(def_exp): $(def) | $$$$(dir $$$$@)
36 %$$(call MSG_TOOL,impdef,$(target)_imp,$(abspath $$<),$$@)
37 $(QUIET2)$$(PATH_STAGE_BIN)/impdef $$< $$@
[21767]38ifeq ($(def_exp_debug),)
[21777]39 ifeq ($(no_def_exp),)
[21767]40 $(target)_imp_SOURCES = $$($(target)_imp_0_OUTDIR)/$(def_exp)
41 $(target)_imp_CLEAN += $$($(target)_imp_0_OUTDIR)/$(def_exp)
[21777]42 else
43 $(target)_imp_SOURCES = $$($(target)_imp_0_OUTDIR)/$(def)
44 endif
[21756]45else
[21777]46 ifeq ($(no_def_exp),)
[21772]47 $(target)_imp_SOURCES.release = $$($(target)_imp_0_OUTDIR)/$(def_exp)
48 $(target)_imp_CLEAN.release += $$($(target)_imp_0_OUTDIR)/$(def_exp)
49 $$$$($(target)_imp_0_OUTDIR)/$(def_exp_debug): $(def_debug) | $$$$(dir $$$$@)
50 %$$(call MSG_TOOL,impdef,$(target)_imp,$(abspath $$<),$$@)
51 $(QUIET2)$$(PATH_STAGE_BIN)/impdef $$< $$@
52 $(target)_imp_SOURCES.debug = $$($(target)_imp_0_OUTDIR)/$(def_exp_debug)
53 $(target)_imp_CLEAN.debug += $$($(target)_imp_0_OUTDIR)/$(def_exp_debug)
[21777]54 else
55 $(target)_imp_SOURCES.debug = $$($(target)_imp_0_OUTDIR)/$(def_debug)
56 endif
[21756]57endif
58endef
59
60##
[21777]61# Shortcut to $(call odin_implib,<1>,<2>,<3>,1) used to disable .def file
62# post-processing with the ImpDef tool.
[21767]63#
[21756]64# @param 1 DLL target name.
[21777]65# @param 2 .def file (defaults to <1>.def).
66# @param 3 .def file for debug (defaults to <2>).
[21756]67#
[21777]68odin_implib_no_expdef = $(call odin_implib,$(1),$(2),(3),1)
69
70##
71# Shortcut to $(call odin_implib, <1>, <1>.def, <1>dbg.def).
[21767]72#
[21777]73# @param 1 DLL target name.
74#
[21767]75odin_implib_2 = $(call odin_implib,$(1),$(1).def,$(1)dbg.def)
[21756]76
[21777]77##
78# Shortcut to $(call odin_implib_no_expdef,<1>,<1>.def,<1>dbg.def).
[21767]79#
[21777]80# @param 1 DLL target name.
81#
82odin_implib_2_no_expdef = $(call odin_implib_no_expdef,$(1),$(1).def,$(1)dbg.def)
83
84#
[21746]85# Handler for Wine RC (.orc) source files
[21767]86#
[21746]87KBUILD_SRC_HANDLERS += .orc:def_src_handler_wrc
88define def_src_handler_wrc
89local type := WRC
90 $(kb-src-one 2)
91endef
92
[21767]93#
[21749]94# Override handler for .asm files to compile them with the MASM-compilant tool
[21767]95#
[21749]96KBUILD_SRC_HANDLERS := .asm:def_src_handler_masm $(KBUILD_SRC_HANDLERS)
97define def_src_handler_masm
98local type := $(if $(TOOL_$(tool)_COMPILE_MASM_CMDS),MASM,AS)
99 $(kb-src-one 2)
100endef
101
[21690]102#------------------------------------------------------------------------------
[21746]103# Tools
104#------------------------------------------------------------------------------
105
[21767]106#
[21746]107# Add support for Wine RC to the GCC compiler
[21767]108#
[21746]109TOOL_GXX3OMF_WRC = $(PATH_STAGE_BIN)/winerc.exe
[21749]110TOOL_GXX3OMF_WRCOBJSUFF = $(TOOL_GXX3OMF_COBJSUFF)
[21746]111TOOL_GXX3OMF_COMPILE_WRC_OUTPUT = $(outbase).orc.s
112TOOL_GXX3OMF_COMPILE_WRC_DEPEND =
113TOOL_GXX3OMF_COMPILE_WRC_DEPORD =
114define TOOL_GXX3OMF_COMPILE_WRC_CMDS
[21778]115 $(QUIET)$(TOOL_GXX3OMF_WRC) -s -p _$(target) -I$(subst /,\\,$(abspath $(dir $(source))))\
[21747]116 $(flags) $(addprefix -I, $(subst /,\\,$(incs))) $(addprefix -D, $(defs))\
117 $(subst /,\\,$(abspath $(source))) \
118 -o $(TOOL_GXX3OMF_COMPILE_WRC_OUTPUT)
[21778]119 $(QUIET)$(TOOL_GXX3OMF_CC) -E -I$(subst /,\\,$(abspath $(dir $(source))))\
[21748]120 $(flags) $(addprefix -I, $(incs)) -I . $(addprefix -D, $(defs))\
121 -x c $(abspath $(source)) \
122 | $(DEP_PRE) -f -s -o $(dep) -t $(obj) -
[21747]123 $(subst $(source),$(TOOL_GXX3OMF_COMPILE_WRC_OUTPUT),$(TOOL_GXX3OMF_COMPILE_AS_CMDS))
[21746]124endef
125
[21749]126TOOL_GXX3OMF_MASM = $(firstword $(PATH_TOOL_ALP) alp.exe)
127TOOL_GXX3OMF_MASMFLAGS = -Mb
128TOOL_GXX3OMF_COMPILE_MASM_OUTPUT = $(outbase).lst
129TOOL_GXX3OMF_COMPILE_MASM_DEPEND =
130TOOL_GXX3OMF_COMPILE_MASM_DEPORD =
131define TOOL_GXX3OMF_COMPILE_MASM_CMDS
132 $(QUIET)$(TOOL_GXX3OMF_MASM)\
133 $(flags) $(addsuffix /,$(addprefix -I:, $(incs))) $(addprefix -D:, $(defs))\
134 $(source)\
135 -Fl:$(outbase).lst\
136 -Fd:$(dep)\
137 -Fo:$(obj)
138endef
139
[21746]140#------------------------------------------------------------------------------
[21690]141# Common libraries referenced by components
142#------------------------------------------------------------------------------
143
144#------------------------------------------------------------------------------
145# General Stuff
146#------------------------------------------------------------------------------
147
[21733]148TEMPLATE_OdinCxx = Odin C/C++ sources
[21695]149TEMPLATE_OdinCxx_TOOL = GXX3OMF
[21736]150TEMPLATE_OdinCxx_INCS = $(PATH_ROOT)/include/win $(PATH_ROOT)/include $(PATH_ROOT)/include/incl_gcc
[21695]151TEMPLATE_OdinCxx_DEFS = __WIN32OS2__ __WINE__ __i386__ TCPV40HDRS COMCTL32UNDOC
152
153TEMPLATE_OdinCRT = OdinCRT library
154TEMPLATE_OdinCRT_EXTENDS = OdinCxx
155TEMPLATE_OdinCRT_EXTENDS_BY = overriding
156TEMPLATE_OdinCRT_DEFS = __WIN32OS2__ __WINE__ __i386__
157
158TEMPLATE_OdinCRT = Win32 application
159TEMPLATE_OdinCRT_EXTENDS = OdinCxx
160TEMPLATE_OdinCRT_EXTENDS_BY = overriding
161TEMPLATE_OdinCRT_DEFS = __WIN32OS2__ __i386__
162
[21733]163TEMPLATE_OdinCxxDLL = Odin C/C++ DLL
164TEMPLATE_OdinCxxDLL_EXTENDS = OdinCxx
165TEMPLATE_OdinCxxDLL_EXTENDS_BY = overriding
[21774]166TEMPLATE_OdinCxxDLL_LIBS = $(TEMPLATE_OdinCxx_LIBS) \
167 $(PATH_STAGE_LIB)/initdll.lib
[21733]168
[21690]169#------------------------------------------------------------------------------
170# GCC Stuff
171#------------------------------------------------------------------------------
172
173#------------------------------------------------------------------------------
174# Other Stuff
175#------------------------------------------------------------------------------
176
177#
178# Include a site-specific config for local overrides
179#
180ifndef LOCALCFG
181 LOCALCFG := $(wildcard $(PATH_ROOT)/LocalConfig.kmk)
182 ifneq ($(LOCALCFG),)
183 include $(LOCALCFG)
184 endif
185endif
Note: See TracBrowser for help on using the repository browser.