iodine/configure.ac

176 lines
5 KiB
Plaintext
Raw Normal View History

2014-04-24 11:08:26 +00:00
# Process this file with autoconf to produce a configure script.
# Prologue
AC_PREREQ([2.69])
2016-12-28 10:29:42 +00:00
AC_INIT([iodine],[0.7.0],[erik@kryo.se],[],[http://dev.kryo.se/iodine/])
2014-04-24 11:08:26 +00:00
AC_CONFIG_SRCDIR([src/iodine.c])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_MACRO_DIR([autotools])
AC_CONFIG_AUX_DIR([autotools])
AM_INIT_AUTOMAKE([subdir-objects foreign -Wall])
# Misc
# Define OS to upcased "uname --kernel-name", i.e., LINUX, DARWIN, etc.
# Used by Makefile.am as cpp symbol to define.
# We use autotools canonical designation to allow cross compilation.
# It would be reasonable to, at some point, update the C sources to
# use these more canonical designations.
# But for now, we must adjust some of them.
AC_MSG_CHECKING([environment to compile for])
AC_CANONICAL_HOST
# No need to adjust these: FREEBSD, NETBSD, OPENBSD, BEOS
AS_CASE([${host_os}],
[linux-gnu], [OS=LINUX],
[mingw32], [OS=WINDOWS32],
[macos], [OS=DARWIN],
[linux-android], [OS=ANDROID],
[OS="$(echo ${host_os}|tr "a-z" "A-Z_")"])
uname_os="$(uname | tr "a-z" "A-Z")"
AC_MSG_NOTICE([host_os: ${host_os}])
AC_MSG_NOTICE([uname_os: ${uname_os}])
AC_MSG_NOTICE([adjusted OS: ${OS}])
AC_SUBST([OS])
AS_CASE([${OS}],
[WINDOWS32],
AC_DEFINE([WINVER],[0x0501],
[Define appropriately on MS Windows 32]))
# The AC_SUBST for GITREVISION is used only in legacy stanza; remove
# when unused in Makefile.am, leaving only the config.h #define.
2016-12-28 10:29:42 +00:00
AC_SUBST([GITREVISION],[$(git describe --tags --always --dirty || echo not-in-git)])
2014-04-24 11:08:26 +00:00
AC_DEFINE_UNQUOTED([GITREVISION],["${GITREVISION}"],
[Precise git commit checked out when building])
# Checks for programs
AC_PROG_CC
2016-12-28 10:31:09 +00:00
AC_PROG_CC_STDC
AS_IF([test "x${ac_cv_prog_cc_stdc}" = xno],
[AC_MSG_WARN([Unable to engage Standard C (C99) option])],)
2016-12-28 10:31:44 +00:00
AX_CFLAGS_WARN_ALL
2014-04-24 11:08:26 +00:00
AC_PROG_INSTALL
# Process options
AC_ARG_ENABLE([systemd],
[AS_HELP_STRING([--enable-systemd],
[enable systemd support @<:@default=check@:>@])],,
[enable_systemd=check])
AC_ARG_ENABLE([selinux],
[AS_HELP_STRING([--enable-selinux],
[enable selinux support @<:@default=check@:>@])],,
[enable_selinux=check])
# Checks for libraries
# Unclear why pthread is needed.
# Uncomment and replace ? by called procedure requiring -lpthread.
#AC_SEARCH_LIBS([?], [pthread])
AC_SEARCH_LIBS([uncompress], [z])
# Enable systemd per option by setting HAVE_SYSTEMD
AS_CASE([${enable_systemd}],
[yes|check],
[AC_MSG_CHECKING([systemd])
AC_SEARCH_LIBS([sd_listen_fds], [systemd-daemon])
AC_CHECK_FUNC([sd_listen_fds],
[AC_MSG_RESULT([enabled: systemd])
AC_DEFINE([HAVE_SYSTEMD],[1],
[Define to 1 to enable systemd support])],
AS_CASE([${enable_systemd}],
[yes],
AC_MSG_ERROR([systemd support not available]),
AC_MSG_RESULT([disabled: systemd])))],
[no],,
[AC_MSG_ERROR([invalid argument, --enable-systemd=${enable_systemd}])])
# Enable selinux per option by setting HAVE_SETCON
AS_CASE([${enable_selinux}],
[yes|check],
[AC_SEARCH_LIBS([setcon], [selinux])
AC_CHECK_FUNCS([setcon],
AC_MSG_RESULT([enabled: selinux]),
AS_CASE([${enable_selinux}],
[yes],
AC_MSG_ERROR([selinux support not available]),
[check],
AC_MSG_RESULT([disabled: selinux])))],
[no],
AC_MSG_RESULT([disabled: selinux]),
[AC_MSG_ERROR([invalid argument, --enable-selinux=${enable_selinux}])])
# The check library is used for the unit testing. Not bothering to
# implement an --enable-tests option, as they are only run by "make
# check" so there is no user-level difference. If the unit tests
# won't even *compile* there is probably a better solution than just
# turning them off, and build time is minimal.
PKG_CHECK_MODULES(CHECK,[check],
AC_MSG_RESULT([enabled: unit testing]),
AC_MSG_RESULT([disabled: unit testing]))
AM_CONDITIONAL([HAVE_CHECK],[test -z "${CHECK_PKG_ERRORS}"])
# For each commented AC_SEARCH_LIBS below, uncomment and replace ? by
# called procedure provided only by that library on the platform(s) in
# question.
# for SunOS / solaris:
#AC_SEARCH_LIBS([?], [nsl])
# for BeOS:
#AC_SEARCH_LIBS([?], [bind])
#AC_SEARCH_LIBS([?], [bsd])
# for SunOS / solaris / BeOS:
#AC_SEARCH_LIBS([?], [socket])
# for Haiku:
#AC_SEARCH_LIBS([?], [network])
# for MS windows32:
#AC_SEARCH_LIBS([?], [ws2_32])
#AC_SEARCH_LIBS([?], [iphlpapi])
# Checks for headers
AC_CHECK_HEADERS([arpa/inet.h fcntl.h netdb.h netinet/in.h stdint.h stdlib.h string.h sys/ioctl.h sys/param.h sys/socket.h sys/time.h syslog.h termios.h unistd.h systemd/sd-daemon.h selinux/selinux.h])
# Checks for typedefs, structures, and compiler characteristics
AC_CHECK_TYPES([socklen_t],,
AC_DEFINE([socklen_t],[int],
[define to int if type socklen_t not found]))
AC_TYPE_UID_T
AC_C_INLINE
AC_TYPE_SIZE_T
AC_TYPE_SSIZE_T
AC_TYPE_UINT16_T
AC_TYPE_UINT32_T
AC_TYPE_UINT8_T
# Checks for library functions
AC_FUNC_FORK
AC_FUNC_MALLOC
AC_CHECK_FUNCS([alarm dup2 inet_ntoa memset select socket strcasecmp strchr strdup strerror strrchr strstr])
# Epilogue
AC_CONFIG_FILES([Makefile])
AC_OUTPUT