summaryrefslogtreecommitdiffstats
path: root/contrib/libucl/configure.ac
diff options
context:
space:
mode:
authorbapt <bapt@FreeBSD.org>2014-07-19 23:44:57 +0000
committerbapt <bapt@FreeBSD.org>2014-07-19 23:44:57 +0000
commit6f718e3669e9ecc1b1ca407a465d6ee20571a2b8 (patch)
treeba71cc26671c93ed9809f7cadb07734c0bddb4c7 /contrib/libucl/configure.ac
parent6095428430d025abcf6983536297f168bf62b45b (diff)
downloadFreeBSD-src-6f718e3669e9ecc1b1ca407a465d6ee20571a2b8.zip
FreeBSD-src-6f718e3669e9ecc1b1ca407a465d6ee20571a2b8.tar.gz
MFC: r263648, r264789, r266636
This brings: - schema validation - xpath-like interface for ucl objects Adapt pkg(7) to the new libucl API
Diffstat (limited to 'contrib/libucl/configure.ac')
-rw-r--r--contrib/libucl/configure.ac163
1 files changed, 163 insertions, 0 deletions
diff --git a/contrib/libucl/configure.ac b/contrib/libucl/configure.ac
new file mode 100644
index 0000000..de78e8b
--- /dev/null
+++ b/contrib/libucl/configure.ac
@@ -0,0 +1,163 @@
+m4_define([maj_ver], [0])
+m4_define([med_ver], [4])
+m4_define([min_ver], [1])
+m4_define([so_version], [1:0:0])
+m4_define([ucl_version], [maj_ver.med_ver.min_ver])
+
+AC_INIT([libucl],[ucl_version],[https://github.com/vstakhov/libucl],[libucl])
+AC_CONFIG_SRCDIR([configure.ac])
+AM_INIT_AUTOMAKE([1.11 foreign silent-rules -Wall -Wportability no-dist-gzip dist-xz])
+
+UCL_VERSION=ucl_version
+SO_VERSION=so_version
+
+AC_SUBST(UCL_VERSION)
+AC_SUBST(SO_VERSION)
+
+AC_PROG_CC_C99
+AM_PROG_CC_C_O
+AM_PROG_AR
+LT_INIT
+AC_CONFIG_MACRO_DIR([m4])
+AC_CONFIG_HEADERS([config.h])
+
+AC_C_CONST
+AC_TYPE_SIZE_T
+
+AC_CHECK_HEADERS_ONCE([fcntl.h unistd.h])
+AC_TYPE_OFF_T
+AC_FUNC_MMAP
+AC_CHECK_HEADERS_ONCE([fcntl.h])
+AC_CHECK_HEADERS_ONCE([sys/types.h])
+AC_CHECK_HEADERS_ONCE([sys/stat.h])
+AC_CHECK_HEADERS_ONCE([sys/param.h])
+AC_CHECK_HEADERS_ONCE([sys/mman.h])
+AC_CHECK_HEADERS_ONCE([stdlib.h])
+AC_CHECK_HEADERS_ONCE([stddef.h])
+AC_CHECK_HEADERS_ONCE([stdarg.h])
+AC_CHECK_HEADERS_ONCE([stdbool.h])
+AC_CHECK_HEADERS_ONCE([stdint.h])
+AC_CHECK_HEADERS_ONCE([string.h])
+AC_CHECK_HEADERS_ONCE([unistd.h])
+AC_CHECK_HEADERS_ONCE([ctype.h])
+AC_CHECK_HEADERS_ONCE([errno.h])
+AC_CHECK_HEADERS_ONCE([limits.h])
+AC_CHECK_HEADERS_ONCE([libgen.h])
+AC_CHECK_HEADERS_ONCE([stdio.h])
+AC_CHECK_HEADERS_ONCE([float.h])
+AC_CHECK_HEADERS_ONCE([math.h])
+
+dnl Example of default-disabled feature
+AC_ARG_ENABLE([urls], AS_HELP_STRING([--enable-urls],
+ [Enable URLs fetch (requires libfetch or libcurl) @<:@default=no@:>@]), [],
+ [enable_urls=no])
+AC_ARG_ENABLE([regex], AS_HELP_STRING([--enable-regex],
+ [Enable regex checking for schema @<:@default=yes@:>@]), [],
+ [enable_regex=yes])
+AC_ARG_ENABLE([signatures], AS_HELP_STRING([--enable-signatures],
+ [Enable signatures check (requires openssl) @<:@default=no@:>@]), [],
+ [enable_signatures=no])
+AC_ARG_ENABLE([utils],
+ AS_HELP_STRING([--enable-utils], [Build and install utils @<:@default=no@:>@]),
+ [case "${enableval}" in
+ yes) utils=true ;;
+ no) utils=false ;;
+ *) AC_MSG_ERROR([bad value ${enableval} for --enable-utils]) ;;
+ esac],[utils=false])
+AM_CONDITIONAL([UTILS], [test x$utils = xtrue])
+
+AS_IF([test "x$enable_signatures" = "xyes"], [
+ AC_SEARCH_LIBS([EVP_MD_CTX_create], [crypto], [
+ AC_DEFINE(HAVE_OPENSSL, 1, [Define to 1 if you have the 'crypto' library (-lcrypto).])
+ LIBCRYPTO_LIB="-lcrypto"
+ LIBS_EXTRA="${LIBS_EXTRA} -lcrypto"
+ ], [AC_MSG_ERROR([unable to find the EVP_MD_CTX_create() function])])
+])
+AC_SUBST(LIBCRYPTO_LIB)
+AC_PATH_PROG(PANDOC, pandoc, [/non/existent])
+
+AC_SEARCH_LIBS([clock_gettime], [rt], [], [
+ AC_CHECK_HEADER([mach/mach_time.h], [
+ AC_DEFINE(HAVE_MACH_MACH_TIME_H, 1, [Define to 1 on Darwin])
+ ], [AC_MSG_ERROR([unable to find clock_gettime or mach_absolute_time])])
+])
+AC_SEARCH_LIBS([remainder], [m], [], [AC_MSG_ERROR([unable to find remainder() function])])
+
+AS_IF([test "x$enable_regex" = "xyes"], [
+ AC_CHECK_HEADER([regex.h], [
+ AC_DEFINE(HAVE_REGEX_H, 1, [Define to 1 if you have the <regex.h> header file.])
+ AC_SEARCH_LIBS([regexec], [regex], [
+ AS_IF([test "x$ac_cv_search_regexec" = "x-lregex"], [
+ LIBREGEX_LIB="-lregex"
+ LIBS_EXTRA="${LIBS_EXTRA} -lregex"
+ ]
+ )],
+ [AC_MSG_ERROR([unable to find the regexec() function])])],
+ [AC_MSG_ERROR([unable to find the regex.h header])
+ ],
+ [#include <sys/types.h>])
+])
+AC_SUBST(LIBREGEX_LIB)
+
+AS_IF([test "x$enable_urls" = "xyes"], [
+ AC_CHECK_HEADER([fetch.h], [
+ AC_DEFINE(HAVE_FETCH_H, 1, [Define to 1 if you have the <fetch.h> header file.])
+ AC_CHECK_LIB(fetch, fetchXGet, [
+ AC_DEFINE(HAVE_LIBFETCH, 1, [Define to 1 if you have the 'fetch' library (-lfetch).])
+ LIBFETCH_LIBS="-lfetch"
+ have_libfetch="yes"
+ LIBS_EXTRA="${LIBS_EXTRA} -lfetch"
+ ])
+ ], [],[
+ #include <stdio.h>
+ #ifdef HAVE_SYS_PARAM_H
+ #include <sys/param.h>
+ #endif
+ ])
+ AC_SUBST(LIBFETCH_LIBS)
+
+ AS_IF([ test "x$have_libfetch" != "xyes"], [
+ dnl Fallback to libcurl
+ PKG_CHECK_MODULES([CURL], [libcurl], [
+ AC_DEFINE(CURL_FOUND, 1, [Use libcurl])
+ LIBS_EXTRA="${LIBS_EXTRA} -lcurl"],
+ [AC_MSG_ERROR([unable to find neither libfetch nor libcurl])])
+ ])
+ AC_SUBST(CURL_FOUND)
+ AC_SUBST(CURL_LIBS)
+ AC_SUBST(CURL_CFLAGS)
+])
+
+AC_SUBST(LIBS_EXTRA)
+
+AC_MSG_CHECKING(for GCC atomic builtins)
+AC_LINK_IFELSE([
+ AC_LANG_SOURCE([[
+ int main() {
+ volatile unsigned long val = 1;
+ __sync_synchronize();
+ __sync_val_compare_and_swap(&val, 1, 0);
+ __sync_add_and_fetch(&val, 1);
+ __sync_sub_and_fetch(&val, 1);
+ return 0;
+ }
+ ]])
+],
+[
+ AC_MSG_RESULT([yes])
+ AC_DEFINE([HAVE_ATOMIC_BUILTINS], [1], [Has gcc/MSVC atomic intrinsics])
+],
+[
+ AC_MSG_RESULT([no])
+ AC_DEFINE([HAVE_ATOMIC_BUILTINS], [0], [Has gcc/MSVC atomic intrinsics])
+ AC_MSG_WARN([Libucl references could be thread-unsafe because atomic builtins are missing])
+])
+
+AC_CONFIG_FILES(Makefile \
+ src/Makefile \
+ tests/Makefile \
+ utils/Makefile \
+ doc/Makefile \
+ libucl.pc)
+AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h])
+AC_OUTPUT
OpenPOWER on IntegriCloud