blob: 6e30f1f869d50c7438e6862aebbb01a1287f460c [file] [log] [blame]
Jacob Appelbaumb10b0f72012-11-07 20:35:00 -08001AC_INIT([tlsdate],[0.0.4],[jacob at appelbaum.net])
Brian Aker95d9fd52012-10-15 22:44:03 -04002AC_CONFIG_AUX_DIR([config])
3AC_CONFIG_MACRO_DIR([m4])
David Goulet0809df12012-07-31 23:27:34 -04004
Brian Aker95d9fd52012-10-15 22:44:03 -04005AC_CANONICAL_TARGET
6AC_ARG_PROGRAM
7AC_USE_SYSTEM_EXTENSIONS
8
9AM_INIT_AUTOMAKE([-Wall -Werror -Wno-portability subdir-objects foreign tar-ustar])
10
11AC_PREREQ([2.63])
12
Brian Akerb12abad2012-10-16 01:25:00 -040013AC_CONFIG_HEADERS([config.h:config.in])dnl Keep filename to 8.3 for MS-DOS.
Brian Aker95d9fd52012-10-15 22:44:03 -040014
Elly Fong-Jonesa5e7fbb2013-01-08 14:08:33 -050015PKG_PROG_PKG_CONFIG
Brian Aker95d9fd52012-10-15 22:44:03 -040016LT_PREREQ([2.2])
David Goulet0809df12012-07-31 23:27:34 -040017LT_INIT
Brian Aker95d9fd52012-10-15 22:44:03 -040018LT_LANG([C])
19gl_VISIBILITY
20m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
Jacob Appelbaum5de8b0a2012-02-02 01:43:22 +010021
Brian Akerb12abad2012-10-16 01:25:00 -040022CONFIG_EXTRA
Jacob Appelbaum5de8b0a2012-02-02 01:43:22 +010023
Jacob Appelbaum96390032012-07-15 15:53:13 -040024dnl Here we should build a small program to fetch the build system time in a portable
25dnl manner. We have no Win32 users, we can fix this if we ever find one that
26dnl cares.
27COMPILE_DATE=`date +%s`
Brian Aker95d9fd52012-10-15 22:44:03 -040028AC_SUBST([COMPILE_DATE])
Jacob Appelbaum96390032012-07-15 15:53:13 -040029AC_DEFINE_UNQUOTED([RECENT_COMPILE_DATE],
30 [(uint32_t) ${COMPILE_DATE}],
31 [Time in seconds since the Disco epoch at build time])
32
Mike Frysinger0c0b4b82012-12-18 15:10:55 -050033dnl Build up the directory we will use to install certs
Brian Aker870a3142012-10-17 02:10:49 -040034TLSDATE_CA_ROOTS="${sysconfdir}/$PACKAGE_NAME/ca-roots"
35AC_SUBST([TLSDATE_CA_ROOTS])
36
Mike Frysinger0c0b4b82012-12-18 15:10:55 -050037dnl Required headers
38dnl First check to see if openssl is installed
Brian Akere601a4d2012-10-17 01:24:51 -040039AC_CHECK_HEADERS([openssl/ssl.h], ,[AC_MSG_ERROR([OpenSSL is not installed, openssl/sslh is missing])])
Brian Aker33fe4bf2012-10-17 00:30:18 -040040
Brian Aker6fa3a082012-10-17 00:16:32 -040041AC_CHECK_HEADERS([arpa/inet.h], ,[AC_MSG_ERROR([Required headers missing; compilation will not succeed])])
42AC_CHECK_HEADERS([getopt.h], ,[AC_MSG_ERROR([Required headers missing; compilation will not succeed])])
43AC_CHECK_HEADERS([grp.h], ,[AC_MSG_ERROR([Required headers missing; compilation will not succeed])])
44AC_CHECK_HEADERS([openssl/bio.h], ,[AC_MSG_ERROR([Required headers missing; compilation will not succeed])])
45AC_CHECK_HEADERS([openssl/err.h], ,[AC_MSG_ERROR([Required headers missing; compilation will not succeed])])
46AC_CHECK_HEADERS([openssl/evp.h], ,[AC_MSG_ERROR([Required headers missing; compilation will not succeed])])
Brian Aker6fa3a082012-10-17 00:16:32 -040047AC_CHECK_HEADERS([pwd.h], ,[AC_MSG_ERROR([Required headers missing; compilation will not succeed])])
48AC_CHECK_HEADERS([stdint.h], ,[AC_MSG_ERROR([Required headers missing; compilation will not succeed])])
49AC_CHECK_HEADERS([stdio.h], ,[AC_MSG_ERROR([Required headers missing; compilation will not succeed])])
50AC_CHECK_HEADERS([stdlib.h], ,[AC_MSG_ERROR([Required headers missing; compilation will not succeed])])
51AC_CHECK_HEADERS([sys/mman.h], ,[AC_MSG_ERROR([Required headers missing; compilation will not succeed])])
52AC_CHECK_HEADERS([sys/time.h], ,[AC_MSG_ERROR([Required headers missing; compilation will not succeed])])
53AC_CHECK_HEADERS([sys/types.h], ,[AC_MSG_ERROR([Required headers missing; compilation will not succeed])])
54AC_CHECK_HEADERS([sys/wait.h], ,[AC_MSG_ERROR([Required headers missing; compilation will not succeed])])
55AC_CHECK_HEADERS([time.h], ,[AC_MSG_ERROR([Required headers missing; compilation will not succeed])])
56AC_CHECK_HEADERS([unistd.h], ,[AC_MSG_ERROR([Required headers missing; compilation will not succeed])])
Jacob Appelbaum5de8b0a2012-02-02 01:43:22 +010057
Brian Aker6fa3a082012-10-17 00:16:32 -040058AC_CHECK_FUNCS([setresuid])
59AC_CHECK_FUNCS([gettimeofday])
Christian Grothoffbd15a222012-02-14 00:40:57 +010060
Mike Frysingere6edd1f2012-12-19 15:48:22 -050061AC_MSG_CHECKING([user/group to drop privs to])
62
63AC_ARG_WITH([unpriv-user],
64 [AS_HELP_STRING([--with-unpriv-user=<user>],
65 [User to drop privs to @<:@default: nobody@:>@])])
66AS_CASE([$with_unpriv_user],
67 [""|yes|no], [UNPRIV_USER="nobody"],
68 [*], [UNPRIV_USER=$with_unpriv_user])
69AC_DEFINE_UNQUOTED([UNPRIV_USER], ["${UNPRIV_USER}"], [Unprivileged user])
70
71AC_ARG_WITH([unpriv-group],
72 [AS_HELP_STRING([--with-unpriv-group=<group>],
73 [Group to drop privs to @<:@default: nogroup@:>@])])
74AS_CASE([$with_unpriv_group],
75 [""|yes|no], [UNPRIV_GROUP="nogroup"],
76 [*], [UNPRIV_GROUP=$with_unpriv_group])
77AC_DEFINE_UNQUOTED([UNPRIV_GROUP], ["${UNPRIV_GROUP}"], [Unprivileged group])
78
79AC_MSG_RESULT(${UNPRIV_USER}:${UNPRIV_GROUP})
80
Mike Frysingere270e4b2012-12-18 15:25:25 -050081dnl Check for clock_gettime. Some systems put it into -lc, while
82dnl others use -lrt. Try the first and fallback to the latter.
83RT_LIB=
84AC_CHECK_FUNC([clock_gettime], [:],
85 [AC_CHECK_LIB([rt], [clock_gettime], [RT_LIB="-lrt"],
86 [AC_MSG_ERROR([Your system lacks clock_gettime])])])
87AC_SUBST(RT_LIB)
Brian Akerd4ad5192012-10-16 03:55:56 -040088
Elly Fong-Jonesa5e7fbb2013-01-08 14:08:33 -050089AC_ARG_ENABLE([dbus],
90 [AS_HELP_STRING([--disable-dbus],
91 [Disable automatically dbus support])])
92AS_IF([test "x$enable_dbus" = xyes], [
93 PKG_CHECK_MODULES([DBUS], [dbus-1], [
94 AC_DEFINE([HAVE_DBUS], [1], [Enable dbus support])
95 AC_MSG_CHECKING([user/group to use for dbus])
96 AC_ARG_WITH([dbus-user],
97 [AS_HELP_STRING([--with-dbus-user=<user>],
98 [User to send dbus signals from @<:@default: nobody@:>@])])
99 AS_CASE([$with_dbus_user],
100 [""|yes|no], [DBUS_USER="nobody"],
101 [*], [DBUS_USER=$with_dbus_user])
102 AC_ARG_WITH([dbus-group],
103 [AS_HELP_STRING([--with-dbus-group=<group>],
104 [Group to send dbus signals from @<:@default: nogroup@:>@])])
105 AS_CASE([$with_dbus_group],
106 [""|yes|no], [DBUS_GROUP="nogroup"],
107 [*], [DBUS_GROUP=$with_dbus_group])
108 AC_MSG_RESULT(${DBUS_USER}:${DBUS_GROUP})
109 AC_DEFINE_UNQUOTED([DBUS_USER], ["${DBUS_USER}"], [DBus user])
110 AC_DEFINE_UNQUOTED([DBUS_GROUP], ["${DBUS_GROUP}"], [DBus group])
111 ], [
112 AS_IF([test "x$enable_dbus" = xyes],
113 [AC_MSG_ERROR([dbus requested but not found])])
114 ])
115 ])
116
117AC_SUBST(DBUS_CFLAGS)
118AC_SUBST(DBUS_LIBS)
119
Mike Frysinger0c0b4b82012-12-18 15:10:55 -0500120dnl Debug and hardening flags all in one shot
121dnl Always do this at the end, otherwise you end up filtering system/other libraries
Mike Frysinger8b94e112012-12-18 15:38:51 -0500122AC_ARG_ENABLE([hardened-checks],
123 [AS_HELP_STRING([--disable-hardened-checks],
124 [Disable automatically enabling hardened toolchain options])])
Brian Akerb12abad2012-10-16 01:25:00 -0400125AC_DEFUN([LOCAL_CHECK_FLAGS],[
126 AC_REQUIRE([AX_CHECK_LINK_FLAG])
127 AC_REQUIRE([AX_APPEND_COMPILE_FLAGS])
128 AC_LANG_PUSH([C])
Mike Frysinger8b94e112012-12-18 15:38:51 -0500129 AS_IF([test "x$enable_hardened_checks" != xno], [
130 CFLAGS=
131 LIBS=
132 AX_APPEND_COMPILE_FLAGS([-g -O1])
133 ], [
134 AC_MSG_WARN([using hardened flags is HIGHLY RECOMMENDED and disabling them is a BAD IDEA])
135 ])
136 AX_APPEND_COMPILE_FLAGS([-Wall -fno-strict-aliasing])
137 AS_IF([test "x$enable_hardened_checks" != xno], [
138 AX_APPEND_COMPILE_FLAGS([-D_FORTIFY_SOURCE=2 -fstack-protector-all])
139 AX_APPEND_COMPILE_FLAGS([-fwrapv -fPIE -Wstack-protector])
140 AX_APPEND_COMPILE_FLAGS([--param=ssp-buffer-size=1])
141 AX_CHECK_LINK_FLAG([-z relro -z now])
142 AX_CHECK_LINK_FLAG([-pie])
143 ])
Brian Akerb12abad2012-10-16 01:25:00 -0400144 AC_LANG_POP
145 ])
146LOCAL_CHECK_FLAGS
147
Brian Aker95d9fd52012-10-15 22:44:03 -0400148AC_CONFIG_FILES([Makefile])
149AC_OUTPUT