VirtualBox

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

Last change on this file since 3421 was 3394, checked in by bird, 4 years ago

kmk: Added version sort function: versort, rversort, versortfiles, rversortfiles, qversortfiles, qrversortfiles. Try get the real host version on windows by using RtlGetVersion.

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