VirtualBox

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

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

Giving up non batch mode with cygwin ash, it screws up big time with double quoted argument.

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

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