summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
authorLi Baiyang <[email protected]>2018-11-13 10:33:59 +0800
committerLi Baiyang <[email protected]>2018-11-13 10:33:59 +0800
commit45fc5bdffc619b424608016c94c7174897f318e9 (patch)
tree28777e26d3b979eb7567ae804a4d01e33bdcaca0 /configure.ac
initialize
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac132
1 files changed, 132 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..c494746
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,132 @@
+# -*- Autoconf -*-
+# Process this file with autoconf to produce a configure script.
+
+AC_PREREQ([2.63])
+AC_INIT([libmaxminddb], [1.3.2], [[email protected]])
+AC_CONFIG_SRCDIR([include/maxminddb.h])
+AC_CONFIG_HEADERS([config.h include/maxminddb_config.h])
+
+PKG_PROG_PKG_CONFIG
+m4_ifdef([PKG_INSTALLDIR], [PKG_INSTALLDIR], [AC_SUBST([pkgconfigdir], [${libdir}/pkgconfig])])
+AC_CONFIG_FILES([src/libmaxminddb.pc])
+
+LT_INIT
+AM_INIT_AUTOMAKE(foreign m4_esyscmd([case `automake --version | head -n 1` in
+ *1.14*) echo subdir-objects;;
+ *1.11*);;
+ *) echo serial-tests;;
+ esac]))
+AC_PROG_LIBTOOL
+# Checks for programs.
+AC_PROG_CC_C99
+
+# Copied from http://stackoverflow.com/a/10682813/9832 and tweaked for C (as
+# opposed to C++)
+#
+# AX_CHECK_CFLAGS(ADDITIONAL-CFLAGS, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND)
+#
+# checks whether the $(CC) compiler accepts the ADDITIONAL-CFLAGS
+# if so, they are added to the CXXFLAGS
+AC_DEFUN([AX_CHECK_CFLAGS],
+[
+ AC_MSG_CHECKING([whether compiler accepts "$1"])
+ cat > conftest.c << EOF
+ int main(){
+ return 0;
+ }
+EOF
+ if $CC $CFLAGS -o conftest.o conftest.c [$1] > /dev/null 2>&1
+ then
+ AC_MSG_RESULT([yes])
+ CFLAGS="${CFLAGS} [$1]"
+ [$2]
+ else
+ AC_MSG_RESULT([no])
+ [$3]
+ fi
+])dnl AX_CHECK_CFLAGS
+
+AX_CHECK_CFLAGS([-fms-extensions])
+
+# We will add this back for non-debug builds in the common.mk file
+CFLAGS=`echo ${CFLAGS} | sed 's/-O2//'`
+CXXFLAGS=`echo ${CXXFLAGS} | sed 's/-O2//'`
+
+# autoconf insists on giving us gnu99 if it's available
+CC=`echo ${CC} | sed 's/-std=gnu99/-std=c99/'`
+
+AC_C_RESTRICT
+
+AC_CHECK_HEADERS([arpa/inet.h assert.h fcntl.h inttypes.h libgen.h math.h netdb.h netinet/in.h stdarg.h stdbool.h stdint.h stdio.h stdlib.h string.h sys/mman.h sys/socket.h sys/stat.h sys/time.h sys/types.h unistd.h])
+
+# configure generates an invalid config for MinGW because of the type checks
+# so we only run them on non MinGW-Systems. For MinGW we also need to link
+# against ws2_32.
+AC_CANONICAL_HOST
+is_windows=false
+case $host_os in
+ mingw*)
+ LDFLAGS="-lws2_32"
+ is_windows=true
+ ;;
+ *)
+ AC_TYPE_OFF_T
+ AC_TYPE_SIZE_T
+ AC_TYPE_SSIZE_T
+ AC_TYPE_UINT8_T
+ AC_TYPE_UINT32_T
+ AC_TYPE_UINT64_T
+ ;;
+esac
+
+AM_CONDITIONAL([WINDOWS], [test x$is_windows = xtrue])
+
+# This check is backwards in order to make life easier for people writing
+# extensions in other languages that link to this library. If they want to
+# simply assume that they are using a newish compiler, they don't need to
+# check for this type nor do they need to define anything on the CLI. They'll
+# just get code that assumes this type exists.
+AC_CHECK_TYPE(
+ [unsigned __int128],
+ [AC_DEFINE([MMDB_UINT128_IS_BYTE_ARRAY], [0], [Missing the unsigned __int128 type])],
+ [AC_CHECK_TYPE(
+ [unsigned int __attribute__((mode(TI)))],
+ [AC_DEFINE([MMDB_UINT128_IS_BYTE_ARRAY], [0], [Missing the unsigned __int128 type])
+ AC_DEFINE([MMDB_UINT128_USING_MODE], [1], [int128 types are available with __attribute__((mode(TI)))])],
+ [AC_DEFINE([MMDB_UINT128_IS_BYTE_ARRAY], [1], [Missing the unsigned __int128 type])])])
+
+AC_CHECK_TYPES([boolean])
+
+AC_CHECK_FUNCS([clock_gettime open_memstream])
+
+AC_C_BIGENDIAN(
+ [AC_DEFINE([MMDB_LITTLE_ENDIAN], [0], [System is big-endian])],
+ [AC_DEFINE([MMDB_LITTLE_ENDIAN], [1], [System is little-endian])])
+
+AC_FUNC_MMAP
+
+AC_SEARCH_LIBS([fabs], [m])
+AC_SEARCH_LIBS([fabsf], [m])
+AC_SEARCH_LIBS([getaddrinfo], [socket])
+
+AC_ARG_ENABLE(
+ [debug],
+ [ --enable-debug Turn on debugging],
+ [case "${enableval}" in
+ yes) debug=true ;;
+ no) debug=false ;;
+ *) AC_MSG_ERROR([bad value ${enableval} for --enable-debug]) ;;
+ esac],[debug=false])
+AM_CONDITIONAL([DEBUG], [test x$debug = xtrue])
+
+AC_ARG_ENABLE([tests],
+ AS_HELP_STRING([--enable-tests], [Compilation of tests code]),
+ [enable_tests=${enableval}],
+ [enable_tests=yes])
+AM_CONDITIONAL([TESTS], [test "${enable_tests}" = "yes"])
+
+AC_CONFIG_FILES([Makefile
+ src/Makefile
+ bin/Makefile
+ t/Makefile])
+AC_OUTPUT