configure.ac 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. # -*- Autoconf -*-
  2. # Process this file with autoconf to produce a configure script.
  3. AC_PREREQ(2.61)
  4. AC_INIT(ou, 0, [email protected])
  5. AC_CONFIG_SRCDIR([src/ou/atomic.cpp])
  6. # AC_CONFIG_HEADER([config.h])
  7. AC_CANONICAL_HOST
  8. AC_USE_SYSTEM_EXTENSIONS
  9. AM_INIT_AUTOMAKE(foreign)
  10. AC_LANG([C++])
  11. AC_MSG_CHECKING([target OS])
  12. case "$host_os" in
  13. cygwin* | mingw*)
  14. targetos=_OU_TARGET_OS_WINDOWS
  15. CXXFLAGS="-mthreads $CXXFLAGS"
  16. AC_MSG_RESULT([win32])
  17. ;;
  18. *qnx*)
  19. targetos=_OU_TARGET_OS_QNX
  20. AC_MSG_RESULT([qnx])
  21. ;;
  22. *apple* | *darwin*)
  23. targetos=_OU_TARGET_OS_MAC
  24. AC_MSG_RESULT([darwin])
  25. ;;
  26. *sunos*)
  27. targetos=_OU_TARGET_OS_SUNOS
  28. AC_MSG_RESULT([sunos])
  29. ;;
  30. *aix*)
  31. targetos=_OU_TARGET_OS_AIX
  32. AC_MSG_RESULT([aix])
  33. ;;
  34. *)
  35. targetos=_OU_TARGET_OS_GENUNIX
  36. AC_MSG_RESULT([unix])
  37. ;;
  38. esac
  39. #echo "host OS name: $host_os"
  40. #TODO: _OU_TARGET_BITS ?
  41. # Checks for programs.
  42. AC_PROG_CXX
  43. AC_PROG_CC
  44. AC_PROG_AWK
  45. AC_PROG_INSTALL
  46. AC_PROG_RANLIB
  47. AC_PROG_CPP
  48. AC_PROG_MKDIR_P
  49. AC_LIBTOOL_WIN32_DLL
  50. AC_PROG_LIBTOOL
  51. # Checks for libraries.
  52. AC_CHECK_LIB([c], main) # needed for sunos?
  53. AC_CHECK_LIB([pthread], [main])
  54. AC_DEFINE(_REENTRANT,1,[enable thread-safe functions])
  55. # Checks for header files.
  56. AC_HEADER_STDC
  57. AC_CHECK_HEADERS([inttypes.h malloc.h stddef.h stdlib.h string.h])
  58. # Checks for typedefs, structures, and compiler characteristics.
  59. AC_HEADER_STDBOOL
  60. AC_C_CONST
  61. AC_C_INLINE
  62. AC_TYPE_INT16_T
  63. AC_TYPE_INT32_T
  64. AC_TYPE_INT64_T
  65. AC_TYPE_INT8_T
  66. AC_TYPE_SIZE_T
  67. AC_TYPE_UINT16_T
  68. AC_TYPE_UINT32_T
  69. AC_TYPE_UINT64_T
  70. AC_TYPE_UINT8_T
  71. AC_C_VOLATILE
  72. AC_CHECK_TYPES([ptrdiff_t])
  73. # Checks for library functions.
  74. AC_CHECK_FUNCS([memset])
  75. if test $targetos = _OU_TARGET_OS_MAC
  76. then
  77. MAC_OS_X_VERSION=1000
  78. AC_CHECK_FUNC([OSAtomicAdd32Barrier], [MAC_OS_X_VERSION=1040])
  79. AC_CHECK_FUNC([OSAtomicAnd32OrigBarrier], [MAC_OS_X_VERSION=1050])
  80. AC_DEFINE_UNQUOTED(MAC_OS_X_VERSION, $MAC_OS_X_VERSION, [Mac OS X version])
  81. fi
  82. if test $targetos = _OU_TARGET_OS_SUNOS
  83. then
  84. AC_CHECK_FUNC(atomic_inc_32_nv, [],
  85. [targetos=_OU_TARGET_OS_GENUNIX])
  86. fi
  87. AC_DEFINE_UNQUOTED(_OU_TARGET_OS, $targetos)
  88. AC_ARG_VAR([OU_NAMESPACE], [which namespace OU will be compiled in])
  89. AC_ARG_WITH([namespace],
  90. AC_HELP_STRING([--with-namespace=name],[sets the namespace for compiled code]),
  91. [OU_NAMESPACE=$withval])
  92. if test x$OU_NAMESPACE = xno -o x$OU_NAMESPACE = x
  93. then
  94. OU_NAMESPACE="ou"
  95. fi
  96. CPPFLAGS="$CPPFLAGS -D_OU_NAMESPACE=$OU_NAMESPACE"
  97. AC_ARG_VAR([OU_FEATURE_SET], [feature set to be compiled within the OU])
  98. AC_ARG_WITH([feature-set],
  99. AC_HELP_STRING([--feature-set=_OU_FEATURE_SET_BASICS|_OU_FEATURE_SET_ATOMICS|_OU_FEATURE_SET_TLS|_OU_FEATURE_SET__MAX],[sets the feature set to be enabled]),
  100. [OU_FEATURE_SET=$withval])
  101. if test x$OU_FEATURE_SET = xno -o x$OU_FEATURE_SET = x
  102. then
  103. OU_NAMESPACE=_OU_FEATURE_SET__MAX
  104. fi
  105. CPPFLAGS="$CPPFLAGS -D_OU_FEATURE_SET=$OU_FEATURE_SET"
  106. AC_ARG_ENABLE([asserts],
  107. AS_HELP_STRING([--disable-asserts],
  108. [disables debug error checking]),
  109. asserts=$enableval,asserts=yes)
  110. if test x$asserts = xno
  111. then
  112. CPPFLAGS="$CPPFLAGS -DNDEBUG"
  113. fi
  114. AC_CONFIG_FILES([Makefile
  115. include/ou/Makefile
  116. src/ou/Makefile
  117. test/Makefile])
  118. AC_OUTPUT
  119. echo "OU namespace: $OU_NAMESPACE"
  120. echo "OU feature set: $OU_FEATURE_SET"