summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorAndrew Shadura <andrew@shadura.me>2015-07-25 14:44:29 +0200
committerAndrew Shadura <andrew@shadura.me>2015-07-25 14:44:29 +0200
commitaba913436a8521abe405a04ed71388989e1d646f (patch)
tree0e2fea8c3ccf06ae3b370806810e382ca51f4a98 /examples
parent1d3d0bb1e461a81bc1a9cd4520958bd2b1db4c7f (diff)
Imported Upstream version 0.25.0
Diffstat (limited to 'examples')
-rw-r--r--examples/Makefile1
-rw-r--r--examples/hello_TARGETS/Makefile15
-rw-r--r--examples/hello_TARGETS/Makefile.inc10
-rw-r--r--examples/hello_TARGETS/expect.out67
-rw-r--r--examples/hello_TARGETS/hello1/Makefile15
-rw-r--r--examples/hello_TARGETS/hello1/hello1.c8
-rw-r--r--examples/hello_TARGETS/hello1/hello1.pod17
-rw-r--r--examples/hello_TARGETS/hello2/Makefile10
-rw-r--r--examples/hello_TARGETS/hello2/hello2.c8
-rw-r--r--examples/hello_TARGETS/hello2/hello2.pod22
-rw-r--r--examples/hello_TARGETS/test.mk32
-rw-r--r--examples/hello_calc2/Makefile3
-rw-r--r--examples/hello_calc2/expect.out22
-rw-r--r--examples/hello_calc2/test.mk8
-rw-r--r--examples/hello_compilers/test.mk5
-rw-r--r--examples/hello_customtests/expect.out2
-rw-r--r--examples/hello_customtests/test.mk12
-rw-r--r--examples/hello_customtests2/Makefile7
-rw-r--r--examples/hello_customtests2/expect.out6
-rw-r--r--examples/hello_customtests2/test.mk12
-rw-r--r--examples/hello_cxx/test.mk5
-rw-r--r--examples/hello_cxxlib/test.mk5
-rw-r--r--examples/hello_dictd/expect.out178
-rw-r--r--examples/hello_dictd/test.mk68
-rw-r--r--examples/hello_files/shell_func.texinfo4
-rw-r--r--examples/hello_files/test.mk14
-rw-r--r--examples/hello_glib2/test.mk5
-rw-r--r--examples/hello_lex/Makefile6
-rw-r--r--examples/hello_lex/expect.out39
-rw-r--r--examples/hello_lex/test.mk20
-rw-r--r--examples/hello_lua/Makefile6
-rw-r--r--examples/hello_lua/expect.out12
-rwxr-xr-xexamples/hello_lua/foobar.in (renamed from examples/hello_lua/foobar)2
-rw-r--r--examples/hello_lua/test.mk14
-rw-r--r--examples/hello_lua2/test.mk14
-rw-r--r--examples/hello_lua3/test.mk5
-rw-r--r--examples/hello_plugins/test.mk7
-rw-r--r--examples/hello_plugins2/test.mk5
-rw-r--r--examples/hello_progs/expect.out28
-rw-r--r--examples/hello_progs/test.mk10
-rw-r--r--examples/hello_progs2/test.mk5
-rw-r--r--examples/hello_scripts/expect.out1
-rw-r--r--examples/hello_scripts/test.mk7
-rw-r--r--examples/hello_sizeof/test.mk5
-rw-r--r--examples/hello_strlcpy/Makefile6
-rw-r--r--examples/hello_strlcpy/expect.out23
-rw-r--r--examples/hello_strlcpy/getline.c49
-rw-r--r--examples/hello_strlcpy/hello.c12
-rw-r--r--examples/hello_strlcpy/test.mk27
-rw-r--r--examples/hello_superfs/Makefile4
-rw-r--r--examples/hello_superfs/expect.out26
-rw-r--r--examples/hello_superfs/test.mk13
-rw-r--r--examples/hello_world/test.mk22
-rw-r--r--examples/hello_xxzip/expect.out7
-rw-r--r--examples/hello_xxzip/test.mk13
-rw-r--r--examples/hello_yacc/Makefile5
-rw-r--r--examples/hello_yacc/expect.out16
-rw-r--r--examples/hello_yacc/test.mk15
-rw-r--r--examples/subprojects/expect.out17
-rw-r--r--examples/subprojects/hello/hello_subprojects.1.in1
-rw-r--r--examples/subprojects/test.mk16
-rw-r--r--examples/tools/Makefile10
-rw-r--r--examples/tools/expect.out219
-rw-r--r--examples/tools/libs/qux/Makefile16
-rw-r--r--examples/tools/libs/qux/linkme.mk5
-rw-r--r--examples/tools/libs/qux/qux.c6
-rw-r--r--examples/tools/libs/qux/qux.h.in4
-rw-r--r--examples/tools/test.mk56
-rw-r--r--examples/tools/tools/prog1/Makefile3
-rw-r--r--examples/tools/tools/prog2/Makefile3
-rw-r--r--examples/tools/tools/prog3/Makefile3
-rw-r--r--examples/tools/tools/prog4/Makefile11
-rw-r--r--examples/tools/tools/prog4/prog4.c9
-rw-r--r--examples/tools2/Makefile25
-rw-r--r--examples/tools2/expect.out448
-rw-r--r--examples/tools2/libs/bar/Makefile7
-rw-r--r--examples/tools2/libs/bar/bar.c6
-rw-r--r--examples/tools2/libs/bar/bar.h1
-rw-r--r--examples/tools2/libs/bar/linkme.mk5
-rw-r--r--examples/tools2/libs/foo/Makefile7
-rw-r--r--examples/tools2/libs/foo/foo.c6
-rw-r--r--examples/tools2/libs/foo/foo.h1
-rw-r--r--examples/tools2/libs/foo/linkme.mk5
-rw-r--r--examples/tools2/libs/qux/Makefile16
-rw-r--r--examples/tools2/libs/qux/linkme.mk5
-rw-r--r--examples/tools2/libs/qux/qux.c6
-rw-r--r--examples/tools2/libs/qux/qux.h.in4
-rw-r--r--examples/tools2/test.mk115
-rw-r--r--examples/tools2/tests/prog1/Makefile8
-rw-r--r--examples/tools2/tests/prog2/Makefile8
-rw-r--r--examples/tools2/tests/prog3/Makefile10
-rw-r--r--examples/tools2/tests/prog4/Makefile8
-rw-r--r--examples/tools2/tools/prog1/Makefile12
-rw-r--r--examples/tools2/tools/prog1/prog1.c10
-rw-r--r--examples/tools2/tools/prog2/Makefile12
-rw-r--r--examples/tools2/tools/prog2/prog2.c10
-rw-r--r--examples/tools2/tools/prog3/Makefile14
-rw-r--r--examples/tools2/tools/prog3/prog3.c14
-rw-r--r--examples/tools2/tools/prog4/Makefile11
-rw-r--r--examples/tools2/tools/prog4/prog4.c9
100 files changed, 1991 insertions, 156 deletions
diff --git a/examples/Makefile b/examples/Makefile
index cc8dba9..0934f7b 100644
--- a/examples/Makefile
+++ b/examples/Makefile
@@ -33,6 +33,7 @@ SUBDIR+= hello_xxzip
SUBDIR+= hello_progs
SUBDIR+= hello_progs2
SUBDIR+= tools
+SUBDIR+= tools2
.ifdef WITH_require_tools
SUBDIR+= hello_require_tools
diff --git a/examples/hello_TARGETS/Makefile b/examples/hello_TARGETS/Makefile
new file mode 100644
index 0000000..95fcf15
--- /dev/null
+++ b/examples/hello_TARGETS/Makefile
@@ -0,0 +1,15 @@
+SUBDIR = hello1 hello2
+
+# additional recursive target
+TARGETS += codingstylechk
+
+# We want to include man pages to the distribution tarball.
+# For this we do the following:
+# mkcmake manpages; tar -cf /tmp/tarball.tar .
+TARGETS += _manpages # _manpages is a new recursive target
+.PHONY: manpages
+manpages: _manpages
+ @rm ${MKC_CACHEDIR}/_mkc*
+
+.include "test.mk"
+.include <mkc.subdir.mk>
diff --git a/examples/hello_TARGETS/Makefile.inc b/examples/hello_TARGETS/Makefile.inc
new file mode 100644
index 0000000..b3f20f7
--- /dev/null
+++ b/examples/hello_TARGETS/Makefile.inc
@@ -0,0 +1,10 @@
+CSCHK = test hello1 = '${.CURDIR:T}' # something useful should be here
+
+.if make(codingstylechk)
+MKCHECKS = no
+.endif
+
+.PHONY: codingstylechk
+codingstylechk:
+ @${_MESSAGE_V} "Coding style check for ${PROJECTNAME}"; \
+ ${CSCHK} || { echo FAILED 1>&2; false; }
diff --git a/examples/hello_TARGETS/expect.out b/examples/hello_TARGETS/expect.out
new file mode 100644
index 0000000..e88091d
--- /dev/null
+++ b/examples/hello_TARGETS/expect.out
@@ -0,0 +1,67 @@
+Hello World 1!
+Hello World 2!
+=========== all ============
+/objdir/Makefile
+/objdir/Makefile.inc
+/objdir/_mkc_compiler_type.err
+/objdir/_mkc_compiler_type.res
+/objdir/_mkc_prog_cc.err
+/objdir/_mkc_prog_cc.res
+/objdir/expect.out
+/objdir/hello1/Makefile
+/objdir/hello1/hello1
+/objdir/hello1/hello1.1
+/objdir/hello1/hello1.c
+/objdir/hello1/hello1.o
+/objdir/hello1/hello1.pod
+/objdir/hello2/Makefile
+/objdir/hello2/hello2
+/objdir/hello2/hello2.1
+/objdir/hello2/hello2.c
+/objdir/hello2/hello2.o
+/objdir/hello2/hello2.pod
+/objdir/hello_TARGETS.test.out.tmp
+/objdir/test.mk
+========= codingstylechk ==========
+==================================================
+codingstylechk ===> hello_TARGETS/hello1
+Coding style check for hello1
+==================================================
+codingstylechk ===> hello_TARGETS/hello2
+Coding style check for hello2
+FAILED
+*** Error code 1
+
+Stop.
+bmake: stopped in /objdir/hello2
+*** Error code 1
+
+Stop.
+bmake: stopped in /objdir
+cschk ex=1
+============= files ===============
+/objdir/Makefile
+/objdir/Makefile.inc
+/objdir/expect.out
+/objdir/hello1/Makefile
+/objdir/hello1/hello1.c
+/objdir/hello1/hello1.pod
+/objdir/hello2/Makefile
+/objdir/hello2/hello2.c
+/objdir/hello2/hello2.pod
+/objdir/hello_TARGETS.test.out.tmp
+/objdir/test.mk
+=========== manpages ============
+/objdir/Makefile
+/objdir/Makefile.inc
+/objdir/expect.out
+/objdir/hello1/Makefile
+/objdir/hello1/hello1.1
+/objdir/hello1/hello1.c
+/objdir/hello1/hello1.pod
+/objdir/hello2/Makefile
+/objdir/hello2/hello2.1
+/objdir/hello2/hello2.c
+/objdir/hello2/hello2.pod
+/objdir/hello_TARGETS.test.out.tmp
+/objdir/test.mk
diff --git a/examples/hello_TARGETS/hello1/Makefile b/examples/hello_TARGETS/hello1/Makefile
new file mode 100644
index 0000000..d1e6601
--- /dev/null
+++ b/examples/hello_TARGETS/hello1/Makefile
@@ -0,0 +1,15 @@
+PROG = hello1
+MAN = hello1.1
+
+WARNS = 4
+
+CLEANFILES = hello1.1
+
+_manpages: ${MAN}
+
+# the following is just a regression test for exporting TARGETS
+.if empty(TARGETS:Mcoding*)
+MKC_ERR_MSG = "qqq"
+.endif
+
+.include <mkc.mk>
diff --git a/examples/hello_TARGETS/hello1/hello1.c b/examples/hello_TARGETS/hello1/hello1.c
new file mode 100644
index 0000000..026f7e0
--- /dev/null
+++ b/examples/hello_TARGETS/hello1/hello1.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main (int argc, char **argv )
+{
+ puts ("Hello World 1!");
+ exit (0);
+}
diff --git a/examples/hello_TARGETS/hello1/hello1.pod b/examples/hello_TARGETS/hello1/hello1.pod
new file mode 100644
index 0000000..92581bb
--- /dev/null
+++ b/examples/hello_TARGETS/hello1/hello1.pod
@@ -0,0 +1,17 @@
+=head1 NAME
+
+hello1 - mk-configure example program
+
+=head1 INTRODCTION
+
+lalala
+
+=head1 STEP1
+
+bla bla bla
+
+=head1 STEP2
+
+bla bla bla
+
+=head1 BYE
diff --git a/examples/hello_TARGETS/hello2/Makefile b/examples/hello_TARGETS/hello2/Makefile
new file mode 100644
index 0000000..20ada21
--- /dev/null
+++ b/examples/hello_TARGETS/hello2/Makefile
@@ -0,0 +1,10 @@
+PROG = hello2
+MAN = hello2.1
+
+WARNS = 4
+
+CLEANFILES = hello2.1
+
+_manpages: ${MAN}
+
+.include <mkc.mk>
diff --git a/examples/hello_TARGETS/hello2/hello2.c b/examples/hello_TARGETS/hello2/hello2.c
new file mode 100644
index 0000000..95331f9
--- /dev/null
+++ b/examples/hello_TARGETS/hello2/hello2.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main (int argc, char **argv )
+{
+ puts ("Hello World 2!");
+ exit (0);
+}
diff --git a/examples/hello_TARGETS/hello2/hello2.pod b/examples/hello_TARGETS/hello2/hello2.pod
new file mode 100644
index 0000000..4479946
--- /dev/null
+++ b/examples/hello_TARGETS/hello2/hello2.pod
@@ -0,0 +1,22 @@
+=head1 NAME
+
+hello2 - mk-configure example
+
+=head1 SYNOPSIS
+
+B<hello2> I<[options]> I<[files...]>
+
+=head1 DESCRIPTION
+
+bla bla bla
+
+=head1 AUTHOR
+
+Copyright (c) 2010 Aleksey Cheusov <vle@gmx.net>
+
+=head1 HOME
+
+L<http://sourceforge.net/projects/mk-configure>
+
+=head1 SEE ALSO
+L<mk-configure(7)>
diff --git a/examples/hello_TARGETS/test.mk b/examples/hello_TARGETS/test.mk
new file mode 100644
index 0000000..6949660
--- /dev/null
+++ b/examples/hello_TARGETS/test.mk
@@ -0,0 +1,32 @@
+# I added "codingstylechk" to "test" just for mk-configure regr. test
+
+test:
+.PHONY : test_output
+test_output :
+ @:; \
+ ${OBJDIR_hello1}/hello1; \
+ ${OBJDIR_hello2}/hello2; \
+ MKCATPAGES=yes; export MKCATPAGES; \
+ \
+ echo =========== all ============; \
+ find ${.OBJDIR} -type f -o -type l | \
+ mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
+ \
+ echo ========= codingstylechk ==========; \
+ ${MAKE} ${MAKEFLAGS} cleandir 2>/dev/null 1>&2; \
+ { ${MAKE} ${MAKEFLAGS} codingstylechk 2>&1; echo cschk ex=$$?; } | \
+ env NOSORT=1 mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
+ \
+ echo ============= files ===============; \
+ find ${.OBJDIR} -type f -o -type l | \
+ mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
+ \
+ echo =========== manpages ============; \
+ env MKCATPAGES=no ${MAKE} ${MAKEFLAGS} cleandir 2>/dev/null 1>&2; \
+ ${MAKE} ${MAKEFLAGS} manpages 2>/dev/null 1>&2; \
+ find ${.OBJDIR} -type f | \
+ mkc_test_helper "${PREFIX}" "${.OBJDIR}"
+ \
+ ${MAKE} ${MAKEFLAGS} cleandir 2>/dev/null 1>&2
+
+.include <mkc.minitest.mk>
diff --git a/examples/hello_calc2/Makefile b/examples/hello_calc2/Makefile
index 098b5af..c425b22 100644
--- a/examples/hello_calc2/Makefile
+++ b/examples/hello_calc2/Makefile
@@ -1,7 +1,8 @@
PROG = calc
-
SRCS = lex.l parser.y
+DPSRCS = lex.c parser.c parser.h
+
YHEADER = 1
YPREFIX = calc_
LPREFIX = calc_
diff --git a/examples/hello_calc2/expect.out b/examples/hello_calc2/expect.out
index a50aab6..d98c36f 100644
--- a/examples/hello_calc2/expect.out
+++ b/examples/hello_calc2/expect.out
@@ -49,6 +49,28 @@
/objdir/lex.l
/objdir/parser.y
/objdir/test.mk
+========== depend ===========
+/objdir/.depend
+/objdir/Makefile
+/objdir/_mkc_compiler_type.err
+/objdir/_mkc_compiler_type.res
+/objdir/_mkc_custom_prog_bison.err
+/objdir/_mkc_custom_prog_bison.res
+/objdir/_mkc_custom_prog_flex.err
+/objdir/_mkc_custom_prog_flex.res
+/objdir/_mkc_prog_cc.err
+/objdir/_mkc_prog_cc.res
+/objdir/expect.out
+/objdir/expressions.txt
+/objdir/hello_calc2.test.out.tmp
+/objdir/lex.c
+/objdir/lex.d
+/objdir/lex.l
+/objdir/parser.c
+/objdir/parser.d
+/objdir/parser.h
+/objdir/parser.y
+/objdir/test.mk
======= distclean ==========
/objdir/Makefile
/objdir/expect.out
diff --git a/examples/hello_calc2/test.mk b/examples/hello_calc2/test.mk
index cf8cf2f..e533b28 100644
--- a/examples/hello_calc2/test.mk
+++ b/examples/hello_calc2/test.mk
@@ -3,13 +3,14 @@ test_output:
@set -e; \
${.OBJDIR}/calc < ${.CURDIR}/expressions.txt; \
rm -rf ${.OBJDIR}${PREFIX}; \
+ MKCATPAGES=yes; export MKCATPAGES; \
\
echo =========== all ============; \
find ${.OBJDIR} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ========= install ==========; \
- ${MAKE} ${MAKEFLAGS} install DESTDIR=${.OBJDIR} \
+ ${MAKE} ${MAKEFLAGS} install -j3 DESTDIR=${.OBJDIR} \
> /dev/null; \
find ${.OBJDIR}${PREFIX} -type f -o -type d | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
@@ -24,6 +25,11 @@ test_output:
find ${.OBJDIR} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
\
+ echo ========== depend ===========; \
+ ${MAKE} ${MAKEFLAGS} depend -j4 DESTDIR=${.OBJDIR} > /dev/null; \
+ find ${.OBJDIR} -type f | \
+ mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
+ \
echo ======= distclean ==========; \
${MAKE} ${MAKEFLAGS} distclean DESTDIR=${.OBJDIR} > /dev/null; \
find ${.OBJDIR} -type f | \
diff --git a/examples/hello_compilers/test.mk b/examples/hello_compilers/test.mk
index d917440..8709b94 100644
--- a/examples/hello_compilers/test.mk
+++ b/examples/hello_compilers/test.mk
@@ -3,19 +3,20 @@ test_output:
@set -e; \
${.OBJDIR}/compiler_test; \
rm -rf ${.OBJDIR}${PREFIX}; \
+ MKCATPAGES=yes; export MKCATPAGES; \
\
echo =========== all ============; \
find ${.OBJDIR} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ========= install ==========; \
- ${MAKE} ${MAKEFLAGS} install DESTDIR=${.OBJDIR} \
+ ${MAKE} ${MAKEFLAGS} install -j3 DESTDIR=${.OBJDIR} \
> /dev/null; \
find ${.OBJDIR}${PREFIX} -type f -o -type d | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ======== uninstall =========; \
- ${MAKE} ${MAKEFLAGS} uninstall DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 uninstall DESTDIR=${.OBJDIR} > /dev/null; \
find ${.OBJDIR}${PREFIX} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
diff --git a/examples/hello_customtests/expect.out b/examples/hello_customtests/expect.out
index 92f48f1..bcf94d9 100644
--- a/examples/hello_customtests/expect.out
+++ b/examples/hello_customtests/expect.out
@@ -64,6 +64,8 @@ shtest is good: NO
/objdir/hello_customtests.c
/objdir/hello_customtests.test.out.tmp
/objdir/test.mk
+======= errorcheck + MAKEOBJDIR ===========
+true_is_available=1
======= distclean ==========
/objdir/Makefile
/objdir/custom_tests/alloca_in_alloca_h.c
diff --git a/examples/hello_customtests/test.mk b/examples/hello_customtests/test.mk
index 99e946e..adfedf7 100644
--- a/examples/hello_customtests/test.mk
+++ b/examples/hello_customtests/test.mk
@@ -1,7 +1,10 @@
+CLEANDIRS += ${.CURDIR}/testdir
+
.PHONY : test_output
test_output:
@set -e; \
rm -rf ${.OBJDIR}${PREFIX}; \
+ MKCATPAGES=yes; export MKCATPAGES; \
\
echo =========== all ============; \
find ${.OBJDIR} -type f | \
@@ -11,13 +14,13 @@ test_output:
${.OBJDIR}/hello_customtests; \
\
echo ========= install ==========; \
- ${MAKE} ${MAKEFLAGS} install DESTDIR=${.OBJDIR} \
+ ${MAKE} ${MAKEFLAGS} install -j3 DESTDIR=${.OBJDIR} \
> /dev/null; \
find ${.OBJDIR}${PREFIX} -type f -o -type d | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ======== uninstall =========; \
- ${MAKE} ${MAKEFLAGS} uninstall DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 uninstall DESTDIR=${.OBJDIR} > /dev/null; \
find ${.OBJDIR}${PREFIX} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
\
@@ -26,6 +29,11 @@ test_output:
find ${.OBJDIR} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
\
+ echo ======= errorcheck + MAKEOBJDIR ===========; \
+ mkdir ${.CURDIR}/testdir || true; \
+ ${MAKE} ${MAKEFLAGS} errorcheck MAKEOBJDIR=${.CURDIR}/testdir > /dev/null; \
+ printf 'true_is_available=%s\n' `cat ${.CURDIR}/testdir/_mkc_custom_true_is_available.res`; \
+ \
echo ======= distclean ==========; \
${MAKE} ${MAKEFLAGS} distclean DESTDIR=${.OBJDIR} > /dev/null; \
find ${.OBJDIR} -type f | \
diff --git a/examples/hello_customtests2/Makefile b/examples/hello_customtests2/Makefile
index 98d8732..b3b6b9c 100644
--- a/examples/hello_customtests2/Makefile
+++ b/examples/hello_customtests2/Makefile
@@ -4,8 +4,11 @@ WARNS = 4
MKC_CUSTOM_DIR = ${.CURDIR}/../hello_customtests/custom_tests
-MKC_CHECK_CUSTOM = alloca_in_stdlib_h
-MKC_CHECK_CUSTOM += alloca_in_alloca_h
+MKC_CHECK_CUSTOM = alloca_in_stdlib_h alloca_in_alloca_h \
+ true_is_available
+
+# full path is for regression test
+MKC_CUSTOM_FN.true_is_available = ${MKC_CUSTOM_DIR}/true_is_available
MKC_REQD = 0.11.0
diff --git a/examples/hello_customtests2/expect.out b/examples/hello_customtests2/expect.out
index bbf1f24..04eecd6 100644
--- a/examples/hello_customtests2/expect.out
+++ b/examples/hello_customtests2/expect.out
@@ -6,6 +6,8 @@
/objdir/_mkc_custom_alloca_in_alloca_h.res
/objdir/_mkc_custom_alloca_in_stdlib_h.err
/objdir/_mkc_custom_alloca_in_stdlib_h.res
+/objdir/_mkc_custom_true_is_available.err
+/objdir/_mkc_custom_true_is_available.res
/objdir/_mkc_prog_cc.err
/objdir/_mkc_prog_cc.res
/objdir/expect.out
@@ -29,12 +31,16 @@ alloca(3) succeeded
/objdir/_mkc_custom_alloca_in_alloca_h.res
/objdir/_mkc_custom_alloca_in_stdlib_h.err
/objdir/_mkc_custom_alloca_in_stdlib_h.res
+/objdir/_mkc_custom_true_is_available.err
+/objdir/_mkc_custom_true_is_available.res
/objdir/_mkc_prog_cc.err
/objdir/_mkc_prog_cc.res
/objdir/expect.out
/objdir/hello_customtests2.c
/objdir/hello_customtests2.test.out.tmp
/objdir/test.mk
+======= errorcheck + MAKEOBJDIR ===========
+true_is_available=1
======= distclean ==========
/objdir/Makefile
/objdir/expect.out
diff --git a/examples/hello_customtests2/test.mk b/examples/hello_customtests2/test.mk
index 438e4ab..b3ce488 100644
--- a/examples/hello_customtests2/test.mk
+++ b/examples/hello_customtests2/test.mk
@@ -1,7 +1,10 @@
+CLEANDIRS += ${.CURDIR}/testdir
+
.PHONY : test_output
test_output:
@set -e; \
rm -rf ${.OBJDIR}${PREFIX}; \
+ MKCATPAGES=yes; export MKCATPAGES; \
\
echo =========== all ============; \
find ${.OBJDIR} -type f | \
@@ -11,13 +14,13 @@ test_output:
${.OBJDIR}/hello_customtests2; \
\
echo ========= install ==========; \
- ${MAKE} ${MAKEFLAGS} install DESTDIR=${.OBJDIR} \
+ ${MAKE} ${MAKEFLAGS} install -j3 DESTDIR=${.OBJDIR} \
> /dev/null; \
find ${.OBJDIR}${PREFIX} -type f -o -type d | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ======== uninstall =========; \
- ${MAKE} ${MAKEFLAGS} uninstall DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 uninstall DESTDIR=${.OBJDIR} > /dev/null; \
find ${.OBJDIR}${PREFIX} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
\
@@ -26,6 +29,11 @@ test_output:
find ${.OBJDIR} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
\
+ echo ======= errorcheck + MAKEOBJDIR ===========; \
+ mkdir ${.CURDIR}/testdir || true; \
+ ${MAKE} ${MAKEFLAGS} errorcheck MAKEOBJDIR=${.CURDIR}/testdir > /dev/null; \
+ printf 'true_is_available=%s\n' `cat ${.CURDIR}/testdir/_mkc_custom_true_is_available.res`; \
+ \
echo ======= distclean ==========; \
${MAKE} ${MAKEFLAGS} distclean DESTDIR=${.OBJDIR} > /dev/null; \
find ${.OBJDIR} -type f | \
diff --git a/examples/hello_cxx/test.mk b/examples/hello_cxx/test.mk
index f930d66..a961674 100644
--- a/examples/hello_cxx/test.mk
+++ b/examples/hello_cxx/test.mk
@@ -3,19 +3,20 @@ test_output:
@set -e; \
${.OBJDIR}/hello_cxx; \
rm -rf ${.OBJDIR}${PREFIX}; \
+ MKCATPAGES=yes; export MKCATPAGES; \
\
echo =========== all ============; \
find ${.OBJDIR} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ========= install ==========; \
- ${MAKE} ${MAKEFLAGS} install DESTDIR=${.OBJDIR} \
+ ${MAKE} ${MAKEFLAGS} install -j3 DESTDIR=${.OBJDIR} \
> /dev/null; \
find ${.OBJDIR}${PREFIX} -type f -o -type d | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ======== uninstall =========; \
- ${MAKE} ${MAKEFLAGS} uninstall DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 uninstall DESTDIR=${.OBJDIR} > /dev/null; \
find ${.OBJDIR}${PREFIX} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
\
diff --git a/examples/hello_cxxlib/test.mk b/examples/hello_cxxlib/test.mk
index c0db93a..ce5dd80 100644
--- a/examples/hello_cxxlib/test.mk
+++ b/examples/hello_cxxlib/test.mk
@@ -1,6 +1,7 @@
.PHONY : test_output
test_output:
@set -e; \
+ MKCATPAGES=yes; export MKCATPAGES; \
rm -rf ${.OBJDIR}${PREFIX}; \
LD_LIBRARY_PATH=${.CURDIR}/cxxlib:$$LD_LIBRARY_PATH; \
DYLD_LIBRARY_PATH=${.CURDIR}/cxxlib:$$LD_LIBRARY_PATH; \
@@ -12,13 +13,13 @@ test_output:
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ========= install ==========; \
- ${MAKE} ${MAKEFLAGS} install DESTDIR=${.OBJDIR} \
+ ${MAKE} ${MAKEFLAGS} install -j3 DESTDIR=${.OBJDIR} \
> /dev/null; \
find ${.OBJDIR}${PREFIX} -type f -o -type d -o -type l | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ======== uninstall =========; \
- ${MAKE} ${MAKEFLAGS} uninstall DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 uninstall DESTDIR=${.OBJDIR} > /dev/null; \
find ${.OBJDIR}${PREFIX} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
\
diff --git a/examples/hello_dictd/expect.out b/examples/hello_dictd/expect.out
index bdcbe32..cbed363 100644
--- a/examples/hello_dictd/expect.out
+++ b/examples/hello_dictd/expect.out
@@ -268,6 +268,114 @@ libdz fake3
/objdir/libmaa/prime.c
/objdir/libmaa/set.c
/objdir/test.mk
+=========== MKOBJDIRS=auto ============
+/objdir
+/objdir/Makefile
+/objdir/Makefile.inc
+/objdir/dict
+/objdir/dict/Makefile
+/objdir/dict/dict.1
+/objdir/dict/dict.c
+/objdir/dictd
+/objdir/dictd/Makefile
+/objdir/dictd/dictd.8
+/objdir/dictd/dictd.c
+/objdir/dictfmt
+/objdir/dictfmt/Makefile
+/objdir/dictfmt/dictfmt.1
+/objdir/dictfmt/dictfmt.c
+/objdir/dictzip
+/objdir/dictzip/Makefile
+/objdir/dictzip/dictzip.1
+/objdir/dictzip/dictzip.c
+/objdir/doc
+/objdir/doc/Makefile
+/objdir/doc/doc.txt
+/objdir/expect.out
+/objdir/hello_dictd.test.out.tmp
+/objdir/libcommon
+/objdir/libcommon/Makefile
+/objdir/libcommon/iswalnum.c
+/objdir/libcommon/linkme.mk
+/objdir/libcommon/str.c
+/objdir/libdz
+/objdir/libdz/Makefile
+/objdir/libdz/dz.c
+/objdir/libdz/export.sym
+/objdir/libdz/linkme.mk
+/objdir/libmaa
+/objdir/libmaa/Makefile
+/objdir/libmaa/export.sym
+/objdir/libmaa/linkme.mk
+/objdir/libmaa/log.c
+/objdir/libmaa/prime.c
+/objdir/libmaa/set.c
+/objdir/test.mk
+===
+/objdir/obj1/objdir
+/objdir/obj1/objdir/dict
+/objdir/obj1/objdir/dictd
+/objdir/obj1/objdir/dictfmt
+/objdir/obj1/objdir/dictzip
+/objdir/obj1/objdir/libcommon
+/objdir/obj1/objdir/libdz
+/objdir/obj1/objdir/libmaa
+=========== MKOBJDIRS=yes ============
+obj1 does not exist
+===
+/objdir
+/objdir/Makefile
+/objdir/Makefile.inc
+/objdir/dict
+/objdir/dict/Makefile
+/objdir/dict/dict.1
+/objdir/dict/dict.c
+/objdir/dictd
+/objdir/dictd/Makefile
+/objdir/dictd/dictd.8
+/objdir/dictd/dictd.c
+/objdir/dictfmt
+/objdir/dictfmt/Makefile
+/objdir/dictfmt/dictfmt.1
+/objdir/dictfmt/dictfmt.c
+/objdir/dictzip
+/objdir/dictzip/Makefile
+/objdir/dictzip/dictzip.1
+/objdir/dictzip/dictzip.c
+/objdir/doc
+/objdir/doc/Makefile
+/objdir/doc/doc.txt
+/objdir/expect.out
+/objdir/hello_dictd.test.out.tmp
+/objdir/libcommon
+/objdir/libcommon/Makefile
+/objdir/libcommon/iswalnum.c
+/objdir/libcommon/linkme.mk
+/objdir/libcommon/str.c
+/objdir/libdz
+/objdir/libdz/Makefile
+/objdir/libdz/dz.c
+/objdir/libdz/export.sym
+/objdir/libdz/linkme.mk
+/objdir/libmaa
+/objdir/libmaa/Makefile
+/objdir/libmaa/export.sym
+/objdir/libmaa/linkme.mk
+/objdir/libmaa/log.c
+/objdir/libmaa/prime.c
+/objdir/libmaa/set.c
+/objdir/test.mk
+===
+/objdir/obj2/objdir
+/objdir/obj2/objdir/dict
+/objdir/obj2/objdir/dictd
+/objdir/obj2/objdir/dictfmt
+/objdir/obj2/objdir/dictzip
+/objdir/obj2/objdir/libcommon
+/objdir/obj2/objdir/libdz
+/objdir/obj2/objdir/libmaa
+/objdir/obj3
+=========== MKOBJDIRS=no ============
======= errorcheck ==========
/objdir/Makefile
/objdir/Makefile.inc
@@ -369,6 +477,60 @@ libdz fake3
/objdir/libmaa/set.o
/objdir/libmaa/set.os
/objdir/test.mk
+======= -C dict all ==========
+/objdir/Makefile
+/objdir/Makefile.inc
+/objdir/_mkc_compiler_type.err
+/objdir/_mkc_compiler_type.res
+/objdir/_mkc_prog_cc.err
+/objdir/_mkc_prog_cc.res
+/objdir/dict/Makefile
+/objdir/dict/dict
+/objdir/dict/dict.1
+/objdir/dict/dict.c
+/objdir/dict/dict.cat1
+/objdir/dict/dict.o
+/objdir/dictd/Makefile
+/objdir/dictd/dictd.8
+/objdir/dictd/dictd.c
+/objdir/dictfmt/Makefile
+/objdir/dictfmt/dictfmt.1
+/objdir/dictfmt/dictfmt.c
+/objdir/dictzip/Makefile
+/objdir/dictzip/dictzip.1
+/objdir/dictzip/dictzip.c
+/objdir/doc/Makefile
+/objdir/doc/doc.txt
+/objdir/expect.out
+/objdir/hello_dictd.test.out.tmp
+/objdir/libcommon/Makefile
+/objdir/libcommon/iswalnum.c
+/objdir/libcommon/iswalnum.o
+/objdir/libcommon/libcommon.a
+/objdir/libcommon/linkme.mk
+/objdir/libcommon/str.c
+/objdir/libcommon/str.o
+/objdir/libdz/Makefile
+/objdir/libdz/dz.c
+/objdir/libdz/export.sym
+/objdir/libdz/linkme.mk
+/objdir/libmaa/Makefile
+/objdir/libmaa/export.sym
+/objdir/libmaa/libmaa.a
+/objdir/libmaa/libmaa.so
+/objdir/libmaa/libmaa.so.1
+/objdir/libmaa/libmaa.so.1.2.0
+/objdir/libmaa/linkme.mk
+/objdir/libmaa/log.c
+/objdir/libmaa/log.o
+/objdir/libmaa/log.os
+/objdir/libmaa/prime.c
+/objdir/libmaa/prime.o
+/objdir/libmaa/prime.os
+/objdir/libmaa/set.c
+/objdir/libmaa/set.o
+/objdir/libmaa/set.os
+/objdir/test.mk
========= installdirs-dict ==========
/objdir/prefix
/objdir/prefix/bin
@@ -390,8 +552,22 @@ libdz fake3
/objdir/prefix/man/cat1/dict.0
/objdir/prefix/man/man1
/objdir/prefix/man/man1/dict.1
+========= -Cdict install ==========
+/objdir/prefix
+/objdir/prefix/bin
+/objdir/prefix/bin/dict
+/objdir/prefix/lib
+/objdir/prefix/lib/libmaa.a
+/objdir/prefix/lib/libmaa.so
+/objdir/prefix/lib/libmaa.so.1
+/objdir/prefix/lib/libmaa.so.1.2.0
+/objdir/prefix/man
+/objdir/prefix/man/cat1
+/objdir/prefix/man/cat1/dict.0
+/objdir/prefix/man/man1
+/objdir/prefix/man/man1/dict.1
======= uninstall-dict ==========
-========== clean-dict ===========
+========== -C dict clean ===========
/objdir/Makefile
/objdir/Makefile.inc
/objdir/_mkc_compiler_type.err
diff --git a/examples/hello_dictd/test.mk b/examples/hello_dictd/test.mk
index ae6492f..1dd3944 100644
--- a/examples/hello_dictd/test.mk
+++ b/examples/hello_dictd/test.mk
@@ -1,6 +1,11 @@
+next_level != expr ${.MAKE.LEVEL} + 1
+
.PHONY : test_output
test_output :
@set -e; \
+ MKCATPAGES=yes; export MKCATPAGES; \
+ SRCTOP=`pwd`; export SRCTOP; \
+ \
rm -rf ${.OBJDIR}${PREFIX}; \
LD_LIBRARY_PATH=${.CURDIR}/libdz:${.CURDIR}/libmaa:$$LD_LIBRARY_PATH; \
DYLD_LIBRARY_PATH=${.CURDIR}/libdz:${.CURDIR}/libmaa:$$LD_LIBRARY_PATH; \
@@ -23,6 +28,7 @@ test_output :
esac; \
\
echo =========== all ============; \
+ ${MAKE} ${MAKEFLAGS} -j4 all > /dev/null; \
find ${.OBJDIR} -type f -o -type l | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
@@ -32,12 +38,12 @@ test_output :
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ========= install ==========; \
- ${MAKE} ${MAKEFLAGS} install DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} install -j3 DESTDIR=${.OBJDIR} > /dev/null; \
find ${.OBJDIR}${PREFIX} -type f -o -type l -o -type d | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ======== uninstall =========; \
- ${MAKE} ${MAKEFLAGS} uninstall DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 uninstall DESTDIR=${.OBJDIR} > /dev/null; \
find ${.OBJDIR}${PREFIX} -type f -o -type l | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
\
@@ -55,15 +61,55 @@ test_output :
${MAKE} ${MAKEFLAGS} distclean > /dev/null; \
find ${.OBJDIR} -type f -o -type l | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
+ rm -rf ${.OBJDIR}${PREFIX} ${.OBJDIR}/usr; \
+ echo =========== MKOBJDIRS=auto ============; \
+ env TARGETS=fake ${MAKE} ${MAKEFLAGS} fake \
+ MKCHECKS=no MAKEOBJDIRPREFIX=${.OBJDIR}/obj1 > /dev/null; \
+ find ${.OBJDIR} -type d -o -type f -o -type l | grep -v obj1 | \
+ mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
+ echo ===; \
+ find ${.OBJDIR}/obj1/${.OBJDIR} -type d -o -type f -o -type l | \
+ mkc_test_helper "${PREFIX}" "${.OBJDIR}"; rm -rf obj1; \
+ \
+ echo =========== MKOBJDIRS=yes ============; \
+ env TARGETS=fake ${MAKE} ${MAKEFLAGS} fake \
+ MKCHECKS=no MKOBJDIRS=yes MAKEOBJDIRPREFIX=${.OBJDIR}/obj1 > /dev/null; \
+ printf '%s' 'obj1 '; \
+ if test -d ${.OBJDIR}/obj1; then echo exists; else echo does not exist; fi; \
+ rm -rf obj1; \
+ echo ===; \
+ ${MAKE} ${MAKEFLAGS} obj MKOBJDIRS=yes MAKEOBJDIRPREFIX=${.OBJDIR}/obj2 > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} obj MKOBJDIRS=yes MAKEOBJDIR=${.OBJDIR}/obj3 > /dev/null; \
+ find ${.OBJDIR} -type d -o -type f -o -type l | grep -v 'obj[23]' | \
+ mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
+ echo ===; \
+ find ${.OBJDIR}/obj2/${.OBJDIR} ${.OBJDIR}/obj3 \
+ -type d -o -type f -o -type l | \
+ mkc_test_helper "${PREFIX}" "${.OBJDIR}"; rm -rf obj2 obj3; \
+ \
+ echo =========== MKOBJDIRS=no ============; \
+ ${MAKE} ${MAKEFLAGS} obj MKOBJDIRS=no MAKEOBJDIRPREFIX=${.OBJDIR}/obj2 > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} obj MKOBJDIRS=no MAKEOBJDIR=${.OBJDIR}/obj3 > /dev/null; \
+ find ${.OBJDIR} -type d -o -type f -o -type l | grep 'obj[23]' | \
+ mkc_test_helper "${PREFIX}" "${.OBJDIR}"; rm -rf obj2 obj3; \
+ \
echo ======= errorcheck ==========; \
${MAKE} ${MAKEFLAGS} errorcheck > /dev/null; \
find ${.OBJDIR} -type f -o -type l | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
${MAKE} ${MAKEFLAGS} cleandir > /dev/null; \
+ \
echo ======= all-dict ==========; \
- ${MAKE} ${MAKEFLAGS} all-dict > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 all-dict > /dev/null; \
find ${.OBJDIR} -type f -o -type l | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
+ \
+ echo ======= -C dict all ==========; \
+ ${MAKE} ${MAKEFLAGS} clean-dict > /dev/null; \
+ env init_make_level=${next_level} ${MAKE} ${MAKEFLAGS} -C dict all > /dev/null; \
+ find ${.OBJDIR} -type f -o -type l | \
+ mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
+ \
echo ========= installdirs-dict ==========; \
${MAKE} ${MAKEFLAGS} installdirs-dict DESTDIR=${.OBJDIR} > /dev/null; \
find ${.OBJDIR}${PREFIX} -type f -o -type l -o -type d | \
@@ -74,13 +120,19 @@ test_output :
find ${.OBJDIR}${PREFIX} -type f -o -type l -o -type d | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
+ echo ========= -Cdict install ==========; \
+ rm -rf ${.OBJDIR}${PREFIX} > /dev/null; \
+ env init_make_level=${next_level} ${MAKE} ${MAKEFLAGS} -C dict install DESTDIR=${.OBJDIR} > /dev/null; \
+ find ${.OBJDIR}${PREFIX} -type f -o -type l -o -type d | \
+ mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
+ \
echo ======= uninstall-dict ==========; \
- ${MAKE} ${MAKEFLAGS} uninstall-dict DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 uninstall-dict DESTDIR=${.OBJDIR} > /dev/null; \
find ${.OBJDIR}${PREFIX} -type f -o -type l | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
\
- echo ========== clean-dict ===========; \
- ${MAKE} ${MAKEFLAGS} clean-dict > /dev/null; \
+ echo ========== -C dict clean ===========; \
+ env init_make_level=${next_level} ${MAKE} ${MAKEFLAGS} -C dict clean > /dev/null; \
find ${.OBJDIR} -type f -o -type l | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
\
@@ -101,14 +153,14 @@ test_output :
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ======= uninstall-doc ==========; \
- ${MAKE} ${MAKEFLAGS} uninstall-doc DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 uninstall-doc DESTDIR=${.OBJDIR} > /dev/null; \
find ${.OBJDIR}${PREFIX} -type f -o -type l | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo =========== all with NOSUBDIR ============; \
${MAKE} ${MAKEFLAGS} distclean > /dev/null; \
NOSUBDIR='dictfmt dictzip'; export NOSUBDIR; \
- ${MAKE} ${MAKEFLAGS} all > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 all > /dev/null; \
find ${.OBJDIR} -type f -o -type l | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
diff --git a/examples/hello_files/shell_func.texinfo b/examples/hello_files/shell_func.texinfo
index dd335be..fa0012e 100644
--- a/examples/hello_files/shell_func.texinfo
+++ b/examples/hello_files/shell_func.texinfo
@@ -15,8 +15,8 @@ This is fake!
@titlepage
@title shell_func info page
-@subtitle Edition @value{EDITION}, Version @value{VERSION}.
-@subtitle @value{UPDATE-MONTH}
+@subtitle Edition 1, Version 7.
+@subtitle 5
@author Aleksey Cheusov
@page
diff --git a/examples/hello_files/test.mk b/examples/hello_files/test.mk
index 72afde2..c354e53 100644
--- a/examples/hello_files/test.mk
+++ b/examples/hello_files/test.mk
@@ -1,28 +1,28 @@
.PHONY : test_output
test_output:
@set -e; \
- MKHTML=yes; export MKHTML; \
- \
+ MKCATPAGES=yes; export MKCATPAGES; \
rm -rf ${.OBJDIR}${PREFIX}; \
\
echo =========== all ============; \
+ ${MAKE} ${MAKEFLAGS} -j4 all > /dev/null; \
find ${.OBJDIR} -type f -o -type l | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ======== all+html ==========; \
- ${MAKE} ${MAKEFLAGS} all \
- > /dev/null; \
+ MKHTML=yes; export MKHTML; \
+ ${MAKE} ${MAKEFLAGS} -j4 all > /dev/null; \
find ${.OBJDIR} -type f -o -type l | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ========= install ==========; \
- ${MAKE} ${MAKEFLAGS} install DESTDIR=${.OBJDIR} \
+ ${MAKE} ${MAKEFLAGS} install -j3 DESTDIR=${.OBJDIR} \
> /dev/null; \
find ${.OBJDIR}${PREFIX} -type f -o -type l -o -type d | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ======== uninstall =========; \
- ${MAKE} ${MAKEFLAGS} uninstall DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 uninstall DESTDIR=${.OBJDIR} > /dev/null; \
find ${.OBJDIR}${PREFIX} -type f -o -type l | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
@@ -38,7 +38,7 @@ test_output:
\
echo ==== install MKINSTALL=no ====; \
MKINSTALL=no; export MKINSTALL; \
- ${MAKE} ${MAKEFLAGS} all installdirs install DESTDIR=${.OBJDIR} \
+ ${MAKE} ${MAKEFLAGS} -j4 all installdirs install -j3 DESTDIR=${.OBJDIR} \
> /dev/null; \
find ${.OBJDIR} -type f -o -type l | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
diff --git a/examples/hello_glib2/test.mk b/examples/hello_glib2/test.mk
index da83e2f..8604e62 100644
--- a/examples/hello_glib2/test.mk
+++ b/examples/hello_glib2/test.mk
@@ -3,19 +3,20 @@ test_output:
@set -e; \
${.OBJDIR}/hello_glib2 | sed 's,[0-9][0-9]*,N,'; \
rm -rf ${.OBJDIR}${PREFIX}; \
+ MKCATPAGES=yes; export MKCATPAGES; \
\
echo =========== all ============; \
find ${.OBJDIR} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ========= install ==========; \
- ${MAKE} ${MAKEFLAGS} install DESTDIR=${.OBJDIR} \
+ ${MAKE} ${MAKEFLAGS} install -j3 DESTDIR=${.OBJDIR} \
> /dev/null; \
find ${.OBJDIR}${PREFIX} -type f -o -type d | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ======== uninstall =========; \
- ${MAKE} ${MAKEFLAGS} uninstall DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 uninstall DESTDIR=${.OBJDIR} > /dev/null; \
find ${.OBJDIR}${PREFIX} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
\
diff --git a/examples/hello_lex/Makefile b/examples/hello_lex/Makefile
index 211e442..e21d074 100644
--- a/examples/hello_lex/Makefile
+++ b/examples/hello_lex/Makefile
@@ -1,5 +1,7 @@
-PROG = hello_lex
-SRCS = hello_lex.l
+PROG = hello_lex
+SRCS = hello_lex.l
+
+DPSRCS = hello_lex.c
.include "test.mk"
.include <mkc.prog.mk>
diff --git a/examples/hello_lex/expect.out b/examples/hello_lex/expect.out
index 4862fd7..7e6f996 100644
--- a/examples/hello_lex/expect.out
+++ b/examples/hello_lex/expect.out
@@ -33,13 +33,50 @@
/objdir/hello_lex.test.out.tmp
/objdir/input.txt
/objdir/test.mk
-==== SHRTOUT=yes ====
+========== depend ===========
+/objdir/.depend
+/objdir/Makefile
+/objdir/_mkc_compiler_type.err
+/objdir/_mkc_compiler_type.res
+/objdir/_mkc_prog_cc.err
+/objdir/_mkc_prog_cc.res
+/objdir/_mkc_prog_lex.err
+/objdir/_mkc_prog_lex.res
+/objdir/expect.out
+/objdir/hello_lex.c
+/objdir/hello_lex.d
+/objdir/hello_lex.l
+/objdir/hello_lex.test.out.tmp
+/objdir/input.txt
+/objdir/test.mk
+==== SHRTOUT=yes depend ====
checking for compiler mmm... nnn
checking for program mmm... nnn
checking for program mmm... nnn
LEX: hello_lex.l
+DEP: hello_lex.d
+DEP: .depend
+==== SHRTOUT=yes all ====
+LEX: hello_lex.l
CC: hello_lex.c
LD: hello_lex
+/objdir/.depend
+/objdir/Makefile
+/objdir/_mkc_compiler_type.err
+/objdir/_mkc_compiler_type.res
+/objdir/_mkc_prog_cc.err
+/objdir/_mkc_prog_cc.res
+/objdir/_mkc_prog_lex.err
+/objdir/_mkc_prog_lex.res
+/objdir/expect.out
+/objdir/hello_lex
+/objdir/hello_lex.c
+/objdir/hello_lex.d
+/objdir/hello_lex.l
+/objdir/hello_lex.o
+/objdir/hello_lex.test.out.tmp
+/objdir/input.txt
+/objdir/test.mk
======= distclean ==========
/objdir/Makefile
/objdir/expect.out
diff --git a/examples/hello_lex/test.mk b/examples/hello_lex/test.mk
index ad62ff6..53acf8e 100644
--- a/examples/hello_lex/test.mk
+++ b/examples/hello_lex/test.mk
@@ -3,19 +3,20 @@ test_output:
@set -e; \
${.OBJDIR}/hello_lex < ${.CURDIR}/input.txt; \
rm -rf ${.OBJDIR}${PREFIX}; \
+ MKCATPAGES=yes; export MKCATPAGES; \
\
echo =========== all ============; \
find ${.OBJDIR} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ========= install ==========; \
- ${MAKE} ${MAKEFLAGS} install DESTDIR=${.OBJDIR} \
+ ${MAKE} ${MAKEFLAGS} install -j3 DESTDIR=${.OBJDIR} \
> /dev/null; \
find ${.OBJDIR}${PREFIX} -type f -o -type d | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ======== uninstall =========; \
- ${MAKE} ${MAKEFLAGS} uninstall DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 uninstall DESTDIR=${.OBJDIR} > /dev/null; \
find ${.OBJDIR}${PREFIX} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
\
@@ -24,10 +25,23 @@ test_output:
find ${.OBJDIR} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
\
- echo ==== SHRTOUT=yes ====; \
+ echo ========== depend ===========; \
${MAKE} ${MAKEFLAGS} distclean > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} depend -j4 > /dev/null; \
+ find ${.OBJDIR} -type f | \
+ mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
+ \
+ echo ==== SHRTOUT=yes depend ====; \
+ ${MAKE} ${MAKEFLAGS} distclean > /dev/null; \
+ env SHRTOUT=yes ${MAKE} ${MAKEFLAGS} depend 2>&1 |\
+ mkc_test_helper2; \
+ \
+ echo ==== SHRTOUT=yes all ====; \
+ ${MAKE} ${MAKEFLAGS} clean > /dev/null; \
env MKCATPAGES=no MKHTML=no SHRTOUT=yes ${MAKE} ${MAKEFLAGS} all 2>&1 |\
mkc_test_helper2; \
+ find ${.OBJDIR} -type f | \
+ mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
\
echo ======= distclean ==========; \
${MAKE} ${MAKEFLAGS} distclean DESTDIR=${.OBJDIR} > /dev/null; \
diff --git a/examples/hello_lua/Makefile b/examples/hello_lua/Makefile
index faba9c7..3e40bfb 100644
--- a/examples/hello_lua/Makefile
+++ b/examples/hello_lua/Makefile
@@ -3,7 +3,11 @@ PROJECTNAME = hello_lua
LUA_LMODULES = foo.lua bar.lua
LUA_CMODULE = baz
-SCRIPTS = foobar
+INSCRIPTS = foobar
+SCRIPTS = ${INSCRIPTS}
+
+INTEXTS_REPLS = LUA ${PROG.lua}
+MKC_CHECK_PROGS = lua
.include "test.mk"
.include <mkc.lib.mk>
diff --git a/examples/hello_lua/expect.out b/examples/hello_lua/expect.out
index df5630c..0e51847 100644
--- a/examples/hello_lua/expect.out
+++ b/examples/hello_lua/expect.out
@@ -19,6 +19,8 @@ foobarbaz
/objdir/_mkc_pkgconfig_lua_libs.res
/objdir/_mkc_prog_cc.err
/objdir/_mkc_prog_cc.res
+/objdir/_mkc_prog_lua.err
+/objdir/_mkc_prog_lua.res
/objdir/_mkc_prog_pkg-config.err
/objdir/_mkc_prog_pkg-config.res
/objdir/bar.lua
@@ -28,6 +30,7 @@ foobarbaz
/objdir/expect.out
/objdir/foo.lua
/objdir/foobar
+/objdir/foobar.in
/objdir/hello_lua.test.out.tmp
/objdir/test.mk
========= install ==========
@@ -63,13 +66,15 @@ foobarbaz
/objdir/_mkc_pkgconfig_lua_libs.res
/objdir/_mkc_prog_cc.err
/objdir/_mkc_prog_cc.res
+/objdir/_mkc_prog_lua.err
+/objdir/_mkc_prog_lua.res
/objdir/_mkc_prog_pkg-config.err
/objdir/_mkc_prog_pkg-config.res
/objdir/bar.lua
/objdir/baz.c
/objdir/expect.out
/objdir/foo.lua
-/objdir/foobar
+/objdir/foobar.in
/objdir/hello_lua.test.out.tmp
/objdir/test.mk
======= distclean ==========
@@ -78,7 +83,7 @@ foobarbaz
/objdir/baz.c
/objdir/expect.out
/objdir/foo.lua
-/objdir/foobar
+/objdir/foobar.in
/objdir/hello_lua.test.out.tmp
/objdir/test.mk
========= install2 ==========
@@ -97,6 +102,8 @@ foobarbaz
/objdir/_mkc_pkgconfig_lua_libs.res
/objdir/_mkc_prog_cc.err
/objdir/_mkc_prog_cc.res
+/objdir/_mkc_prog_lua.err
+/objdir/_mkc_prog_lua.res
/objdir/_mkc_prog_pkg-config.err
/objdir/_mkc_prog_pkg-config.res
/objdir/bar.lua
@@ -106,6 +113,7 @@ foobarbaz
/objdir/expect.out
/objdir/foo.lua
/objdir/foobar
+/objdir/foobar.in
/objdir/hello_lua.test.out.tmp
/objdir/home
/objdir/home/cheusov
diff --git a/examples/hello_lua/foobar b/examples/hello_lua/foobar.in
index 249feb3..dd8714a 100755
--- a/examples/hello_lua/foobar
+++ b/examples/hello_lua/foobar.in
@@ -1,4 +1,4 @@
-#!/usr/bin/env lua
+#!@LUA@
require "foo"
require "bar"
diff --git a/examples/hello_lua/test.mk b/examples/hello_lua/test.mk
index cc8b0df..8b6fc91 100644
--- a/examples/hello_lua/test.mk
+++ b/examples/hello_lua/test.mk
@@ -5,22 +5,26 @@ test_output:
@set -e; \
rm -rf ${.OBJDIR}/usr ${.OBJDIR}/opt; \
echo PROJECTNAME=${PROJECTNAME}; \
+ LUA_PATH=${.CURDIR}/?.lua; \
+ LUA_CPATH=${.OBJDIR}/?.so; \
+ export LUA_PATH LUA_CPATH; \
./foobar; \
+ MKCATPAGES=yes; export MKCATPAGES; \
\
echo =========== all ============; \
find ${.OBJDIR} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ========= install ==========; \
- ${MAKE} ${MAKEFLAGS} install DESTDIR=${.OBJDIR} \
+ ${MAKE} ${MAKEFLAGS} install -j3 DESTDIR=${.OBJDIR} PREFIX=/usr/local \
> /dev/null; \
find ${.OBJDIR}/usr -type f -o -type d | \
- mkc_test_helper "${PREFIX}" "${.OBJDIR}" | uniq; \
+ mkc_test_helper /usr/local "${.OBJDIR}" | uniq; \
\
echo ======== uninstall =========; \
- ${MAKE} ${MAKEFLAGS} uninstall DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 uninstall DESTDIR=${.OBJDIR} PREFIX=/usr/local > /dev/null; \
find ${.OBJDIR}/usr -type f | \
- mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
+ mkc_test_helper /usr/local "${.OBJDIR}"; \
\
echo ========== clean ===========; \
${MAKE} ${MAKEFLAGS} clean > /dev/null; \
@@ -36,7 +40,7 @@ test_output:
env PREFIX=/home/cheusov/local \
LUA_LMODDIR=/home/cheusov/local/share/lua/5.1 \
LUA_CMODDIR=/home/cheusov/local/lib/lua/5.1 \
- ${MAKE} ${MAKEFLAGS} all install DESTDIR=${.OBJDIR} \
+ ${MAKE} ${MAKEFLAGS} all install -j3 DESTDIR=${.OBJDIR} \
> /dev/null; \
find ${.OBJDIR} -type f -o -type d | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}" | uniq; \
diff --git a/examples/hello_lua2/test.mk b/examples/hello_lua2/test.mk
index 9d1ec03..0cc6d20 100644
--- a/examples/hello_lua2/test.mk
+++ b/examples/hello_lua2/test.mk
@@ -4,22 +4,26 @@ CLEANDIRS += ${.OBJDIR}/home
test_output:
@set -e; \
rm -rf ${.OBJDIR}/usr; \
+ LUA_PATH=${.CURDIR}/?.lua; \
+ LUA_CPATH=${.OBJDIR}/?.so; \
+ export LUA_PATH LUA_CPATH; \
./foobar; \
+ MKCATPAGES=yes; export MKCATPAGES; \
\
echo =========== all ============; \
find ${.OBJDIR} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ========= install ==========; \
- ${MAKE} ${MAKEFLAGS} install DESTDIR=${.OBJDIR} \
+ ${MAKE} ${MAKEFLAGS} install -j3 DESTDIR=${.OBJDIR} PREFIX=/usr/local \
> /dev/null; \
find ${.OBJDIR}/usr -type f -o -type d | \
- mkc_test_helper "${PREFIX}" "${.OBJDIR}" | uniq; \
+ mkc_test_helper /usr/local "${.OBJDIR}" | uniq; \
\
echo ======== uninstall =========; \
- ${MAKE} ${MAKEFLAGS} uninstall DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 uninstall DESTDIR=${.OBJDIR} PREFIX=/usr/local > /dev/null; \
find ${.OBJDIR}/usr -type f | \
- mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
+ mkc_test_helper /usr/local "${.OBJDIR}"; \
\
echo ========== clean ===========; \
${MAKE} ${MAKEFLAGS} clean DESTDIR=${.OBJDIR} > /dev/null; \
@@ -34,7 +38,7 @@ test_output:
echo ========= install2 ==========; \
env PREFIX=/home/cheusov/local \
LUA_LMODDIR=/home/cheusov/local/share/lua/5.1 \
- ${MAKE} ${MAKEFLAGS} all install DESTDIR=${.OBJDIR} \
+ ${MAKE} ${MAKEFLAGS} all install -j3 DESTDIR=${.OBJDIR} \
> /dev/null; \
find ${.OBJDIR} -type f -o -type d | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}" | uniq; \
diff --git a/examples/hello_lua3/test.mk b/examples/hello_lua3/test.mk
index fdf2745..dfe9e9f 100644
--- a/examples/hello_lua3/test.mk
+++ b/examples/hello_lua3/test.mk
@@ -3,19 +3,20 @@ test_output:
@set -e; \
rm -rf ${.OBJDIR}/usr ${.OBJDIR}/opt; \
echo PROJECTNAME=${PROJECTNAME}; \
+ MKCATPAGES=yes; export MKCATPAGES; \
\
echo =========== all ============; \
find ${.OBJDIR} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ========= install ==========; \
- ${MAKE} ${MAKEFLAGS} install DESTDIR=${.OBJDIR} \
+ ${MAKE} ${MAKEFLAGS} install -j3 DESTDIR=${.OBJDIR} \
> /dev/null; \
find ${.OBJDIR}/usr -type f -o -type d | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}" | uniq; \
\
echo ======== uninstall =========; \
- ${MAKE} ${MAKEFLAGS} uninstall DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 uninstall DESTDIR=${.OBJDIR} > /dev/null; \
find ${.OBJDIR}/usr -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
diff --git a/examples/hello_plugins/test.mk b/examples/hello_plugins/test.mk
index edcf9a7..9325880 100644
--- a/examples/hello_plugins/test.mk
+++ b/examples/hello_plugins/test.mk
@@ -4,24 +4,25 @@ test_output:
rm -rf ${.OBJDIR}${PREFIX}; \
app/app plugin1/plugin1${DLL_EXT} plugin1/plugin1${DLL_EXT} | \
awk '$$3 == "address:" {$$4 = "0xF00DBEAF"} {print}'; \
+ MKCATPAGES=yes; export MKCATPAGES; \
\
echo =========== all ============; \
find ${.OBJDIR} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ========= install ==========; \
- ${MAKE} ${MAKEFLAGS} install DESTDIR=${.OBJDIR} \
+ ${MAKE} ${MAKEFLAGS} install -j3 DESTDIR=${.OBJDIR} \
> /dev/null; \
find ${.OBJDIR}${PREFIX} -type f -o -type d | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ======== uninstall =========; \
- ${MAKE} ${MAKEFLAGS} uninstall DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 uninstall DESTDIR=${.OBJDIR} > /dev/null; \
find ${.OBJDIR}${PREFIX} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
\
echo ======== filelist ==========; \
- ${MAKE} ${MAKEFLAGS} filelist | sed 's/[.]bundle/.so/'; \
+ ${MAKE} ${MAKEFLAGS} PREFIX=/usr/local filelist | sed 's/[.]bundle/.so/'; \
\
echo ========== clean ===========; \
${MAKE} ${MAKEFLAGS} clean DESTDIR=${.OBJDIR} > /dev/null; \
diff --git a/examples/hello_plugins2/test.mk b/examples/hello_plugins2/test.mk
index 2944de6..551cb99 100644
--- a/examples/hello_plugins2/test.mk
+++ b/examples/hello_plugins2/test.mk
@@ -3,19 +3,20 @@ test_output:
@set -e; LC_ALL=C; export LC_ALL; \
rm -rf ${.OBJDIR}${PREFIX}; \
app/app plugin1/plugin1${DLL_EXT} plugin2/plugin2${DLL_EXT}; \
+ MKCATPAGES=yes; export MKCATPAGES; \
\
echo =========== all ============; \
find ${.OBJDIR} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ========= install ==========; \
- ${MAKE} ${MAKEFLAGS} install DESTDIR=${.OBJDIR} \
+ ${MAKE} ${MAKEFLAGS} install -j3 DESTDIR=${.OBJDIR} \
> /dev/null; \
find ${.OBJDIR}${PREFIX} -type f -o -type d | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ======== uninstall =========; \
- ${MAKE} ${MAKEFLAGS} uninstall DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 uninstall DESTDIR=${.OBJDIR} > /dev/null; \
find ${.OBJDIR}${PREFIX} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
\
diff --git a/examples/hello_progs/expect.out b/examples/hello_progs/expect.out
index 925acc0..8a7e171 100644
--- a/examples/hello_progs/expect.out
+++ b/examples/hello_progs/expect.out
@@ -39,23 +39,47 @@ server: I am a server
/objdir/server.c
/objdir/server_puts.c
/objdir/test.mk
+========== depend ===========
+/objdir/.depend
+/objdir/Makefile
+/objdir/_mkc_compiler_type.err
+/objdir/_mkc_compiler_type.res
+/objdir/_mkc_prog_cc.err
+/objdir/_mkc_prog_cc.res
+/objdir/client.c
+/objdir/client.d
+/objdir/client_puts.c
+/objdir/client_puts.d
+/objdir/expect.out
+/objdir/hello_progs.test.out.tmp
+/objdir/server.c
+/objdir/server.d
+/objdir/server_puts.c
+/objdir/server_puts.d
+/objdir/test.mk
========== server ===========
+/objdir/.depend
/objdir/Makefile
/objdir/_mkc_compiler_type.err
/objdir/_mkc_compiler_type.res
/objdir/_mkc_prog_cc.err
/objdir/_mkc_prog_cc.res
/objdir/client.c
+/objdir/client.d
/objdir/client_puts.c
+/objdir/client_puts.d
/objdir/expect.out
/objdir/hello_progs.test.out.tmp
/objdir/server
/objdir/server.c
+/objdir/server.d
/objdir/server.o
/objdir/server_puts.c
+/objdir/server_puts.d
/objdir/server_puts.o
/objdir/test.mk
========== client ===========
+/objdir/.depend
/objdir/Makefile
/objdir/_mkc_compiler_type.err
/objdir/_mkc_compiler_type.res
@@ -63,13 +87,17 @@ server: I am a server
/objdir/_mkc_prog_cc.res
/objdir/client
/objdir/client.c
+/objdir/client.d
/objdir/client.o
/objdir/client_puts.c
+/objdir/client_puts.d
/objdir/client_puts.o
/objdir/expect.out
/objdir/hello_progs.test.out.tmp
/objdir/server.c
+/objdir/server.d
/objdir/server_puts.c
+/objdir/server_puts.d
/objdir/test.mk
======= distclean ==========
/objdir/Makefile
diff --git a/examples/hello_progs/test.mk b/examples/hello_progs/test.mk
index bd90e8b..a0741ca 100644
--- a/examples/hello_progs/test.mk
+++ b/examples/hello_progs/test.mk
@@ -5,19 +5,20 @@ test_output:
${.OBJDIR}/client; \
${.OBJDIR}/server; \
rm -rf ${.OBJDIR}${PREFIX}; \
+ MKCATPAGES=yes; export MKCATPAGES; \
\
echo =========== all ============; \
find ${.OBJDIR} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ========= install ==========; \
- ${MAKE} ${MAKEFLAGS} install DESTDIR=${.OBJDIR} \
+ ${MAKE} ${MAKEFLAGS} install -j3 DESTDIR=${.OBJDIR} \
> /dev/null; \
find ${.OBJDIR}${PREFIX} -type f -o -type d | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ======== uninstall =========; \
- ${MAKE} ${MAKEFLAGS} uninstall DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 uninstall DESTDIR=${.OBJDIR} > /dev/null; \
find ${.OBJDIR}${PREFIX} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
\
@@ -26,6 +27,11 @@ test_output:
find ${.OBJDIR} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
\
+ echo ========== depend ===========; \
+ ${MAKE} ${MAKEFLAGS} depend > /dev/null; \
+ find ${.OBJDIR} -type f | \
+ mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
+ \
echo ========== server ===========; \
${MAKE} ${MAKEFLAGS} server > /dev/null; \
find ${.OBJDIR} -type f | \
diff --git a/examples/hello_progs2/test.mk b/examples/hello_progs2/test.mk
index bd90e8b..85cd685 100644
--- a/examples/hello_progs2/test.mk
+++ b/examples/hello_progs2/test.mk
@@ -5,19 +5,20 @@ test_output:
${.OBJDIR}/client; \
${.OBJDIR}/server; \
rm -rf ${.OBJDIR}${PREFIX}; \
+ MKCATPAGES=yes; export MKCATPAGES; \
\
echo =========== all ============; \
find ${.OBJDIR} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ========= install ==========; \
- ${MAKE} ${MAKEFLAGS} install DESTDIR=${.OBJDIR} \
+ ${MAKE} ${MAKEFLAGS} install -j3 DESTDIR=${.OBJDIR} \
> /dev/null; \
find ${.OBJDIR}${PREFIX} -type f -o -type d | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ======== uninstall =========; \
- ${MAKE} ${MAKEFLAGS} uninstall DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 uninstall DESTDIR=${.OBJDIR} > /dev/null; \
find ${.OBJDIR}${PREFIX} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
\
diff --git a/examples/hello_scripts/expect.out b/examples/hello_scripts/expect.out
index 957e6f7..72b1abb 100644
--- a/examples/hello_scripts/expect.out
+++ b/examples/hello_scripts/expect.out
@@ -10,7 +10,6 @@ Hello World 3!
/objdir/expect.out
/objdir/hello_scripts.test.out.tmp
/objdir/hello_world.1
-/objdir/hello_world.cat1
/objdir/hello_world1
/objdir/hello_world2
/objdir/hello_world3
diff --git a/examples/hello_scripts/test.mk b/examples/hello_scripts/test.mk
index f33a6a7..5449f8a 100644
--- a/examples/hello_scripts/test.mk
+++ b/examples/hello_scripts/test.mk
@@ -5,6 +5,7 @@ test_output:
${.CURDIR}/hello_world2; \
${.CURDIR}/hello_world3; \
\
+ MKCATPAGES=yes; export MKCATPAGES; \
rm -rf ${.OBJDIR}${PREFIX}; \
\
echo =========== all ============; \
@@ -12,13 +13,13 @@ test_output:
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ========= install ==========; \
- ${MAKE} ${MAKEFLAGS} install DESTDIR=${.OBJDIR} \
+ ${MAKE} ${MAKEFLAGS} install -j3 DESTDIR=${.OBJDIR} \
> /dev/null; \
find ${.OBJDIR}${PREFIX} -type f -o -type d | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ======== uninstall =========; \
- ${MAKE} ${MAKEFLAGS} uninstall DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 uninstall DESTDIR=${.OBJDIR} > /dev/null; \
find ${.OBJDIR}${PREFIX} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
@@ -34,7 +35,7 @@ test_output:
\
echo ==== install MKINSTALL=no ====; \
MKINSTALL=no; export MKINSTALL; \
- ${MAKE} ${MAKEFLAGS} all installdirs install DESTDIR=${.OBJDIR} \
+ ${MAKE} ${MAKEFLAGS} -j4 all installdirs install -j3 DESTDIR=${.OBJDIR} \
> /dev/null; \
find ${.OBJDIR} -type f -o -type l | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
diff --git a/examples/hello_sizeof/test.mk b/examples/hello_sizeof/test.mk
index 174eb9d..1f6b6e2 100644
--- a/examples/hello_sizeof/test.mk
+++ b/examples/hello_sizeof/test.mk
@@ -3,19 +3,20 @@ test_output:
@set -e; \
${.OBJDIR}/sizeof_test | tr '1248' 'nnnn'; \
rm -rf ${.OBJDIR}${PREFIX}; \
+ MKCATPAGES=yes; export MKCATPAGES; \
\
echo =========== all ============; \
find ${.OBJDIR} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ========= install ==========; \
- ${MAKE} ${MAKEFLAGS} install DESTDIR=${.OBJDIR} \
+ ${MAKE} ${MAKEFLAGS} install -j3 DESTDIR=${.OBJDIR} \
> /dev/null; \
find ${.OBJDIR}${PREFIX} -type f -o -type d | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ======== uninstall =========; \
- ${MAKE} ${MAKEFLAGS} uninstall DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 uninstall DESTDIR=${.OBJDIR} > /dev/null; \
find ${.OBJDIR}${PREFIX} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
\
diff --git a/examples/hello_strlcpy/Makefile b/examples/hello_strlcpy/Makefile
index 1ac88ee..f24ed5a 100644
--- a/examples/hello_strlcpy/Makefile
+++ b/examples/hello_strlcpy/Makefile
@@ -1,7 +1,7 @@
-MKC_SOURCE_FUNCLIBS = strlcpy
-MKC_CHECK_FUNCS3 += strlcpy:string.h
+MKC_SOURCE_FUNCLIBS = strlcpy getline
+MKC_CHECK_FUNCS3 += strlcpy:string.h getline:stdio.h
-PROG = hello4
+PROG = hello
SRCS = hello.c
WARNS = 4
diff --git a/examples/hello_strlcpy/expect.out b/examples/hello_strlcpy/expect.out
index 060d314..d64ce75 100644
--- a/examples/hello_strlcpy/expect.out
+++ b/examples/hello_strlcpy/expect.out
@@ -25,18 +25,25 @@
/objdir/Makefile
/objdir/_mkc_compiler_type.err
/objdir/_mkc_compiler_type.res
+/objdir/_mkc_func3_getline_stdio_h.c
+/objdir/_mkc_func3_getline_stdio_h.err
+/objdir/_mkc_func3_getline_stdio_h.res
/objdir/_mkc_func3_strlcpy_string_h.c
/objdir/_mkc_func3_strlcpy_string_h.err
/objdir/_mkc_func3_strlcpy_string_h.res
+/objdir/_mkc_funclib_getline.c
+/objdir/_mkc_funclib_getline.err
+/objdir/_mkc_funclib_getline.res
/objdir/_mkc_funclib_strlcpy.c
/objdir/_mkc_funclib_strlcpy.err
/objdir/_mkc_funclib_strlcpy.res
/objdir/_mkc_prog_cc.err
/objdir/_mkc_prog_cc.res
/objdir/expect.out
+/objdir/getline.c
+/objdir/hello
/objdir/hello.c
/objdir/hello.o
-/objdir/hello4
/objdir/hello_strlcpy.test.out.tmp
/objdir/input.in
/objdir/strlcpy.c
@@ -44,21 +51,28 @@
========= install ==========
/objdir/prefix
/objdir/prefix/bin
-/objdir/prefix/bin/hello4
+/objdir/prefix/bin/hello
======== uninstall =========
========== clean ===========
/objdir/Makefile
/objdir/_mkc_compiler_type.err
/objdir/_mkc_compiler_type.res
+/objdir/_mkc_func3_getline_stdio_h.c
+/objdir/_mkc_func3_getline_stdio_h.err
+/objdir/_mkc_func3_getline_stdio_h.res
/objdir/_mkc_func3_strlcpy_string_h.c
/objdir/_mkc_func3_strlcpy_string_h.err
/objdir/_mkc_func3_strlcpy_string_h.res
+/objdir/_mkc_funclib_getline.c
+/objdir/_mkc_funclib_getline.err
+/objdir/_mkc_funclib_getline.res
/objdir/_mkc_funclib_strlcpy.c
/objdir/_mkc_funclib_strlcpy.err
/objdir/_mkc_funclib_strlcpy.res
/objdir/_mkc_prog_cc.err
/objdir/_mkc_prog_cc.res
/objdir/expect.out
+/objdir/getline.c
/objdir/hello.c
/objdir/hello_strlcpy.test.out.tmp
/objdir/input.in
@@ -67,8 +81,13 @@
======= distclean ==========
/objdir/Makefile
/objdir/expect.out
+/objdir/getline.c
/objdir/hello.c
/objdir/hello_strlcpy.test.out.tmp
/objdir/input.in
/objdir/strlcpy.c
/objdir/test.mk
+======= CLEANFILES ==========
+strlcpy.o
+getline.o
+hello.o
diff --git a/examples/hello_strlcpy/getline.c b/examples/hello_strlcpy/getline.c
new file mode 100644
index 0000000..777f5c4
--- /dev/null
+++ b/examples/hello_strlcpy/getline.c
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2007-2013 by Aleksey Cheusov
+ *
+ * See LICENSE file in the distribution.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "decls.h"
+
+ssize_t
+getline(char** lineptr, size_t* n, FILE* stream)
+{
+ int c;
+ size_t sz = 0;
+
+ while (c = getc (stream), c != EOF){
+ if (sz+1 >= *n){
+ /* +2 is for `c' and 0-terminator */
+ *n = *n * 3 / 2 + 2;
+ *lineptr = realloc (*lineptr, *n);
+ if (!*lineptr)
+ return -1;
+ }
+
+ (*lineptr) [sz++] = (char) c;
+ if (c == '\n')
+ break;
+ }
+
+ if (ferror (stdin))
+ return (ssize_t) -1;
+
+ if (!sz){
+ if (feof (stdin)){
+ return (ssize_t) -1;
+ }else if (!*n){
+ *lineptr = malloc (1);
+ if (!*lineptr)
+ return -1;
+
+ *n = 1;
+ }
+ }
+
+ (*lineptr) [sz] = 0;
+ return sz;
+}
diff --git a/examples/hello_strlcpy/hello.c b/examples/hello_strlcpy/hello.c
index b7dd661..177b6b5 100644
--- a/examples/hello_strlcpy/hello.c
+++ b/examples/hello_strlcpy/hello.c
@@ -5,14 +5,18 @@
size_t strlcpy(char *dst, const char *src, size_t siz);
#endif
+#ifndef HAVE_FUNC3_GETLINE_STDIO_H
+ssize_t getline(char** lineptr, size_t* n, FILE* stream);
+#endif
+
int main (int argc, char ** argv)
{
- char buf [2000];
+ char *buf = NULL;
+ size_t size = 0;
+ ssize_t len = 0;
char small_buf [10];
- size_t len;
-
- while (fgets (buf, sizeof (buf), stdin)){
+ while (len = getline (&buf, &size, stdin), len != -1){
len = strlen (buf);
if (len > 0 && buf [len-1] == '\n')
buf [len-1] = 0;
diff --git a/examples/hello_strlcpy/test.mk b/examples/hello_strlcpy/test.mk
index ffa417d..e0155bb 100644
--- a/examples/hello_strlcpy/test.mk
+++ b/examples/hello_strlcpy/test.mk
@@ -1,33 +1,38 @@
.PHONY : test_output
test_output:
@set -e; \
- ${.OBJDIR}/hello4 < ${.CURDIR}/input.in; \
+ ${.OBJDIR}/hello < ${.CURDIR}/input.in; \
rm -rf ${.OBJDIR}${PREFIX}; \
+ MKCATPAGES=yes; export MKCATPAGES; \
\
echo =========== all ============; \
- find ${.OBJDIR} -type f | grep -v 'strlcpy[.]o' | \
+ find ${.OBJDIR} -type f | grep -Ev '(strlcpy|getline)[.]o' | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ========= install ==========; \
- ${MAKE} ${MAKEFLAGS} install DESTDIR=${.OBJDIR} \
+ ${MAKE} ${MAKEFLAGS} install -j3 DESTDIR=${.OBJDIR} \
> /dev/null; \
find ${.OBJDIR}${PREFIX} -type f -o -type d | \
- grep -v 'strlcpy[.]o' | \
+ grep -vE '(strlcpy|getline)[.]o' | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ======== uninstall =========; \
- ${MAKE} ${MAKEFLAGS} uninstall DESTDIR=${.OBJDIR} > /dev/null; \
- find ${.OBJDIR}${PREFIX} -type f | grep -v 'strlcpy[.]o' | \
+ ${MAKE} ${MAKEFLAGS} -j4 uninstall DESTDIR=${.OBJDIR} > /dev/null; \
+ find ${.OBJDIR}${PREFIX} -type f | grep -vE '(strlcpy|getline)[.]o' | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ========== clean ===========; \
- ${MAKE} ${MAKEFLAGS} clean DESTDIR=${.OBJDIR} > /dev/null; \
- find ${.OBJDIR} -type f | grep -v 'strlcpy[.]o' | \
+ ${MAKE} ${MAKEFLAGS} clean > /dev/null; \
+ find ${.OBJDIR} -type f | grep -vE '(strlcpy|getline)[.]o' | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ======= distclean ==========; \
- ${MAKE} ${MAKEFLAGS} distclean DESTDIR=${.OBJDIR} > /dev/null; \
- find ${.OBJDIR} -type f | grep -v 'strlcpy[.]o' | \
- mkc_test_helper "${PREFIX}" "${.OBJDIR}"
+ ${MAKE} ${MAKEFLAGS} distclean > /dev/null; \
+ find ${.OBJDIR} -type f | grep -vE '(strlcpy|getline)[.]o' | \
+ mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
+ \
+ echo ======= CLEANFILES ==========; \
+ ${MAKE} ${MAKEFLAGS} print-values VARS='CLEANFILES' MKCHECKS=no | \
+ awk '{for(i=1; i<=NF; ++i) if ($$i ~ /[.]o$$/) print $$i}'
.include <mkc.minitest.mk>
diff --git a/examples/hello_superfs/Makefile b/examples/hello_superfs/Makefile
index c58ab37..81442e4 100644
--- a/examples/hello_superfs/Makefile
+++ b/examples/hello_superfs/Makefile
@@ -1,6 +1,4 @@
-SUBPRJ = mkfs_superfs fsck_superfs \
- docs \
- mkfs_superfs:tools fsck_superfs:tools
+SUBPRJ = docs mkfs_superfs:tools fsck_superfs:tools
SUBPRJ_DFLT = mkfs_superfs fsck_superfs docs
diff --git a/examples/hello_superfs/expect.out b/examples/hello_superfs/expect.out
index 542cf1c..45af717 100644
--- a/examples/hello_superfs/expect.out
+++ b/examples/hello_superfs/expect.out
@@ -14,14 +14,12 @@
/objdir/fsck_superfs/fsck_superfs
/objdir/fsck_superfs/fsck_superfs.8
/objdir/fsck_superfs/fsck_superfs.c
-/objdir/fsck_superfs/fsck_superfs.cat8
/objdir/fsck_superfs/fsck_superfs.o
/objdir/hello_superfs.test.out.tmp
/objdir/mkfs_superfs/Makefile
/objdir/mkfs_superfs/mkfs_superfs
/objdir/mkfs_superfs/mkfs_superfs.8
/objdir/mkfs_superfs/mkfs_superfs.c
-/objdir/mkfs_superfs/mkfs_superfs.cat8
/objdir/mkfs_superfs/mkfs_superfs.o
/objdir/test.mk
========= install ==========
@@ -63,6 +61,30 @@
/objdir/mkfs_superfs/mkfs_superfs.8
/objdir/mkfs_superfs/mkfs_superfs.c
/objdir/test.mk
+========== depend ===========
+/objdir/Makefile
+/objdir/Makefile.inc
+/objdir/_mkc_compiler_type.err
+/objdir/_mkc_compiler_type.res
+/objdir/_mkc_prog_cc.err
+/objdir/_mkc_prog_cc.res
+/objdir/docs/LICENSE
+/objdir/docs/Makefile
+/objdir/docs/NEWS
+/objdir/docs/README
+/objdir/expect.out
+/objdir/fsck_superfs/.depend
+/objdir/fsck_superfs/Makefile
+/objdir/fsck_superfs/fsck_superfs.8
+/objdir/fsck_superfs/fsck_superfs.c
+/objdir/fsck_superfs/fsck_superfs.d
+/objdir/hello_superfs.test.out.tmp
+/objdir/mkfs_superfs/.depend
+/objdir/mkfs_superfs/Makefile
+/objdir/mkfs_superfs/mkfs_superfs.8
+/objdir/mkfs_superfs/mkfs_superfs.c
+/objdir/mkfs_superfs/mkfs_superfs.d
+/objdir/test.mk
======= distclean ==========
/objdir/Makefile
/objdir/Makefile.inc
diff --git a/examples/hello_superfs/test.mk b/examples/hello_superfs/test.mk
index 6ce8018..90f220d 100644
--- a/examples/hello_superfs/test.mk
+++ b/examples/hello_superfs/test.mk
@@ -1,21 +1,21 @@
.PHONY : test_output
test_output:
@set -e; \
- \
rm -rf ${.OBJDIR}${PREFIX}; \
+ MKCATPAGES=yes; export MKCATPAGES; \
\
echo =========== all ============; \
find ${.OBJDIR} -type f -o -type l | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ========= install ==========; \
- ${MAKE} ${MAKEFLAGS} install DESTDIR=${.OBJDIR} \
+ ${MAKE} ${MAKEFLAGS} install -j3 DESTDIR=${.OBJDIR} \
> /dev/null; \
find ${.OBJDIR}${PREFIX} -type f -o -type l -o -type d | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ======== uninstall =========; \
- ${MAKE} ${MAKEFLAGS} uninstall DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 uninstall DESTDIR=${.OBJDIR} > /dev/null; \
find ${.OBJDIR}${PREFIX} -type f -o -type l | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
@@ -24,6 +24,11 @@ test_output:
find ${.OBJDIR} -type f -o -type l | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
+ echo ========== depend ===========; \
+ ${MAKE} ${MAKEFLAGS} depend DESTDIR=${.OBJDIR} > /dev/null; \
+ find ${.OBJDIR} -type f -o -type l | \
+ mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
+ \
echo ======= distclean ==========; \
${MAKE} ${MAKEFLAGS} distclean DESTDIR=${.OBJDIR} > /dev/null; \
find ${.OBJDIR} -type f -o -type l | \
@@ -37,7 +42,7 @@ test_output:
\
echo ==== install MKINSTALL=no ====; \
MKINSTALL=no; export MKINSTALL; \
- ${MAKE} ${MAKEFLAGS} all installdirs install DESTDIR=${.OBJDIR} \
+ ${MAKE} ${MAKEFLAGS} all installdirs install -j3 DESTDIR=${.OBJDIR} \
> /dev/null; \
find ${.OBJDIR} -type f -o -type l | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
diff --git a/examples/hello_world/test.mk b/examples/hello_world/test.mk
index adc16fd..6676191 100644
--- a/examples/hello_world/test.mk
+++ b/examples/hello_world/test.mk
@@ -5,6 +5,7 @@ tartf_cleanup= sed -e 's,^[.]/,,' -e 's,/$$,,' -e '/^[.]*$$/ d'
.PHONY : test_output
test_output:
@set -e; LC_ALL=C; export LC_ALL; \
+ MKCATPAGES=yes; export MKCATPAGES; \
echo PROJECTNAME=${PROJECTNAME}; \
${.OBJDIR}/hello_world; \
rm -rf ${.OBJDIR}${PREFIX}; \
@@ -14,13 +15,13 @@ test_output:
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ========= install ==========; \
- ${MAKE} ${MAKEFLAGS} install DESTDIR=${.OBJDIR} \
+ ${MAKE} ${MAKEFLAGS} install -j3 DESTDIR=${.OBJDIR} \
> /dev/null; \
find ${.OBJDIR}${PREFIX} -type f -o -type d | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ======== uninstall =========; \
- ${MAKE} ${MAKEFLAGS} uninstall DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 uninstall DESTDIR=${.OBJDIR} > /dev/null; \
find ${.OBJDIR}${PREFIX} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
\
@@ -30,21 +31,24 @@ test_output:
mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
\
echo ======== bin_tar ===========; \
- ${MAKE} ${MAKEFLAGS} bin_tar > /dev/null; \
- ${TAR} -tf ${.CURDIR:T}.tar | sort | ${tartf_cleanup}; \
+ ${MAKE} ${MAKEFLAGS} PREFIX=/usr/local bin_tar > /dev/null; \
+ ${TAR} -tf ${.CURDIR:T}.tar | \
+ sort | ${tartf_cleanup}; \
\
echo ======== bin_targz ===========; \
- ${MAKE} ${MAKEFLAGS} bin_targz > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} PREFIX=/usr/local bin_targz > /dev/null; \
${GZIP} -dc ${.CURDIR:T}.tar.gz | \
- ${TAR} -tf - | sort | ${tartf_cleanup}; \
+ ${TAR} -tf - | \
+ sort | ${tartf_cleanup}; \
\
echo ======== bin_tarbz2 ===========; \
- ${MAKE} ${MAKEFLAGS} bin_tarbz2 > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} PREFIX=/usr/local bin_tarbz2 > /dev/null; \
${BZIP2} -dc ${.CURDIR:T}.tar.bz2 | \
- ${TAR} -tf - | sort | ${tartf_cleanup}; \
+ ${TAR} -tf - | \
+ sort | ${tartf_cleanup}; \
\
echo ======= filelist ===========; \
- ${MAKE} ${MAKEFLAGS} filelist; \
+ ${MAKE} ${MAKEFLAGS} PREFIX=/usr/local filelist; \
\
echo ======= distclean ==========; \
${MAKE} ${MAKEFLAGS} distclean DESTDIR=${.OBJDIR} > /dev/null; \
diff --git a/examples/hello_xxzip/expect.out b/examples/hello_xxzip/expect.out
index 61cec79..cb5f8cb 100644
--- a/examples/hello_xxzip/expect.out
+++ b/examples/hello_xxzip/expect.out
@@ -16,9 +16,14 @@
/objdir/xxzip
/objdir/xxzip.1
/objdir/xxzip.c
-/objdir/xxzip.cat1
/objdir/xxzip.o
/objdir/xxzip.pod
+===== all SHRTOUT=yes ======
+CC: xxzip.c
+LD: xxzip
+POD2MAN: xxzip.1
+NROFF: xxzip.cat1
+POD2HTML: tutorial.html
========= install ==========
/objdir/prefix
/objdir/prefix/bin
diff --git a/examples/hello_xxzip/test.mk b/examples/hello_xxzip/test.mk
index 1077edd..6b3fda0 100644
--- a/examples/hello_xxzip/test.mk
+++ b/examples/hello_xxzip/test.mk
@@ -1,20 +1,27 @@
.PHONY : test_output
test_output:
@set -e; \
+ MKCATPAGES=yes; export MKCATPAGES; \
+ \
rm -rf ${.OBJDIR}${PREFIX}; \
\
echo =========== all ============; \
find ${.OBJDIR} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
+ echo ===== all SHRTOUT=yes ======; \
+ ${MAKE} ${MAKEFLAGS} clean > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} all SHRTOUT=yes 2>&1 | \
+ mkc_test_helper2; \
+ \
echo ========= install ==========; \
- ${MAKE} ${MAKEFLAGS} install DESTDIR=${.OBJDIR} \
+ ${MAKE} ${MAKEFLAGS} install -j3 DESTDIR=${.OBJDIR} \
> /dev/null; \
find ${.OBJDIR}${PREFIX} -type f -o -type d | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ======== uninstall =========; \
- ${MAKE} ${MAKEFLAGS} uninstall DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 uninstall DESTDIR=${.OBJDIR} > /dev/null; \
find ${.OBJDIR}${PREFIX} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
\
@@ -24,7 +31,7 @@ test_output:
mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
\
echo ======== filelist ==========; \
- ${MAKE} ${MAKEFLAGS} filelist; \
+ ${MAKE} ${MAKEFLAGS} filelist PREFIX=/usr/local; \
\
echo ======= distclean ==========; \
${MAKE} ${MAKEFLAGS} distclean DESTDIR=${.OBJDIR} > /dev/null; \
diff --git a/examples/hello_yacc/Makefile b/examples/hello_yacc/Makefile
index b9713c3..cfb88da 100644
--- a/examples/hello_yacc/Makefile
+++ b/examples/hello_yacc/Makefile
@@ -1,6 +1,7 @@
-PROG = hello_calc
+PROG = hello_calc
+SRCS = calc.y
-SRCS = calc.y
+DPSRCS = calc.c
.include "test.mk"
.include <mkc.prog.mk>
diff --git a/examples/hello_yacc/expect.out b/examples/hello_yacc/expect.out
index 6f46ee5..b80f1ca 100644
--- a/examples/hello_yacc/expect.out
+++ b/examples/hello_yacc/expect.out
@@ -36,6 +36,22 @@
/objdir/hello_yacc.test.out.tmp
/objdir/input.txt
/objdir/test.mk
+========== depend ===========
+/objdir/.depend
+/objdir/Makefile
+/objdir/_mkc_compiler_type.err
+/objdir/_mkc_compiler_type.res
+/objdir/_mkc_prog_cc.err
+/objdir/_mkc_prog_cc.res
+/objdir/_mkc_prog_yacc.err
+/objdir/_mkc_prog_yacc.res
+/objdir/calc.c
+/objdir/calc.d
+/objdir/calc.y
+/objdir/expect.out
+/objdir/hello_yacc.test.out.tmp
+/objdir/input.txt
+/objdir/test.mk
==== SHRTOUT=yes ====
YACC: calc.y
CC: calc.c
diff --git a/examples/hello_yacc/test.mk b/examples/hello_yacc/test.mk
index 7617a5f..71840f8 100644
--- a/examples/hello_yacc/test.mk
+++ b/examples/hello_yacc/test.mk
@@ -1,6 +1,8 @@
.PHONY : test_output
test_output:
@set -e; \
+ MKCATPAGES=yes; export MKCATPAGES; \
+ \
${.OBJDIR}/hello_calc < ${.CURDIR}/input.txt; \
rm -rf ${.OBJDIR}${PREFIX}; \
\
@@ -9,18 +11,23 @@ test_output:
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ========= install ==========; \
- ${MAKE} ${MAKEFLAGS} install DESTDIR=${.OBJDIR} \
+ ${MAKE} ${MAKEFLAGS} install -j3 DESTDIR=${.OBJDIR} \
> /dev/null; \
find ${.OBJDIR}${PREFIX} -type f -o -type d | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ======== uninstall =========; \
- ${MAKE} ${MAKEFLAGS} uninstall DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 uninstall DESTDIR=${.OBJDIR} > /dev/null; \
find ${.OBJDIR}${PREFIX} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
\
echo ========== clean ===========; \
- ${MAKE} ${MAKEFLAGS} clean DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} clean > /dev/null; \
+ find ${.OBJDIR} -type f | \
+ mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
+ \
+ echo ========== depend ===========; \
+ ${MAKE} ${MAKEFLAGS} depend > /dev/null; \
find ${.OBJDIR} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
\
@@ -30,7 +37,7 @@ test_output:
all 2>/dev/null | mkc_test_helper2; \
\
echo ======= distclean ==========; \
- ${MAKE} ${MAKEFLAGS} distclean DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} distclean > /dev/null; \
find ${.OBJDIR} -type f | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"
diff --git a/examples/subprojects/expect.out b/examples/subprojects/expect.out
index 9331b5c..d26c974 100644
--- a/examples/subprojects/expect.out
+++ b/examples/subprojects/expect.out
@@ -19,7 +19,6 @@ My email is vle@gmx.net
/objdir/hello/hello_subprojects.1
/objdir/hello/hello_subprojects.1.in
/objdir/hello/hello_subprojects.c
-/objdir/hello/hello_subprojects.cat1
/objdir/hello/hello_subprojects.o
/objdir/hello/hello_subprojects2
/objdir/hello/hello_subprojects2.in
@@ -37,7 +36,6 @@ My email is vle@gmx.net
/objdir/libhello2/Makefile
/objdir/libhello2/hello2.3
/objdir/libhello2/hello2.c
-/objdir/libhello2/hello2.cat3
/objdir/libhello2/hello2.o
/objdir/libhello2/include/hello2.h
/objdir/libhello2/libhello2.a
@@ -165,20 +163,17 @@ GEN: hello_subprojects2
/objdir/test.mk
/objdir/version.mk
========= libhello1 ==========
-/objdir
/objdir/Makefile
/objdir/_mkc_compiler_type.err
/objdir/_mkc_compiler_type.res
/objdir/_mkc_prog_cc.err
/objdir/_mkc_prog_cc.res
/objdir/expect.out
-/objdir/hello
/objdir/hello/Makefile
/objdir/hello/hello_subprojects.1.in
/objdir/hello/hello_subprojects.c
/objdir/hello/hello_subprojects2.in
/objdir/hello/test.mk
-/objdir/libhello1
/objdir/libhello1/Makefile
/objdir/libhello1/hello1.c
/objdir/libhello1/hello1.h
@@ -189,31 +184,26 @@ GEN: hello_subprojects2
/objdir/libhello1/libhello1.so.1
/objdir/libhello1/libhello1.so.1.0
/objdir/libhello1/linkme.mk
-/objdir/libhello2
/objdir/libhello2/Makefile
/objdir/libhello2/hello2.3
/objdir/libhello2/hello2.c
-/objdir/libhello2/include
/objdir/libhello2/include/hello2.h
/objdir/libhello2/linkme.mk
/objdir/subprojects.test.out.tmp
/objdir/test.mk
/objdir/version.mk
========= all-libhello2 ==========
-/objdir
/objdir/Makefile
/objdir/_mkc_compiler_type.err
/objdir/_mkc_compiler_type.res
/objdir/_mkc_prog_cc.err
/objdir/_mkc_prog_cc.res
/objdir/expect.out
-/objdir/hello
/objdir/hello/Makefile
/objdir/hello/hello_subprojects.1.in
/objdir/hello/hello_subprojects.c
/objdir/hello/hello_subprojects2.in
/objdir/hello/test.mk
-/objdir/libhello1
/objdir/libhello1/Makefile
/objdir/libhello1/hello1.c
/objdir/libhello1/hello1.h
@@ -224,13 +214,11 @@ GEN: hello_subprojects2
/objdir/libhello1/libhello1.so.1
/objdir/libhello1/libhello1.so.1.0
/objdir/libhello1/linkme.mk
-/objdir/libhello2
/objdir/libhello2/Makefile
/objdir/libhello2/hello2.3
/objdir/libhello2/hello2.c
/objdir/libhello2/hello2.cat3
/objdir/libhello2/hello2.o
-/objdir/libhello2/include
/objdir/libhello2/include/hello2.h
/objdir/libhello2/libhello2.a
/objdir/libhello2/linkme.mk
@@ -238,27 +226,22 @@ GEN: hello_subprojects2
/objdir/test.mk
/objdir/version.mk
========= cleandir-libhello1 ==========
-/objdir
/objdir/Makefile
/objdir/expect.out
-/objdir/hello
/objdir/hello/Makefile
/objdir/hello/hello_subprojects.1.in
/objdir/hello/hello_subprojects.c
/objdir/hello/hello_subprojects2.in
/objdir/hello/test.mk
-/objdir/libhello1
/objdir/libhello1/Makefile
/objdir/libhello1/hello1.c
/objdir/libhello1/hello1.h
/objdir/libhello1/linkme.mk
-/objdir/libhello2
/objdir/libhello2/Makefile
/objdir/libhello2/hello2.3
/objdir/libhello2/hello2.c
/objdir/libhello2/hello2.cat3
/objdir/libhello2/hello2.o
-/objdir/libhello2/include
/objdir/libhello2/include/hello2.h
/objdir/libhello2/libhello2.a
/objdir/libhello2/linkme.mk
diff --git a/examples/subprojects/hello/hello_subprojects.1.in b/examples/subprojects/hello/hello_subprojects.1.in
index 1a4710f..a4fea6d 100644
--- a/examples/subprojects/hello/hello_subprojects.1.in
+++ b/examples/subprojects/hello/hello_subprojects.1.in
@@ -9,7 +9,6 @@ hello\_world \- hello application
.SH DESCRIPTION
.B hello\_world
outputs hello world message to stdout
-
.SH "CONFIGURATION FILE"
.TP
The configuration file should be here
diff --git a/examples/subprojects/test.mk b/examples/subprojects/test.mk
index 1869272..d3b88cc 100644
--- a/examples/subprojects/test.mk
+++ b/examples/subprojects/test.mk
@@ -1,6 +1,8 @@
.PHONY : test_output
test_output :
@set -e; \
+ MKCATPAGES=yes; export MKCATPAGES; \
+ \
echo PROJECTNAME=${PROJECTNAME}; \
rm -rf ${.OBJDIR}${PREFIX}; \
LD_LIBRARY_PATH=${.CURDIR}/libhello1:${.CURDIR}/libhello2:$$LD_LIBRARY_PATH; \
@@ -27,13 +29,13 @@ test_output :
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ========= install ==========; \
- ${MAKE} ${MAKEFLAGS} install DESTDIR=${.OBJDIR} \
+ ${MAKE} ${MAKEFLAGS} install -j3 DESTDIR=${.OBJDIR} \
> /dev/null; \
find ${.OBJDIR}${PREFIX} -type f -o -type l -o -type d | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ======== uninstall =========; \
- ${MAKE} ${MAKEFLAGS} uninstall DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 uninstall DESTDIR=${.OBJDIR} > /dev/null; \
find ${.OBJDIR}${PREFIX} -type f -o -type l | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
\
@@ -55,24 +57,24 @@ test_output :
\
echo ========= libhello1 ==========; \
${MAKE} ${MAKEFLAGS} libhello1 DESTDIR=${.OBJDIR} > /dev/null; \
- find ${.OBJDIR} -type f -o -type l -o -type d | \
+ find ${.OBJDIR} -type f -o -type l | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ========= all-libhello2 ==========; \
- ${MAKE} ${MAKEFLAGS} all-libhello2 DESTDIR=${.OBJDIR} > /dev/null; \
- find ${.OBJDIR} -type f -o -type l -o -type d | \
+ ${MAKE} ${MAKEFLAGS} -j4 all-libhello2 DESTDIR=${.OBJDIR} > /dev/null; \
+ find ${.OBJDIR} -type f -o -type l | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ========= cleandir-libhello1 ==========; \
${MAKE} ${MAKEFLAGS} cleandir-libhello1 DESTDIR=${.OBJDIR} > /dev/null; \
- find ${.OBJDIR} -type f -o -type l -o -type d | \
+ find ${.OBJDIR} -type f -o -type l | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
${MAKE} ${MAKEFLAGS} distclean DESTDIR=${.OBJDIR} > /dev/null; \
\
echo ======= library dependencies =======; \
PREFIX=${.CURDIR}/usr; export PREFIX; \
- ${MAKE} ${MAKEFLAGS} all installdirs install >&2; \
+ ${MAKE} ${MAKEFLAGS} all installdirs install -j3 >&2; \
LD_LIBRARY_PATH=${.CURDIR}/usr/lib; \
DYLD_LIBRARY_PATH=${.CURDIR}/usr/lib; \
export LD_LIBRARY_PATH DYLD_LIBRARY_PATH; \
diff --git a/examples/tools/Makefile b/examples/tools/Makefile
index 64f67a1..5077390 100644
--- a/examples/tools/Makefile
+++ b/examples/tools/Makefile
@@ -1,6 +1,16 @@
SUBPRJ = libs/foo:tools/prog1
SUBPRJ += libs/bar:tools/prog2
SUBPRJ += libs/foo:tools/prog3 libs/bar:tools/prog3
+SUBPRJ += libs/qux:tools/prog4
+
+# target "check" is used for testing because "test" is used by mk-configure
+TARGETS = check
+
+NODEPS += check-libs/*:check check-libs/*:check-tools/*
+
+# for regression test only
+_THISDIR_ =
+.export _THISDIR_
.include "test.mk"
.include <mkc.subprj.mk>
diff --git a/examples/tools/expect.out b/examples/tools/expect.out
index 84bf5b2..deaa7e3 100644
--- a/examples/tools/expect.out
+++ b/examples/tools/expect.out
@@ -3,19 +3,36 @@ This is a message #1
Message #2
This is a message #3
Message #3
+int_size=n
OBJDIR_tools_prog1=/path/to/prog1
OBJDIR_tools_prog2=/path/to/prog2
OBJDIR_tools_prog3=/path/to/prog3
+OBJDIR_tools_prog4=/path/to/prog4
OBJDIR_libs_foo=/path/to/foo
OBJDIR_libs_bar=/path/to/bar
OBJDIR_prog3=/path/to/prog3
OBJDIR_bar=/path/to/bar
+=========== check ============
+==================================================
+check ===> tools/prog1
+==================================================
+check ===> tools/prog2
+==================================================
+check ===> tools/prog3
+==================================================
+check ===> tools/prog4
+=========== check-tools/prog1 ============
+==================================================
+check ===> tools/prog1
=========== all ============
/objdir/Makefile
/objdir/_mkc_compiler_type.err
/objdir/_mkc_compiler_type.res
/objdir/_mkc_prog_cc.err
/objdir/_mkc_prog_cc.res
+/objdir/_mkc_sizeof_int.c
+/objdir/_mkc_sizeof_int.err
+/objdir/_mkc_sizeof_int.res
/objdir/expect.out
/objdir/libs/bar/Makefile
/objdir/libs/bar/bar.c
@@ -29,6 +46,13 @@ OBJDIR_bar=/path/to/bar
/objdir/libs/foo/foo.o
/objdir/libs/foo/libfoo.a
/objdir/libs/foo/linkme.mk
+/objdir/libs/qux/Makefile
+/objdir/libs/qux/libqux.a
+/objdir/libs/qux/linkme.mk
+/objdir/libs/qux/qux.c
+/objdir/libs/qux/qux.h
+/objdir/libs/qux/qux.h.in
+/objdir/libs/qux/qux.o
/objdir/test.mk
/objdir/tools.test.out.tmp
/objdir/tools/prog1/Makefile
@@ -43,27 +67,40 @@ OBJDIR_bar=/path/to/bar
/objdir/tools/prog3/prog3
/objdir/tools/prog3/prog3.c
/objdir/tools/prog3/prog3.o
+/objdir/tools/prog4/Makefile
+/objdir/tools/prog4/prog4
+/objdir/tools/prog4/prog4.c
+/objdir/tools/prog4/prog4.o
===== all SHRTOUT=yes ======
==================================================
-all ===> tools/libs/bar
+all ===> libs/bar
CC: bar.c
AR: libbar.a
==================================================
-all ===> tools/libs/foo
+all ===> libs/foo
CC: foo.c
AR: libfoo.a
==================================================
-all ===> tools/tools/prog1
+all ===> libs/qux
+GEN: qux.h
+CC: qux.c
+AR: libqux.a
+==================================================
+all ===> tools/prog1
CC: prog1.c
LD: prog1
==================================================
-all ===> tools/tools/prog2
+all ===> tools/prog2
CC: prog2.c
LD: prog2
==================================================
-all ===> tools/tools/prog3
+all ===> tools/prog3
CC: prog3.c
LD: prog3
+==================================================
+all ===> tools/prog4
+CC: prog4.c
+LD: prog4
========= installdirs ==========
/objdir/prefix
/objdir/prefix/bin
@@ -75,12 +112,15 @@ LD: prog3
/objdir/prefix/bin/prog1
/objdir/prefix/bin/prog2
/objdir/prefix/bin/prog3
+/objdir/prefix/bin/prog4
/objdir/prefix/include
/objdir/prefix/include/bar.h
/objdir/prefix/include/foo.h
+/objdir/prefix/include/qux.h
/objdir/prefix/lib
/objdir/prefix/lib/libbar.a
/objdir/prefix/lib/libfoo.a
+/objdir/prefix/lib/libqux.a
======== uninstall =========
========== clean ===========
/objdir/Makefile
@@ -88,6 +128,9 @@ LD: prog3
/objdir/_mkc_compiler_type.res
/objdir/_mkc_prog_cc.err
/objdir/_mkc_prog_cc.res
+/objdir/_mkc_sizeof_int.c
+/objdir/_mkc_sizeof_int.err
+/objdir/_mkc_sizeof_int.res
/objdir/expect.out
/objdir/libs/bar/Makefile
/objdir/libs/bar/bar.c
@@ -97,6 +140,10 @@ LD: prog3
/objdir/libs/foo/foo.c
/objdir/libs/foo/foo.h
/objdir/libs/foo/linkme.mk
+/objdir/libs/qux/Makefile
+/objdir/libs/qux/linkme.mk
+/objdir/libs/qux/qux.c
+/objdir/libs/qux/qux.h.in
/objdir/test.mk
/objdir/tools.test.out.tmp
/objdir/tools/prog1/Makefile
@@ -105,6 +152,8 @@ LD: prog3
/objdir/tools/prog2/prog2.c
/objdir/tools/prog3/Makefile
/objdir/tools/prog3/prog3.c
+/objdir/tools/prog4/Makefile
+/objdir/tools/prog4/prog4.c
======= cleandir ==========
/objdir/Makefile
/objdir/expect.out
@@ -116,6 +165,10 @@ LD: prog3
/objdir/libs/foo/foo.c
/objdir/libs/foo/foo.h
/objdir/libs/foo/linkme.mk
+/objdir/libs/qux/Makefile
+/objdir/libs/qux/linkme.mk
+/objdir/libs/qux/qux.c
+/objdir/libs/qux/qux.h.in
/objdir/test.mk
/objdir/tools.test.out.tmp
/objdir/tools/prog1/Makefile
@@ -124,6 +177,8 @@ LD: prog3
/objdir/tools/prog2/prog2.c
/objdir/tools/prog3/Makefile
/objdir/tools/prog3/prog3.c
+/objdir/tools/prog4/Makefile
+/objdir/tools/prog4/prog4.c
========= all-tools/prog1 ==========
/objdir/Makefile
/objdir/_mkc_compiler_type.err
@@ -141,6 +196,43 @@ LD: prog3
/objdir/libs/foo/foo.o
/objdir/libs/foo/libfoo.a
/objdir/libs/foo/linkme.mk
+/objdir/libs/qux/Makefile
+/objdir/libs/qux/linkme.mk
+/objdir/libs/qux/qux.c
+/objdir/libs/qux/qux.h.in
+/objdir/test.mk
+/objdir/tools.test.out.tmp
+/objdir/tools/prog1/Makefile
+/objdir/tools/prog1/prog1
+/objdir/tools/prog1/prog1.c
+/objdir/tools/prog1/prog1.o
+/objdir/tools/prog2/Makefile
+/objdir/tools/prog2/prog2.c
+/objdir/tools/prog3/Makefile
+/objdir/tools/prog3/prog3.c
+/objdir/tools/prog4/Makefile
+/objdir/tools/prog4/prog4.c
+========= -C tools/prog1 all ==========
+/objdir/Makefile
+/objdir/_mkc_compiler_type.err
+/objdir/_mkc_compiler_type.res
+/objdir/_mkc_prog_cc.err
+/objdir/_mkc_prog_cc.res
+/objdir/expect.out
+/objdir/libs/bar/Makefile
+/objdir/libs/bar/bar.c
+/objdir/libs/bar/bar.h
+/objdir/libs/bar/linkme.mk
+/objdir/libs/foo/Makefile
+/objdir/libs/foo/foo.c
+/objdir/libs/foo/foo.h
+/objdir/libs/foo/foo.o
+/objdir/libs/foo/libfoo.a
+/objdir/libs/foo/linkme.mk
+/objdir/libs/qux/Makefile
+/objdir/libs/qux/linkme.mk
+/objdir/libs/qux/qux.c
+/objdir/libs/qux/qux.h.in
/objdir/test.mk
/objdir/tools.test.out.tmp
/objdir/tools/prog1/Makefile
@@ -151,6 +243,41 @@ LD: prog3
/objdir/tools/prog2/prog2.c
/objdir/tools/prog3/Makefile
/objdir/tools/prog3/prog3.c
+/objdir/tools/prog4/Makefile
+/objdir/tools/prog4/prog4.c
+========= all-prog1 ==========
+/objdir/Makefile
+/objdir/_mkc_compiler_type.err
+/objdir/_mkc_compiler_type.res
+/objdir/_mkc_prog_cc.err
+/objdir/_mkc_prog_cc.res
+/objdir/expect.out
+/objdir/libs/bar/Makefile
+/objdir/libs/bar/bar.c
+/objdir/libs/bar/bar.h
+/objdir/libs/bar/linkme.mk
+/objdir/libs/foo/Makefile
+/objdir/libs/foo/foo.c
+/objdir/libs/foo/foo.h
+/objdir/libs/foo/foo.o
+/objdir/libs/foo/libfoo.a
+/objdir/libs/foo/linkme.mk
+/objdir/libs/qux/Makefile
+/objdir/libs/qux/linkme.mk
+/objdir/libs/qux/qux.c
+/objdir/libs/qux/qux.h.in
+/objdir/test.mk
+/objdir/tools.test.out.tmp
+/objdir/tools/prog1/Makefile
+/objdir/tools/prog1/prog1
+/objdir/tools/prog1/prog1.c
+/objdir/tools/prog1/prog1.o
+/objdir/tools/prog2/Makefile
+/objdir/tools/prog2/prog2.c
+/objdir/tools/prog3/Makefile
+/objdir/tools/prog3/prog3.c
+/objdir/tools/prog4/Makefile
+/objdir/tools/prog4/prog4.c
========= all-tools/prog2 ==========
/objdir/Makefile
/objdir/_mkc_compiler_type.err
@@ -168,6 +295,10 @@ LD: prog3
/objdir/libs/foo/foo.c
/objdir/libs/foo/foo.h
/objdir/libs/foo/linkme.mk
+/objdir/libs/qux/Makefile
+/objdir/libs/qux/linkme.mk
+/objdir/libs/qux/qux.c
+/objdir/libs/qux/qux.h.in
/objdir/test.mk
/objdir/tools.test.out.tmp
/objdir/tools/prog1/Makefile
@@ -178,6 +309,41 @@ LD: prog3
/objdir/tools/prog2/prog2.o
/objdir/tools/prog3/Makefile
/objdir/tools/prog3/prog3.c
+/objdir/tools/prog4/Makefile
+/objdir/tools/prog4/prog4.c
+========= -C tools/prog2 all ==========
+/objdir/Makefile
+/objdir/_mkc_compiler_type.err
+/objdir/_mkc_compiler_type.res
+/objdir/_mkc_prog_cc.err
+/objdir/_mkc_prog_cc.res
+/objdir/expect.out
+/objdir/libs/bar/Makefile
+/objdir/libs/bar/bar.c
+/objdir/libs/bar/bar.h
+/objdir/libs/bar/bar.o
+/objdir/libs/bar/libbar.a
+/objdir/libs/bar/linkme.mk
+/objdir/libs/foo/Makefile
+/objdir/libs/foo/foo.c
+/objdir/libs/foo/foo.h
+/objdir/libs/foo/linkme.mk
+/objdir/libs/qux/Makefile
+/objdir/libs/qux/linkme.mk
+/objdir/libs/qux/qux.c
+/objdir/libs/qux/qux.h.in
+/objdir/test.mk
+/objdir/tools.test.out.tmp
+/objdir/tools/prog1/Makefile
+/objdir/tools/prog1/prog1.c
+/objdir/tools/prog2/Makefile
+/objdir/tools/prog2/prog2
+/objdir/tools/prog2/prog2.c
+/objdir/tools/prog2/prog2.o
+/objdir/tools/prog3/Makefile
+/objdir/tools/prog3/prog3.c
+/objdir/tools/prog4/Makefile
+/objdir/tools/prog4/prog4.c
========= all-tools/prog3 ==========
/objdir/Makefile
/objdir/_mkc_compiler_type.err
@@ -197,6 +363,10 @@ LD: prog3
/objdir/libs/foo/foo.o
/objdir/libs/foo/libfoo.a
/objdir/libs/foo/linkme.mk
+/objdir/libs/qux/Makefile
+/objdir/libs/qux/linkme.mk
+/objdir/libs/qux/qux.c
+/objdir/libs/qux/qux.h.in
/objdir/test.mk
/objdir/tools.test.out.tmp
/objdir/tools/prog1/Makefile
@@ -207,3 +377,42 @@ LD: prog3
/objdir/tools/prog3/prog3
/objdir/tools/prog3/prog3.c
/objdir/tools/prog3/prog3.o
+/objdir/tools/prog4/Makefile
+/objdir/tools/prog4/prog4.c
+========= -C tools/prog4 all ==========
+/objdir/Makefile
+/objdir/_mkc_compiler_type.err
+/objdir/_mkc_compiler_type.res
+/objdir/_mkc_prog_cc.err
+/objdir/_mkc_prog_cc.res
+/objdir/_mkc_sizeof_int.c
+/objdir/_mkc_sizeof_int.err
+/objdir/_mkc_sizeof_int.res
+/objdir/expect.out
+/objdir/libs/bar/Makefile
+/objdir/libs/bar/bar.c
+/objdir/libs/bar/bar.h
+/objdir/libs/bar/linkme.mk
+/objdir/libs/foo/Makefile
+/objdir/libs/foo/foo.c
+/objdir/libs/foo/foo.h
+/objdir/libs/foo/linkme.mk
+/objdir/libs/qux/Makefile
+/objdir/libs/qux/libqux.a
+/objdir/libs/qux/linkme.mk
+/objdir/libs/qux/qux.c
+/objdir/libs/qux/qux.h
+/objdir/libs/qux/qux.h.in
+/objdir/libs/qux/qux.o
+/objdir/test.mk
+/objdir/tools.test.out.tmp
+/objdir/tools/prog1/Makefile
+/objdir/tools/prog1/prog1.c
+/objdir/tools/prog2/Makefile
+/objdir/tools/prog2/prog2.c
+/objdir/tools/prog3/Makefile
+/objdir/tools/prog3/prog3.c
+/objdir/tools/prog4/Makefile
+/objdir/tools/prog4/prog4
+/objdir/tools/prog4/prog4.c
+/objdir/tools/prog4/prog4.o
diff --git a/examples/tools/libs/qux/Makefile b/examples/tools/libs/qux/Makefile
new file mode 100644
index 0000000..345f614
--- /dev/null
+++ b/examples/tools/libs/qux/Makefile
@@ -0,0 +1,16 @@
+LIB = qux
+SRCS = qux.c
+INCS = qux.h
+
+MKC_CHECK_SIZEOF = int
+
+.include <mkc.configure.mk>
+
+INFILES = ${INCS}
+INTEXTS_REPLS = int_size ${SIZEOF.int:U4}
+
+qux.o: qux.h
+
+WARNS = 4
+
+.include <mkc.lib.mk>
diff --git a/examples/tools/libs/qux/linkme.mk b/examples/tools/libs/qux/linkme.mk
new file mode 100644
index 0000000..e81f93b
--- /dev/null
+++ b/examples/tools/libs/qux/linkme.mk
@@ -0,0 +1,5 @@
+PATH.qux := ${.PARSEDIR}
+
+CPPFLAGS += -I${PATH.qux}
+DPLIBDIRS += ${PATH.qux}
+LDADD += -lqux
diff --git a/examples/tools/libs/qux/qux.c b/examples/tools/libs/qux/qux.c
new file mode 100644
index 0000000..78786db
--- /dev/null
+++ b/examples/tools/libs/qux/qux.c
@@ -0,0 +1,6 @@
+#include "qux.h"
+
+int get_int_size (void)
+{
+ return INT_SIZE;
+}
diff --git a/examples/tools/libs/qux/qux.h.in b/examples/tools/libs/qux/qux.h.in
new file mode 100644
index 0000000..0a41ce1
--- /dev/null
+++ b/examples/tools/libs/qux/qux.h.in
@@ -0,0 +1,4 @@
+
+#define INT_SIZE @int_size@
+
+int get_int_size (void);
diff --git a/examples/tools/test.mk b/examples/tools/test.mk
index ec9cff5..b65b319 100644
--- a/examples/tools/test.mk
+++ b/examples/tools/test.mk
@@ -1,27 +1,39 @@
+next_level != expr ${.MAKE.LEVEL} + 1
+
.PHONY : test_output
test_output :
@set -e; \
+ MKCATPAGES=yes; export MKCATPAGES; \
+ SRCTOP=`pwd`; export SRCTOP; \
+ \
echo PROJECTNAME=${PROJECTNAME}; \
rm -rf ${.OBJDIR}${PREFIX}; \
${.CURDIR}/tools/prog1/prog1; \
${.CURDIR}/tools/prog2/prog2; \
${.CURDIR}/tools/prog3/prog3; \
+ ${.CURDIR}/tools/prog4/prog4 | sed 's/=[0-9]/=n/'; \
echo OBJDIR_tools_prog1=${OBJDIR_tools_prog1} | mkc_test_helper_paths; \
echo OBJDIR_tools_prog2=${OBJDIR_tools_prog2} | mkc_test_helper_paths; \
echo OBJDIR_tools_prog3=${OBJDIR_tools_prog3} | mkc_test_helper_paths; \
+ echo OBJDIR_tools_prog4=${OBJDIR_tools_prog4} | mkc_test_helper_paths; \
echo OBJDIR_libs_foo=${OBJDIR_libs_foo} | mkc_test_helper_paths; \
echo OBJDIR_libs_bar=${OBJDIR_libs_bar} | mkc_test_helper_paths; \
echo OBJDIR_prog3=${OBJDIR_prog3} | mkc_test_helper_paths; \
echo OBJDIR_bar=${OBJDIR_bar} | mkc_test_helper_paths; \
\
+ echo =========== check ============; \
+ ${MAKE} ${MAKEFLAGS} check 2>&1; \
+ \
+ echo =========== check-tools/prog1 ============; \
+ ${MAKE} ${MAKEFLAGS} check-tools/prog1 2>&1; \
+ \
echo =========== all ============; \
find ${.OBJDIR} -type f -o -type l | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ===== all SHRTOUT=yes ======; \
${MAKE} ${MAKEFLAGS} clean > /dev/null; \
- env SHRTOUT=YES \
- ${MAKE} ${MAKEFLAGS} all 2>&1; \
+ env SHRTOUT=YES ${MAKE} ${MAKEFLAGS} all 2>&1; \
\
echo ========= installdirs ==========; \
${MAKE} ${MAKEFLAGS} installdirs DESTDIR=${.OBJDIR} \
@@ -30,13 +42,13 @@ test_output :
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ========= install ==========; \
- ${MAKE} ${MAKEFLAGS} install DESTDIR=${.OBJDIR} \
+ ${MAKE} ${MAKEFLAGS} install -j3 DESTDIR=${.OBJDIR} \
> /dev/null; \
find ${.OBJDIR}${PREFIX} -type f -o -type l -o -type d | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ======== uninstall =========; \
- ${MAKE} ${MAKEFLAGS} uninstall DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 uninstall DESTDIR=${.OBJDIR} > /dev/null; \
find ${.OBJDIR}${PREFIX} -type f -o -type l | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
\
@@ -51,19 +63,49 @@ test_output :
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ========= all-tools/prog1 ==========; \
- ${MAKE} ${MAKEFLAGS} all-tools/prog1 DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 all-tools/prog1 DESTDIR=${.OBJDIR} > /dev/null; \
+ find ${.OBJDIR} -type f -o -type l | \
+ mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
+ \
+ echo ========= -C tools/prog1 all ==========; \
+ ${MAKE} ${MAKEFLAGS} -j4 clean-tools/prog1 DESTDIR=${.OBJDIR} > /dev/null; \
+ env init_make_level=${next_level} ${MAKE} ${MAKEFLAGS} -j4 \
+ -C `pwd`/tools/prog1 all DESTDIR=${.OBJDIR} > /dev/null; \
+ find ${.OBJDIR} -type f -o -type l | \
+ mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
+ \
+ echo ========= all-prog1 ==========; \
+ ${MAKE} ${MAKEFLAGS} cleandir DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 all-prog1 DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} nodeps-all-prog1 DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} subdir-all-prog1 DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} prog1 DESTDIR=${.OBJDIR} > /dev/null; \
find ${.OBJDIR} -type f -o -type l | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ========= all-tools/prog2 ==========; \
${MAKE} ${MAKEFLAGS} cleandir DESTDIR=${.OBJDIR} > /dev/null; \
- ${MAKE} ${MAKEFLAGS} all-tools/prog2 DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 all-tools/prog2 DESTDIR=${.OBJDIR} > /dev/null; \
+ find ${.OBJDIR} -type f -o -type l | \
+ mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
+ \
+ echo ========= -C tools/prog2 all ==========; \
+ ${MAKE} ${MAKEFLAGS} cleandir DESTDIR=${.OBJDIR} > /dev/null; \
+ env init_make_level=${next_level} ${MAKE} ${MAKEFLAGS} -j4 \
+ -C tools/prog2 all DESTDIR=${.OBJDIR} > /dev/null; \
find ${.OBJDIR} -type f -o -type l | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
echo ========= all-tools/prog3 ==========; \
${MAKE} ${MAKEFLAGS} cleandir DESTDIR=${.OBJDIR} > /dev/null; \
- ${MAKE} ${MAKEFLAGS} all-tools/prog3 DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 all-tools/prog3 DESTDIR=${.OBJDIR} > /dev/null; \
+ find ${.OBJDIR} -type f -o -type l | \
+ mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
+ \
+ echo ========= -C tools/prog4 all ==========; \
+ ${MAKE} ${MAKEFLAGS} cleandir DESTDIR=${.OBJDIR} > /dev/null; \
+ env init_make_level=${next_level} ${MAKE} ${MAKEFLAGS} \
+ -j4 all-tools/prog4 DESTDIR=${.OBJDIR} > /dev/null; \
find ${.OBJDIR} -type f -o -type l | \
mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
\
diff --git a/examples/tools/tools/prog1/Makefile b/examples/tools/tools/prog1/Makefile
index ce374a2..bca4588 100644
--- a/examples/tools/tools/prog1/Makefile
+++ b/examples/tools/tools/prog1/Makefile
@@ -5,5 +5,8 @@ WARNS = 4
MKC_REQD = 0.10.0
+check:
+ @: do something useful
+
.include "../../libs/foo/linkme.mk"
.include <mkc.prog.mk>
diff --git a/examples/tools/tools/prog2/Makefile b/examples/tools/tools/prog2/Makefile
index 365c990..63ab936 100644
--- a/examples/tools/tools/prog2/Makefile
+++ b/examples/tools/tools/prog2/Makefile
@@ -5,5 +5,8 @@ WARNS = 4
MKC_REQD = 0.10.0
+check:
+ @: do something useful
+
.include "../../libs/bar/linkme.mk"
.include <mkc.prog.mk>
diff --git a/examples/tools/tools/prog3/Makefile b/examples/tools/tools/prog3/Makefile
index 4927386..b361032 100644
--- a/examples/tools/tools/prog3/Makefile
+++ b/examples/tools/tools/prog3/Makefile
@@ -5,6 +5,9 @@ WARNS = 4
MKC_REQD = 0.10.0
+check:
+ @: do something useful
+
.include "../../libs/foo/linkme.mk"
.include "../../libs/bar/linkme.mk"
diff --git a/examples/tools/tools/prog4/Makefile b/examples/tools/tools/prog4/Makefile
new file mode 100644
index 0000000..307f490
--- /dev/null
+++ b/examples/tools/tools/prog4/Makefile
@@ -0,0 +1,11 @@
+PROG = prog4
+
+WARNS = 4
+
+MKC_REQD = 0.10.0
+
+check:
+ @: do something useful
+
+.include "../../libs/qux/linkme.mk"
+.include <mkc.prog.mk>
diff --git a/examples/tools/tools/prog4/prog4.c b/examples/tools/tools/prog4/prog4.c
new file mode 100644
index 0000000..3b4d087
--- /dev/null
+++ b/examples/tools/tools/prog4/prog4.c
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+#include "qux.h"
+
+int main (int argc, char** argv)
+{
+ printf ("int_size=%d\n", get_int_size ());
+ return 0;
+}
diff --git a/examples/tools2/Makefile b/examples/tools2/Makefile
new file mode 100644
index 0000000..c370807
--- /dev/null
+++ b/examples/tools2/Makefile
@@ -0,0 +1,25 @@
+SUBPRJ = libs/foo:tools/prog1
+SUBPRJ += libs/bar:tools/prog2
+SUBPRJ += libs/foo:tools/prog3 libs/bar:tools/prog3
+SUBPRJ += libs/qux:tools/prog4
+
+SUBPRJ += tools/prog1:tests/prog1
+SUBPRJ += tools/prog2:tests/prog2
+SUBPRJ += tools/prog3:tests/prog3
+SUBPRJ += tools/prog4:tests/prog4
+
+NODEPS += check-*/*:check-*/* \
+ all-tests/*:all \
+ check-libs/*:check check-tools/*:check
+
+# target "check" is used for testing because "test" is used by mk-configure
+TARGETS = check
+
+SHORTPRJNAME = no
+
+# for regression test only
+_THISDIR_ =
+.export _THISDIR_
+
+.include "test.mk"
+.include <mkc.subprj.mk>
diff --git a/examples/tools2/expect.out b/examples/tools2/expect.out
new file mode 100644
index 0000000..9d2783a
--- /dev/null
+++ b/examples/tools2/expect.out
@@ -0,0 +1,448 @@
+PROJECTNAME=tools2
+This is a message #1
+Message #2
+This is a message #3
+Message #3
+int_size=n
+OBJDIR_tools_prog1=/path/to/prog1
+OBJDIR_tools_prog2=/path/to/prog2
+OBJDIR_tools_prog3=/path/to/prog3
+OBJDIR_tools_prog4=/path/to/prog4
+OBJDIR_libs_foo=/path/to/foo
+OBJDIR_libs_bar=/path/to/bar
+OBJDIR_prog3=
+OBJDIR_bar=
+=========== check ============
+==================================================
+check ===> tests/prog1
+ok
+==================================================
+check ===> tests/prog2
+ok
+==================================================
+check ===> tests/prog3
+ok
+==================================================
+check ===> tests/prog4
+ok
+=========== check-tools/prog1 ============
+==================================================
+check ===> tools/prog1
+=========== all ============
+/objdir/Makefile
+/objdir/_mkc_compiler_type.err
+/objdir/_mkc_compiler_type.res
+/objdir/_mkc_prog_cc.err
+/objdir/_mkc_prog_cc.res
+/objdir/_mkc_sizeof_int.c
+/objdir/_mkc_sizeof_int.err
+/objdir/_mkc_sizeof_int.res
+/objdir/expect.out
+/objdir/libs/bar/Makefile
+/objdir/libs/bar/bar.c
+/objdir/libs/bar/bar.h
+/objdir/libs/bar/bar.o
+/objdir/libs/bar/libbar.a
+/objdir/libs/bar/linkme.mk
+/objdir/libs/foo/Makefile
+/objdir/libs/foo/foo.c
+/objdir/libs/foo/foo.h
+/objdir/libs/foo/foo.o
+/objdir/libs/foo/libfoo.a
+/objdir/libs/foo/linkme.mk
+/objdir/libs/qux/Makefile
+/objdir/libs/qux/libqux.a
+/objdir/libs/qux/linkme.mk
+/objdir/libs/qux/qux.c
+/objdir/libs/qux/qux.h
+/objdir/libs/qux/qux.h.in
+/objdir/libs/qux/qux.o
+/objdir/test.mk
+/objdir/tests/prog1/Makefile
+/objdir/tests/prog2/Makefile
+/objdir/tests/prog3/Makefile
+/objdir/tests/prog4/Makefile
+/objdir/tools/prog1/Makefile
+/objdir/tools/prog1/prog1
+/objdir/tools/prog1/prog1.c
+/objdir/tools/prog1/prog1.o
+/objdir/tools/prog2/Makefile
+/objdir/tools/prog2/prog2
+/objdir/tools/prog2/prog2.c
+/objdir/tools/prog2/prog2.o
+/objdir/tools/prog3/Makefile
+/objdir/tools/prog3/prog3
+/objdir/tools/prog3/prog3.c
+/objdir/tools/prog3/prog3.o
+/objdir/tools/prog4/Makefile
+/objdir/tools/prog4/prog4
+/objdir/tools/prog4/prog4.c
+/objdir/tools/prog4/prog4.o
+/objdir/tools2.test.out.tmp
+===== all SHRTOUT=yes ======
+==================================================
+all ===> libs/bar
+CC: bar.c
+AR: libbar.a
+==================================================
+all ===> libs/foo
+CC: foo.c
+AR: libfoo.a
+==================================================
+all ===> libs/qux
+GEN: qux.h
+CC: qux.c
+AR: libqux.a
+==================================================
+all ===> tools/prog1
+CC: prog1.c
+LD: prog1
+==================================================
+all ===> tools/prog2
+CC: prog2.c
+LD: prog2
+==================================================
+all ===> tools/prog3
+CC: prog3.c
+LD: prog3
+==================================================
+all ===> tools/prog4
+CC: prog4.c
+LD: prog4
+========= installdirs ==========
+/objdir/prefix
+/objdir/prefix/bin
+/objdir/prefix/include
+/objdir/prefix/lib
+========= install ==========
+/objdir/prefix
+/objdir/prefix/bin
+/objdir/prefix/bin/prog1
+/objdir/prefix/bin/prog2
+/objdir/prefix/bin/prog3
+/objdir/prefix/bin/prog4
+/objdir/prefix/include
+/objdir/prefix/include/bar.h
+/objdir/prefix/include/foo.h
+/objdir/prefix/include/qux.h
+/objdir/prefix/lib
+/objdir/prefix/lib/libbar.a
+/objdir/prefix/lib/libfoo.a
+/objdir/prefix/lib/libqux.a
+======== uninstall =========
+========== clean ===========
+/objdir/Makefile
+/objdir/_mkc_compiler_type.err
+/objdir/_mkc_compiler_type.res
+/objdir/_mkc_prog_cc.err
+/objdir/_mkc_prog_cc.res
+/objdir/_mkc_sizeof_int.c
+/objdir/_mkc_sizeof_int.err
+/objdir/_mkc_sizeof_int.res
+/objdir/expect.out
+/objdir/libs/bar/Makefile
+/objdir/libs/bar/bar.c
+/objdir/libs/bar/bar.h
+/objdir/libs/bar/linkme.mk
+/objdir/libs/foo/Makefile
+/objdir/libs/foo/foo.c
+/objdir/libs/foo/foo.h
+/objdir/libs/foo/linkme.mk
+/objdir/libs/qux/Makefile
+/objdir/libs/qux/linkme.mk
+/objdir/libs/qux/qux.c
+/objdir/libs/qux/qux.h.in
+/objdir/test.mk
+/objdir/tests/prog1/Makefile
+/objdir/tests/prog2/Makefile
+/objdir/tests/prog3/Makefile
+/objdir/tests/prog4/Makefile
+/objdir/tools/prog1/Makefile
+/objdir/tools/prog1/prog1.c
+/objdir/tools/prog2/Makefile
+/objdir/tools/prog2/prog2.c
+/objdir/tools/prog3/Makefile
+/objdir/tools/prog3/prog3.c
+/objdir/tools/prog4/Makefile
+/objdir/tools/prog4/prog4.c
+/objdir/tools2.test.out.tmp
+======= cleandir ==========
+/objdir/Makefile
+/objdir/expect.out
+/objdir/libs/bar/Makefile
+/objdir/libs/bar/bar.c
+/objdir/libs/bar/bar.h
+/objdir/libs/bar/linkme.mk
+/objdir/libs/foo/Makefile
+/objdir/libs/foo/foo.c
+/objdir/libs/foo/foo.h
+/objdir/libs/foo/linkme.mk
+/objdir/libs/qux/Makefile
+/objdir/libs/qux/linkme.mk
+/objdir/libs/qux/qux.c
+/objdir/libs/qux/qux.h.in
+/objdir/test.mk
+/objdir/tests/prog1/Makefile
+/objdir/tests/prog2/Makefile
+/objdir/tests/prog3/Makefile
+/objdir/tests/prog4/Makefile
+/objdir/tools/prog1/Makefile
+/objdir/tools/prog1/prog1.c
+/objdir/tools/prog2/Makefile
+/objdir/tools/prog2/prog2.c
+/objdir/tools/prog3/Makefile
+/objdir/tools/prog3/prog3.c
+/objdir/tools/prog4/Makefile
+/objdir/tools/prog4/prog4.c
+/objdir/tools2.test.out.tmp
+========= all-tools/prog1 ==========
+/objdir/Makefile
+/objdir/_mkc_compiler_type.err
+/objdir/_mkc_compiler_type.res
+/objdir/_mkc_prog_cc.err
+/objdir/_mkc_prog_cc.res
+/objdir/expect.out
+/objdir/libs/bar/Makefile
+/objdir/libs/bar/bar.c
+/objdir/libs/bar/bar.h
+/objdir/libs/bar/linkme.mk
+/objdir/libs/foo/Makefile
+/objdir/libs/foo/foo.c
+/objdir/libs/foo/foo.h
+/objdir/libs/foo/foo.o
+/objdir/libs/foo/libfoo.a
+/objdir/libs/foo/linkme.mk
+/objdir/libs/qux/Makefile
+/objdir/libs/qux/linkme.mk
+/objdir/libs/qux/qux.c
+/objdir/libs/qux/qux.h.in
+/objdir/test.mk
+/objdir/tests/prog1/Makefile
+/objdir/tests/prog2/Makefile
+/objdir/tests/prog3/Makefile
+/objdir/tests/prog4/Makefile
+/objdir/tools/prog1/Makefile
+/objdir/tools/prog1/prog1
+/objdir/tools/prog1/prog1.c
+/objdir/tools/prog1/prog1.o
+/objdir/tools/prog2/Makefile
+/objdir/tools/prog2/prog2.c
+/objdir/tools/prog3/Makefile
+/objdir/tools/prog3/prog3.c
+/objdir/tools/prog4/Makefile
+/objdir/tools/prog4/prog4.c
+/objdir/tools2.test.out.tmp
+========= -C tools/prog1 all ==========
+/objdir/Makefile
+/objdir/_mkc_compiler_type.err
+/objdir/_mkc_compiler_type.res
+/objdir/_mkc_prog_cc.err
+/objdir/_mkc_prog_cc.res
+/objdir/expect.out
+/objdir/libs/bar/Makefile
+/objdir/libs/bar/bar.c
+/objdir/libs/bar/bar.h
+/objdir/libs/bar/linkme.mk
+/objdir/libs/foo/Makefile
+/objdir/libs/foo/foo.c
+/objdir/libs/foo/foo.h
+/objdir/libs/foo/foo.o
+/objdir/libs/foo/libfoo.a
+/objdir/libs/foo/linkme.mk
+/objdir/libs/qux/Makefile
+/objdir/libs/qux/linkme.mk
+/objdir/libs/qux/qux.c
+/objdir/libs/qux/qux.h.in
+/objdir/test.mk
+/objdir/tests/prog1/Makefile
+/objdir/tests/prog2/Makefile
+/objdir/tests/prog3/Makefile
+/objdir/tests/prog4/Makefile
+/objdir/tools/prog1/Makefile
+/objdir/tools/prog1/prog1
+/objdir/tools/prog1/prog1.c
+/objdir/tools/prog1/prog1.o
+/objdir/tools/prog2/Makefile
+/objdir/tools/prog2/prog2.c
+/objdir/tools/prog3/Makefile
+/objdir/tools/prog3/prog3.c
+/objdir/tools/prog4/Makefile
+/objdir/tools/prog4/prog4.c
+/objdir/tools2.test.out.tmp
+========= all-tools/prog2 ==========
+/objdir/Makefile
+/objdir/_mkc_compiler_type.err
+/objdir/_mkc_compiler_type.res
+/objdir/_mkc_prog_cc.err
+/objdir/_mkc_prog_cc.res
+/objdir/expect.out
+/objdir/libs/bar/Makefile
+/objdir/libs/bar/bar.c
+/objdir/libs/bar/bar.h
+/objdir/libs/bar/bar.o
+/objdir/libs/bar/libbar.a
+/objdir/libs/bar/linkme.mk
+/objdir/libs/foo/Makefile
+/objdir/libs/foo/foo.c
+/objdir/libs/foo/foo.h
+/objdir/libs/foo/linkme.mk
+/objdir/libs/qux/Makefile
+/objdir/libs/qux/linkme.mk
+/objdir/libs/qux/qux.c
+/objdir/libs/qux/qux.h.in
+/objdir/test.mk
+/objdir/tests/prog1/Makefile
+/objdir/tests/prog2/Makefile
+/objdir/tests/prog3/Makefile
+/objdir/tests/prog4/Makefile
+/objdir/tools/prog1/Makefile
+/objdir/tools/prog1/prog1.c
+/objdir/tools/prog2/Makefile
+/objdir/tools/prog2/prog2
+/objdir/tools/prog2/prog2.c
+/objdir/tools/prog2/prog2.o
+/objdir/tools/prog3/Makefile
+/objdir/tools/prog3/prog3.c
+/objdir/tools/prog4/Makefile
+/objdir/tools/prog4/prog4.c
+/objdir/tools2.test.out.tmp
+========= -C tools/prog2 all ==========
+/objdir/Makefile
+/objdir/_mkc_compiler_type.err
+/objdir/_mkc_compiler_type.res
+/objdir/_mkc_prog_cc.err
+/objdir/_mkc_prog_cc.res
+/objdir/expect.out
+/objdir/libs/bar/Makefile
+/objdir/libs/bar/bar.c
+/objdir/libs/bar/bar.h
+/objdir/libs/bar/bar.o
+/objdir/libs/bar/libbar.a
+/objdir/libs/bar/linkme.mk
+/objdir/libs/foo/Makefile
+/objdir/libs/foo/foo.c
+/objdir/libs/foo/foo.h
+/objdir/libs/foo/linkme.mk
+/objdir/libs/qux/Makefile
+/objdir/libs/qux/linkme.mk
+/objdir/libs/qux/qux.c
+/objdir/libs/qux/qux.h.in
+/objdir/test.mk
+/objdir/tests/prog1/Makefile
+/objdir/tests/prog2/Makefile
+/objdir/tests/prog3/Makefile
+/objdir/tests/prog4/Makefile
+/objdir/tools/prog1/Makefile
+/objdir/tools/prog1/prog1.c
+/objdir/tools/prog2/Makefile
+/objdir/tools/prog2/prog2
+/objdir/tools/prog2/prog2.c
+/objdir/tools/prog2/prog2.o
+/objdir/tools/prog3/Makefile
+/objdir/tools/prog3/prog3.c
+/objdir/tools/prog4/Makefile
+/objdir/tools/prog4/prog4.c
+/objdir/tools2.test.out.tmp
+========= all-tools/prog3 ==========
+/objdir/Makefile
+/objdir/_mkc_compiler_type.err
+/objdir/_mkc_compiler_type.res
+/objdir/_mkc_prog_cc.err
+/objdir/_mkc_prog_cc.res
+/objdir/expect.out
+/objdir/libs/bar/Makefile
+/objdir/libs/bar/bar.c
+/objdir/libs/bar/bar.h
+/objdir/libs/bar/bar.o
+/objdir/libs/bar/libbar.a
+/objdir/libs/bar/linkme.mk
+/objdir/libs/foo/Makefile
+/objdir/libs/foo/foo.c
+/objdir/libs/foo/foo.h
+/objdir/libs/foo/foo.o
+/objdir/libs/foo/libfoo.a
+/objdir/libs/foo/linkme.mk
+/objdir/libs/qux/Makefile
+/objdir/libs/qux/linkme.mk
+/objdir/libs/qux/qux.c
+/objdir/libs/qux/qux.h.in
+/objdir/test.mk
+/objdir/tests/prog1/Makefile
+/objdir/tests/prog2/Makefile
+/objdir/tests/prog3/Makefile
+/objdir/tests/prog4/Makefile
+/objdir/tools/prog1/Makefile
+/objdir/tools/prog1/prog1.c
+/objdir/tools/prog2/Makefile
+/objdir/tools/prog2/prog2.c
+/objdir/tools/prog3/Makefile
+/objdir/tools/prog3/prog3
+/objdir/tools/prog3/prog3.c
+/objdir/tools/prog3/prog3.o
+/objdir/tools/prog4/Makefile
+/objdir/tools/prog4/prog4.c
+/objdir/tools2.test.out.tmp
+========= -C tools/prog4 all ==========
+/objdir/Makefile
+/objdir/_mkc_compiler_type.err
+/objdir/_mkc_compiler_type.res
+/objdir/_mkc_prog_cc.err
+/objdir/_mkc_prog_cc.res
+/objdir/_mkc_sizeof_int.c
+/objdir/_mkc_sizeof_int.err
+/objdir/_mkc_sizeof_int.res
+/objdir/expect.out
+/objdir/libs/bar/Makefile
+/objdir/libs/bar/bar.c
+/objdir/libs/bar/bar.h
+/objdir/libs/bar/linkme.mk
+/objdir/libs/foo/Makefile
+/objdir/libs/foo/foo.c
+/objdir/libs/foo/foo.h
+/objdir/libs/foo/linkme.mk
+/objdir/libs/qux/Makefile
+/objdir/libs/qux/libqux.a
+/objdir/libs/qux/linkme.mk
+/objdir/libs/qux/qux.c
+/objdir/libs/qux/qux.h
+/objdir/libs/qux/qux.h.in
+/objdir/libs/qux/qux.o
+/objdir/test.mk
+/objdir/tests/prog1/Makefile
+/objdir/tests/prog2/Makefile
+/objdir/tests/prog3/Makefile
+/objdir/tests/prog4/Makefile
+/objdir/tools/prog1/Makefile
+/objdir/tools/prog1/prog1.c
+/objdir/tools/prog2/Makefile
+/objdir/tools/prog2/prog2.c
+/objdir/tools/prog3/Makefile
+/objdir/tools/prog3/prog3.c
+/objdir/tools/prog4/Makefile
+/objdir/tools/prog4/prog4
+/objdir/tools/prog4/prog4.c
+/objdir/tools/prog4/prog4.o
+/objdir/tools2.test.out.tmp
+========= MKRELOBJDIR ==========
+obj/_mkc_compiler_type.err
+obj/_mkc_compiler_type.res
+obj/_mkc_prog_cc.err
+obj/_mkc_prog_cc.res
+obj/_mkc_sizeof_int.c
+obj/_mkc_sizeof_int.err
+obj/_mkc_sizeof_int.res
+obj/libs/bar/bar.o
+obj/libs/bar/libbar.a
+obj/libs/foo/foo.o
+obj/libs/foo/libfoo.a
+obj/libs/qux/libqux.a
+obj/libs/qux/qux.h
+obj/libs/qux/qux.o
+obj/tools/prog1/prog1
+obj/tools/prog1/prog1.o
+obj/tools/prog2/prog2
+obj/tools/prog2/prog2.o
+obj/tools/prog3/prog3
+obj/tools/prog3/prog3.o
+obj/tools/prog4/prog4
+obj/tools/prog4/prog4.o
diff --git a/examples/tools2/libs/bar/Makefile b/examples/tools2/libs/bar/Makefile
new file mode 100644
index 0000000..4022796
--- /dev/null
+++ b/examples/tools2/libs/bar/Makefile
@@ -0,0 +1,7 @@
+LIB = bar
+SRCS = bar.c
+INCS = bar.h
+
+WARNS = 4
+
+.include <mkc.lib.mk>
diff --git a/examples/tools2/libs/bar/bar.c b/examples/tools2/libs/bar/bar.c
new file mode 100644
index 0000000..8580fe7
--- /dev/null
+++ b/examples/tools2/libs/bar/bar.c
@@ -0,0 +1,6 @@
+#include "bar.h"
+
+const char *get_msg2 (void)
+{
+ return "Message #";
+}
diff --git a/examples/tools2/libs/bar/bar.h b/examples/tools2/libs/bar/bar.h
new file mode 100644
index 0000000..a434759
--- /dev/null
+++ b/examples/tools2/libs/bar/bar.h
@@ -0,0 +1 @@
+const char *get_msg2 (void);
diff --git a/examples/tools2/libs/bar/linkme.mk b/examples/tools2/libs/bar/linkme.mk
new file mode 100644
index 0000000..4eea0a9
--- /dev/null
+++ b/examples/tools2/libs/bar/linkme.mk
@@ -0,0 +1,5 @@
+PATH.bar := ${.PARSEDIR}
+
+CPPFLAGS += -I${PATH.bar}
+DPLIBDIRS += libs/${PATH.bar:T}
+LDADD += -lbar
diff --git a/examples/tools2/libs/foo/Makefile b/examples/tools2/libs/foo/Makefile
new file mode 100644
index 0000000..0003bee
--- /dev/null
+++ b/examples/tools2/libs/foo/Makefile
@@ -0,0 +1,7 @@
+LIB = foo
+SRCS = foo.c
+INCS = foo.h
+
+WARNS = 4
+
+.include <mkc.lib.mk>
diff --git a/examples/tools2/libs/foo/foo.c b/examples/tools2/libs/foo/foo.c
new file mode 100644
index 0000000..1d47523
--- /dev/null
+++ b/examples/tools2/libs/foo/foo.c
@@ -0,0 +1,6 @@
+#include "foo.h"
+
+const char *get_msg1 (void)
+{
+ return "This is a message #";
+}
diff --git a/examples/tools2/libs/foo/foo.h b/examples/tools2/libs/foo/foo.h
new file mode 100644
index 0000000..489e95b
--- /dev/null
+++ b/examples/tools2/libs/foo/foo.h
@@ -0,0 +1 @@
+const char *get_msg1 (void);
diff --git a/examples/tools2/libs/foo/linkme.mk b/examples/tools2/libs/foo/linkme.mk
new file mode 100644
index 0000000..ad42ee4
--- /dev/null
+++ b/examples/tools2/libs/foo/linkme.mk
@@ -0,0 +1,5 @@
+PATH.foo := ${.PARSEDIR}
+
+CPPFLAGS += -I${PATH.foo}
+DPLIBDIRS += libs/${PATH.foo:T}
+LDADD += -lfoo
diff --git a/examples/tools2/libs/qux/Makefile b/examples/tools2/libs/qux/Makefile
new file mode 100644
index 0000000..345f614
--- /dev/null
+++ b/examples/tools2/libs/qux/Makefile
@@ -0,0 +1,16 @@
+LIB = qux
+SRCS = qux.c
+INCS = qux.h
+
+MKC_CHECK_SIZEOF = int
+
+.include <mkc.configure.mk>
+
+INFILES = ${INCS}
+INTEXTS_REPLS = int_size ${SIZEOF.int:U4}
+
+qux.o: qux.h
+
+WARNS = 4
+
+.include <mkc.lib.mk>
diff --git a/examples/tools2/libs/qux/linkme.mk b/examples/tools2/libs/qux/linkme.mk
new file mode 100644
index 0000000..82f5dd6
--- /dev/null
+++ b/examples/tools2/libs/qux/linkme.mk
@@ -0,0 +1,5 @@
+PATH.qux := ${.PARSEDIR}
+
+CPPFLAGS += -I${OBJDIR_libs_qux}
+DPLIBDIRS += libs/${PATH.qux:T}
+LDADD += -lqux
diff --git a/examples/tools2/libs/qux/qux.c b/examples/tools2/libs/qux/qux.c
new file mode 100644
index 0000000..78786db
--- /dev/null
+++ b/examples/tools2/libs/qux/qux.c
@@ -0,0 +1,6 @@
+#include "qux.h"
+
+int get_int_size (void)
+{
+ return INT_SIZE;
+}
diff --git a/examples/tools2/libs/qux/qux.h.in b/examples/tools2/libs/qux/qux.h.in
new file mode 100644
index 0000000..0a41ce1
--- /dev/null
+++ b/examples/tools2/libs/qux/qux.h.in
@@ -0,0 +1,4 @@
+
+#define INT_SIZE @int_size@
+
+int get_int_size (void);
diff --git a/examples/tools2/test.mk b/examples/tools2/test.mk
new file mode 100644
index 0000000..1c630f0
--- /dev/null
+++ b/examples/tools2/test.mk
@@ -0,0 +1,115 @@
+next_level != expr ${.MAKE.LEVEL} + 1
+
+.PHONY : test_output
+test_output :
+ @set -e; \
+ MKCATPAGES=yes; export MKCATPAGES; \
+ SRCTOP=`pwd`; export SRCTOP; \
+ LC_ALL=C; export LC_ALL; \
+ \
+ echo PROJECTNAME=${PROJECTNAME}; \
+ rm -rf ${.OBJDIR}${PREFIX}; \
+ ${.CURDIR}/tools/prog1/prog1; \
+ ${.CURDIR}/tools/prog2/prog2; \
+ ${.CURDIR}/tools/prog3/prog3; \
+ ${.CURDIR}/tools/prog4/prog4 | sed 's/=[0-9]/=n/'; \
+ echo OBJDIR_tools_prog1=${OBJDIR_tools_prog1} | mkc_test_helper_paths; \
+ echo OBJDIR_tools_prog2=${OBJDIR_tools_prog2} | mkc_test_helper_paths; \
+ echo OBJDIR_tools_prog3=${OBJDIR_tools_prog3} | mkc_test_helper_paths; \
+ echo OBJDIR_tools_prog4=${OBJDIR_tools_prog4} | mkc_test_helper_paths; \
+ echo OBJDIR_libs_foo=${OBJDIR_libs_foo} | mkc_test_helper_paths; \
+ echo OBJDIR_libs_bar=${OBJDIR_libs_bar} | mkc_test_helper_paths; \
+ echo OBJDIR_prog3=${OBJDIR_prog3} | mkc_test_helper_paths; \
+ echo OBJDIR_bar=${OBJDIR_bar} | mkc_test_helper_paths; \
+ \
+ echo =========== check ============; \
+ ${MAKE} ${MAKEFLAGS} check 2>&1; \
+ \
+ echo =========== check-tools/prog1 ============; \
+ ${MAKE} ${MAKEFLAGS} check-tools/prog1 2>&1; \
+ \
+ echo =========== all ============; \
+ find ${.OBJDIR} -type f -o -type l | \
+ mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
+ \
+ echo ===== all SHRTOUT=yes ======; \
+ ${MAKE} ${MAKEFLAGS} clean > /dev/null; \
+ env SHRTOUT=YES ${MAKE} ${MAKEFLAGS} all 2>&1; \
+ \
+ echo ========= installdirs ==========; \
+ ${MAKE} ${MAKEFLAGS} installdirs DESTDIR=${.OBJDIR} \
+ > /dev/null; \
+ find ${.OBJDIR}${PREFIX} -type f -o -type l -o -type d | \
+ mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
+ \
+ echo ========= install ==========; \
+ ${MAKE} ${MAKEFLAGS} install -j3 DESTDIR=${.OBJDIR} \
+ > /dev/null; \
+ find ${.OBJDIR}${PREFIX} -type f -o -type l -o -type d | \
+ mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
+ \
+ echo ======== uninstall =========; \
+ ${MAKE} ${MAKEFLAGS} -j4 uninstall DESTDIR=${.OBJDIR} > /dev/null; \
+ find ${.OBJDIR}${PREFIX} -type f -o -type l | \
+ mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
+ \
+ echo ========== clean ===========; \
+ ${MAKE} ${MAKEFLAGS} clean DESTDIR=${.OBJDIR} > /dev/null; \
+ find ${.OBJDIR} -type f -o -type l | \
+ mkc_test_helper "${PREFIX}" "${.OBJDIR}";\
+ \
+ echo ======= cleandir ==========; \
+ ${MAKE} ${MAKEFLAGS} cleandir DESTDIR=${.OBJDIR} > /dev/null; \
+ find ${.OBJDIR} -type f -o -type l | \
+ mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
+ \
+ echo ========= all-tools/prog1 ==========; \
+ ${MAKE} ${MAKEFLAGS} -j4 all-tools/prog1 DESTDIR=${.OBJDIR} > /dev/null; \
+ find ${.OBJDIR} -type f -o -type l | \
+ mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
+ \
+ echo ========= -C tools/prog1 all ==========; \
+ ${MAKE} ${MAKEFLAGS} -j4 clean-tools/prog1 DESTDIR=${.OBJDIR} > /dev/null; \
+ env init_make_level=${next_level} ${MAKE} ${MAKEFLAGS} -j4 \
+ -C `pwd`/tools/prog1 all DESTDIR=${.OBJDIR} > /dev/null; \
+ find ${.OBJDIR} -type f -o -type l | \
+ mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
+ \
+ echo ========= all-tools/prog2 ==========; \
+ ${MAKE} ${MAKEFLAGS} cleandir DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 all-tools/prog2 DESTDIR=${.OBJDIR} > /dev/null; \
+ find ${.OBJDIR} -type f -o -type l | \
+ mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
+ \
+ echo ========= -C tools/prog2 all ==========; \
+ ${MAKE} ${MAKEFLAGS} cleandir DESTDIR=${.OBJDIR} > /dev/null; \
+ env init_make_level=${next_level} ${MAKE} ${MAKEFLAGS} -j4 \
+ -C tools/prog2 all DESTDIR=${.OBJDIR} > /dev/null; \
+ find ${.OBJDIR} -type f -o -type l | \
+ mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
+ \
+ echo ========= all-tools/prog3 ==========; \
+ ${MAKE} ${MAKEFLAGS} cleandir DESTDIR=${.OBJDIR} > /dev/null; \
+ ${MAKE} ${MAKEFLAGS} -j4 all-tools/prog3 DESTDIR=${.OBJDIR} > /dev/null; \
+ find ${.OBJDIR} -type f -o -type l | \
+ mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
+ \
+ echo ========= -C tools/prog4 all ==========; \
+ ${MAKE} ${MAKEFLAGS} cleandir DESTDIR=${.OBJDIR} > /dev/null; \
+ env init_make_level=${next_level} ${MAKE} ${MAKEFLAGS} \
+ -j4 all-tools/prog4 DESTDIR=${.OBJDIR} > /dev/null; \
+ find ${.OBJDIR} -type f -o -type l | \
+ mkc_test_helper "${PREFIX}" "${.OBJDIR}"; \
+ \
+ echo ========= MKRELOBJDIR ==========; \
+ ${MAKE} ${MAKEFLAGS} cleandir > /dev/null; \
+ MKRELOBJDIR=yes; export MKRELOBJDIR; \
+ mkdir obj; \
+ env init_make_level=${next_level} ${MAKE} ${MAKEFLAGS} \
+ -j4 all > /dev/null; \
+ find obj -type f -o -type l | sort; \
+ rm -rf obj; \
+ \
+ ${MAKE} ${MAKEFLAGS} cleandir > /dev/null; \
+
+.include <mkc.minitest.mk>
diff --git a/examples/tools2/tests/prog1/Makefile b/examples/tools2/tests/prog1/Makefile
new file mode 100644
index 0000000..157ce1c
--- /dev/null
+++ b/examples/tools2/tests/prog1/Makefile
@@ -0,0 +1,8 @@
+check:
+ @if test "`${OBJDIR_tools_prog1}/prog1`" = 'This is a message #1'; then \
+ echo ok; \
+ else \
+ echo FAILED; false; \
+ fi
+
+.include <mkc.mk>
diff --git a/examples/tools2/tests/prog2/Makefile b/examples/tools2/tests/prog2/Makefile
new file mode 100644
index 0000000..bb706b8
--- /dev/null
+++ b/examples/tools2/tests/prog2/Makefile
@@ -0,0 +1,8 @@
+check:
+ @if test "`${OBJDIR_tools_prog2}/prog2`" = 'Message #2'; then \
+ echo ok; \
+ else \
+ echo FAILED; false; \
+ fi
+
+.include <mkc.mk>
diff --git a/examples/tools2/tests/prog3/Makefile b/examples/tools2/tests/prog3/Makefile
new file mode 100644
index 0000000..c4cdad8
--- /dev/null
+++ b/examples/tools2/tests/prog3/Makefile
@@ -0,0 +1,10 @@
+check:
+ @if test "`${OBJDIR_tools_prog3}/prog3 | tr '\012' ' '`" = \
+ 'This is a message #3 Message #3 '; \
+ then \
+ echo ok; \
+ else \
+ echo FAILED; false; \
+ fi
+
+.include <mkc.mk>
diff --git a/examples/tools2/tests/prog4/Makefile b/examples/tools2/tests/prog4/Makefile
new file mode 100644
index 0000000..fb34426
--- /dev/null
+++ b/examples/tools2/tests/prog4/Makefile
@@ -0,0 +1,8 @@
+check:
+ @if test "`${OBJDIR_tools_prog4}/prog4 | tr '248' 'nnn'`" = 'int_size=n'; then \
+ echo ok; \
+ else \
+ echo FAILED; false; \
+ fi
+
+.include <mkc.mk>
diff --git a/examples/tools2/tools/prog1/Makefile b/examples/tools2/tools/prog1/Makefile
new file mode 100644
index 0000000..bca4588
--- /dev/null
+++ b/examples/tools2/tools/prog1/Makefile
@@ -0,0 +1,12 @@
+PROG = prog1
+
+CFLAGS += -DNUM=1
+WARNS = 4
+
+MKC_REQD = 0.10.0
+
+check:
+ @: do something useful
+
+.include "../../libs/foo/linkme.mk"
+.include <mkc.prog.mk>
diff --git a/examples/tools2/tools/prog1/prog1.c b/examples/tools2/tools/prog1/prog1.c
new file mode 100644
index 0000000..87578e2
--- /dev/null
+++ b/examples/tools2/tools/prog1/prog1.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+
+#include "foo.h"
+
+int main (int argc, char** argv)
+{
+ printf ("%s", get_msg1 ());
+ printf ("%d\n", NUM);
+ return 0;
+}
diff --git a/examples/tools2/tools/prog2/Makefile b/examples/tools2/tools/prog2/Makefile
new file mode 100644
index 0000000..63ab936
--- /dev/null
+++ b/examples/tools2/tools/prog2/Makefile
@@ -0,0 +1,12 @@
+PROG = prog2
+
+CFLAGS += -DNUM=2
+WARNS = 4
+
+MKC_REQD = 0.10.0
+
+check:
+ @: do something useful
+
+.include "../../libs/bar/linkme.mk"
+.include <mkc.prog.mk>
diff --git a/examples/tools2/tools/prog2/prog2.c b/examples/tools2/tools/prog2/prog2.c
new file mode 100644
index 0000000..ed9553c
--- /dev/null
+++ b/examples/tools2/tools/prog2/prog2.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+
+#include "bar.h"
+
+int main (int argc, char** argv)
+{
+ printf ("%s", get_msg2 ());
+ printf ("%d\n", NUM);
+ return 0;
+}
diff --git a/examples/tools2/tools/prog3/Makefile b/examples/tools2/tools/prog3/Makefile
new file mode 100644
index 0000000..b361032
--- /dev/null
+++ b/examples/tools2/tools/prog3/Makefile
@@ -0,0 +1,14 @@
+PROG = prog3
+
+CFLAGS += -DNUM=3
+WARNS = 4
+
+MKC_REQD = 0.10.0
+
+check:
+ @: do something useful
+
+.include "../../libs/foo/linkme.mk"
+.include "../../libs/bar/linkme.mk"
+
+.include <mkc.prog.mk>
diff --git a/examples/tools2/tools/prog3/prog3.c b/examples/tools2/tools/prog3/prog3.c
new file mode 100644
index 0000000..54b740b
--- /dev/null
+++ b/examples/tools2/tools/prog3/prog3.c
@@ -0,0 +1,14 @@
+#include <stdio.h>
+
+#include "foo.h"
+#include "bar.h"
+
+int main (int argc, char** argv)
+{
+ printf ("%s", get_msg1 ());
+ printf ("%d\n", NUM);
+
+ printf ("%s", get_msg2 ());
+ printf ("%d\n", NUM);
+ return 0;
+}
diff --git a/examples/tools2/tools/prog4/Makefile b/examples/tools2/tools/prog4/Makefile
new file mode 100644
index 0000000..307f490
--- /dev/null
+++ b/examples/tools2/tools/prog4/Makefile
@@ -0,0 +1,11 @@
+PROG = prog4
+
+WARNS = 4
+
+MKC_REQD = 0.10.0
+
+check:
+ @: do something useful
+
+.include "../../libs/qux/linkme.mk"
+.include <mkc.prog.mk>
diff --git a/examples/tools2/tools/prog4/prog4.c b/examples/tools2/tools/prog4/prog4.c
new file mode 100644
index 0000000..3b4d087
--- /dev/null
+++ b/examples/tools2/tools/prog4/prog4.c
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+#include "qux.h"
+
+int main (int argc, char** argv)
+{
+ printf ("int_size=%d\n", get_int_size ());
+ return 0;
+}