VirtualBox

source: kBuild/trunk/src/gmake/Makefile.kmk@ 557

Last change on this file since 557 was 557, checked in by bird, 18 years ago

Initial Mac OS X / Darwin bootstrapping.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 6.7 KB
Line 
1# $Id: Makefile.kmk 557 2006-09-28 15:56:25Z bird $
2
3
4#
5# kmk
6#
7PROGRAMS += kmk
8
9kmk_TEMPLATE = BIN
10kmk_DEPS = $(PATH_TARGET)/config.h
11kmk_INCS = $(PATH_TARGET) .
12kmk_INCS.darwin = glob
13kmk_INCS.freebsd = glob
14#ifeq ($(filter-out win32 win64 win nt,$(BUILD_TARGET)),)
15#kmk_INCS += kmkbuiltin/w32
16#endif
17
18kmk_DEFS = \
19 HAVE_CONFIG_H \
20 NO_ARCHIVES \
21 CONFIG_NO_DEFAULT_SUFFIXES \
22 CONFIG_NO_DEFAULT_PATTERN_RULES \
23 CONFIG_NO_DEFAULT_TERMINAL_RULES \
24 CONFIG_NO_DEFAULT_SUFFIX_RULES \
25 CONFIG_NO_DEFAULT_VARIABLES \
26 CONFIG_WITH_EXTENDED_NOTPARALLEL \
27 CONFIG_WITH_INCLUDEDEP \
28 CONFIG_WITH_TOUPPER_TOLOWER \
29 KMK \
30 \
31 KMK_HELPERS \
32 VARIABLE_HASH \
33 CONFIG_WITH_OPTIMIZATION_HACKS \
34 CONFIG_WITH_VALUE_LENGTH \
35 CONFIG_WITH_COMPARE
36
37kmk_SOURCES = \
38 main.c \
39 read.c \
40 hash.c \
41 strcache.c \
42 variable.c \
43 ar.c \
44 arscan.c \
45 commands.c \
46 default.c \
47 dir.c \
48 expand.c \
49 file.c \
50 function.c \
51 implicit.c \
52 job.c \
53 misc.c \
54 remake.c \
55 rule.c \
56 signame.c \
57 version.c \
58 vpath.c \
59 remote-stub.c \
60 kbuild.c
61
62ifeq ($(filter-out win32 win64 win nt,$(BUILD_TARGET)),)
63kmk_SOURCES += \
64 getopt.c \
65 getopt1.c \
66 getloadavg.c \
67 w32/subproc/misc.c \
68 w32/subproc/sub_proc.c \
69 w32/subproc/w32err.c \
70 glob/glob.c \
71 glob/fnmatch.c \
72 w32/compat/dirent.c \
73 w32/pathstuff.c
74endif
75
76kmk_SOURCES.freebsd = \
77 glob/glob.c \
78 glob/fnmatch.c
79
80kmk_SOURCES.darwin = \
81 glob/glob.c \
82 glob/fnmatch.c
83
84#
85# kmkbuiltin commands
86#
87kmk_DEFS += CONFIG_WITH_KMK_BUILTIN
88kmk_SOURCES += \
89 kmkbuiltin.c \
90 kmkbuiltin/append.c \
91 kmkbuiltin/cp.c \
92 kmkbuiltin/cp_utils.c \
93 kmkbuiltin/echo.c \
94 kmkbuiltin/install.c \
95 kmkbuiltin/mkdir.c \
96 kmkbuiltin/ln.c \
97 kmkbuiltin/rm.c \
98 \
99 kmkbuiltin/err.c \
100 kmkbuiltin/setmode.c \
101 kmkbuiltin/strmode.c \
102 kmkbuiltin/strlcpy.c
103
104ifeq ($(filter-out win32 win64 win nt,$(BUILD_TARGET)),)
105kmk_SOURCES += \
106 kmkbuiltin/mscfakes.c \
107 kmkbuiltin/fts.c
108endif
109
110kmk_SOURCES.darwin += \
111 kmkbuiltin/darwin.c
112
113
114#
115# Standalone kmkbuiltin commands.
116#
117PROGRAMS += kmk_append kmk_cp kmk_echo kmk_mkdir kmk_install kmk_ln kmk_rm
118
119kmk_append_TEMPLATE = BIN
120kmk_append_DEFS = kmk_builtin_append=main
121kmk_append_INCS = .
122kmk_append_SOURCES = \
123 kmkbuiltin/append.c \
124 kmkbuiltin/err.c
125
126kmk_cp_TEMPLATE = BIN
127kmk_cp_DEFS = kmk_builtin_cp=main
128kmk_cp_SOURCES = \
129 kmkbuiltin/cp.c \
130 kmkbuiltin/cp_utils.c \
131 kmkbuiltin/strlcpy.c \
132 kmkbuiltin/err.c
133ifeq ($(filter-out win32 win64 win nt,$(BUILD_TARGET)),)
134kmk_cp_INCS += $(PATH_TARGET) .
135kmk_cp_DEFS += HAVE_CONFIG_H
136kmk_cp_SOURCES += \
137 kmkbuiltin/mscfakes.c \
138 kmkbuiltin/fts.c \
139 w32/compat/dirent.c \
140 getopt.c \
141 getopt1.c
142endif
143kmk_cp_SOURCES.darwin = \
144 kmkbuiltin/darwin.c
145
146kmk_echo_TEMPLATE = BIN
147kmk_echo_DEFS = kmk_builtin_echo=main
148kmk_echo_SOURCES = \
149 kmkbuiltin/echo.c
150ifeq ($(filter-out win32 win64 win nt,$(BUILD_TARGET)),)
151kmk_echo_SOURCES += \
152 kmkbuiltin/mscfakes.c \
153 kmkbuiltin/err.c
154endif
155
156kmk_install_TEMPLATE = BIN
157kmk_install_DEFS = kmk_builtin_install=main
158kmk_install_SOURCES = \
159 kmkbuiltin/install.c \
160 kmkbuiltin/err.c \
161 kmkbuiltin/strmode.c \
162 kmkbuiltin/setmode.c
163ifeq ($(filter-out win32 win64 win nt,$(BUILD_TARGET)),)
164kmk_install_INCS += $(PATH_TARGET) .
165kmk_install_DEFS += HAVE_CONFIG_H
166kmk_install_SOURCES += \
167 kmkbuiltin/mscfakes.c \
168 getopt.c \
169 getopt1.c
170endif
171
172kmk_ln_TEMPLATE = BIN
173kmk_ln_DEFS = kmk_builtin_ln=main
174kmk_ln_SOURCES = \
175 kmkbuiltin/ln.c \
176 kmkbuiltin/err.c
177ifeq ($(filter-out win32 win64 win nt,$(BUILD_TARGET)),)
178kmk_ln_INCS += $(PATH_TARGET) .
179kmk_ln_DEFS += HAVE_CONFIG_H
180kmk_ln_SOURCES += \
181 kmkbuiltin/mscfakes.c\
182 getopt.c \
183 getopt1.c
184endif
185
186kmk_mkdir_TEMPLATE = BIN
187kmk_mkdir_DEFS = kmk_builtin_mkdir=main
188kmk_mkdir_SOURCES = \
189 kmkbuiltin/mkdir.c \
190 kmkbuiltin/err.c \
191 kmkbuiltin/setmode.c
192ifeq ($(filter-out win32 win64 win nt,$(BUILD_TARGET)),)
193kmk_mkdir_INCS += $(PATH_TARGET) .
194kmk_mkdir_DEFS += HAVE_CONFIG_H
195kmk_mkdir_SOURCES += \
196 kmkbuiltin/mscfakes.c \
197 getopt.c \
198 getopt1.c
199endif
200
201kmk_rm_TEMPLATE = BIN
202kmk_rm_DEFS = kmk_builtin_rm=main
203kmk_rm_SOURCES = \
204 kmkbuiltin/rm.c \
205 kmkbuiltin/err.c \
206 kmkbuiltin/strmode.c
207ifeq ($(filter-out win32 win64 win nt,$(BUILD_TARGET)),)
208kmk_rm_INCS += $(PATH_TARGET) .
209kmk_rm_DEFS += HAVE_CONFIG_H
210kmk_rm_SOURCES += \
211 kmkbuiltin/mscfakes.c\
212 getopt.c \
213 getopt1.c
214endif
215
216
217
218#
219# kmk_gmake - almost plain GNU Make.
220#
221PROGRAMS += kmk_gmake
222kmk_gmake_TEMPLATE = BIN
223kmk_gmake_DEPS = $(PATH_TARGET)/config.h
224kmk_gmake_INCS = $(PATH_TARGET) .
225kmk_gmake_INCS.darwin = glob
226kmk_gmake_INCS.freebsd = glob
227
228
229kmk_gmake_DEFS = \
230 HAVE_CONFIG_H \
231 NO_ARCHIVES \
232 CONFIG_WITH_TOUPPER_TOLOWER
233
234kmk_gmake_SOURCES = \
235 main.c \
236 read.c \
237 hash.c \
238 strcache.c \
239 variable.c \
240 ar.c \
241 arscan.c \
242 commands.c \
243 default.c \
244 dir.c \
245 expand.c \
246 file.c \
247 function.c \
248 implicit.c \
249 job.c \
250 misc.c \
251 remake.c \
252 rule.c \
253 signame.c \
254 version.c \
255 vpath.c \
256 remote-stub.c
257
258ifeq ($(filter-out win32 win64 win nt,$(BUILD_TARGET)),)
259kmk_gmake_SOURCES += \
260 getopt.c \
261 getopt1.c \
262 getloadavg.c \
263 w32/subproc/misc.c \
264 w32/subproc/sub_proc.c \
265 w32/subproc/w32err.c \
266 glob/glob.c \
267 glob/fnmatch.c \
268 w32/compat/dirent.c \
269 w32/pathstuff.c
270endif
271
272kmk_gmake_SOURCES.freebsd = \
273 glob/glob.c \
274 glob/fnmatch.c
275
276kmk_gmake_SOURCES.darwin = \
277 glob/glob.c \
278 glob/fnmatch.c
279
280
281
282DEPTH = ../..
283include $(PATH_KBUILD)/rules.kmk
284
285
286#
287# Use checked in config.h instead of running ./Configure for it.
288#
289config.h.$(BUILD_TARGET) := config.h.$(BUILD_TARGET)
290config.h.win := config.h.W32
291config.h.win32 := config.h.W32
292config.h.win64 := config.h.W32
293config.h.nt := config.h.W32
294
295$(PATH_TARGET)/config.h: $(config.h.$(BUILD_TARGET))
296 $(MKDIR) -p $(dir $@)
297 $(CP) $^ $@
298
299
300#
301# Some tests.
302#
303parallel: parallel_1 parallel_2 parallel_3 parallel_4 parallel_5
304parallel_1 parallel_2 parallel_3 parallel_4 parallel_5:
305 echo $@_start ; sleep 1; echo $@_done
306
307test:
308 echo "1"
309 echo "2"
310 echo "3"
311 echo "4"
312
313
314#
315# Shell execution tests.
316#
317test_shell: test_shell_quoting test_shell_double_quoting test_shell_newline
318
319# shell double and single quoting check (was busted on windows in 3.81).
320test_shell_quoting:
321 $(ECHO_EXT) "double quoted sTrInG"
322 $(ECHO_EXT) "double quoted sTrInG" | $(SED_EXT) -e "s/sTrInG/string/g"
323 $(ECHO_EXT) 'single quoted sTrInG' | $(SED_EXT) -e 's/sTrInG/string/g'
324 $(ECHO) "This string should not be printed with double quotes."
325 $(ECHO) 'This string should not be printed with single quotes.'
326 ( echo " #define PWD \"`pwd`\""; )
327
328test_shell_double_quoting:
329 $(ECHO_EXT) "foo foo foo" | $(SED_EXT) -e \
330 "s/foo/$@/" -e \
331 "s/foo/works/" \
332 -e "s/foo/\!/"
333
334test_shell_double_quoting2:
335 $(ECHO_EXT) "foo foo foo" | $(SED_EXT) -e \
336 "s/foo/$@/" -e \
337 "s/foo/works/" \
338 -e\
339 "s/foo/\!/"
340
341# when using batch mode shell, the newline got escaped twice and spoiling everything.
342test_shell_newline:
343 $(ECHO_EXT) "foo foo foo" | $(SED_EXT) -e \
344 's/foo/$@/' -e \
345 's/foo/works/' \
346 -e 's/foo/\!/'
347
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette