configure.ac 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. AC_PREREQ([2.53])
  2. m4_define([BDSM_MAJOR], [0])
  3. m4_define([BDSM_MINOR], [3])
  4. m4_define([BDSM_MICRO], [0])
  5. AC_COPYRIGHT([Copyright 2014-2018 VideoLabs])
  6. AC_INIT([libdsm], [BDSM_MAJOR.BDSM_MINOR.BDSM_MICRO], [], [libdsm], [])
  7. AC_CONFIG_HEADER(config.h)
  8. AC_CONFIG_SRCDIR([include/bdsm.h])
  9. AC_CONFIG_LIBOBJ_DIR([compat])
  10. AM_INIT_AUTOMAKE([1.6 foreign subdir-objects tar-ustar dist-zip])
  11. m4_ifdef([AM_SILENT_RULES], [
  12. AM_SILENT_RULES([yes])
  13. ])
  14. AC_CANONICAL_HOST
  15. BDSM_ABI_VERSION=m4_esyscmd([./abi_version.sh])
  16. BDSM_LIBTOOL_VERSION=m4_esyscmd([./abi_version.sh -libtool])
  17. AC_SUBST(BDSM_ABI_VERSION)
  18. AC_SUBST(BDSM_LIBTOOL_VERSION)
  19. AC_MSG_NOTICE([dsm ABI version: $BDSM_ABI_VERSION])
  20. AC_PROG_CC_C99
  21. AM_PROG_CC_C_O
  22. AC_DEFINE([_FORTIFY_SOURCE], 2, [Define to 2 to get glibc warnings.])
  23. AC_DEFINE([_FILE_OFFSET_BITS], 64, [Define to 64 for large files support.])
  24. dnl check for -Wall -Wextra support
  25. CC_CHECK_CFLAG_APPEND([-Wall -Wsign-compare -Wextra -Wstrict-aliasing -Wstrict-overflow])
  26. dnl Where is iconv? In libc or separate lib?
  27. AM_ICONV
  28. AC_ARG_ENABLE([programs],
  29. AS_HELP_STRING([--enable-programs], [Build additional programs [default=yes]])
  30. )
  31. AC_ARG_ENABLE([debug],
  32. AS_HELP_STRING([--enable-debug], [Additional debugging features [default=no]])
  33. )
  34. AM_CONDITIONAL([DEBUG], [test x"$enable_debug" == x"yes"])
  35. AM_CONDITIONAL([PROGRAMS], [test x"$enable_programs" != x"no"])
  36. LT_INIT
  37. DOLT
  38. AC_CONFIG_MACRO_DIR([m4])
  39. dnl Check for pthreads
  40. AX_PTHREAD(,[
  41. AC_CHECK_LIB(pthreadGC2,pthread_join,[
  42. AC_SUBST(PTHREAD_LIBS,"-lpthreadGC2")
  43. AC_SUBST(PTHREAD_CFLAGS,"-DPTW32_STATIC_LIB"])
  44. ])
  45. )
  46. AH_BOTTOM([#include "compat.h"])
  47. ##############################
  48. ## Checks for the ASN.1 parser
  49. PKG_CHECK_MODULES([TASN1], [libtasn1])
  50. ## Check if it supports new types
  51. AC_MSG_CHECKING([whether libtasn1 version >= 3.0])
  52. CFLAGS="$CFLAGS $TASN1_CFLAGS"
  53. AC_COMPILE_IFELSE([
  54. AC_LANG_PROGRAM([#include <libtasn1.h>], [ asn1_node test; ])
  55. ], [
  56. AC_MSG_RESULT([yes])
  57. HAVE_TASN1_3PLUS=yes
  58. ], [
  59. AC_MSG_RESULT([no])
  60. HAVE_TASN1_3PLUS=no
  61. ])
  62. AM_CONDITIONAL([HAVE_TASN1_3PLUS],[test x$HAVE_TASN1_3PLUS = xyes])
  63. AS_IF([test x"$HAVE_TASN1_3PLUS" = x"yes"], [
  64. AC_DEFINE([HAVE_TASN1_3PLUS], [1], [libtasn1 has v 3.0 downcase types])
  65. dnl Ugly compatibility with old 2.x types
  66. AC_DEFINE([ASN1_ARRAY_TYPE], [asn1_static_node], [...])
  67. ], [
  68. dnl Ugly compatibility with new 3.x types
  69. AC_DEFINE([asn1_static_node], [ASN1_ARRAY_TYPE], [...])
  70. ])
  71. AC_SEARCH_LIBS([strlcpy], [bsd], [
  72. AC_DEFINE([HAVE_LIBBSD], [1], [Does this system have libbsd strl*** functions implementation])
  73. ])
  74. AC_SEARCH_LIBS([clock_gettime], [rt pthread])
  75. AC_CHECK_TYPES([clockid_t],,,[
  76. #include <time.h>
  77. #include <pthread.h>])
  78. AC_CHECK_TYPES([struct timespec],,,[#include <time.h>])
  79. AC_CHECK_DECLS([CLOCK_MONOTONIC],,,[
  80. #include <time.h>
  81. #ifdef _WIN32
  82. #include <pthread_time.h>
  83. #endif])
  84. AC_REPLACE_FUNCS([strlcpy])
  85. AC_REPLACE_FUNCS([strndup])
  86. AC_REPLACE_FUNCS([clock_gettime])
  87. AC_CHECK_FUNCS([pipe _pipe getifaddrs nl_langinfo])
  88. AC_CHECK_HEADERS([bsd/string.h alloca.h sys/queue.h arpa/inet.h sys/socket.h sys/time.h ifaddrs.h])
  89. ## Configure random device path
  90. AC_ARG_WITH([urandom],
  91. [AS_HELP_STRING([--with-urandom=PATH],
  92. [Configure the path of the random generation device used @<:@default=/dev/urandom@:>@ ])],
  93. [], [with_urandom=/dev/urandom])
  94. AC_DEFINE_UNQUOTED([URANDOM], ["$with_urandom"], [Path of the random number generation device])
  95. ## Check for doxygen presence
  96. AC_CHECK_PROGS([DOXYGEN], [doxygen])
  97. AM_CONDITIONAL([HAVE_DOXYGEN], [test -n "$DOXYGEN"])
  98. if test -z "$DOXYGEN";
  99. then AC_MSG_WARN([Doxygen not found - continuing without Doxygen support])
  100. else
  101. AC_CONFIG_FILES([doc/Doxyfile])
  102. fi
  103. case "${host_os}" in
  104. *android*)
  105. BDSM_LIB_LOG="-llog"
  106. LDFLAGS="${LDFLAGS} ${BDSM_LIB_LOG}"
  107. ;;
  108. *mingw32* | *cygwin* | *wince* | *mingwce*)
  109. AC_DEFINE([_UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
  110. AC_DEFINE([UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
  111. AC_DEFINE([_ISOC99_SOURCE], [1], [Extensions to ISO C89 from ISO C99.])
  112. AC_DEFINE([_POSIX_SOURCE], [1], [IEEE Std 1003.1.])
  113. AC_DEFINE([_POSIX_C_SOURCE], [200809L], [IEEE Std 1003.1.])
  114. SOCKET_LIBS="-lws2_32"
  115. LDFLAGS="${LDFLAGS} ${SOCKET_LIBS}"
  116. ;;
  117. esac
  118. AC_SUBST(BDSM_LIB_LOG)
  119. AC_SUBST(SOCKET_LIBS)
  120. AC_OUTPUT([
  121. Makefile
  122. libdsm.pc
  123. ])