1 AC_PREREQ(2.52) 2 3 # Process this file with autoconf to produce a configure script. 4 AC_INIT([json-c], 0.12.99, [json-c (a] googlegroups.com]) 5 6 AM_INIT_AUTOMAKE 7 8 AC_PROG_MAKE_SET 9 10 AC_ARG_ENABLE(rdrand, 11 AS_HELP_STRING([--enable-rdrand], 12 [Enable RDRAND Hardware RNG Hash Seed generation on supported x86/x64 platforms.]), 13 [if test x$enableval = xyes; then 14 enable_rdrand=yes 15 AC_DEFINE(ENABLE_RDRAND, 1, [Enable RDRANR Hardware RNG Hash Seed]) 16 fi]) 17 18 if test "x$enable_rdrand" = "xyes"; then 19 AC_MSG_RESULT([RDRAND Hardware RNG Hash Seed enabled on supported x86/x64 platforms]) 20 else 21 AC_MSG_RESULT([RDRAND Hardware RNG Hash Seed disabled. Use --enable-rdrand to enable]) 22 fi 23 24 # Checks for programs. 25 26 # Checks for libraries. 27 28 # Checks for header files. 29 AM_PROG_CC_C_O 30 AC_CONFIG_HEADER(config.h) 31 AC_CONFIG_HEADER(json_config.h) 32 AC_HEADER_STDC 33 AC_CHECK_HEADERS(fcntl.h limits.h strings.h syslog.h unistd.h [sys/cdefs.h] [sys/param.h] stdarg.h locale.h endian.h) 34 AC_CHECK_HEADER(inttypes.h,[AC_DEFINE([JSON_C_HAVE_INTTYPES_H],[1],[Public define for json_inttypes.h])]) 35 36 # Checks for typedefs, structures, and compiler characteristics. 37 AC_C_CONST 38 AC_TYPE_SIZE_T 39 40 # Checks for library functions. 41 AC_FUNC_VPRINTF 42 AC_FUNC_MEMCMP 43 AC_FUNC_MALLOC 44 AC_FUNC_REALLOC 45 AC_CHECK_FUNCS(strcasecmp strdup strerror snprintf vsnprintf vasprintf open vsyslog strncasecmp setlocale) 46 AC_CHECK_DECLS([INFINITY], [], [], [[#include <math.h>]]) 47 AC_CHECK_DECLS([nan], [], [], [[#include <math.h>]]) 48 AC_CHECK_DECLS([isnan], [], [], [[#include <math.h>]]) 49 AC_CHECK_DECLS([isinf], [], [], [[#include <math.h>]]) 50 AC_CHECK_DECLS([_isnan], [], [], [[#include <float.h>]]) 51 AC_CHECK_DECLS([_finite], [], [], [[#include <float.h>]]) 52 53 #check if .section.gnu.warning accepts long strings (for __warn_references) 54 AC_LANG_PUSH([C]) 55 56 AC_MSG_CHECKING([if .gnu.warning accepts long strings]) 57 AC_LINK_IFELSE([AC_LANG_SOURCE([[ 58 extern void json_object_get(); 59 __asm__(".section .gnu.json_object_get,\n\t.ascii \"Please link against libjson-c instead of libjson\"\n\t.text"); 60 61 int main(int c,char* v) {return 0;} 62 ]])], [ 63 AC_DEFINE(HAS_GNU_WARNING_LONG, 1, [Define if .gnu.warning accepts long strings.]) 64 AC_MSG_RESULT(yes) 65 ], [ 66 AC_MSG_RESULT(no) 67 ]) 68 69 AC_LANG_POP([C]) 70 71 AM_PROG_LIBTOOL 72 73 # Check for the -Bsymbolic-functions linker flag 74 AC_ARG_ENABLE([Bsymbolic], 75 [AS_HELP_STRING([--disable-Bsymbolic], [Avoid linking with -Bsymbolic-function])], 76 [], 77 [enable_Bsymbolic=check]) 78 79 AS_IF([test "x$enable_Bsymbolic" = "xcheck"], 80 [ 81 saved_LDFLAGS="${LDFLAGS}" 82 AC_MSG_CHECKING([for -Bsymbolic-functions linker flag]) 83 LDFLAGS=-Wl,-Bsymbolic-functions 84 AC_TRY_LINK([], [int main (void) { return 0; }], 85 [ 86 AC_MSG_RESULT([yes]) 87 enable_Bsymbolic=yes 88 ], 89 [ 90 AC_MSG_RESULT([no]) 91 enable_Bsymbolic=no 92 ]) 93 LDFLAGS="${saved_LDFLAGS}" 94 ]) 95 96 AS_IF([test "x$enable_Bsymbolic" = "xyes"], [JSON_BSYMBOLIC_LDFLAGS=-Wl[,]-Bsymbolic-functions]) 97 AC_SUBST(JSON_BSYMBOLIC_LDFLAGS) 98 99 AC_CONFIG_FILES([ 100 Makefile 101 json-c.pc 102 tests/Makefile 103 json-c-uninstalled.pc 104 ]) 105 106 AC_OUTPUT 107 108