source: trunk/src/gmake/Makefile.kmk@ 591

Last change on this file since 591 was 591, checked in by bird, 19 years ago

Added --pretty-command-printing for simplifying makefile debugging.

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