ax_isc_bind10.m4 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. dnl @synopsis AX_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_LANG_SAVE
  26. AC_LANG([C++])
  27. # Check for BIND10 common headers
  28. AC_ARG_WITH(bind10-include,
  29. AS_HELP_STRING([--with-bind10-include=PATH],
  30. [specify a path to BIND 10 header files]),
  31. bind10_inc_path="$withval", bind10_inc_path="no")
  32. # If not specified, try some common paths.
  33. if test "$bind10_inc_path" = "no"; then
  34. for d in /usr/local /usr/pkg /opt /opt/local
  35. do
  36. if test -f $d/include/util/buffer.h; then
  37. bind10_inc_path=$d
  38. break
  39. fi
  40. done
  41. fi
  42. CPPFLAGS_SAVES="$CPPFLAGS"
  43. if test "${bind10_inc_path}" != "no"; then
  44. BIND10_CPPFLAGS="-I${bind10_inc_path}"
  45. CPPFLAGS="$CPPFLAGS $BIND10_CPPFLAGS"
  46. fi
  47. AC_CHECK_HEADERS([util/buffer.h],,
  48. AC_MSG_ERROR([Missing a commonly used BIND 10 header files]))
  49. CPPFLAGS="$CPPFLAGS_SAVES"
  50. AC_SUBST(BIND10_CPPFLAGS)
  51. # Check for BIND10 libraries
  52. CPPFLAGS_SAVED="$CPPFLAGS"
  53. CPPFLAGS="$CPPFLAGS $BIND10_CPPFLAGS"
  54. AC_ARG_WITH(bind10-lib,
  55. AS_HELP_STRING([--with-bind10-lib=PATH],
  56. [specify a path to BIND 10 library files]),
  57. bind10_lib_path="$withval", bind10_lib_path="no")
  58. if test $bind10_lib_path != "no"; then
  59. bind10_lib_dirs=$bind10_lib_path
  60. else
  61. # If not specified, try some common paths.
  62. bind10_lib_dirs="/usr/local/lib /usr/pkg/lib /opt/lib /opt/local/lib"
  63. fi
  64. # make sure we have buildable libraries
  65. AC_MSG_CHECKING([for BIND 10 common library])
  66. BIND10_COMMON_LIB="-lb10-util -lb10-exceptions"
  67. LDFLAGS="$LDFLAGS $BIND10_LDFLAGS"
  68. LIBS="$LIBS $BIND10_COMMON_LIB"
  69. for d in $bind10_lib_dirs
  70. do
  71. LDFLAGS_SAVED="$LDFLAGS"
  72. LDFLAGS="$LDFLAGS -L$d"
  73. AC_TRY_LINK([
  74. #include <util/buffer.h>
  75. ],[
  76. isc::util::OutputBuffer buffer(0);
  77. ], [BIND10_LDFLAGS="-L${d}"])
  78. if test "x$BIND10_LDFLAGS" != "x"; then
  79. break
  80. fi
  81. LDFLAGS="$LDFLAGS_SAVED"
  82. done
  83. if test "x$BIND10_LDFLAGS" != "x"; then
  84. AC_MSG_RESULT(yes)
  85. else
  86. AC_MSG_RESULT(no)
  87. AC_MSG_ERROR([unable to find required BIND 10 libraries])
  88. fi
  89. # restore LIBS once at this point
  90. LIBS="$LIBS_SAVES"
  91. AC_SUBST(BIND10_LDFLAGS)
  92. AC_SUBST(BIND10_COMMON_LIB)
  93. # Check per-module BIND 10 libraries
  94. # DNS library
  95. AC_MSG_CHECKING([for BIND 10 DNS library])
  96. LIBS="$LIBS $BIND10_COMMON_LIB -lb10-dns++"
  97. AC_TRY_LINK([
  98. #include <dns/rrtype.h>
  99. ],[
  100. isc::dns::RRType rrtype(1);
  101. ], [BIND10_DNS_LIB="-lb10-dns++"
  102. AC_MSG_RESULT(yes)],
  103. [AC_MSG_RESULT(no)])
  104. LIBS="$LIBS_SAVES"
  105. AC_SUBST(BIND10_DNS_LIB)
  106. # Restore other flags
  107. CPPFLAGS="$CPPFLAGS_SAVED"
  108. LDFLAGS="$LDFLAGS_SAVES"
  109. AC_LANG_RESTORE
  110. ])dnl AX_ISC_BIND10