VirtualBox

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

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

stack functions and enabled the 'eq' and 'not' functions.

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