VirtualBox

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

Last change on this file since 3548 was 3431, checked in by bird, 5 years ago

kmk/Makefile.kmk: windows build fix.

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