configure.ac revision 263646
1m4_define([maj_ver], [0])
2m4_define([med_ver], [3])
3m4_define([min_ver], [0])
4m4_define([so_version], [maj_ver:med_ver])
5m4_define([ucl_version], [maj_ver.med_ver.min_ver])
6
7AC_INIT([libucl],[ucl_version],[https://github.com/vstakhov/libucl],[libucl])
8AC_CONFIG_SRCDIR([configure.ac])
9AM_INIT_AUTOMAKE([1.11 foreign silent-rules -Wall -Wportability no-dist-gzip dist-xz])
10
11UCL_VERSION=ucl_version
12SO_VERSION=so_version
13
14AC_SUBST(UCL_VERSION)
15AC_SUBST(SO_VERSION)
16
17AC_PROG_CC_C99
18AM_PROG_CC_C_O
19AM_PROG_AR
20LT_INIT
21AC_CONFIG_MACRO_DIR([m4])
22AC_CONFIG_HEADERS([config.h])
23
24AC_C_CONST
25AC_TYPE_SIZE_T
26
27AC_CHECK_HEADERS_ONCE([fcntl.h unistd.h])
28AC_TYPE_OFF_T
29AC_FUNC_MMAP
30AC_CHECK_HEADERS_ONCE([fcntl.h])
31AC_CHECK_HEADERS_ONCE([sys/types.h])
32AC_CHECK_HEADERS_ONCE([sys/stat.h])
33AC_CHECK_HEADERS_ONCE([sys/param.h])
34AC_CHECK_HEADERS_ONCE([sys/mman.h])
35AC_CHECK_HEADERS_ONCE([stdlib.h])
36AC_CHECK_HEADERS_ONCE([stddef.h])
37AC_CHECK_HEADERS_ONCE([stdarg.h])
38AC_CHECK_HEADERS_ONCE([stdbool.h])
39AC_CHECK_HEADERS_ONCE([stdint.h])
40AC_CHECK_HEADERS_ONCE([string.h])
41AC_CHECK_HEADERS_ONCE([unistd.h])
42AC_CHECK_HEADERS_ONCE([ctype.h])
43AC_CHECK_HEADERS_ONCE([errno.h])
44AC_CHECK_HEADERS_ONCE([limits.h])
45AC_CHECK_HEADERS_ONCE([libgen.h])
46AC_CHECK_HEADERS_ONCE([stdio.h])
47AC_CHECK_HEADERS_ONCE([float.h])
48AC_CHECK_HEADERS_ONCE([math.h])
49
50dnl Example of default-disabled feature
51AC_ARG_ENABLE([urls], AS_HELP_STRING([--enable-urls], [Enable URLs fetch (requires libfetch or libcurl)]))
52AC_ARG_ENABLE([signatures], AS_HELP_STRING([--enable-signatures],
53	[Enable signatures check (requires openssl)]))
54AC_ARG_ENABLE([utils],
55	[--enable-utils Build and install utils],
56	[case "${enableval}" in
57  		yes) utils=true ;;
58  		no)  utils=false ;;
59  		*) AC_MSG_ERROR([bad value ${enableval} for --enable-utils]) ;;
60	esac],[utils=false])
61AM_CONDITIONAL([UTILS], [test x$utils = xtrue])
62
63AS_IF([test "x$enable_signatures" = "xyes"], [
64	AC_SEARCH_LIBS([EVP_MD_CTX_create], [crypto], [
65		AC_DEFINE(HAVE_OPENSSL, 1, [Define to 1 if you have the 'crypto' library (-lcrypto).])
66		LIBSSL_LIB="-lcrypto"
67		LIBS_EXTRA="${LIBS_EXTRA} -lcrypto"
68		], [AC_MSG_ERROR([unable to find the EVP_MD_CTX_create() function])])
69])
70
71AC_PATH_PROG(PANDOC, pandoc, [/non/existent])
72
73AC_SEARCH_LIBS([clock_gettime], [rt], [], [
74	AC_CHECK_HEADER([mach/mach_time.h], [
75		AC_DEFINE(HAVE_MACH_MACH_TIME_H, 1, [Define to 1 on Darwin])
76	], [AC_MSG_ERROR([unable to find clock_gettime or mach_absolute_time])])
77])
78AC_SEARCH_LIBS([remainder], [m], [], [AC_MSG_ERROR([unable to find remainder() function])])
79
80AC_CHECK_HEADER([regex.h], [
81	AC_DEFINE(HAVE_REGEX_H, 1, [Define to 1 if you have the <regex.h> header file.])
82	],
83	[AC_MSG_ERROR([unable to find the regex.h header])],
84	[#include <sys/types.h>])
85
86AS_IF([test "x$enable_urls" = "xyes"], [
87	AC_CHECK_HEADER([fetch.h], [
88		AC_DEFINE(HAVE_FETCH_H, 1, [Define to 1 if you have the <fetch.h> header file.])
89		AC_CHECK_LIB(fetch, fetchXGet, [
90			AC_DEFINE(HAVE_LIBFETCH, 1, [Define to 1 if you have the 'fetch' library (-lfetch).])
91			LIBFETCH_LIBS="-lfetch"
92			have_libfetch="yes"
93			LIBS_EXTRA="${LIBS_EXTRA} -lfetch"
94		])
95	], [],[
96	#include <stdio.h>
97	#ifdef HAVE_SYS_PARAM_H
98	#include <sys/param.h>
99	#endif
100	])
101	AC_SUBST(LIBFETCH_LIBS)
102
103	AS_IF([ test "x$have_libfetch" != "xyes"], [
104		dnl Fallback to libcurl
105		PKG_CHECK_MODULES([CURL], [libcurl], [
106			AC_DEFINE(CURL_FOUND, 1, [Use libcurl])
107			LIBS_EXTRA="${LIBS_EXTRA} -lcurl"],
108		[AC_MSG_ERROR([unable to find neither libfetch nor libcurl])])
109	])
110	AC_SUBST(CURL_FOUND)
111	AC_SUBST(CURL_LIBS)
112	AC_SUBST(CURL_CFLAGS)
113])
114
115AC_SUBST(LIBS_EXTRA)
116
117AC_CONFIG_FILES(Makefile \
118	src/Makefile \
119	tests/Makefile \
120	utils/Makefile \
121	doc/Makefile \
122	libucl.pc)
123AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h])
124AC_OUTPUT
125