blob: ede6963ff81e92d6398d775dc18e53dc92d3d4d7 [file] [log] [blame]
jjako52c62342003-01-28 21:58:05 +00001# Process this file with autoconf to produce a configure script.
Harald Welte632e8432017-09-05 18:12:14 +02002AC_INIT(osmo-ggsn, m4_esyscmd([./git-version-gen .tarball-version]), osmocom-net-gprs@lists.osmocom.org)
jjako52c62342003-01-28 21:58:05 +00003AC_CONFIG_SRCDIR([gtp/gtp.c])
4AM_CONFIG_HEADER([config.h])
5#AC_CONFIG_HEADER([config.h])
jjako52c24142002-12-16 13:33:51 +00006
Neels Hofmeyree9d34a2016-10-01 00:51:13 +02007dnl *This* is the root dir, even if an install-sh exists in ../ or ../../
8AC_CONFIG_AUX_DIR([.])
9
Harald Welte1d8ffc62017-10-12 19:30:49 +080010AC_CONFIG_TESTDIR(tests)
jjako77edc822004-09-10 17:19:31 +000011AC_CANONICAL_SYSTEM
12
Harald Weltebdca4b72011-11-02 13:11:56 +010013dnl kernel style compile messages
14m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
15
jjako52c62342003-01-28 21:58:05 +000016# Checks for programs.
jjako52c24142002-12-16 13:33:51 +000017AC_PROG_CC
18AC_PROG_INSTALL
jjako52c62342003-01-28 21:58:05 +000019AC_PROG_AWK
20AC_PROG_CPP
Holger Hans Peter Freythere071e302012-11-02 10:00:10 +010021LT_INIT
jjako52c24142002-12-16 13:33:51 +000022
Neels Hofmeyr38929c92016-10-01 00:51:26 +020023dnl check for pkg-config (explained in detail in libosmocore/configure.ac)
24AC_PATH_PROG(PKG_CONFIG_INSTALLED, pkg-config, no)
25if test "x$PKG_CONFIG_INSTALLED" = "xno"; then
26 AC_MSG_WARN([You need to install pkg-config])
27fi
28PKG_PROG_PKG_CONFIG([0.20])
29
Emmanuel Bretelle2a103682010-09-07 17:01:20 +020030AC_CONFIG_MACRO_DIR([m4])
31AC_CONFIG_LIBOBJ_DIR([lib])
jjako52c62342003-01-28 21:58:05 +000032
jjakoc13c9df2003-07-07 15:15:38 +000033AC_ARG_ENABLE(static-exec,
34 [ --enable-static-exec Enable static linking of executables],
35 [ EXEC_LDFLAGS="-all-static"])
36
37AC_SUBST(EXEC_LDFLAGS)
jjako52c24142002-12-16 13:33:51 +000038
jjakoe31b2402004-12-30 23:07:42 +000039
jjako77edc822004-09-10 17:19:31 +000040case "${host}" in
Pau Espin Pedrol381b7232018-09-10 12:19:45 +020041 i*86-*-linux-gnu*)
Holger Hans Peter Freyther0aa17872012-11-06 14:10:17 +010042 EXEC_LDADD="" ;;
Pau Espin Pedrol381b7232018-09-10 12:19:45 +020043 *solaris*)
jjakoe31b2402004-12-30 23:07:42 +000044 EXEC_LDADD="-lresolv -lsocket -lnsl" ;;
jjako77edc822004-09-10 17:19:31 +000045esac
46
jjakoe31b2402004-12-30 23:07:42 +000047AC_SUBST(EXEC_LDADD)
jjako77edc822004-09-10 17:19:31 +000048
jjako77edc822004-09-10 17:19:31 +000049
jjako52c62342003-01-28 21:58:05 +000050# Checks for libraries.
51# FIXME: Replace `main' with a function in `-le':
jjakoc13c9df2003-07-07 15:15:38 +000052#AC_CHECK_LIB([e], [main])
jjako52c62342003-01-28 21:58:05 +000053# FIXME: Replace `main' with a function in `-lgtp':
jjakoc13c9df2003-07-07 15:15:38 +000054#AC_CHECK_LIB([gtp], [main])
jjako52c62342003-01-28 21:58:05 +000055# FIXME: Replace `main' with a function in `-links':
jjakoc13c9df2003-07-07 15:15:38 +000056#AC_CHECK_LIB([inks], [main])
jjako52c62342003-01-28 21:58:05 +000057
Maxbdc504e2017-08-28 12:15:03 +020058dnl include release helper
59RELMAKE='-include osmo-release.mk'
60AC_SUBST([RELMAKE])
61
Pablo Neira Ayuso466da992016-05-10 19:08:29 +020062dnl GTP Linux kernel dependencies
63AC_ARG_ENABLE([gtp-linux],
64 AS_HELP_STRING([--enable-gtp-linux], [Build GTP tunneling Linux kernel]),
65 [enable_gtp_linux="$enableval"], [enable_gtp_linux="no"])
Pablo Neira Ayuso4b075b62015-11-17 12:22:42 +010066
Pablo Neira Ayuso466da992016-05-10 19:08:29 +020067AS_IF([test "x$enable_gtp_linux" = "xyes"], [
Pau Espin Pedrola06b2d32018-05-03 16:05:28 +020068 PKG_CHECK_MODULES([LIBGTPNL], [libgtpnl >= 1.2.0])
Andreas Schultzc80680a2015-11-17 12:22:44 +010069])
Pablo Neira Ayuso4b075b62015-11-17 12:22:42 +010070
Pablo Neira Ayuso466da992016-05-10 19:08:29 +020071AM_CONDITIONAL([ENABLE_GTP_KERNEL], [test "$enable_gtp_linux" = "yes"])
Pablo Neira Ayuso4b075b62015-11-17 12:22:42 +010072
jjako52c62342003-01-28 21:58:05 +000073# Checks for header files.
jjako52c24142002-12-16 13:33:51 +000074AC_HEADER_STDC
75AC_HEADER_SYS_WAIT
Holger Hans Peter Freyther9c7fd8e2014-12-04 16:32:37 +010076AC_CHECK_HEADERS([arpa/inet.h fcntl.h netdb.h netinet/in.h stdint.h stdlib.h string.h sys/ioctl.h sys/socket.h sys/time.h unistd.h])
jjako52c24142002-12-16 13:33:51 +000077
jjako77edc822004-09-10 17:19:31 +000078# Check for if header
79AC_CHECK_HEADERS([linux/if.h net/if.h])
80
81# Check for tun header
82AC_CHECK_HEADERS([linux/if_tun.h net/if_tun.h])
83
84# Check for netlink and rtnetlink headers
85AC_CHECK_HEADERS([linux/netlink.h linux/rtnetlink.h])
86
87
jjako52c62342003-01-28 21:58:05 +000088# Checks for typedefs, structures, and compiler characteristics.
jjako52c24142002-12-16 13:33:51 +000089AC_C_CONST
jjako52c62342003-01-28 21:58:05 +000090AC_TYPE_MODE_T
jjako52c24142002-12-16 13:33:51 +000091AC_TYPE_SIZE_T
92AC_HEADER_TIME
93
jjako77edc822004-09-10 17:19:31 +000094# check for ifaliasreq
95AC_MSG_CHECKING(whether struct ifaliasreq exist)
96AH_TEMPLATE(HAVE_IFALIASREQ)
97AC_EGREP_HEADER(ifaliasreq, net/if.h,
98[AC_MSG_RESULT(yes)
99 AC_DEFINE([HAVE_IFALIASREQ])],
100 AC_MSG_RESULT(no))
101
102# check for ifreq.ifru_netmask
103AC_MSG_CHECKING(whether struct ifreq.ifru_netmask exist)
104AH_TEMPLATE(HAVE_IFREQ_IFRU_NETMASK)
105AC_EGREP_HEADER(ifru_netmask, linux/if.h,
106[AC_MSG_RESULT(yes)
107 AC_DEFINE([HAVE_IFREQ_IFRU_NETMASK])],
108 AC_MSG_RESULT(no))
109
110
111# check for rt_msghdr
112AC_MSG_CHECKING(whether struct rt_msghdr exist)
113AH_TEMPLATE(HAVE_RT_MSGHDR)
114AC_EGREP_HEADER(rt_msghdr, net/route.h,
115[AC_MSG_RESULT(yes)
116 AC_DEFINE([HAVE_RT_MSGHDR])],
117 AC_MSG_RESULT(no))
118
Harald Welte63ebccd2017-08-02 21:10:09 +0200119AC_MSG_CHECKING(whether struct iphdr exists)
120AH_TEMPLATE(HAVE_IPHDR)
121AC_EGREP_HEADER(struct iphdr, netinet/ip.h,
122[AC_MSG_RESULT(yes)
123 AC_DEFINE([HAVE_IPHDR])],
124 AC_MSG_RESULT(no))
jjako77edc822004-09-10 17:19:31 +0000125
jjako52c62342003-01-28 21:58:05 +0000126# Checks for library functions.
jjako52c24142002-12-16 13:33:51 +0000127AC_PROG_GCC_TRADITIONAL
jjakoacba8e62005-03-14 21:53:10 +0000128# AC_FUNC_MALLOC
Pau Espin Pedrol381b7232018-09-10 12:19:45 +0200129# AC_FUNC_MEMCMP
jjako52c62342003-01-28 21:58:05 +0000130AC_CHECK_FUNCS([gethostbyname inet_ntoa memset select socket strdup strerror strtol])
jjako1d3db972004-01-16 09:56:56 +0000131AC_CHECK_FUNCS(inet_aton inet_addr, break)
132
133# check for getopt in standard library
134adl_FUNC_GETOPT_LONG
jjako52c24142002-12-16 13:33:51 +0000135
Harald Weltea8921772017-02-23 21:55:33 +0100136AM_INIT_AUTOMAKE([foreign])
jjako52c24142002-12-16 13:33:51 +0000137
Pau Espin Pedrola06b2d32018-05-03 16:05:28 +0200138PKG_CHECK_MODULES(LIBOSMOCORE, libosmocore >= 0.11.0)
139PKG_CHECK_MODULES(LIBOSMOVTY, libosmovty >= 0.11.0)
140PKG_CHECK_MODULES(LIBOSMOCTRL, libosmoctrl >= 0.11.0)
Holger Hans Peter Freytherca524ef2014-12-03 19:59:15 +0100141
Neels Hofmeyr878ece72017-11-17 01:43:36 +0100142AC_ARG_ENABLE(sanitize,
143 [AS_HELP_STRING(
144 [--enable-sanitize],
145 [Compile with address sanitizer enabled],
146 )],
147 [sanitize=$enableval], [sanitize="no"])
148if test x"$sanitize" = x"yes"
149then
150 CFLAGS="$CFLAGS -fsanitize=address -fsanitize=undefined"
151 CPPFLAGS="$CPPFLAGS -fsanitize=address -fsanitize=undefined"
152fi
153
Neels Hofmeyrfc8357a2018-03-05 20:42:45 +0100154AC_ARG_ENABLE(werror,
155 [AS_HELP_STRING(
156 [--enable-werror],
157 [Turn all compiler warnings into errors, with exceptions:
158 a) deprecation (allow upstream to mark deprecation without breaking builds);
159 b) "#warning" pragmas (allow to remind ourselves of errors without breaking builds)
160 ]
161 )],
162 [werror=$enableval], [werror="no"])
163if test x"$werror" = x"yes"
164then
165 WERROR_FLAGS="-Werror"
166 WERROR_FLAGS+=" -Wno-error=deprecated -Wno-error=deprecated-declarations"
167 WERROR_FLAGS+=" -Wno-error=cpp" # "#warning"
168 CFLAGS="$CFLAGS $WERROR_FLAGS"
169 CPPFLAGS="$CPPFLAGS $WERROR_FLAGS"
170fi
171
Oliver Smithbf47f712018-11-14 10:47:01 +0100172# Generate manuals
173AC_ARG_ENABLE(manuals,
174 [AS_HELP_STRING(
175 [--enable-manuals],
176 [Generate manual PDFs [default=no]],
177 )],
178 [osmo_ac_build_manuals=$enableval], [osmo_ac_build_manuals="no"])
179AM_CONDITIONAL([BUILD_MANUALS], [test x"$osmo_ac_build_manuals" = x"yes"])
180AC_ARG_VAR(OSMO_GSM_MANUALS_DIR, [path to common osmo-gsm-manuals files, overriding pkg-config and "../osmo-gsm-manuals"
181 fallback])
182if test x"$osmo_ac_build_manuals" = x"yes"
183then
184 # Find OSMO_GSM_MANUALS_DIR (env, pkg-conf, fallback)
185 if test -n "$OSMO_GSM_MANUALS_DIR"; then
186 echo "checking for OSMO_GSM_MANUALS_DIR... $OSMO_GSM_MANUALS_DIR (from env)"
187 else
188 OSMO_GSM_MANUALS_DIR="$($PKG_CONFIG osmo-gsm-manuals --variable=osmogsmmanualsdir 2>/dev/null)"
189 if test -n "$OSMO_GSM_MANUALS_DIR"; then
190 echo "checking for OSMO_GSM_MANUALS_DIR... $OSMO_GSM_MANUALS_DIR (from pkg-conf)"
191 else
192 OSMO_GSM_MANUALS_DIR="../osmo-gsm-manuals"
193 echo "checking for OSMO_GSM_MANUALS_DIR... $OSMO_GSM_MANUALS_DIR (fallback)"
194 fi
195 fi
196 if ! test -d "$OSMO_GSM_MANUALS_DIR"; then
197 AC_MSG_ERROR("OSMO_GSM_MANUALS_DIR does not exist! Install osmo-gsm-manuals or set OSMO_GSM_MANUALS_DIR.")
198 fi
199
200 # Find and run check-depends
201 CHECK_DEPENDS="$OSMO_GSM_MANUALS_DIR/check-depends.sh"
202 if ! test -x "$CHECK_DEPENDS"; then
203 CHECK_DEPENDS="osmo-gsm-manuals-check-depends"
204 fi
205 if ! $CHECK_DEPENDS; then
206 AC_MSG_ERROR("missing dependencies for --enable-manuals")
207 fi
208
209 # Put in Makefile with absolute path
210 OSMO_GSM_MANUALS_DIR="$(realpath "$OSMO_GSM_MANUALS_DIR")"
211 AC_SUBST([OSMO_GSM_MANUALS_DIR])
212fi
213
Pau Espin Pedrol381b7232018-09-10 12:19:45 +0200214# https://www.freedesktop.org/software/systemd/man/daemon.html
215AC_ARG_WITH([systemdsystemunitdir],
216 [AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files])],,
217 [with_systemdsystemunitdir=auto])
218AS_IF([test "x$with_systemdsystemunitdir" = "xyes" -o "x$with_systemdsystemunitdir" = "xauto"], [
219 def_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)
220
221 AS_IF([test "x$def_systemdsystemunitdir" = "x"],
222 [AS_IF([test "x$with_systemdsystemunitdir" = "xyes"],
223 [AC_MSG_ERROR([systemd support requested but pkg-config unable to query systemd package])])
224 with_systemdsystemunitdir=no],
225 [with_systemdsystemunitdir="$def_systemdsystemunitdir"])])
226AS_IF([test "x$with_systemdsystemunitdir" != "xno"],
227 [AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])])
228AM_CONDITIONAL([HAVE_SYSTEMD], [test "x$with_systemdsystemunitdir" != "xno"])
229
Neels Hofmeyrfc8357a2018-03-05 20:42:45 +0100230AC_MSG_RESULT([CFLAGS="$CFLAGS"])
231AC_MSG_RESULT([CPPFLAGS="$CPPFLAGS"])
232
jjako52c62342003-01-28 21:58:05 +0000233AC_CONFIG_FILES([Makefile
234 doc/Makefile
Harald Weltece316f42017-09-05 22:24:45 +0200235 doc/examples/Makefile
jjako52c62342003-01-28 21:58:05 +0000236 ggsn/Makefile
237 gtp/Makefile
Harald Welte6fc42402011-05-10 17:44:39 +0200238 lib/Makefile
jjako52c62342003-01-28 21:58:05 +0000239 intl/Makefile
240 po/Makefile
241 sgsnemu/Makefile
Oliver Smithbf47f712018-11-14 10:47:01 +0100242 doc/manuals/Makefile
Pau Espin Pedrol381b7232018-09-10 12:19:45 +0200243 contrib/Makefile
244 contrib/systemd/Makefile
jjakoc13c9df2003-07-07 15:15:38 +0000245 tests/Makefile
Harald Welte1d8ffc62017-10-12 19:30:49 +0800246 tests/lib/Makefile
Harald Welte5943cbb2017-10-13 15:57:01 +0200247 tests/gtp/Makefile
Sylvain Munautca36f292011-10-18 13:15:29 +0200248 libgtp.pc
Harald Welte632e8432017-09-05 18:12:14 +0200249 osmo-ggsn.spec])
jjako52c62342003-01-28 21:58:05 +0000250AC_OUTPUT
Pablo Neira Ayuso4b075b62015-11-17 12:22:42 +0100251
252echo "
Harald Welte632e8432017-09-05 18:12:14 +0200253osmo-ggsn Configuration:
Pablo Neira Ayuso466da992016-05-10 19:08:29 +0200254 GTP Linux kernel support: ${enable_gtp_linux}"