source: trunk/libc/Config.kmk@ 2723

Last change on this file since 2723 was 2723, checked in by bird, 19 years ago

Started porting to NT.

File size: 8.3 KB
Line 
1# $Id: $
2## @file
3#
4# kBuild Makefile for kLIBC (formerly known as InnoTek LIBC).
5#
6# Copyright (c) 2006 knut st. osmundsen <[email protected]>
7#
8#
9# This file is part of kLIBC.
10#
11# kLIBC is free software; you can redistribute it and/or modify
12# it under the terms of the GNU General Public License as published by
13# the Free Software Foundation; either version 2 of the License, or
14# (at your option) any later version.
15#
16# kLIBC is distributed in the hope that it will be useful,
17# but WITHOUT ANY WARRANTY; without even the implied warranty of
18# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19# GNU General Public License for more details.
20#
21# You should have received a copy of the GNU General Public License
22# along with kLIBC; if not, write to the Free Software
23# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
24#
25#
26
27
28# Include the top-level Config.kmk.
29include $(PATH_ROOT)/Config.kmk
30
31# Undo the packing pass the toplevel config insists on.
32DEFAULT_PASSES := $(filter-out PACKING,$(DEFAULT_PASSES))
33
34#
35# Configuration.
36#
37ifndef CFG_LIBC_NO_VARIANT_LIBS
38 ifndef CFG_LIBC_LOGSTRICT_LIBS
39 ifndef CFG_LIBC_PROFILED_LIBS
40 CFG_LIBC_LOGSTRICT_LIBS := 1
41 CFG_LIBC_PROFILED_LIBS := 1
42 endif
43 endif
44endif
45
46#
47# Global definitions.
48#
49DEFS = \
50 IN_INNOTEK_LIBC \
51 __IN_INNOTEK_LIBC__
52DEFS.os2 = __OS2__
53DEFS.win32 = __NT__
54DEFS.win64 = __NT__
55
56
57#
58# Paths to directories and files.
59#
60PATH_LIBC_ROOT = $(PATH_ROOT)/libc
61PATH_LIBC_SRC = $(PATH_LIBC_ROOT)/src
62PATH_LIBC_INC = $(PATH_LIBC_ROOT)/include
63LIBC-STD.H = $(PATH_OBJ)/libc/libc-std.h
64LIBC_GENALIAS = $(PATH_TARGET)/genalias/genalias$(HOSTSUFF_EXE)
65LIBC_GENALIAS_FORMAT.win32 = coff
66LIBC_GENALIAS_FORMAT.win64 = coff
67ifdef LIBC_GENALIAS_FORMAT.$(BUILD_TARGET)
68LIBC_GENALIAS_FORMAT := $(LIBC_GENALIAS_FORMAT.$(BUILD_TARGET))
69else
70LIBC_GENALIAS_FORMAT := aout
71endif
72
73#
74# Templates
75#
76TEMPLATE_libc =
77TEMPLATE_libc_TOOL = GCC3
78TEMPLATE_libc_INCS = $(PATH_LIBC_INC) $(dir $(LIBC-STD.H))
79TEMPLATE_libc_INCS.win32 = $(PATH_LIBC_SRC)/w32api/include
80TEMPLATE_libc_INCS.win64 = $(TEMPLATE_libc_INCS.win32)
81TEMPLATE_libc_DEPS = $(LIBC-STD.H)
82TEMPLATE_libc_INST = usr/lib/
83TEMPLATE_libc_CFLAGS = $(TEMPLATE_lib_CFLAGS) -std=gnu99
84
85TEMPLATE_libc.logstrict =
86TEMPLATE_libc.logstrict_TOOL = GCC3
87TEMPLATE_libc.logstrict_INCS = $(TEMPLATE_libc_INCS)
88TEMPLATE_libc.logstrict_INCS.win32 = $(TEMPLATE_libc_INCS.win32)
89TEMPLATE_libc.logstrict_INCS.win64 = $(TEMPLATE_libc_INCS.win64)
90TEMPLATE_libc.logstrict_DEFS = $(TEMPLATE_libc_DEFS) __LIBC_STRICT DEBUG_LOGGING
91TEMPLATE_libc.logstrict_DEPS = $(TEMPLATE_libc_DEPS)
92TEMPLATE_libc.logstrict_INST = $(TEMPLATE_libc_INST)
93TEMPLATE_libc.logstrict_CFLAGS = $(TEMPLATE_libc_CFLAGS)
94
95TEMPLATE_libc.profiled =
96TEMPLATE_libc.profiled_TOOL = GCC3
97TEMPLATE_libc.profiled_INCS = $(TEMPLATE_libc_INCS)
98TEMPLATE_libc.profiled_INCS.win32 = $(TEMPLATE_libc_INCS.win32)
99TEMPLATE_libc.profiled_INCS.win64 = $(TEMPLATE_libc_INCS.win64)
100TEMPLATE_libc.profiled_DEFS = $(TEMPLATE_libc_DEFS) __LIBC_PROFILED
101TEMPLATE_libc.profiled_DEPS = $(TEMPLATE_libc_DEPS)
102TEMPLATE_libc.profiled_INST = $(TEMPLATE_libc_INST)
103TEMPLATE_libc.profiled_CFLAGS = $(TEMPLATE_libc_CFLAGS)
104
105TEMPLATE_libcsub = LIBC Sub-Library.
106TEMPLATE_libcsub_EXTENDS = libc
107TEMPLATE_libcsub_NOINST = 1
108
109TEMPLATE_libcsub.logstrict = LIBC Sub-Library, Logging + Strict.
110TEMPLATE_libcsub.logstrict_EXTENDS = libc.logstrict
111TEMPLATE_libcsub.logstrict_NOINST = 1
112
113TEMPLATE_libcsub.profiled = LIBC Sub-Library, Profiled.
114TEMPLATE_libcsub.profiled_EXTENDS = libc.profiled
115TEMPLATE_libcsub.profiled_NOINST = 1
116
117
118# Intel assembly libs (default templates uses AT&T assembly).
119
120TEMPLATE_libcasm =
121TEMPLATE_libcasm_TOOL = GCC3
122TEMPLATE_libcasm_TOOL.os2 = GCC3OMF
123TEMPLATE_libcasm_ASTOOL = ALP
124TEMPLATE_libcasm_INCS = $(PATH_LIBC_INC) $(dir $(LIBC-STD.H))
125TEMPLATE_libcasm_INST = usr/lib/
126TEMPLATE_libcasm_ASFLAGS = -Sv:ALP
127
128TEMPLATE_libcasm.logstrict =
129TEMPLATE_libcasm.logstrict_TOOL = GCC3
130TEMPLATE_libcasm.logstrict_TOOL.os2 = GCC3OMF
131TEMPLATE_libcasm.logstrict_ASTOOL = ALP
132TEMPLATE_libcasm.logstrict_DEFS = $(TEMPLATE_libcasm_DEFS) __LIBC_STRICT DEBUG_LOGGING
133TEMPLATE_libcasm.logstrict_INCS = $(TEMPLATE_libcasm_INCS)
134TEMPLATE_libcasm.logstrict_INST = $(TEMPLATE_libcasm_INST)
135TEMPLATE_libcasm.logstrict_ASFLAGS = $(TEMPLATE_libcasm_ASFLAGS)
136
137TEMPLATE_libcasm.profiled =
138TEMPLATE_libcasm.profiled_TOOL = GCC3
139TEMPLATE_libcasm.profiled_TOOL.os2 = GCC3OMF
140TEMPLATE_libcasm.profiled_ASTOOL = ALP
141TEMPLATE_libcasm.profiled_DEFS = $(TEMPLATE_libcasm_DEFS) __LIBC_PROFILED
142TEMPLATE_libcasm.profiled_INCS = $(TEMPLATE_libcasm_INCS)
143TEMPLATE_libcasm.profiled_INST = $(TEMPLATE_libcasm_INST)
144TEMPLATE_libcasm.profiled_ASFLAGS = $(TEMPLATE_libcasm_ASFLAGS)
145
146TEMPLATE_libcsubasm =
147TEMPLATE_libcsubasm_EXTENDS = libcasm
148TEMPLATE_libcsubasm_NOINST = 1
149
150TEMPLATE_libcsubasm.logstrict =
151TEMPLATE_libcsubasm.logstrict_EXTENDS = libcasm.logstrict
152TEMPLATE_libcsubasm.logstrict_NOINST = 1
153
154TEMPLATE_libcsubasm =
155TEMPLATE_libcsubasm.profiled_EXTENDS = libcasm.profiled
156TEMPLATE_libcsubasm.profiled_NOINST = 1
157
158
159# Only permit #include <include/emx/bigint.h>.
160TEMPLATE_bldprog = Build programs
161TEMPLATE_bldprog_TOOL = GCC3
162TEMPLATE_bldprog_DEFS = __LIBC_BUILD_PROGRAM__
163TEMPLATE_bldprog_INCS = $(PATH_LIBC_ROOT)
164
165
166#
167# Macro which configures additional library targets.
168#
169define def_libc_variants
170ifdef CFG_LIBC_LOGSTRICT_LIBS
171LIBRARIES += $(1)_l
172$(1)_l_TEMPLATE = $($(1)_TEMPLATE).logstrict
173$(1)_l_DEFS = $($(1)_DEFS)
174$(1)_l_DEFS.$(BUILD_TYPE) = $($(1)_DEFS.$(BUILD_TYPE))
175$(1)_l_DEFS.$(BUILD_TARGET) = $($(1)_DEFS.$(BUILD_TARGET))
176$(1)_l_DEFS.$(BUILD_TARGET_ARCH) = $($(1)_DEFS.$(BUILD_TARGET_ARCH))
177$(1)_l_DEFS.$(BUILD_TARGET_CPU) = $($(1)_DEFS.$(BUILD_TARGET_CPU))
178$(1)_l_INCS = $($(1)_INCS)
179$(1)_l_INCS.$(BUILD_TYPE) = $($(1)_INCS.$(BUILD_TYPE))
180$(1)_l_INCS.$(BUILD_TARGET) = $($(1)_INCS.$(BUILD_TARGET))
181$(1)_l_INCS.$(BUILD_TARGET_ARCH) = $($(1)_INCS.$(BUILD_TARGET_ARCH))
182$(1)_l_INCS.$(BUILD_TARGET_CPU) = $($(1)_INCS.$(BUILD_TARGET_CPU))
183$(1)_l_CFLAGS = $($(1)_CFLAGS)
184$(1)_l_CFLAGS.$(BUILD_TYPE) = $($(1)_CFLAGS.$(BUILD_TYPE))
185$(1)_l_CFLAGS.$(BUILD_TARGET) = $($(1)_CFLAGS.$(BUILD_TARGET))
186$(1)_l_CFLAGS.$(BUILD_TARGET_ARCH) = $($(1)_CFLAGS.$(BUILD_TARGET_ARCH))
187$(1)_l_CFLAGS.$(BUILD_TARGET_CPU) = $($(1)_CFLAGS.$(BUILD_TARGET_CPU))
188$(1)_l_SOURCES = $($(1)_SOURCES)
189$(1)_l_SOURCES.$(BUILD_TYPE) = $($(1)_SOURCES.$(BUILD_TYPE))
190$(1)_l_SOURCES.$(BUILD_TARGET) = $($(1)_SOURCES.$(BUILD_TARGET))
191$(1)_l_SOURCES.$(BUILD_TARGET_ARCH) = $($(1)_SOURCES.$(BUILD_TARGET_ARCH))
192$(1)_l_SOURCES.$(BUILD_TARGET_CPU) = $($(1)_SOURCES.$(BUILD_TARGET_CPU))
193endif # CFG_LIBC_LOGSTRICT_LIBS
194
195ifdef CFG_LIBC_PROFILED_LIBS
196LIBRARIES += $(1)_p
197$(1)_p_TEMPLATE = $($(1)_TEMPLATE).profiled
198$(1)_p_DEFS = $($(1)_DEFS)
199$(1)_p_DEFS.$(BUILD_TYPE) = $($(1)_DEFS.$(BUILD_TYPE))
200$(1)_p_DEFS.$(BUILD_TARGET) = $($(1)_DEFS.$(BUILD_TARGET))
201$(1)_p_DEFS.$(BUILD_TARGET_ARCH) = $($(1)_DEFS.$(BUILD_TARGET_ARCH))
202$(1)_p_DEFS.$(BUILD_TARGET_CPU) = $($(1)_DEFS.$(BUILD_TARGET_CPU))
203$(1)_p_INCS = $($(1)_INCS)
204$(1)_p_INCS.$(BUILD_TYPE) = $($(1)_INCS.$(BUILD_TYPE))
205$(1)_p_INCS.$(BUILD_TARGET) = $($(1)_INCS.$(BUILD_TARGET))
206$(1)_p_INCS.$(BUILD_TARGET_ARCH) = $($(1)_INCS.$(BUILD_TARGET_ARCH))
207$(1)_p_INCS.$(BUILD_TARGET_CPU) = $($(1)_INCS.$(BUILD_TARGET_CPU))
208$(1)_p_CFLAGS = $($(1)_CFLAGS)
209$(1)_p_CFLAGS.$(BUILD_TYPE) = $($(1)_CFLAGS.$(BUILD_TYPE))
210$(1)_p_CFLAGS.$(BUILD_TARGET) = $($(1)_CFLAGS.$(BUILD_TARGET))
211$(1)_p_CFLAGS.$(BUILD_TARGET_ARCH) = $($(1)_CFLAGS.$(BUILD_TARGET_ARCH))
212$(1)_p_CFLAGS.$(BUILD_TARGET_CPU) = $($(1)_CFLAGS.$(BUILD_TARGET_CPU))
213$(1)_p_SOURCES = $($(1)_SOURCES)
214$(1)_p_SOURCES.$(BUILD_TYPE) = $($(1)_SOURCES.$(BUILD_TYPE))
215$(1)_p_SOURCES.$(BUILD_TARGET) = $($(1)_SOURCES.$(BUILD_TARGET))
216$(1)_p_SOURCES.$(BUILD_TARGET_ARCH) = $($(1)_SOURCES.$(BUILD_TARGET_ARCH))
217$(1)_p_SOURCES.$(BUILD_TARGET_CPU) = $($(1)_SOURCES.$(BUILD_TARGET_CPU))
218endif # CFG_LIBC_PROFILED_LIBS
219endef
220
221define def_libc_variants2
222LIBC_LIBRARIES += $(1)
223LIBC_SUB_LIBRARIES += $(1)
224$(def_libc_variants)
225endef
226
227LIBC_CONFIG_VARIANT_LIBS = $(eval $(call def_libc_variants2,$(1)))
228LIBC_CONFIG_VARIANT_LIBS_OTHER = $(eval $(call def_libc_variants,$(1)))
229
230
231#
232# Just stub this for sub makefile.
233# Need better solution later...
234#
235$(LIBC-STD.H):
236
Note: See TracBrowser for help on using the repository browser.