ax_isc_bind10.m4 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. dnl @synopsis AX_ISC_BIND10
  2. dnl
  3. dnl @summary figure out how to build C++ programs using ISC BIND 10 libraries
  4. dnl
  5. dnl If no path to the installed BIND 10 header files or libraries is given
  6. dnl via the --with-bind10-include or --with-bind10-lib option, the macro
  7. dnl searchs under /usr/local/{include, lib}, /usr/pkg/{include, lib},
  8. dnl /opt/{include, lib}, /opt/local/{include, lib} directories, respectively.
  9. dnl
  10. dnl This macro calls:
  11. dnl
  12. dnl AC_SUBST(BIND10_CPPFLAGS)
  13. dnl AC_SUBST(BIND10_LDFLAGS)
  14. dnl AC_SUBST(BIND10_COMMON_LIB)
  15. dnl AC_SUBST(BIND10_DNS_LIB)
  16. dnl
  17. dnl If this macro finds CPPFLAGS, LDFLAGS or COMMON_LIB unavailable, it treats
  18. dnl that as a fatal error.
  19. dnl Checks for other BIND 10 module libraries are option, as not all
  20. dnl applications need all libraries. The main configure.ac can handle any
  21. dnl missing library as fatal by checking whether the corresponding
  22. dnl BIND10_xxx_LIB is defined.
  23. AC_DEFUN([AX_ISC_BIND10], [
  24. AC_REQUIRE([AX_BOOST_INCLUDE])
  25. AC_REQUIRE([AX_ISC_RPATH])
  26. AC_LANG_SAVE
  27. AC_LANG([C++])
  28. # Check for BIND10 common headers
  29. AC_ARG_WITH(bind10-include,
  30. AS_HELP_STRING([--with-bind10-include=PATH],
  31. [specify a path to BIND 10 header files]),
  32. bind10_inc_path="$withval", bind10_inc_path="no")
  33. # If not specified, try some common paths.
  34. if test "$bind10_inc_path" = "no"; then
  35. for d in /usr/local /usr/pkg /opt /opt/local
  36. do
  37. if test -f $d/include/util/buffer.h; then
  38. bind10_inc_path=$d
  39. break
  40. fi
  41. done
  42. fi
  43. CPPFLAGS_SAVED="$CPPFLAGS"
  44. CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" # boost headers will be used in buffer.h
  45. if test "${bind10_inc_path}" != "no"; then
  46. BIND10_CPPFLAGS="-I${bind10_inc_path}"
  47. CPPFLAGS="$CPPFLAGS $BIND10_CPPFLAGS"
  48. fi
  49. AC_CHECK_HEADERS([util/buffer.h],,
  50. AC_MSG_ERROR([Missing a commonly used BIND 10 header file]))
  51. CPPFLAGS="$CPPFLAGS_SAVED"
  52. AC_SUBST(BIND10_CPPFLAGS)
  53. # Check for BIND10 libraries
  54. CPPFLAGS_SAVED="$CPPFLAGS"
  55. CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS $BIND10_CPPFLAGS"
  56. AC_ARG_WITH(bind10-lib,
  57. AS_HELP_STRING([--with-bind10-lib=PATH],
  58. [specify a path to BIND 10 library files]),
  59. bind10_lib_path="$withval", bind10_lib_path="no")
  60. if test $bind10_lib_path != "no"; then
  61. bind10_lib_dirs=$bind10_lib_path
  62. else
  63. # If not specified, try some common paths.
  64. bind10_lib_dirs="/usr/local/lib /usr/pkg/lib /opt/lib /opt/local/lib"
  65. fi
  66. # make sure we have buildable libraries
  67. AC_MSG_CHECKING([for BIND 10 common library])
  68. BIND10_COMMON_LIB="-lb10-util -lb10-exceptions"
  69. LDFLAGS_SAVED="$LDFLAGS"
  70. LDFLAGS_CHECK_COMMON="$LDFLAGS $BIND10_LDFLAGS"
  71. LIBS_SAVED="$LIBS"
  72. LIBS="$LIBS $BIND10_COMMON_LIB"
  73. for d in $bind10_lib_dirs
  74. do
  75. LDFLAGS="$LDFLAGS_CHECK_COMMON -L$d"
  76. AC_TRY_LINK([
  77. #include <util/buffer.h>
  78. ],[
  79. isc::util::OutputBuffer buffer(0);
  80. ], [BIND10_LDFLAGS="-L${d}"
  81. if test "x$ISC_RPATH_FLAG" != "x"; then
  82. BIND10_RPATH="-R${d}"
  83. fi
  84. ])
  85. if test "x$BIND10_LDFLAGS" != "x"; then
  86. break
  87. fi
  88. done
  89. if test "x$BIND10_LDFLAGS" != "x"; then
  90. AC_MSG_RESULT(yes)
  91. else
  92. AC_MSG_RESULT(no)
  93. AC_MSG_ERROR([unable to find required BIND 10 libraries])
  94. fi
  95. # restore LIBS once at this point
  96. LIBS="$LIBS_SAVED"
  97. AC_SUBST(BIND10_LDFLAGS)
  98. AC_SUBST(BIND10_COMMON_LIB)
  99. # Check per-module BIND 10 libraries
  100. # DNS library
  101. AC_MSG_CHECKING([for BIND 10 DNS library])
  102. LIBS="$LIBS $BIND10_COMMON_LIB -lb10-dns++"
  103. AC_TRY_LINK([
  104. #include <dns/rrtype.h>
  105. ],[
  106. isc::dns::RRType rrtype(1);
  107. ], [BIND10_DNS_LIB="-lb10-dns++"
  108. AC_MSG_RESULT(yes)],
  109. [AC_MSG_RESULT(no)])
  110. LIBS="$LIBS_SAVED"
  111. AC_SUBST(BIND10_DNS_LIB)
  112. # Restore other flags
  113. CPPFLAGS="$CPPFLAGS_SAVED"
  114. LDFLAGS="$LDFLAGS_SAVED"
  115. AC_LANG_RESTORE
  116. ])dnl AX_ISC_BIND10