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

Last change on this file since 21776 was 21774, checked in by dmik, 14 years ago

OdinCxxDLL: Fix default linking to initdll.lib.

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