Code

d3f05aa19de3257758a82d1e5d2a76f497069da9
[template.git] / configure.ac
1 dnl Process this file with autoconf to produce a configure script.
3 AC_INIT([foobar],[m4_esyscmd(./version-gen.sh)],
4                 [Sebastian Harl <sh@tokkee.org>])
5 AC_CONFIG_SRCDIR([src/foobar.c])
6 AC_CONFIG_HEADERS([src/config.h])
7 AC_PREFIX_DEFAULT([/opt/foobar])
9 AM_INIT_AUTOMAKE([foreign -Wall])
11 AC_LANG(C)
13 AC_SYS_LARGEFILE
15 AC_PROG_CC
16 AC_PROG_CPP
17 AC_PROG_INSTALL
18 AC_PROG_LN_S
19 AC_PROG_MAKE_SET
21 AM_PROG_CC_C_O
23 AC_PROG_LIBTOOL
25 test_cc_flags() {
26         AC_LANG_CONFTEST([int main() {}])
27         $CC -c conftest.c $CFLAGS $@ > /dev/null 2> /dev/null
28         ret=$?
29         rm -f conftest.o
30         return $ret
31 }
33 dnl Optionally stick to standard C99 and POSIX.1 2001 as close as possible.
34 AC_ARG_ENABLE([standards],
35                 AS_HELP_STRING([--enable-standards],
36                                 [Enable standards compliance mode]),
37                 [enable_standards="$enableval"],
38                 [enable_standards="no"])
40 if test "x$enable_standards" = "xyes"; then
41         AC_DEFINE([_ISOC99_SOURCE], 1,
42                         [Define to enforce ISO/IEC 9899:1999 (C99) compliance.])
43         AC_DEFINE([_POSIX_C_SOURCE], 200112L,
44                         [Define to enforce IEEE 1003.1-2001 (POSIX:2001) compliance.])
45         AC_DEFINE([_XOPEN_SOURCE], 600,
46                         [Define to enforce X/Open 6 (XSI) compliance.])
47         AC_DEFINE([_REENTRANT], 1,
48                         [Define to enable reentrant interfaces.])
49         AC_DEFINE([_THREAD_SAFE], 1,
50                         [Define to enable reentrant interfaces.])
52         for flag in -std=c99 -pedantic; do
53                 AC_MSG_CHECKING([whether $CC accepts $flag])
55                 if test_cc_flags $flag; then
56                         CFLAGS="$CFLAGS $flag"
57                         AC_MSG_RESULT([yes])
58                 else
59                         AC_MSG_RESULT([no])
60                 fi
61         done
62 fi
64 dnl Hardening (see e.g. http://wiki.debian.org/Hardening for a motivation).
65 AC_DEFINE([_FORTIFY_SOURCE], 2,
66                 [Define to enable protection against static sized buffer overflows.])
67 AC_ARG_ENABLE([hardening],
68                 AS_HELP_STRING([--disable-hardening],
69                                 [Disable hardening options]),
70                 [enable_hardening="$enableval"],
71                 [enable_hardening="yes"])
73 if test "x$enable_hardening" = "xyes"; then
74         hardening=0
75         hardening_tests=0
76         for flag in -Wformat -Wformat-security; do
77                 hardening_tests=$(($hardening_tests + 1))
78                 AC_MSG_CHECKING([whether $CC accepts $flag])
80                 if test_cc_flags $flag; then
81                         CFLAGS="$CFLAGS $flag"
82                         hardening=$(($hardening + 1))
83                         AC_MSG_RESULT([yes])
84                 else
85                         AC_MSG_RESULT([no])
86                 fi
87         done
88         if test $hardening -ne $hardening_tests; then
89                 AC_MSG_WARN(
90                                 [Some hardening options are not supported by your compiler!])
91         fi
92 fi
94 for flag in -Wall -Wextra -Werror; do
95         AC_MSG_CHECKING([whether $CC accepts $flag])
97         if test_cc_flags $flag; then
98                 STRICT_CFLAGS="$STRICT_CFLAGS $flag"
99                 AC_MSG_RESULT([yes])
100         else
101                 AC_MSG_RESULT([no])
102         fi
103 done
104 AC_SUBST([STRICT_CFLAGS])
106 build_date="`date --utc '+%F %T'` (UTC)"
107 AC_DEFINE_UNQUOTED([BUILD_DATE], ["$build_date"],
108                 [Define to the date the package has been built on.])
110 AC_CHECK_HEADERS(libgen.h)
112 AC_CONFIG_FILES([Makefile src/Makefile])
113 AC_OUTPUT
115 cat <<EOF;
117 $PACKAGE_NAME has been configured successfully.
119 Run 'make' to compile the software and use 'make install' to
120 install the package into $prefix.
122 Configuration summary:
124   package version: $PACKAGE_VERSION
125   build date: $build_date
127 Please report bugs to $PACKAGE_BUGREPORT.
129 EOF