]> jfr.im git - irc/atheme/libmowgli-2.git/blob - configure.ac
configure: update version to 2.1.0
[irc/atheme/libmowgli-2.git] / configure.ac
1 # -*- Autoconf -*-
2 # Process this file with autoconf to produce a configure script.
3
4 AC_PREREQ(2.59)
5 AC_INIT([libmowgli-2], [2.1.0], [https://github.com/atheme/libmowgli-2])
6 AC_CONFIG_SRCDIR([src])
7 AC_CONFIG_HEADER([src/libmowgli/platform/autoconf.h])
8
9 AC_CANONICAL_HOST
10 AC_CANONICAL_TARGET
11
12 AC_PROG_CC
13 AC_PROG_CPP
14 AC_PROG_INSTALL
15 AC_PROG_LN_S
16
17 AC_PROG_CC_C99
18 AS_IF([test "x$ac_cv_prog_cc_c99" = "xno"], [
19 AC_MSG_ERROR([C compiler does not support C99], 1)
20 ])
21
22 MORECFLAGS="-pipe -Wall -Wextra -Wno-unused-value -Wno-unused-parameter -Wno-missing-field-initializers"
23 AS_IF([test "x$GCC" = "xyes"], [
24 CFLAGS="$CFLAGS $MORECFLAGS"
25 ])
26
27 AC_CHECK_HEADERS([poll.h winsock2.h sys/epoll.h sys/select.h sys/pstat.h sys/prctl.h])
28 AC_CHECK_FUNCS([fcntl kqueue mmap select dispatch_block port_create setproctitle pstat])
29
30 AC_CACHE_CHECK([for PS_STRINGS], [pgac_cv_var_PS_STRINGS],
31 [AC_TRY_LINK(
32 [#include <machine/vmparam.h>
33 #include <sys/exec.h>
34 ],
35 [PS_STRINGS->ps_nargvstr = 1;
36 PS_STRINGS->ps_argvstr = "foo";],
37 [pgac_cv_var_PS_STRINGS=yes],
38 [pgac_cv_var_PS_STRINGS=no])])
39 if test "$pgac_cv_var_PS_STRINGS" = yes ; then
40 AC_DEFINE([HAVE_PS_STRINGS], [], [Define to 1 if the PS_STRINGS struct exists on your platform (likely no).])
41 fi
42
43 AC_PATH_PROG(AR, ar)
44 AC_PATH_PROG(RANLIB, ranlib)
45
46 LIBMOWGLI_MODULES="core base container dns eventloop ext linebuf module object platform thread vio"
47 AC_SUBST(LIBMOWGLI_MODULES)
48
49 LIBMOWGLI_MODULE_BUILD="$(echo && echo x)"
50 LIBMOWGLI_MODULE_BUILD="${LIBMOWGLI_MODULE_BUILD%x}"
51
52 LIBMOWGLI_SHARED_MODULES=""
53 AC_ARG_ENABLE([shared], [AS_HELP_STRING([--disable-shared], [do not build shared library])])
54 AS_IF([test x"$enable_shared" != x"no"], [
55 BUILDSYS_SHARED_LIB
56 BUILDSYS_PROG_IMPLIB
57 AC_SUBST([LIBMOWGLI_SHARED_LIB], [${LIB_PREFIX}mowgli-2${LIB_SUFFIX}])
58
59 for i in $LIBMOWGLI_MODULES
60 do
61 UPPER="[$(echo $i | tr '[:lower:]' '[:upper:]')]"
62 LIBMOWGLI_SHARED_MODULES="$LIBMOWGLI_SHARED_MODULES $i/mowgli.$i.lib.a"
63 LIBMOWGLI_MODULE_BUILD="$LIBMOWGLI_MODULE_BUILD$(echo LIBMOWGLI_SHARED_$UPPER = mowgli.$i.lib.a && echo x)"
64 LIBMOWGLI_MODULE_BUILD="${LIBMOWGLI_MODULE_BUILD%x}"
65 done
66 ])
67
68 LIBMOWGLI_STATIC_MODULES=""
69 AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static], [build static library])])
70 AS_IF([test x"$enable_static" = x"yes" -o x"$enable_shared" = x"no"], [
71 AC_SUBST([LIBMOWGLI_STATIC_LIB], [libmowgli-2.a])
72
73 for i in $LIBMOWGLI_MODULES
74 do
75 UPPER="[$(echo $i | tr '[:lower:]' '[:upper:]')]"
76 LIBMOWGLI_STATIC_MODULES="$LIBMOWGLI_STATIC_MODULES $i/mowgli.$i.a"
77 LIBMOWGLI_MODULE_BUILD="$LIBMOWGLI_MODULE_BUILD$(echo LIBMOWGLI_STATIC_$UPPER = mowgli.$i.a && echo x)"
78 LIBMOWGLI_MODULE_BUILD="${LIBMOWGLI_MODULE_BUILD%x}"
79 done
80 ])
81
82 AC_MSG_CHECKING(OS type)
83 case "$target" in
84 *-*-mingw32)
85 AC_MSG_RESULT([win32])
86 LIBMOWGLI_OS="win32"
87
88 LIBS="$LIBS -lwsock32 -lws2_32"
89
90 AS_IF([test x"$LIBMOWGLI_SHARED_MODULES" != x""], [
91 LIBMOWGLI_SHARED_MODULES="$LIBMOWGLI_SHARED_MODULES platform/win32/mowgli.platform.win32.lib.a"
92 LIBMOWGLI_MODULE_BUILD="$LIBMOWGLI_MODULE_BUILD$(echo LIBMOWGLI_SHARED_PLATFORM_WIN32 = mowgli.platform.win32.lib.a && echo x)"
93 LIBMOWGLI_MODULE_BUILD="${LIBMOWGLI_MODULE_BUILD%x}"
94 ])
95
96 AS_IF([test x"$LIBMOWGLI_STATIC_MODULES" != x""], [
97 LIBMOWGLI_STATIC_MODULES="$LIBMOWGLI_STATIC_MODULES platform/win32/mowgli.platform.win32.a"
98 LIBMOWGLI_MODULE_BUILD="$LIBMOWGLI_MODULE_BUILD$(echo LIBMOWGLI_STATIC_PLATFORM_WIN32 = mowgli.platform.win32.a && echo x)"
99 LIBMOWGLI_MODULE_BUILD="${LIBMOWGLI_MODULE_BUILD%x}"
100 ])
101 ;;
102 *)
103 AC_MSG_RESULT([posix])
104 LIBMOWGLI_OS="posix"
105
106 ACX_PTHREAD
107 CPPFLAGS="$CFLAGS $PTHREAD_CFLAGS"
108 LIBS="$PTHREAD_LIBS $LIBS"
109 AC_CHECK_LIB(dl, dlopen, [LIBS="$LIBS -ldl"])
110 AC_CHECK_LIB(rt, clock_gettime, [LIBS="$LIBS -lrt"])
111 ;;
112 esac
113 AC_SUBST([LIBMOWGLI_OS])
114 AC_SUBST([LIBMOWGLI_SHARED_MODULES])
115 AC_SUBST([LIBMOWGLI_STATIC_MODULES])
116 AC_SUBST([LIBMOWGLI_MODULE_BUILD])
117
118 OPENSSL="no"
119 AX_CHECK_OPENSSL([
120 OPENSSL="yes"
121 AC_DEFINE(HAVE_OPENSSL,[1], [Define to 1 if OpenSSL is available])
122 ])
123 AS_IF([test x"$OPENSSL" = x"yes"], [
124 LIBS="$LIBS $OPENSSL_LIBS"
125 LDFLAGS="$LDFLAGS $OPENSSL_LDFLAGS"
126 CPPFLAGS="$CPPFLAGS $OPENSSL_INCLUDES"
127 ])
128
129 EXAMPLES_BUILD=""
130 EXAMPLES="no"
131 AC_ARG_ENABLE([examples], [AS_HELP_STRING([--enable-examples], [build examples])])
132 AS_IF([test x"$enable_examples" = x"yes"], [
133 EXAMPLES_BUILD="examples"
134 EXAMPLES="yes"
135 ])
136
137 AC_SUBST(EXAMPLES_BUILD)
138
139 BUILDSYS_INIT
140 BUILDSYS_TOUCH_DEPS
141
142 AC_CONFIG_FILES([buildsys.mk extra.mk libmowgli-2.pc])
143 AC_OUTPUT
144
145 cat << _EOF_
146
147 Configuration:
148 OpenSSL support: ${OPENSSL}
149 Examples: ${EXAMPLES}
150
151 Now type "make" to build, and "make install" to install.
152 Thank you for using libmowgli.
153
154 _EOF_