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
Line 
1## @file
2# Global Project Configuration File
3#
4
5#------------------------------------------------------------------------------
6# Global definitions
7#------------------------------------------------------------------------------
8
9##
10# Defines an import library target for the given DLL target.
11#
12# @param 1 DLL target name.
13# @param 2 .def file (defaults to <1>.def).
14# @param 3 .def file for debug (defaults to <2>).
15# @param 4 non-empty to disable .def post-processing with ImpDef.
16#
17odin_implib = $(evalcall odin_implib_common,$(1),$(2),$(3),$(4))
18
19define odin_implib_common
20 local target := $(1)
21 local def := $(abspath $(PATH_SUB_CURRENT)/$(if $(2),$(2),$(1).def))
22 local def_exp := $(notdir $(basename $(def))).exp.def
23ifneq ($(3),)
24 local def_debug := $(abspath $(PATH_SUB_CURRENT)/$(3))
25 local def_exp_debug := $(notdir $(basename $(def_debug))).exp.def
26endif
27 local no_def_exp := $(4)
28 $(eval $(def_odin_implib))
29endef
30
31define def_odin_implib
32 LIBRARIES += $(target)_imp
33 $(target)_imp_TEMPLATE = OdinCxx
34 $(target)_imp_NAME = $(target)
35 $$$$($(target)_imp_0_OUTDIR)/$(def_exp): $(def) | $$$$(dir $$$$@)
36 %$$(call MSG_TOOL,impdef,$(target)_imp,$(abspath $$<),$$@)
37 $(QUIET2)$$(PATH_STAGE_BIN)/impdef $$< $$@
38ifeq ($(def_exp_debug),)
39 ifeq ($(no_def_exp),)
40 $(target)_imp_SOURCES = $$($(target)_imp_0_OUTDIR)/$(def_exp)
41 $(target)_imp_CLEAN += $$($(target)_imp_0_OUTDIR)/$(def_exp)
42 else
43 $(target)_imp_SOURCES = $$($(target)_imp_0_OUTDIR)/$(def)
44 endif
45else
46 ifeq ($(no_def_exp),)
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)
54 else
55 $(target)_imp_SOURCES.debug = $$($(target)_imp_0_OUTDIR)/$(def_debug)
56 endif
57endif
58endef
59
60##
61# Shortcut to $(call odin_implib,<1>,<2>,<3>,1) used to disable .def file
62# post-processing with the ImpDef tool.
63#
64# @param 1 DLL target name.
65# @param 2 .def file (defaults to <1>.def).
66# @param 3 .def file for debug (defaults to <2>).
67#
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).
72#
73# @param 1 DLL target name.
74#
75odin_implib_2 = $(call odin_implib,$(1),$(1).def,$(1)dbg.def)
76
77##
78# Shortcut to $(call odin_implib_no_expdef,<1>,<1>.def,<1>dbg.def).
79#
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#
85# Handler for Wine RC (.orc) source files
86#
87KBUILD_SRC_HANDLERS += .orc:def_src_handler_wrc
88define def_src_handler_wrc
89local type := WRC
90 $(kb-src-one 2)
91endef
92
93#
94# Override handler for .asm files to compile them with the MASM-compilant tool
95#
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
102#------------------------------------------------------------------------------
103# Tools
104#------------------------------------------------------------------------------
105
106#
107# Add support for Wine RC to the GCC compiler
108#
109TOOL_GXX3OMF_WRC = $(PATH_STAGE_BIN)/winerc.exe
110TOOL_GXX3OMF_WRCOBJSUFF = $(TOOL_GXX3OMF_COBJSUFF)
111TOOL_GXX3OMF_COMPILE_WRC_OUTPUT = $(outbase).orc.s
112TOOL_GXX3OMF_COMPILE_WRC_DEPEND =
113TOOL_GXX3OMF_COMPILE_WRC_DEPORD =
114define TOOL_GXX3OMF_COMPILE_WRC_CMDS
115 $(QUIET)$(TOOL_GXX3OMF_WRC) -s -p _$(target) -I$(subst /,\\,$(abspath $(dir $(source))))\
116 $(flags) $(addprefix -I, $(subst /,\\,$(incs))) $(addprefix -D, $(defs))\
117 $(subst /,\\,$(abspath $(source))) \
118 -o $(TOOL_GXX3OMF_COMPILE_WRC_OUTPUT)
119 $(QUIET)$(TOOL_GXX3OMF_CC) -E -I$(subst /,\\,$(abspath $(dir $(source))))\
120 $(flags) $(addprefix -I, $(incs)) -I . $(addprefix -D, $(defs))\
121 -x c $(abspath $(source)) \
122 | $(DEP_PRE) -f -s -o $(dep) -t $(obj) -
123 $(subst $(source),$(TOOL_GXX3OMF_COMPILE_WRC_OUTPUT),$(TOOL_GXX3OMF_COMPILE_AS_CMDS))
124endef
125
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
140#------------------------------------------------------------------------------
141# Common libraries referenced by components
142#------------------------------------------------------------------------------
143
144#------------------------------------------------------------------------------
145# General Stuff
146#------------------------------------------------------------------------------
147
148TEMPLATE_OdinCxx = Odin C/C++ sources
149TEMPLATE_OdinCxx_TOOL = GXX3OMF
150TEMPLATE_OdinCxx_INCS = $(PATH_ROOT)/include/win $(PATH_ROOT)/include $(PATH_ROOT)/include/incl_gcc
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
163TEMPLATE_OdinCxxDLL = Odin C/C++ DLL
164TEMPLATE_OdinCxxDLL_EXTENDS = OdinCxx
165TEMPLATE_OdinCxxDLL_EXTENDS_BY = overriding
166TEMPLATE_OdinCxxDLL_LIBS = $(TEMPLATE_OdinCxx_LIBS) \
167 $(PATH_STAGE_LIB)/initdll.lib
168
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.