Blame configure.ac

Packit Service def718
AC_PREREQ(2.64)
Packit Service def718
Packit Service def718
# Process this file with autoconf to produce a configure script.
Packit Service def718
AC_INIT([json-c], 0.13.1, [json-c@googlegroups.com])
Packit Service def718
Packit Service def718
AM_INIT_AUTOMAKE
Packit Service def718
Packit Service def718
AC_CONFIG_MACRO_DIRS([autoconf-archive/m4])
Packit Service def718
Packit Service def718
AC_PROG_MAKE_SET
Packit Service def718
Packit Service def718
AC_CANONICAL_HOST
Packit Service def718
Packit Service def718
AC_ARG_ENABLE(threading,
Packit Service def718
 AS_HELP_STRING([--enable-threading],
Packit Service def718
   [Enable code to support partly multi-threaded use]),
Packit Service def718
[if test x$enableval = xyes; then
Packit Service def718
  enable_threading=yes
Packit Service def718
  AC_DEFINE(ENABLE_THREADING, 1, [Enable partial threading support])
Packit Service def718
fi])
Packit Service def718
Packit Service def718
if test "x$enable_threading" = "xyes"; then
Packit Service def718
  AC_MSG_RESULT([Partial multi-threaded support enabled.])
Packit Service def718
else
Packit Service def718
  AC_MSG_RESULT([Multi-threaded support disabled. Use --enable-threading to enable.])
Packit Service def718
fi
Packit Service def718
Packit Service def718
AC_ARG_ENABLE(rdrand,
Packit Service def718
 AS_HELP_STRING([--enable-rdrand],
Packit Service def718
   [Enable RDRAND Hardware RNG Hash Seed generation on supported x86/x64 platforms.]),
Packit Service def718
[if test x$enableval = xyes; then
Packit Service def718
  enable_rdrand=yes
Packit Service def718
  AC_DEFINE(ENABLE_RDRAND, 1, [Enable RDRAND Hardware RNG Hash Seed])
Packit Service def718
fi])
Packit Service def718
Packit Service def718
if test "x$enable_rdrand" = "xyes"; then
Packit Service def718
  AC_MSG_RESULT([RDRAND Hardware RNG Hash Seed enabled on supported x86/x64 platforms])
Packit Service def718
else
Packit Service def718
  AC_MSG_RESULT([RDRAND Hardware RNG Hash Seed disabled. Use --enable-rdrand to enable])
Packit Service def718
fi
Packit Service def718
Packit Service def718
# enable silent build by default
Packit Service def718
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
Packit Service def718
Packit Service def718
# Checks for programs.
Packit Service def718
Packit Service def718
# Checks for libraries.
Packit Service def718
Packit Service def718
# Checks for header files.
Packit Service def718
AM_PROG_CC_C_O
Packit Service def718
AC_PROG_CC_C99
Packit Service def718
AC_CONFIG_HEADER(config.h)
Packit Service def718
AC_CONFIG_HEADER(json_config.h)
Packit Service def718
AC_HEADER_STDC
Packit Service def718
AC_CHECK_HEADERS(fcntl.h limits.h strings.h syslog.h unistd.h [sys/cdefs.h] [sys/param.h] stdarg.h locale.h xlocale.h endian.h)
Packit Service def718
AC_CHECK_HEADER(inttypes.h,[AC_DEFINE([JSON_C_HAVE_INTTYPES_H],[1],[Public define for json_inttypes.h])])
Packit Service def718
Packit Service def718
# Checks for typedefs, structures, and compiler characteristics.
Packit Service def718
AC_C_CONST
Packit Service def718
AC_TYPE_SIZE_T
Packit Service def718
Packit Service def718
AC_CACHE_CHECK([for __thread support], ac_cv___thread, [dnl
Packit Service def718
AC_LINK_IFELSE([dnl
Packit Service def718
AC_LANG_PROGRAM([[#undef __thread
Packit Service def718
static __thread int a; int foo (int b) { return a + b; }]],
Packit Service def718
		[[exit (foo (0));]])],
Packit Service def718
	       ac_cv___thread=yes, ac_cv___thread=no)
Packit Service def718
])
Packit Service def718
AS_IF([test "x$ac_cv___thread" != xno],
Packit Service def718
[AC_DEFINE(HAVE___THREAD, 1, [Have __thread])
Packit Service def718
 AC_DEFINE(SPEC___THREAD, [__thread], [Specifier for __thread])]
Packit Service def718
)
Packit Service def718
Packit Service def718
# Checks for library functions.
Packit Service def718
AC_FUNC_VPRINTF
Packit Service def718
AC_FUNC_MEMCMP
Packit Service def718
AC_CHECK_FUNCS([realloc])
Packit Service def718
AC_CHECK_FUNCS(strcasecmp strdup strerror snprintf vsnprintf vasprintf open vsyslog strncasecmp setlocale)
Packit Service def718
AC_CHECK_DECLS([INFINITY], [], [], [[#include <math.h>]])
Packit Service def718
AC_CHECK_DECLS([nan], [], [], [[#include <math.h>]])
Packit Service def718
AC_CHECK_DECLS([isnan], [], [], [[#include <math.h>]])
Packit Service def718
AC_CHECK_DECLS([isinf], [], [], [[#include <math.h>]])
Packit Service def718
AC_CHECK_DECLS([_isnan], [], [], [[#include <float.h>]])
Packit Service def718
AC_CHECK_DECLS([_finite], [], [], [[#include <float.h>]])
Packit Service def718
AC_MSG_CHECKING(for GCC atomic builtins)
Packit Service def718
AC_LINK_IFELSE(
Packit Service def718
[
Packit Service def718
 AC_LANG_SOURCE([[
Packit Service def718
   int main() {
Packit Service def718
      volatile unsigned int val = 1;
Packit Service def718
      /* Note: __sync_val_compare_and_swap isn't checked here
Packit Service def718
       * because it's protected by __GCC_HAVE_SYNC_COMPARE_AND_SWAP_<n>,
Packit Service def718
       * which is automatically defined by gcc.
Packit Service def718
       */
Packit Service def718
      __sync_add_and_fetch(&val, 1);
Packit Service def718
      __sync_sub_and_fetch(&val, 1);
Packit Service def718
      return 0;
Packit Service def718
   }
Packit Service def718
 ]])
Packit Service def718
],
Packit Service def718
[
Packit Service def718
 AC_MSG_RESULT([yes])
Packit Service def718
 AC_DEFINE([HAVE_ATOMIC_BUILTINS],[1],[Has atomic builtins])
Packit Service def718
],
Packit Service def718
[
Packit Service def718
 AC_MSG_RESULT([no])
Packit Service def718
 AC_MSG_WARN([json-c will be built without atomic refcounts because atomic builtins are missing])
Packit Service def718
])
Packit Service def718
Packit Service def718
case "${host_os}" in
Packit Service def718
	linux*)
Packit Service def718
		AC_CHECK_FUNCS([uselocale])
Packit Service def718
		;;
Packit Service def718
	*)	# Nothing
Packit Service def718
		;;
Packit Service def718
esac
Packit Service def718
Packit Service def718
if test "$ac_cv_have_decl_isnan" = "yes" ; then
Packit Service def718
   AC_TRY_LINK([#include <math.h>], [float f = 0.0; return isnan(f)], [], [LIBS="$LIBS -lm"])
Packit Service def718
fi
Packit Service def718
Packit Service def718
#check if .section.gnu.warning accepts long strings (for __warn_references)
Packit Service def718
AC_LANG_PUSH([C])
Packit Service def718
Packit Service def718
AC_MSG_CHECKING([if .gnu.warning accepts long strings])
Packit Service def718
AC_LINK_IFELSE([AC_LANG_SOURCE([[
Packit Service def718
extern void json_object_get();
Packit Service def718
__asm__(".section .gnu.json_object_get,\n\t.ascii \"Please link against libjson-c instead of libjson\"\n\t.text");
Packit Service def718
Packit Service def718
int main(int c,char* v) {return 0;}
Packit Service def718
]])], [
Packit Service def718
    AC_DEFINE(HAS_GNU_WARNING_LONG, 1, [Define if .gnu.warning accepts long strings.])
Packit Service def718
    AC_MSG_RESULT(yes)
Packit Service def718
], [
Packit Service def718
   AC_MSG_RESULT(no)
Packit Service def718
])
Packit Service def718
Packit Service def718
AC_LANG_POP([C])
Packit Service def718
Packit Service def718
LT_INIT
Packit Service def718
Packit Service def718
# Check for the -Bsymbolic-functions linker flag
Packit Service def718
AC_ARG_ENABLE([Bsymbolic],
Packit Service def718
              [AS_HELP_STRING([--disable-Bsymbolic], [Avoid linking with -Bsymbolic-function])],
Packit Service def718
              [],
Packit Service def718
              [enable_Bsymbolic=check])
Packit Service def718
Packit Service def718
AS_IF([test "x$enable_Bsymbolic" = "xcheck"],
Packit Service def718
      [
Packit Service def718
        saved_LDFLAGS="${LDFLAGS}"
Packit Service def718
        AC_MSG_CHECKING([for -Bsymbolic-functions linker flag])
Packit Service def718
        LDFLAGS=-Wl,-Bsymbolic-functions
Packit Service def718
        AC_TRY_LINK([], [int main (void) { return 0; }],
Packit Service def718
                    [
Packit Service def718
                      AC_MSG_RESULT([yes])
Packit Service def718
                      enable_Bsymbolic=yes
Packit Service def718
                    ],
Packit Service def718
                    [
Packit Service def718
                      AC_MSG_RESULT([no])
Packit Service def718
                      enable_Bsymbolic=no
Packit Service def718
                    ])
Packit Service def718
        LDFLAGS="${saved_LDFLAGS}"
Packit Service def718
      ])
Packit Service def718
Packit Service def718
AS_IF([test "x$enable_Bsymbolic" = "xyes"], [JSON_BSYMBOLIC_LDFLAGS=-Wl[,]-Bsymbolic-functions])
Packit Service def718
AC_SUBST(JSON_BSYMBOLIC_LDFLAGS)
Packit Service def718
Packit Service def718
AX_APPEND_COMPILE_FLAGS([-Wall -Werror -Wcast-qual -Wno-error=deprecated-declarations])
Packit Service def718
AX_APPEND_COMPILE_FLAGS([-Wextra -Wwrite-string -Wno-unused-parameter])
Packit Service def718
AX_APPEND_COMPILE_FLAGS([-D_GNU_SOURCE])
Packit Service def718
Packit Service def718
AC_LANG_PUSH([C])
Packit Service def718
AC_MSG_CHECKING([for compatibility with _REENTRANT and toolchain headers])
Packit Service def718
AC_LINK_IFELSE(
Packit Service def718
[
Packit Service def718
 AC_LANG_SOURCE([[
Packit Service def718
/* uClibc toolchains without threading barf when _REENTRANT is defined */
Packit Service def718
#define _REENTRANT 1
Packit Service def718
#include <sys/types.h>
Packit Service def718
int main ()
Packit Service def718
{
Packit Service def718
  return 0;
Packit Service def718
}
Packit Service def718
]])], [
Packit Service def718
    AC_MSG_RESULT(yes)
Packit Service def718
    AX_APPEND_COMPILE_FLAGS([-D_REENTRANT])
Packit Service def718
], [
Packit Service def718
    AC_MSG_RESULT(no)
Packit Service def718
])
Packit Service def718
AC_LANG_POP([C])
Packit Service def718
Packit Service def718
Packit Service def718
AX_COMPILE_CHECK_SIZEOF(int)
Packit Service def718
AX_COMPILE_CHECK_SIZEOF(long)
Packit Service def718
AX_COMPILE_CHECK_SIZEOF(long long)
Packit Service def718
AX_COMPILE_CHECK_SIZEOF(size_t, [#include <stdint.h>])
Packit Service def718
AX_COMPILE_CHECK_SIZEOF(int64_t, [#include <stdint.h>])
Packit Service def718
Packit Service def718
AC_CONFIG_FILES([
Packit Service def718
Makefile
Packit Service def718
json-c.pc
Packit Service def718
tests/Makefile
Packit Service def718
json-c-uninstalled.pc
Packit Service def718
])
Packit Service def718
Packit Service def718
AC_OUTPUT
Packit Service def718