ax_isc_bind10.m4 3.3 KB

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