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

Last change on this file since 21764 was 21756, checked in by dmik, 14 years ago

Make: Add function to auto-generate import library target definition.

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