VirtualBox

source: kBuild/trunk/src/kmk/Makefile.kmk@ 3159

Last change on this file since 3159 was 3156, checked in by bird, 7 years ago

kmk/win: Reworking child process handling. This effort will hopefully handle processor groups better and allow executing internal function off the main thread.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 16.1 KB
Line 
1# $Id: Makefile.kmk 3156 2018-03-18 20:10:03Z bird $
2## @file
3# Sub-makefile for kmk / GNU Make.
4#
5
6#
7# Copyright (c) 2004-2011 knut st. osmundsen <[email protected]>
8#
9# This file is part of kBuild.
10#
11# kBuild is free software; you can redistribute it and/or modify
12# it under the terms of the GNU General Public License as published by
13# the Free Software Foundation; either version 3 of the License, or
14# (at your option) any later version.
15#
16# kBuild is distributed in the hope that it will be useful,
17# but WITHOUT ANY WARRANTY; without even the implied warranty of
18# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19# GNU General Public License for more details.
20#
21# You should have received a copy of the GNU General Public License
22# along with kBuild. If not, see <http://www.gnu.org/licenses/>
23#
24#
25
26SUB_DEPTH = ../..
27include $(KBUILD_PATH)/subheader.kmk
28
29
30#
31# Template for kmk and the kmk_* binaries in this makefile.
32#
33TEMPLATE_BIN-KMK = Template for src/gmake binaries
34TEMPLATE_BIN-KMK_EXTENDS = BIN-THREADED
35TEMPLATE_BIN-KMK_DEFS = \
36 HAVE_CONFIG_H \
37 $(TEMPLATE_BIN_DEFS) \
38 KBUILD_SVN_REV=$(KBUILD_SVN_REV) \
39 KBUILD_TYPE=\"$(KBUILD_TYPE)\"
40TEMPLATE_BIN-KMK_DEPS = \
41 $(kmk_0_OUTDIR)/config.h \
42 $(kmk_0_OUTDIR)/fts.h
43TEMPLATE_BIN-KMK_CLEAN = $(TEMPLATE_BIN-KMK_DEPS)
44TEMPLATE_BIN-KMK_DEPS.solaris = \
45 $(kmk_0_OUTDIR)/paths.h
46TEMPLATE_BIN-KMK_CLEAN.solaris = $(TEMPLATE_BIN-KMK_DEPS.solaris)
47TEMPLATE_BIN-KMK_DEPS.win = \
48 $(kmk_0_OUTDIR)/sysexits.h \
49 $(kmk_0_OUTDIR)/unistd.h \
50 $(kmk_0_OUTDIR)/paths.h \
51 $(kmk_0_OUTDIR)/grp.h \
52 $(kmk_0_OUTDIR)/pwd.h \
53 $(kmk_0_OUTDIR)/inttypes.h
54TEMPLATE_BIN-KMK_CFLAGS.win.amd64 = $(TEMPLATE_BIN-THREADED_CFLAGS.win.amd64) -wd4244 -wd4267
55TEMPLATE_BIN-KMK_CLEAN.win = $(TEMPLATE_BIN-KMK_DEPS.win)
56TEMPLATE_BIN-KMK_DEFS.debug = $(TEMPLATE_BIN_DEFS.debug) MAKE_MAINTAINER_MODE
57TEMPLATE_BIN-KMK_INCS = $(kmk_0_OUTDIR) . $(TEMPLATE_BIN-THREADED_INCS)
58ifneq ($(KBUILD_TARGET),os2)
59 TEMPLATE_BIN-KMK_INCS += glob
60endif
61TEMPLATE_BIN-KMK_LIBS = $(LIB_KUTIL) $(TEMPLATE_BIN-THREADED_LIBS) $(kmkmissing_1_TARGET) $(LIB_KUTIL)
62ifdef ELECTRIC_HEAP # for electric heap (see electric.c).
63ifeq ($(KBUILD_TARGET),win)
64 TEMPLATE_BIN-KMK_CFLAGS = $(TEMPLATE_BIN-THREADED_CFLAGS) /FI$(kmk_DEFPATH)/electric.h -DELECTRIC_HEAP=1
65else
66 TEMPLATE_BIN-KMK_CFLAGS = $(TEMPLATE_BIN-THREADED_CFLAGS) -include $(kmk_DEFPATH)/electric.h -DELECTRIC_HEAP=1
67endif
68endif
69ifdef CONFIG_WITH_ALLOCCACHE_DEBUG
70 TEMPLATE_BIN-KMK_DEFS += CONFIG_WITH_ALLOCCACHE_DEBUG
71endif
72ifdef CONFIG_NEW_WIN_CHILDREN
73 TEMPLATE_BIN-KMK_DEFS.win = $(TEMPLATE_BIN_DEFS.win) CONFIG_NEW_WIN_CHILDREN
74endif
75# GCC sanitizers.
76ifdef GCC_SANITIZERS
77 TEMPLATE_BIN-KMK_CFLAGS ?= $(TEMPLATE_BIN-THREADED_CFLAGS)
78 TEMPLATE_BIN-KMK_CFLAGS += -fsanitize=address -fsanitize=undefined -static-libubsan -D GCC_ADDRESS_SANITIZER
79 TEMPLATE_BIN-KMK_LDFLAGS ?= $(TEMPLATE_BIN-THREADED_LDFLAGS)
80 TEMPLATE_BIN-KMK_LDFLAGS += -fsanitize=address -fsanitize=undefined
81endif
82
83
84#
85# A library containing the missing features needed by kmk and the
86# kmk_* binaries. Saves a bit of work later on.
87#
88LIBRARIES += kmkmissing
89kmkmissing_TEMPLATE = BIN-KMK
90kmkmissing_DEFS = KMK
91kmkmissing_NOINST = 1
92kmkmissing_SOURCES = \
93 kmkbuiltin/err.c \
94 kmkbuiltin/fts.c \
95 kmkbuiltin/setmode.c \
96 kmkbuiltin/strmode.c \
97 kmkbuiltin/kbuild_protection.c \
98 kmkbuiltin/common-env-and-cwd-opt.c \
99 getopt.c \
100 getopt1.c \
101 electric.c
102ifneq ($(KBUILD_TARGET),os2)
103kmkmissing_SOURCES += \
104 glob/glob.c
105endif
106
107kmkmissing_SOURCES.darwin = \
108 kmkbuiltin/darwin.c \
109 glob/fnmatch.c
110
111kmkmissing_SOURCES.dragonfly = \
112 glob/fnmatch.c
113
114kmkmissing_SOURCES.freebsd = \
115 glob/fnmatch.c
116
117kmkmissing_SOURCES.gnuhurd += \
118 kmkbuiltin/strlcpy.c
119
120kmkmissing_SOURCES.gnukfbsd += \
121 kmkbuiltin/strlcpy.c
122
123kmkmissing_SOURCES.gnuknbsd += \
124 kmkbuiltin/strlcpy.c
125
126kmkmissing_SOURCES.haiku = \
127 kmkbuiltin/haikufakes.c \
128 glob/fnmatch.c
129
130kmkmissing_SOURCES.linux += \
131 kmkbuiltin/strlcpy.c
132
133kmkmissing_SOURCES.netbsd = \
134 glob/fnmatch.c
135
136kmkmissing_SOURCES.openbsd = \
137 kmkbuiltin/openbsd.c
138
139kmkmissing_SOURCES.solaris = \
140 kmkbuiltin/strlcpy.c \
141 kmkbuiltin/solfakes.c \
142 glob/fnmatch.c
143
144kmkmissing_SOURCES.win += \
145 kmkbuiltin/strlcpy.c \
146 kmkbuiltin/mscfakes.c \
147 glob/fnmatch.c \
148 getloadavg.c \
149 w32/subproc/misc.c \
150 w32/subproc/w32err.c \
151 w32/pathstuff.c \
152 w32/imagecache.c \
153 w32/compat/posixfcn.c
154
155#
156# kmk
157#
158PROGRAMS += kmk
159
160kmk_TEMPLATE = BIN-KMK
161
162kmk_DEFS = \
163 NO_ARCHIVES \
164 EXPERIMENTAL \
165 CONFIG_WITH_TOUPPER_TOLOWER \
166 CONFIG_WITH_DEFINED \
167 CONFIG_WITH_EXPLICIT_MULTITARGET \
168 CONFIG_WITH_DOT_MUST_MAKE \
169 CONFIG_WITH_PREPEND_ASSIGNMENT \
170 CONFIG_WITH_LOCAL_VARIABLES \
171 CONFIG_WITH_2ND_TARGET_EXPANSION \
172 CONFIG_WITH_ALLOC_CACHES \
173 CONFIG_WITH_STRCACHE2 \
174 \
175 KMK \
176 KMK_HELPERS \
177 CONFIG_NO_DEFAULT_SUFFIXES \
178 CONFIG_NO_DEFAULT_PATTERN_RULES \
179 CONFIG_NO_DEFAULT_TERMINAL_RULES \
180 CONFIG_NO_DEFAULT_SUFFIX_RULES \
181 CONFIG_NO_DEFAULT_VARIABLES \
182 \
183 CONFIG_WITH_ABSPATHEX \
184 CONFIG_WITH_COMMANDS_FUNC \
185 CONFIG_WITH_DATE \
186 CONFIG_WITH_DEFINED_FUNCTIONS \
187 CONFIG_WITH_EVALPLUS \
188 CONFIG_WITH_FILE_SIZE \
189 CONFIG_WITH_LOOP_FUNCTIONS \
190 CONFIG_WITH_MATH \
191 CONFIG_WITH_NANOTS \
192 CONFIG_WITH_ROOT_FUNC \
193 CONFIG_WITH_RSORT \
194 CONFIG_WITH_STACK \
195 CONFIG_WITH_STRING_FUNCTIONS \
196 CONFIG_WITH_WHERE_FUNCTION \
197 CONFIG_WITH_WHICH \
198 CONFIG_WITH_XARGS \
199 \
200 CONFIG_WITH_EXTENDED_NOTPARALLEL \
201 CONFIG_WITH_INCLUDEDEP \
202 CONFIG_WITH_VALUE_LENGTH \
203 CONFIG_WITH_COMPARE \
204 CONFIG_WITH_SET_CONDITIONALS \
205 CONFIG_WITH_IF_CONDITIONALS \
206 CONFIG_WITH_PRINTF \
207 CONFIG_WITH_MINIMAL_STATS \
208 \
209 CONFIG_PRETTY_COMMAND_PRINTING \
210 CONFIG_WITH_PRINT_STATS_SWITCH \
211 CONFIG_WITH_PRINT_TIME_SWITCH \
212 CONFIG_WITH_RDONLY_VARIABLE_VALUE \
213 CONFIG_WITH_LAZY_DEPS_VARS \
214 CONFIG_WITH_MEMORY_OPTIMIZATIONS \
215 \
216 KBUILD_HOST=\"$(KBUILD_TARGET)\" \
217 KBUILD_HOST_ARCH=\"$(KBUILD_TARGET_ARCH)\" \
218 KBUILD_HOST_CPU=\"$(KBUILD_TARGET_CPU)\"
219# kmk_DEFS += CONFIG_WITH_COMPILER # experimental, doesn't work 101% right it seems.
220kmk_DEFS.x86 = CONFIG_WITH_OPTIMIZATION_HACKS
221kmk_DEFS.amd64 = CONFIG_WITH_OPTIMIZATION_HACKS
222kmk_DEFS.win = CONFIG_NEW_WIN32_CTRL_EVENT
223kmk_DEFS.debug = CONFIG_WITH_MAKE_STATS
224ifdef CONFIG_WITH_MAKE_STATS
225 kmk_DEFS += CONFIG_WITH_MAKE_STATS
226endif
227ifdef CONFIG_WITH_EVAL_COMPILER
228 kmk_DEFS += CONFIG_WITH_EVAL_COMPILER
229endif
230ifdef CONFIG_WITH_COMPILE_EVERYTHING
231 kmk_DEFS += CONFIG_WITH_COMPILE_EVERYTHING
232endif
233#ifeq ($(KBUILD_TYPE).$(USERNAME),debug.bird)
234# kmk_DEFS += CONFIG_WITH_COMPILER CONFIG_WITH_EVAL_COMPILER CONFIG_WITH_COMPILE_EVERYTHING
235#endif
236
237kmk_SOURCES = \
238 main.c \
239 read.c \
240 hash.c \
241 strcache.c \
242 variable.c \
243 ar.c \
244 arscan.c \
245 commands.c \
246 default.c \
247 expand.c \
248 file.c \
249 function.c \
250 implicit.c \
251 job.c \
252 misc.c \
253 output.c \
254 remake.c \
255 rule.c \
256 signame.c \
257 version.c \
258 vpath.c \
259 remote-stub.c \
260 guile.c \
261 load.c \
262 \
263 alloccache.c \
264 expreval.c \
265 incdep.c \
266 strcache2.c \
267 kmk_cc_exec.c \
268 kbuild.c \
269 kbuild-object.c
270ifeq ($(KBUILD_TARGET),win)
271 kmk_SOURCES += \
272 dir-nt-bird.c \
273 w32/w32os.c
274else
275 kmk_SOURCES += \
276 dir.c \
277 posixos.c
278endif
279
280ifndef CONFIG_NEW_WIN_CHILDREN
281kmk_SOURCES.win = \
282 w32/subproc/sub_proc.c
283else
284kmk_SOURCES.win = \
285 w32/winchildren.c
286endif
287
288kmk_DEFS.freebsd.x86 = CONFIG_WITHOUT_THREADS
289
290#kmk_LIBS.solaris = malloc
291#kmk_DEFS.solaris += HAVE_MALLINFO
292
293#
294# kmkbuiltin commands
295#
296kmk_DEFS += CONFIG_WITH_KMK_BUILTIN
297kmk_LIBS += $(LIB_KUTIL) #$(LIB_KDEP)
298kmk_SOURCES += \
299 kmkbuiltin.c \
300 kmkbuiltin/append.c \
301 kmkbuiltin/cat.c \
302 kmkbuiltin/chmod.c \
303 kmkbuiltin/cmp.c \
304 kmkbuiltin/cmp_util.c \
305 kmkbuiltin/cp.c \
306 kmkbuiltin/cp_utils.c \
307 kmkbuiltin/echo.c \
308 kmkbuiltin/expr.c \
309 kmkbuiltin/install.c \
310 kmkbuiltin/kDepIDB.c \
311 kmkbuiltin/kDepObj.c \
312 ../lib/kDep.c \
313 kmkbuiltin/md5sum.c \
314 kmkbuiltin/mkdir.c \
315 kmkbuiltin/mv.c \
316 kmkbuiltin/ln.c \
317 kmkbuiltin/printf.c \
318 kmkbuiltin/redirect.c \
319 kmkbuiltin/rm.c \
320 kmkbuiltin/rmdir.c \
321 $(if-expr $(KBUILD_TARGET) == win,kmkbuiltin/kSubmit.c) \
322 kmkbuiltin/sleep.c \
323 kmkbuiltin/test.c \
324 kmkbuiltin/touch.c
325
326## @todo kmkbuiltin/redirect.c
327
328## Some profiling
329#kmk_SOURCES += kbuildprf.c
330#kmk_DEFS += open=prf_open read=prf_read lseek=prf_lseek close=prf_close
331##kmk_DEFS += KMK_PRF=1
332##kmkmissing_DEFS += KMK_PRF=1
333
334#
335# Standalone kmkbuiltin commands.
336#
337PROGRAMS += \
338 kmk_append \
339 kmk_cat \
340 kmk_chmod \
341 kmk_cp \
342 kmk_cmp \
343 kmk_echo \
344 kmk_expr \
345 kmk_md5sum \
346 kmk_mkdir \
347 kmk_mv \
348 kmk_install \
349 kmk_ln \
350 kmk_printf \
351 kmk_redirect \
352 kmk_rm \
353 kmk_rmdir \
354 kmk_sleep \
355 kmk_test \
356 kmk_touch \
357 kDepIDB \
358 kDepObj \
359
360kmk_append_TEMPLATE = BIN-KMK
361kmk_append_DEFS = kmk_builtin_append=main
362kmk_append_INCS = .
363kmk_append_SOURCES = \
364 kmkbuiltin/append.c
365
366kmk_cat_TEMPLATE = BIN-KMK
367kmk_cat_DEFS = kmk_builtin_cat=main
368kmk_cat_SOURCES = \
369 kmkbuiltin/cat.c
370
371kmk_chmod_TEMPLATE = BIN-KMK
372kmk_chmod_DEFS = kmk_builtin_chmod=main
373kmk_chmod_SOURCES = \
374 kmkbuiltin/chmod.c
375
376kmk_cmp_TEMPLATE = BIN-KMK
377kmk_cmp_DEFS = kmk_builtin_cmp=main
378kmk_cmp_SOURCES = \
379 kmkbuiltin/cmp.c \
380 kmkbuiltin/cmp_util.c
381
382kmk_cp_TEMPLATE = BIN-KMK
383kmk_cp_DEFS = kmk_builtin_cp=main
384kmk_cp_SOURCES = \
385 kmkbuiltin/cp.c \
386 kmkbuiltin/cp_utils.c \
387 kmkbuiltin/cmp_util.c
388
389kmk_echo_TEMPLATE = BIN-KMK
390kmk_echo_DEFS = kmk_builtin_echo=main
391kmk_echo_SOURCES = \
392 kmkbuiltin/echo.c
393
394kmk_expr_TEMPLATE = BIN-KMK
395kmk_expr_DEFS = kmk_builtin_expr=main
396kmk_expr_SOURCES = \
397 kmkbuiltin/expr.c
398
399kmk_install_TEMPLATE = BIN-KMK
400kmk_install_DEFS = kmk_builtin_install=main
401kmk_install_SOURCES = \
402 kmkbuiltin/install.c
403
404kmk_ln_TEMPLATE = BIN-KMK
405kmk_ln_DEFS = kmk_builtin_ln=main
406kmk_ln_SOURCES = \
407 kmkbuiltin/ln.c
408
409kmk_mkdir_TEMPLATE = BIN-KMK
410kmk_mkdir_DEFS = kmk_builtin_mkdir=main
411kmk_mkdir_SOURCES = \
412 kmkbuiltin/mkdir.c
413
414kmk_md5sum_TEMPLATE = BIN-KMK
415kmk_md5sum_DEFS = kmk_builtin_md5sum=main
416kmk_md5sum_SOURCES = \
417 kmkbuiltin/md5sum.c
418kmk_md5sum_LIBS = $(LIB_KUTIL)
419
420kmk_mv_TEMPLATE = BIN-KMK
421kmk_mv_DEFS = kmk_builtin_mv=main
422kmk_mv_SOURCES = \
423 kmkbuiltin/mv.c
424
425kmk_printf_TEMPLATE = BIN-KMK
426kmk_printf_DEFS = kmk_builtin_printf=main
427kmk_printf_SOURCES = \
428 kmkbuiltin/printf.c
429
430kmk_rm_TEMPLATE = BIN-KMK
431kmk_rm_DEFS = kmk_builtin_rm=main
432kmk_rm_SOURCES = \
433 kmkbuiltin/rm.c
434
435kmk_redirect_TEMPLATE = BIN-KMK
436kmk_redirect_SOURCES = \
437 kmkbuiltin/redirect.c
438kmk_redirect_SOURCES.win = \
439 ../lib/startuphacks-win.c
440
441kmk_rmdir_TEMPLATE = BIN-KMK
442kmk_rmdir_DEFS = kmk_builtin_rmdir=main
443kmk_rmdir_SOURCES = \
444 kmkbuiltin/rmdir.c
445
446kmk_sleep_TEMPLATE = BIN-KMK
447kmk_sleep_DEFS = kmk_builtin_sleep=main
448kmk_sleep_SOURCES = \
449 kmkbuiltin/sleep.c
450
451kmk_test_TEMPLATE = BIN-KMK
452kmk_test_DEFS = kmk_builtin_test=main
453kmk_test_SOURCES = \
454 kmkbuiltin/test.c
455
456kmk_touch_TEMPLATE = BIN-KMK
457kmk_touch_DEFS = kmk_builtin_touch=main
458kmk_touch_SOURCES = \
459 kmkbuiltin/touch.c
460
461kDepIDB_TEMPLATE = BIN-KMK
462kDepIDB_DEFS = kmk_builtin_kDepIDB=main
463kDepIDB_INCS = .
464kDepIDB_LIBS = $(LIB_KDEP) $(LIB_KUTIL)
465kDepIDB_SOURCES = \
466 kmkbuiltin/kDepIDB.c
467
468kDepObj_TEMPLATE = BIN-KMK
469kDepObj_DEFS = kmk_builtin_kDepObj=main
470kDepObj_INCS = .
471kDepObj_LIBS = $(LIB_KDEP) $(LIB_KUTIL)
472kDepObj_SOURCES = \
473 kmkbuiltin/kDepObj.c
474
475
476#
477# kmk_gmake - almost plain GNU Make.
478#
479PROGRAMS += kmk_gmake
480
481kmk_gmake_TEMPLATE = BIN-KMK
482kmk_gmake_DEFS = \
483 HAVE_CONFIG_H \
484 CONFIG_WITH_TOUPPER_TOLOWER \
485 EXPERIMENTAL
486# NO_ARCHIVES
487
488kmk_gmake_SOURCES = \
489 main.c \
490 read.c \
491 hash.c \
492 strcache.c \
493 variable.c \
494 ar.c \
495 arscan.c \
496 commands.c \
497 default.c \
498 dir.c \
499 expand.c \
500 file.c \
501 function.c \
502 implicit.c \
503 job.c \
504 misc.c \
505 output.c \
506 remake.c \
507 rule.c \
508 signame.c \
509 version.c \
510 vpath.c \
511 remote-stub.c \
512 guile.c \
513 load.c
514ifeq ($(KBUILD_TARGET),win)
515 kmk_gmake_SOURCES += \
516 w32/w32os.c
517else
518 kmk_gmake_SOURCES += \
519 posixos.c
520endif
521
522ifndef CONFIG_NEW_WIN_CHILDREN
523kmk_gmake_SOURCES.win = \
524 w32/subproc/sub_proc.c
525else
526kmk_gmake_SOURCES.win = \
527 w32/winchildren.c
528endif
529
530
531#
532# kmk_fmake - Faster GNU Make.
533#
534ifeq ($(USER),bird) # for experimental purposes only.
535PROGRAMS += kmk_fgmake
536endif
537
538kmk_fgmake_TEMPLATE = BIN-KMK
539kmk_fgmake_DEFS = \
540 HAVE_CONFIG_H \
541 NO_ARCHIVES \
542 CONFIG_WITH_TOUPPER_TOLOWER \
543 EXPERIMENTAL \
544 \
545 CONFIG_WITH_ALLOC_CACHES \
546 CONFIG_WITH_LAZY_DEPS_VARS \
547 CONFIG_WITH_STRCACHE2 \
548 CONFIG_WITH_VALUE_LENGTH \
549 CONFIG_WITH_RDONLY_VARIABLE_VALUE
550# TODO ?
551# CONFIG_WITH_PRINT_STATS_SWITCH \
552# CONFIG_WITH_EXTENDED_NOTPARALLEL \
553
554kmk_fgmake_SOURCES = \
555 main.c \
556 read.c \
557 hash.c \
558 strcache.c \
559 strcache2.c \
560 variable.c \
561 ar.c \
562 arscan.c \
563 commands.c \
564 default.c \
565 dir.c \
566 expand.c \
567 file.c \
568 function.c \
569 implicit.c \
570 job.c \
571 misc.c \
572 output.c \
573 alloccache.c \
574 remake.c \
575 rule.c \
576 signame.c \
577 version.c \
578 vpath.c \
579 remote-stub.c \
580 guile.c \
581 load.c
582ifeq ($(KBUILD_TARGET),win)
583 kmk_fgmake_SOURCES += \
584 w32/w32os.c
585# @todo: dir-nt-bird.c for fgmake
586else
587 kmk_fgmake_SOURCES += \
588 posixos.c
589endif
590
591kmk_fgmake_SOURCES.win = \
592 w32/subproc/sub_proc.c
593
594
595#
596# tstFileInfo
597#
598PROGRAMS.win += tstFileInfo
599tstFileInfo_TEMPLATE = BIN
600tstFileInfo_SOURCES = w32/tstFileInfo.c
601
602#
603# tstFileInfo
604#
605PROGRAMS.win += tstFtsFake
606tstFtsFake_TEMPLATE = BIN-KMK
607tstFtsFake_NOINST = 1
608tstFtsFake_DEFS = USE_OLD_FTS
609tstFtsFake_SOURCES = ../lib/nt/tstNtFts.c
610
611
612
613include $(FILE_KBUILD_SUB_FOOTER)
614
615
616#
617# Use checked in config.h instead of running ./Configure for it.
618#
619kmk_config.h.$(KBUILD_TARGET) := $(kmk_DEFPATH)/config.h.$(KBUILD_TARGET)
620$(kmk_0_OUTDIR)/config.h: $(kmk_config.h.$(KBUILD_TARGET))
621 $(MKDIR) -p $(dir $@)
622 $(CP) $^ $@
623
624#
625# Some missing headers.
626#
627if1of ($(KBUILD_TARGET), win nt)
628$(kmk_0_OUTDIR)/fts.h: $(MAKEFILE) | $(call DIRDEP,$(kmk_0_OUTDIR))
629 $(APPEND) -t "$@" "#include <nt/fts-nt.h>"
630else
631$(kmk_0_OUTDIR)/fts.h: $(kmk_DEFPATH)/kmkbuiltin/ftsfake.h | $(call DIRDEP,$(kmk_0_OUTDIR))
632 $(CP) $^ $@
633endif
634
635$(kmk_0_OUTDIR)/unistd.h: | $(call DIRDEP,$(kmk_0_OUTDIR))
636 $(ECHO_EXT) > $@
637
638$(kmk_0_OUTDIR)/sysexits.h: | $(call DIRDEP,$(kmk_0_OUTDIR))
639 $(ECHO_EXT) > $@
640
641$(kmk_0_OUTDIR)/inttypes.h: | $(call DIRDEP,$(kmk_0_OUTDIR))
642 $(ECHO_EXT) > $@
643
644$(kmk_0_OUTDIR)/paths.h: | $(call DIRDEP,$(kmk_0_OUTDIR))
645 $(ECHO_EXT) > $@
646
647$(kmk_0_OUTDIR)/pwd.h: | $(call DIRDEP,$(kmk_0_OUTDIR))
648 $(ECHO_EXT) > $@
649
650$(kmk_0_OUTDIR)/grp.h: | $(call DIRDEP,$(kmk_0_OUTDIR))
651 $(ECHO_EXT) > $@
652
653
654#
655# Some tests.
656#
657parallel: parallel_1 parallel_2 parallel_3 parallel_4 parallel_5
658parallel_1 parallel_2 parallel_3 parallel_4 parallel_5:
659 echo $@_start ; sleep 1; echo $@_done
660
661my_test:
662 echo "1"
663 echo "2"
664 echo "3"
665 echo "4"
666
667
668#
669# Shell execution tests.
670#
671test_shell: test_shell_quoting test_shell_double_quoting test_shell_newline
672
673# shell double and single quoting check (was busted on windows in 3.81).
674test_shell_quoting:
675 $(ECHO_EXT) "double quoted sTrInG"
676 $(ECHO_EXT) "double quoted sTrInG" | $(SED_EXT) -e "s/sTrInG/string/g"
677 $(ECHO_EXT) 'single quoted sTrInG' | $(SED_EXT) -e 's/sTrInG/string/g'
678 $(ECHO) "This string should not be printed with double quotes."
679 $(ECHO) 'This string should not be printed with single quotes.'
680 ( echo " #define PWD \"`pwd`\""; )
681
682test_shell_double_quoting:
683 $(ECHO_EXT) "foo foo foo" | $(SED_EXT) -e \
684 "s/foo/$@/" -e \
685 "s/foo/works/" \
686 -e "s/foo/\!/"
687
688test_shell_double_quoting2:
689 $(ECHO_EXT) "foo foo foo" | $(SED_EXT) -e \
690 "s/foo/$@/" -e \
691 "s/foo/works/" \
692 -e\
693 "s/foo/\!/"
694
695# when using batch mode shell, the newline got escaped twice and spoiling everything.
696test_shell_newline:
697 $(ECHO_EXT) "foo foo foo" | $(SED_EXT) -e \
698 's/foo/$@/' -e \
699 's/foo/works/' \
700 -e 's/foo/\!/'
701
702
703test_stack:
704 $(MAKE) -f $(kmk_DEFPATH)/testcase-stack.kmk
705
706test_math:
707 $(MAKE) -f $(kmk_DEFPATH)/testcase-math.kmk
708
709test_if1of:
710 $(MAKE) -f $(kmk_DEFPATH)/testcase-if1of.kmk
711
712test_local:
713 $(MAKE) -f $(kmk_DEFPATH)/testcase-local.kmk
714
715test_includedep:
716 $(MAKE) -f $(kmk_DEFPATH)/testcase-includedep.kmk
717
718test_root:
719 $(MAKE) -f $(kmk_DEFPATH)/testcase-root.kmk
720
721test_2ndtargetexp:
722 $(MAKE) -f $(kmk_DEFPATH)/testcase-2ndtargetexp.kmk
723
724test_30_continued_on_failure_worker:
725 this_executable_does_not_exist.exe
726 echo "We shouldn't see this..."
727
728test_30_continued_on_failure:
729 $(MAKE) -f $(MAKEFILE) test_30_continued_on_failure_worker; \
730 RC=$$?; \
731 if test $${RC} -ne 2; then \
732 echo "$@: FAILED - exit code $${RC} instead of 2."; \
733 exit 1; \
734 else \
735 echo "$@: SUCCESS"; \
736 fi
737
738test_lazy_deps_vars:
739 $(MAKE) -C $(kmk_DEFPATH) -f testcase-lazy-deps-vars.kmk
740
741
742test_all: \
743 test_math \
744 test_stack \
745 test_shell \
746 test_if1of \
747 test_local \
748 test_root \
749 test_includedep \
750 test_2ndtargetexp \
751 test_30_continued_on_failure \
752 test_lazy_deps_vars
753
754
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