find_apu.m4 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. dnl -------------------------------------------------------- -*- autoconf -*-
  2. dnl Copyright 2002-2005 The Apache Software Foundation or its licensors, as
  3. dnl applicable.
  4. dnl
  5. dnl Licensed under the Apache License, Version 2.0 (the "License");
  6. dnl you may not use this file except in compliance with the License.
  7. dnl You may obtain a copy of the License at
  8. dnl
  9. dnl http://www.apache.org/licenses/LICENSE-2.0
  10. dnl
  11. dnl Unless required by applicable law or agreed to in writing, software
  12. dnl distributed under the License is distributed on an "AS IS" BASIS,
  13. dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. dnl See the License for the specific language governing permissions and
  15. dnl limitations under the License.
  16. dnl
  17. dnl find_apu.m4 : locate the APR-util (APU) include files and libraries
  18. dnl
  19. dnl This macro file can be used by applications to find and use the APU
  20. dnl library. It provides a standardized mechanism for using APU. It supports
  21. dnl embedding APU into the application source, or locating an installed
  22. dnl copy of APU.
  23. dnl
  24. dnl APR_FIND_APU(srcdir, builddir, implicit-install-check, acceptable-majors)
  25. dnl
  26. dnl where srcdir is the location of the bundled APU source directory, or
  27. dnl empty if source is not bundled.
  28. dnl
  29. dnl where builddir is the location where the bundled APU will be built,
  30. dnl or empty if the build will occur in the srcdir.
  31. dnl
  32. dnl where implicit-install-check set to 1 indicates if there is no
  33. dnl --with-apr-util option specified, we will look for installed copies.
  34. dnl
  35. dnl where acceptable-majors is a space separated list of acceptable major
  36. dnl version numbers. Often only a single major version will be acceptable.
  37. dnl If multiple versions are specified, and --with-apr-util=PREFIX or the
  38. dnl implicit installed search are used, then the first (leftmost) version
  39. dnl in the list that is found will be used. Currently defaults to [0 1].
  40. dnl
  41. dnl Sets the following variables on exit:
  42. dnl
  43. dnl apu_found : "yes", "no", "reconfig"
  44. dnl
  45. dnl apu_config : If the apu-config tool exists, this refers to it. If
  46. dnl apu_found is "reconfig", then the bundled directory
  47. dnl should be reconfigured *before* using apu_config.
  48. dnl
  49. dnl Note: this macro file assumes that apr-config has been installed; it
  50. dnl is normally considered a required part of an APR installation.
  51. dnl
  52. dnl Note: At this time, we cannot find *both* a source dir and a build dir.
  53. dnl If both are available, the build directory should be passed to
  54. dnl the --with-apr-util switch.
  55. dnl
  56. dnl Note: the installation layout is presumed to follow the standard
  57. dnl PREFIX/lib and PREFIX/include pattern. If the APU config file
  58. dnl is available (and can be found), then non-standard layouts are
  59. dnl possible, since it will be described in the config file.
  60. dnl
  61. dnl If a bundled source directory is available and needs to be (re)configured,
  62. dnl then apu_found is set to "reconfig". The caller should reconfigure the
  63. dnl (passed-in) source directory, placing the result in the build directory,
  64. dnl as appropriate.
  65. dnl
  66. dnl If apu_found is "yes" or "reconfig", then the caller should use the
  67. dnl value of apu_config to fetch any necessary build/link information.
  68. dnl
  69. AC_DEFUN([APR_FIND_APU], [
  70. apu_found="no"
  71. if test "$target_os" = "os2-emx"; then
  72. # Scripts don't pass test -x on OS/2
  73. TEST_X="test -f"
  74. else
  75. TEST_X="test -x"
  76. fi
  77. ifelse([$4], [],
  78. [
  79. ifdef(AC_WARNING,([$0: missing argument 4 (acceptable-majors): Defaulting to APU 0.x then APU 1.x]))
  80. acceptable_majors="0 1"
  81. ], [acceptable_majors="$4"])
  82. apu_temp_acceptable_apu_config=""
  83. for apu_temp_major in $acceptable_majors
  84. do
  85. case $apu_temp_major in
  86. 0)
  87. apu_temp_acceptable_apu_config="$apu_temp_acceptable_apu_config apu-config"
  88. ;;
  89. *)
  90. apu_temp_acceptable_apu_config="$apu_temp_acceptable_apu_config apu-$apu_temp_major-config"
  91. ;;
  92. esac
  93. done
  94. AC_MSG_CHECKING(for APR-util)
  95. AC_ARG_WITH(apr-util,
  96. [ --with-apr-util=PATH prefix for installed APU, path to APU build tree,
  97. or the full path to apu-config],
  98. [
  99. if test "$withval" = "no" || test "$withval" = "yes"; then
  100. AC_MSG_ERROR([--with-apr-util requires a directory or file to be provided])
  101. fi
  102. for apu_temp_apu_config_file in $apu_temp_acceptable_apu_config
  103. do
  104. for lookdir in "$withval/bin" "$withval"
  105. do
  106. if $TEST_X "$lookdir/$apu_temp_apu_config_file"; then
  107. apu_found="yes"
  108. apu_config="$lookdir/$apu_temp_apu_config_file"
  109. break 2
  110. fi
  111. done
  112. done
  113. if test "$apu_found" != "yes" && $TEST_X "$withval" && $withval --help > /dev/null 2>&1 ; then
  114. apu_found="yes"
  115. apu_config="$withval"
  116. fi
  117. dnl if --with-apr-util is used, it is a fatal error for its argument
  118. dnl to be invalid
  119. if test "$apu_found" != "yes"; then
  120. AC_MSG_ERROR([the --with-apr-util parameter is incorrect. It must specify an install prefix, a build directory, or an apu-config file.])
  121. fi
  122. ],[
  123. if test -n "$3" && test "$3" = "1"; then
  124. for apu_temp_apu_config_file in $apu_temp_acceptable_apu_config
  125. do
  126. if $apu_temp_apu_config_file --help > /dev/null 2>&1 ; then
  127. apu_found="yes"
  128. apu_config="$apu_temp_apu_config_file"
  129. break
  130. else
  131. dnl look in some standard places (apparently not in builtin/default)
  132. for lookdir in /usr /usr/local /usr/local/apr /opt/apr /usr/local/apache2 ; do
  133. if $TEST_X "$lookdir/bin/$apu_temp_apu_config_file"; then
  134. apu_found="yes"
  135. apu_config="$lookdir/bin/$apu_temp_apu_config_file"
  136. break 2
  137. fi
  138. done
  139. fi
  140. done
  141. fi
  142. dnl if we have not found anything yet and have bundled source, use that
  143. if test "$apu_found" = "no" && test -d "$1"; then
  144. apu_temp_abs_srcdir="`cd $1 && pwd`"
  145. apu_found="reconfig"
  146. apu_bundled_major="`sed -n '/#define.*APU_MAJOR_VERSION/s/^[^0-9]*\([0-9]*\).*$/\1/p' \"$1/include/apu_version.h\"`"
  147. case $apu_bundled_major in
  148. "")
  149. AC_MSG_ERROR([failed to find major version of bundled APU])
  150. ;;
  151. 0)
  152. apu_temp_apu_config_file="apu-config"
  153. ;;
  154. *)
  155. apu_temp_apu_config_file="apu-$apu_bundled_major-config"
  156. ;;
  157. esac
  158. if test -n "$2"; then
  159. apu_config="$2/$apu_temp_apu_config_file"
  160. else
  161. apu_config="$1/$apu_temp_apu_config_file"
  162. fi
  163. fi
  164. ])
  165. AC_MSG_RESULT($apu_found)
  166. ])