VirtualBox

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

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

o Added rmdir as builtin and external command.
o Made mkdir not modify the argument strings.
o Made mkdir deal properly with DOS slashes on OS/2 and Windows.

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