Code

58f0946427e252cbb151b7efad99c80f5085fb0e
[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 m4_divert_once([HELP_ENABLE], [
34 Build options:])
36 dnl Optionally stick to standard C99 and POSIX:2001 as close as possible.
37 AC_ARG_ENABLE([standards],
38                 AS_HELP_STRING([--enable-standards],
39                                 [C99 / POSIX standards compliance mode @<:@default=no@:>@]),
40                 [enable_standards="$enableval"],
41                 [enable_standards="no"])
43 if test "x$enable_standards" = "xyes"; then
44         AC_DEFINE([_ISOC99_SOURCE], 1,
45                         [Define to enforce ISO/IEC 9899:1999 (C99) compliance.])
46         AC_DEFINE([_POSIX_C_SOURCE], 200112L,
47                         [Define to enforce IEEE 1003.1-2001 (POSIX:2001) compliance.])
48         AC_DEFINE([_XOPEN_SOURCE], 600,
49                         [Define to enforce X/Open 6 (XSI) compliance.])
50         AC_DEFINE([_REENTRANT], 1,
51                         [Define to enable reentrant interfaces.])
52         AC_DEFINE([_THREAD_SAFE], 1,
53                         [Define to enable reentrant interfaces.])
55         for flag in -std=c99 -pedantic; do
56                 AC_MSG_CHECKING([whether $CC accepts $flag])
58                 if test_cc_flags $flag; then
59                         CFLAGS="$CFLAGS $flag"
60                         AC_MSG_RESULT([yes])
61                 else
62                         AC_MSG_RESULT([no])
63                 fi
64         done
65 fi
67 dnl Hardening (see e.g. http://wiki.debian.org/Hardening for a motivation).
68 AC_DEFINE([_FORTIFY_SOURCE], 2,
69                 [Define to enable protection against static sized buffer overflows.])
70 AC_ARG_ENABLE([hardening],
71                 AS_HELP_STRING([--disable-hardening],
72                                 [hardening options @<:@default=yes@:>@]),
73                 [enable_hardening="$enableval"],
74                 [enable_hardening="yes"])
76 if test "x$enable_hardening" = "xyes"; then
77         hardening=0
78         hardening_tests=0
79         for flag in -Wformat -Wformat-security; do
80                 hardening_tests=$(($hardening_tests + 1))
81                 AC_MSG_CHECKING([whether $CC accepts $flag])
83                 if test_cc_flags $flag; then
84                         CFLAGS="$CFLAGS $flag"
85                         hardening=$(($hardening + 1))
86                         AC_MSG_RESULT([yes])
87                 else
88                         AC_MSG_RESULT([no])
89                 fi
90         done
91         if test $hardening -ne $hardening_tests; then
92                 AC_MSG_WARN(
93                                 [Some hardening options are not supported by your compiler!])
94         fi
95 fi
97 dnl Strict checking for potential problems.
98 AC_ARG_ENABLE([strict-checks],
99                 AS_HELP_STRING([--disable-strict-checks],
100                                 [strict compiler checks @<:@default=yes@:>@]),
101                 [enable_strict_checks="$enableval"],
102                 [enable_strict_checks="yes"])
104 STRICT_CFLAGS=""
105 for flag in -Wall -Werror; do
106         AC_MSG_CHECKING([whether $CC accepts $flag])
108         if test_cc_flags $flag; then
109                 STRICT_CFLAGS="$STRICT_CFLAGS $flag"
110                 AC_MSG_RESULT([yes])
111         else
112                 AC_MSG_RESULT([no])
113         fi
114 done
116 if test "x$enable_strict_checks" = "xyes"; then
117         for flag in -Wextra \
118                         -Wbad-function-cast \
119                         -Wcast-align \
120                         -Wcast-qual \
121                         -Wconversion \
122                         -Wdeclaration-after-statement \
123                         -Wmissing-prototypes \
124                         -Wpointer-arith \
125                         -Wshadow \
126                         -Wstrict-prototypes \
127                         -Wunreachable-code \
128                         -Wvla; do
129                 AC_MSG_CHECKING([whether $CC accepts $flag])
131                 if test_cc_flags $flag; then
132                         STRICT_CFLAGS="$STRICT_CFLAGS $flag"
133                         AC_MSG_RESULT([yes])
134                 else
135                         AC_MSG_RESULT([no])
136                 fi
137         done
138 fi
139 AC_SUBST([STRICT_CFLAGS])
141 build_date="`date --utc '+%F %T'` (UTC)"
142 AC_DEFINE_UNQUOTED([BUILD_DATE], ["$build_date"],
143                 [Define to the date the package has been built on.])
145 dnl Version information provided by fb_features.h.
146 FB_VERSION_MAJOR=`echo $PACKAGE_VERSION | cut -d'.' -f1`
147 FB_VERSION_MINOR=`echo $PACKAGE_VERSION | cut -d'.' -f2`
148 FB_VERSION_PATCH=`echo $PACKAGE_VERSION | cut -d'.' -f3`
149 FB_VERSION_EXTRA=`echo $PACKAGE_VERSION | cut -d'.' -f4-`
150 FB_VERSION_STRING="$FB_VERSION_MAJOR.$FB_VERSION_MINOR.$FB_VERSION_PATCH"
152 AC_SUBST(FB_VERSION_MAJOR)
153 AC_SUBST(FB_VERSION_MINOR)
154 AC_SUBST(FB_VERSION_PATCH)
155 AC_SUBST(FB_VERSION_EXTRA)
156 AC_SUBST(FB_VERSION_STRING)
158 AC_CHECK_HEADERS(libgen.h)
160 AC_CONFIG_FILES([Makefile src/Makefile src/fb_features.h])
161 AC_OUTPUT
163 cat <<EOF;
165 $PACKAGE_NAME has been configured successfully.
167 Run 'make' to compile the software and use 'make install' to
168 install the package into $prefix.
170 Configuration summary:
172   package version: $PACKAGE_VERSION
173   build date: $build_date
175 Please report bugs to $PACKAGE_BUGREPORT.
177 EOF