VirtualBox

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

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

versioning. fixes #5

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