2 dnl Autoconf configuration for Apache httpd
4 dnl Use ./buildconf to produce a configure script
10 AC_CONFIG_HEADER(include/ap_config_auto.h)
11 AC_CONFIG_AUX_DIR(build)
14 dnl # Include our own M4 macros along with those for APR and libtool
16 sinclude(build/apr_common.m4)
17 sinclude(build/find_apr.m4)
18 sinclude(build/find_apu.m4)
19 sinclude(acinclude.m4)
21 dnl XXX we can't just use AC_PREFIX_DEFAULT because that isn't subbed in
22 dnl by configure until it is too late. Is that how it should be or not?
23 dnl Something seems broken here.
24 AC_PREFIX_DEFAULT(/usr/local/apache2)
26 dnl Get the layout here, so we can pass the required variables to apr
27 APR_ENABLE_LAYOUT(Apache, [errordir iconsdir htdocsdir cgidir])
29 dnl reparse the configure arguments.
32 dnl export expanded and relative configure argument variables
33 APACHE_EXPORT_ARGUMENTS
35 dnl Save user-defined environment settings for later restoration
37 APR_SAVE_THE_ENVIRONMENT(CPPFLAGS)
38 APR_SAVE_THE_ENVIRONMENT(CFLAGS)
39 APR_SAVE_THE_ENVIRONMENT(CXXFLAGS)
40 APR_SAVE_THE_ENVIRONMENT(LDFLAGS)
41 APR_SAVE_THE_ENVIRONMENT(LIBS)
42 APR_SAVE_THE_ENVIRONMENT(INCLUDES)
44 dnl Generate ./config.nice for reproducing runs of configure
46 APR_CONFIG_NICE(config.nice)
50 dnl Check that mkdir -p works
51 APR_MKDIR_P_CHECK($top_srcdir/build/mkdir.sh)
53 dnl ## Run configure for packages Apache uses
55 dnl shared library support for these packages doesn't currently
56 dnl work on some platforms
62 echo $ac_n "${nl}Configuring Apache Portable Runtime library ...${nl}"
64 APR_FIND_APR("$srcdir/srclib/apr", "./srclib/apr", 1)
66 if test "$apr_found" = "no"; then
67 AC_MSG_ERROR([APR not found. Please read the documentation.])
70 if test "$apr_found" = "reconfig"; then
71 APR_SUBDIR_CONFIG(srclib/apr,
72 [$apache_apr_flags --prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --includedir=$includedir --bindir=$bindir --datadir=$datadir --with-installbuilddir=$installbuilddir],
73 [--enable-layout=*|\'--enable-layout=*])
74 dnl We must be the first to build and the last to be cleaned
75 AP_BUILD_SRCLIB_DIRS="apr $AP_BUILD_SRCLIB_DIRS"
76 AP_CLEAN_SRCLIB_DIRS="$AP_CLEAN_SRCLIB_DIRS apr"
79 APR_SETIFNULL(CC, `$apr_config --cc`)
80 APR_SETIFNULL(CPP, `$apr_config --cpp`)
81 APR_ADDTO(CFLAGS, `$apr_config --cflags`)
82 APR_ADDTO(CPPFLAGS, `$apr_config --cppflags`)
83 APR_ADDTO(LDFLAGS, `$apr_config --ldflags`)
84 APR_ADDTO(INCLUDES, `$apr_config --includes`)
85 SHLIBPATH_VAR=`$apr_config --shlib-path-var`
86 APR_BINDIR=`$apr_config --bindir`
87 APR_INCLUDEDIR=`$apr_config --includedir`
88 APR_VERSION=`$apr_config --version`
89 APR_CONFIG="$APR_BINDIR/apr-`echo ${APR_VERSION} | sed 's,\..*,,'`-config"
91 echo $ac_n "${nl}Configuring Apache Portable Runtime Utility library...${nl}"
93 APR_FIND_APU("$srcdir/srclib/apr-util", "./srclib/apr-util", 1)
95 if test "$apu_found" = "no"; then
96 AC_MSG_ERROR([APR-util not found. Please read the documentation.])
99 if test "$apu_found" = "reconfig"; then
100 APR_SUBDIR_CONFIG(srclib/apr-util,
101 [--with-apr=../apr --prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --includedir=$includedir --bindir=$bindir],
102 [--enable-layout=*|\'--enable-layout=*])
103 dnl We must be the last to build and the first to be cleaned
104 AP_BUILD_SRCLIB_DIRS="$AP_BUILD_SRCLIB_DIRS apr-util"
105 AP_CLEAN_SRCLIB_DIRS="apr-util $AP_CLEAN_SRCLIB_DIRS"
108 APR_ADDTO(LDFLAGS, `$apu_config --ldflags`)
109 APR_ADDTO(INCLUDES, `$apu_config --includes`)
110 APU_BINDIR=`$apu_config --bindir`
111 APU_INCLUDEDIR=`$apu_config --includedir`
112 APU_VERSION=`$apu_config --version`
113 APU_CONFIG="$APU_BINDIR/apu-`echo ${APU_VERSION} | sed 's,\..*,,'`-config"
115 dnl In case we picked up CC and CPP from APR, get that info into the
116 dnl config cache so that PCRE uses it. Otherwise, CC and CPP used for
117 dnl PCRE and for our config tests will be whatever PCRE determines.
121 echo $ac_n "${nl}Configuring PCRE regular expression library ...${nl}"
123 APR_SUBDIR_CONFIG(srclib/pcre,
124 [--prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --includedir=$includedir --bindir=$bindir])
126 echo $ac_n "${nl}Configuring Apache httpd ...${nl}"
128 dnl Absolute source/build directory
129 abs_srcdir=`(cd $srcdir && pwd)`
132 dnl If the source dir is not equal to the build dir,
133 dnl then we are running in VPATH mode.
135 APR_ADDTO(INCLUDES, [-I.])
137 if test "$abs_builddir" != "$abs_srcdir"; then
138 APR_ADDTO(INCLUDES, [-I\$(top_builddir)/include])
141 APR_ADDTO(INCLUDES, [-I\$(top_srcdir)/os/\$(OS_DIR) -I\$(top_srcdir)/server/mpm/\$(MPM_SUBDIR_NAME) -I\$(top_srcdir)/modules/http -I\$(top_srcdir)/modules/filters -I\$(top_srcdir)/modules/proxy -I\$(top_srcdir)/include -I\$(top_srcdir)/modules/generators -I\$(top_srcdir)/modules/mappers])
143 echo $ac_n "${nl}Applying OS-specific hints for httpd ...${nl}"
147 # Use a custom made libtool replacement
148 echo "using aplibtool"
149 LIBTOOL="$abs_srcdir/srclib/apr/build/aplibtool"
150 SH_LIBTOOL="$LIBTOOL --shared --export-all"
151 SH_LIBS="\$(ALL_LIBS)"
152 CORE_IMPLIB_FILE="ApacheCoreOS2.la"
153 CORE_IMPLIB="$abs_srcdir/server/$CORE_IMPLIB_FILE"
155 other_targets="$other_targets os2core"
156 INSTALL_PROG_FLAGS="-e .exe"
161 if test "x$LTFLAGS" = "x"; then
164 my_libtool=`$apr_config --apr-libtool`
165 LIBTOOL="$my_libtool \$(LTFLAGS)"
166 libtoolversion=`$my_libtool --version`
167 case $libtoolversion in
169 SH_LIBTOOL='$(LIBTOOL)'
170 SHLTCFLAGS="-prefer-pic"
171 LTCFLAGS="-prefer-non-pic -static"
174 SH_LIBTOOL='$(SHELL) $(top_builddir)/shlibtool $(LTFLAGS)'
181 APACHE_SUBST(SHLTCFLAGS)
182 APACHE_SUBST(LTCFLAGS)
188 APR_SETVAR(APACHE_MPM, [prefork])
189 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
192 APR_SETVAR(APACHE_MPM, [beos])
193 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
196 APR_SETVAR(APACHE_MPM, [mpmt_os2])
197 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
202 AP_SIG_GRACEFUL=WINCH
205 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
211 *486-*-bsdi* | *-netbsd* | *-freebsd* | *-apple-darwin* | *-dec-osf* | *-qnx)
212 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
215 dnl This is a hack -- we should be using AC_TRY_RUN instead
216 ap_platform_runtime_link_flag="-R"
217 dnl solaris 8 and above don't have a thundering herd
218 dnl not sure about rev's before this one.
223 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
228 APR_SETVAR(APACHE_MPM, [prefork])
229 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
232 aixver=`echo $host | sed 's/^[[^0-9]]*//' | sed 's/\.//g'`
233 if test $aixver -ge 4320; then
234 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
238 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
242 APR_SETVAR(AP_NONBLOCK_WHEN_MULTI_LISTEN, [1])
245 dnl Process command line arguments. This is done early in the process so the
246 dnl user can get feedback quickly in case of an error.
248 dnl ### need to move some of the arguments "up here"
250 dnl ## Check for programs
253 AC_PATH_PROG(PKGCONFIG, pkg-config)
257 AC_CHECK_TOOL(RANLIB, ranlib, true)
258 dnl AC_PATH_PROG(PERL_PATH, perl)
259 AC_CHECK_PROGS(LYNX_PATH,[lynx links elinks], [lynx])
261 dnl various OS checks that apparently set required flags
266 dnl Check for what we can generate dependency files with
269 dnl ## Check for libraries
271 dnl ## Check for header files
273 dnl I think these are just used all over the place, so just check for
274 dnl them at the base of the tree. If some are specific to a single
275 dnl directory, they should be moved (Comment #Spoon)
277 dnl Regarding standard header files: AC_HEADER_STDC doesn't set symbols
278 dnl HAVE_STRING_H, HAVE_STDLIB_H, etc., so those are checked for
279 dnl explicitly so that the normal HAVE_xxx_H symbol is defined.
296 dnl ## Check for typedefs, structures, and compiler characteristics.
299 if test "x$GCC" = "xyes"; then
300 AC_DEFINE([AP_HAVE_DESIGNATED_INITIALIZER], 1,
301 [Define if the compiler supports designated initializers])
304 dnl ## Check for library functions
305 AC_SEARCH_LIBS(sqrt, m)
307 dnl See Comment #Spoon
318 dnl ## Check for the tm_gmtoff field in struct tm to get the timezone diffs
319 AC_CACHE_CHECK([for tm_gmtoff in struct tm], ac_cv_struct_tm_gmtoff,
320 [AC_TRY_COMPILE([#include <sys/types.h>
321 #include <time.h>], [struct tm tm; tm.tm_gmtoff;],
322 ac_cv_struct_tm_gmtoff=yes, ac_cv_struct_tm_gmtoff=no)])
323 if test "$ac_cv_struct_tm_gmtoff" = "yes"; then
324 AC_DEFINE(HAVE_GMTOFF, 1, [Define if struct tm has a tm_gmtoff field])
327 dnl ## Set up any appropriate OS-specific environment variables for apachectl
331 # for 32-bit builds, increase MAXDATA to allow lots of threads
332 if test x$OBJECT_MODE != x64; then
333 OS_SPECIFIC_VARS="LDR_CNTRL=\"MAXDATA=0x80000000\" ; export LDR_CNTRL ;"
335 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS AIXTHREAD_SCOPE=S ; export AIXTHREAD_SCOPE"
336 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; AIXTHREAD_MUTEX_DEBUG=OFF ; export AIXTHREAD_MUTEX_DEBUG"
337 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; AIXTHREAD_RWLOCK_DEBUG=OFF ; export AIXTHREAD_RWLOCK_DEBUG"
338 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; AIXTHREAD_COND_DEBUG=OFF ; export AIXTHREAD_COND_DEBUG"
339 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; SPINLOOPTIME=1000 ; export SPINLOOPTIME"
340 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; YIELDLOOPTIME=8 ; export YIELDLOOPTIME"
341 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; MALLOCMULTIHEAP=considersize,heaps:8 ; export MALLOCMULTIHEAP"
344 OS_SPECIFIC_VARS="export _CEE_RUNOPTS=\"STACK(,,ANY)\" ; export _EDC_ADD_ERRNO2=1"
350 AC_ARG_WITH(port,APACHE_HELP_STRING(--with-port=PORT,Port on which to listen (default is 80)),
351 [if test "$withval" = "yes"; then AC_MSG_ERROR('option --with-port requires a value (the TCP port number)'); else PORT="$withval"; fi],
354 APR_CHECK_APR_DEFINE(APR_HAVE_IPV6)
356 AC_ARG_ENABLE(v4-mapped,APACHE_HELP_STRING(--enable-v4-mapped,Allow IPv6 sockets to handle IPv4 connections),
362 *freebsd5*|*netbsd*|*openbsd*)
371 if test $v4mapped = "yes" -a $ac_cv_define_APR_HAVE_IPV6 = "yes"; then
372 AC_DEFINE(AP_ENABLE_V4_MAPPED, 1,
373 [Allow IPv4 connections on IPv6 listening sockets])
376 AC_ARG_ENABLE(exception-hook,APACHE_HELP_STRING(--enable-exception-hook,Enable fatal exception hook),
378 AC_DEFINE(AP_ENABLE_EXCEPTION_HOOK, 1,
379 [Allow modules to run hook after a fatal exception])
382 AC_ARG_ENABLE(maintainer-mode,APACHE_HELP_STRING(--enable-maintainer-mode,Turn on debugging and compile time warnings),
384 APR_ADDTO(CPPFLAGS, -DAP_DEBUG)
387 prefix="$orig_prefix"
388 APACHE_ENABLE_MODULES
390 dnl reading config stubs
391 esyscmd(./build/config-stubs .)
393 APACHE_SUBST(progname)
394 APACHE_SUBST(MPM_LIB)
397 APACHE_SUBST(BUILTIN_LIBS)
398 APACHE_SUBST(SHLIBPATH_VAR)
399 APACHE_SUBST(OS_SPECIFIC_VARS)
401 PRE_SHARED_CMDS='echo ""'
402 POST_SHARED_CMDS='echo ""'
404 dnl apache_need_shared tells us if Apache modules are being built as DSOs
406 if test "$apache_need_shared" = "yes"; then
407 if test -f $ac_aux_dir/ltconfig; then
408 $SHELL $ac_aux_dir/ltconfig --output=shlibtool --disable-static --srcdir=$ac_aux_dir --cache-file=./config.cache $ac_aux_dir/ltmain.sh
410 shared_build="shared-build"
413 dnl enable_so tells us if *any* modules can be built as DSOs
415 if test "$enable_so" = "yes"; then
418 HTTPD_LDFLAGS="$HTTPD_LDFLAGS -Wl,-uXML_Parse -Wl,-bE:$abs_builddir/server/httpd.exp"
419 SH_LDFLAGS="$SH_LDFLAGS \$(EXTRA_LDFLAGS) \$(EXTRA_LIBS)"
420 UTIL_LDFLAGS="$UTIL_LDFLAGS -Wl,-uXML_Parse"
423 SH_LDFLAGS='$(top_builddir)/_APP_'
424 PRE_SHARED_CMDS='ln -s $(top_builddir)/httpd $(top_builddir)/_APP_'
425 POST_SHARED_CMDS='rm $(top_builddir)/_APP_'
428 HTTPD_LDFLAGS="$HTTPD_LDFLAGS --main=$abs_srcdir/server/main.o --core-dll=$abs_srcdir/apachecore.dll"
429 SH_LDFLAGS="$SH_LDFLAGS --core-dll=$abs_srcdir/apachecore.dll"
433 APACHE_SUBST(PRE_SHARED_CMDS)
434 APACHE_SUBST(POST_SHARED_CMDS)
435 APACHE_SUBST(shared_build)
437 AC_ARG_WITH(program-name,
438 APACHE_HELP_STRING(--with-program-name,alternate executable name),[
439 progname="$withval" ], [
443 AC_ARG_WITH(suexec-bin,
444 APACHE_HELP_STRING(--with-suexec-bin,Path to suexec binary),[
445 AC_DEFINE_UNQUOTED(SUEXEC_BIN, "$withval", [Path to suexec binary] )
448 AC_ARG_WITH(suexec-caller,
449 APACHE_HELP_STRING(--with-suexec-caller,User allowed to call SuExec),[
450 AC_DEFINE_UNQUOTED(AP_HTTPD_USER, "$withval", [User allowed to call SuExec] ) ] )
452 AC_ARG_WITH(suexec-userdir,
453 APACHE_HELP_STRING(--with-suexec-userdir,User subdirectory),[
454 AC_DEFINE_UNQUOTED(AP_USERDIR_SUFFIX, "$withval", [User subdirectory] ) ] )
456 AC_ARG_WITH(suexec-docroot,
457 APACHE_HELP_STRING(--with-suexec-docroot,SuExec root directory),[
458 AC_DEFINE_UNQUOTED(AP_DOC_ROOT, "$withval", [SuExec root directory] ) ] )
460 AC_ARG_WITH(suexec-uidmin,
461 APACHE_HELP_STRING(--with-suexec-uidmin,Minimal allowed UID),[
462 AC_DEFINE_UNQUOTED(AP_UID_MIN, $withval, [Minimum allowed UID] ) ] )
464 AC_ARG_WITH(suexec-gidmin,
465 APACHE_HELP_STRING(--with-suexec-gidmin,Minimal allowed GID),[
466 AC_DEFINE_UNQUOTED(AP_GID_MIN, $withval, [Minimum allowed GID] ) ] )
468 AC_ARG_WITH(suexec-logfile,
469 APACHE_HELP_STRING(--with-suexec-logfile,Set the logfile),[
470 AC_DEFINE_UNQUOTED(AP_LOG_EXEC, "$withval", [SuExec log file] ) ] )
472 AC_ARG_WITH(suexec-safepath,
473 APACHE_HELP_STRING(--with-suexec-safepath,Set the safepath),[
474 AC_DEFINE_UNQUOTED(AP_SAFE_PATH, "$withval", [safe shell path for SuExec] ) ] )
476 AC_ARG_WITH(suexec-umask,
477 APACHE_HELP_STRING(--with-suexec-umask,umask for suexec'd process),[
478 AC_DEFINE_UNQUOTED(AP_SUEXEC_UMASK, 0$withval, [umask for suexec'd process] ) ] )
480 dnl AP_LIBS specifies the actual libraries. note we have some required libs.
481 AP_LIBS="$abs_builddir/srclib/pcre/libpcre.la $AP_LIBS"
483 dnl APR should go after the other libs, so the right symbols can be picked up
484 AP_LIBS="$AP_LIBS `$apu_config --link-libtool --libs` `$apr_config --link-libtool --libs`"
485 APACHE_SUBST(AP_LIBS)
486 APACHE_SUBST(AP_BUILD_SRCLIB_DIRS)
487 APACHE_SUBST(AP_CLEAN_SRCLIB_DIRS)
489 AC_DEFINE(AP_USING_AUTOCONF, 1,
490 [Using autoconf to configure Apache])
492 if test "$SINGLE_LISTEN_UNSERIALIZED_ACCEPT" = "1"; then
493 AC_DEFINE(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, 1,
494 [This platform doesn't suffer from the thundering herd problem])
497 if test "$AP_NONBLOCK_WHEN_MULTI_LISTEN" = "1"; then
498 AC_DEFINE(AP_NONBLOCK_WHEN_MULTI_LISTEN, 1,
499 [Listening sockets are non-blocking when there are more than 1])
502 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL, SIG$AP_SIG_GRACEFUL, [Signal used to gracefully restart])
503 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL_STRING, "SIG$AP_SIG_GRACEFUL", [Signal used to gracefully restart (as a quoted string)])
504 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL_SHORT, $AP_SIG_GRACEFUL, [Signal used to gracefully restart (without SIG prefix)])
505 AP_SIG_GRACEFUL_SHORT=$AP_SIG_GRACEFUL
506 AP_SIG_GRACEFUL=SIG$AP_SIG_GRACEFUL_SHORT
507 AC_SUBST(AP_SIG_GRACEFUL)
508 AC_SUBST(AP_SIG_GRACEFUL_STRING)
509 AC_SUBST(AP_SIG_GRACEFUL_SHORT)
511 APACHE_FAST_OUTPUT(Makefile modules/Makefile srclib/Makefile)
512 APACHE_FAST_OUTPUT(os/Makefile server/Makefile)
513 APACHE_FAST_OUTPUT(support/Makefile srclib/pcre/Makefile)
515 if test -d ./test; then
516 APACHE_FAST_OUTPUT(test/Makefile)
519 dnl ## Finalize the variables
520 echo $ac_n "${nl}Restore user-defined environment settings...${nl}"
522 APR_RESTORE_THE_ENVIRONMENT(CPPFLAGS, EXTRA_)
523 APR_RESTORE_THE_ENVIRONMENT(CFLAGS, EXTRA_)
524 APR_RESTORE_THE_ENVIRONMENT(CXXFLAGS, EXTRA_)
525 APR_RESTORE_THE_ENVIRONMENT(LDFLAGS, EXTRA_)
526 APR_RESTORE_THE_ENVIRONMENT(LIBS, EXTRA_)
527 APR_RESTORE_THE_ENVIRONMENT(INCLUDES, EXTRA_)
529 echo $ac_n "${nl}Construct makefiles and header files...${nl}"
531 APACHE_GEN_CONFIG_VARS
533 dnl ## Build modules.c
535 echo $MODLIST | $AWK -f $srcdir/build/build-modules-c.awk > modules.c
537 APR_EXPAND_VAR(ap_prefix, $prefix)
538 AC_DEFINE_UNQUOTED(HTTPD_ROOT, "${ap_prefix}",
539 [Root directory of the Apache install area])
540 AC_DEFINE_UNQUOTED(SERVER_CONFIG_FILE, "${rel_sysconfdir}/${progname}.conf",
541 [Location of the config file, relative to the Apache root directory])
542 AC_DEFINE_UNQUOTED(AP_TYPES_CONFIG_FILE, "${rel_sysconfdir}/mime.types",
543 [Location of the MIME types config file, relative to the Apache root directory])
544 AC_DEFINE_UNQUOTED(APACHE_MPM_DIR, "$MPM_DIR",
545 [Location of the source for the current MPM])
547 perlbin=`$ac_aux_dir/PrintPath perl`
548 if test "x$perlbin" = "x"; then
549 perlbin="/replace/with/path/to/perl/interpreter"
553 dnl If we are running on BSD/OS, we need to use the BSD .include syntax.
556 ap_make_include=include
557 ap_make_delimiter=' '
560 # Check whether they've installed GNU make
561 if make --version > /dev/null 2>&1; then
565 ap_make_include=.include
566 ap_make_delimiter='"'
570 AC_SUBST(ap_make_include)
571 AC_SUBST(ap_make_delimiter)
573 dnl Ensure that docs/conf is created.
574 test -d docs/conf||$mkdir_p docs/conf
576 AC_OUTPUT($APACHE_OUTPUT_FILES docs/conf/httpd-std.conf docs/conf/ssl-std.conf include/ap_config_layout.h support/apxs support/apachectl support/dbmmanage support/envvars-std support/log_server_status support/logresolve.pl support/phf_abuse_log.cgi support/split-logfile build/rules.mk,[true],[