find_apr.m4 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. dnl -------------------------------------------------------- -*- autoconf -*-
  2. dnl Licensed to the Apache Software Foundation (ASF) under one or more
  3. dnl contributor license agreements. See the NOTICE file distributed with
  4. dnl this work for additional information regarding copyright ownership.
  5. dnl The ASF licenses this file to You under the Apache License, Version 2.0
  6. dnl (the "License"); you may not use this file except in compliance with
  7. dnl the License. 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_apr.m4 : locate the APR include files and libraries
  18. dnl
  19. dnl This macro file can be used by applications to find and use the APR
  20. dnl library. It provides a standardized mechanism for using APR. It supports
  21. dnl embedding APR into the application source, or locating an installed
  22. dnl copy of APR.
  23. dnl
  24. dnl APR_FIND_APR(srcdir, builddir, implicit-install-check, acceptable-majors)
  25. dnl
  26. dnl where srcdir is the location of the bundled APR source directory, or
  27. dnl empty if source is not bundled.
  28. dnl
  29. dnl where builddir is the location where the bundled APR will 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 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=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 apr_found : "yes", "no", "reconfig"
  44. dnl
  45. dnl apr_config : If the apr-config tool exists, this refers to it. If
  46. dnl apr_found is "reconfig", then the bundled directory
  47. dnl should be reconfigured *before* using apr_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 If a bundled source directory is available and needs to be (re)configured,
  53. dnl then apr_found is set to "reconfig". The caller should reconfigure the
  54. dnl (passed-in) source directory, placing the result in the build directory,
  55. dnl as appropriate.
  56. dnl
  57. dnl If apr_found is "yes" or "reconfig", then the caller should use the
  58. dnl value of apr_config to fetch any necessary build/link information.
  59. dnl
  60. AC_DEFUN([APR_FIND_APR], [
  61. apr_found="no"
  62. if test "$target_os" = "os2-emx"; then
  63. # Scripts don't pass test -x on OS/2
  64. TEST_X="test -f"
  65. else
  66. TEST_X="test -x"
  67. fi
  68. ifelse([$4], [], [
  69. ifdef(AC_WARNING,AC_WARNING([$0: missing argument 4 (acceptable-majors): Defaulting to APR 0.x then APR 1.x]))
  70. acceptable_majors="0 1"],
  71. [acceptable_majors="$4"])
  72. apr_temp_acceptable_apr_config=""
  73. for apr_temp_major in $acceptable_majors
  74. do
  75. case $apr_temp_major in
  76. 0)
  77. apr_temp_acceptable_apr_config="$apr_temp_acceptable_apr_config apr-config"
  78. ;;
  79. *)
  80. apr_temp_acceptable_apr_config="$apr_temp_acceptable_apr_config apr-$apr_temp_major-config"
  81. ;;
  82. esac
  83. done
  84. AC_MSG_CHECKING(for APR)
  85. AC_ARG_WITH(apr,
  86. [ --with-apr=PATH prefix for installed APR, path to APR build tree,
  87. or the full path to apr-config],
  88. [
  89. if test "$withval" = "no" || test "$withval" = "yes"; then
  90. AC_MSG_ERROR([--with-apr requires a directory or file to be provided])
  91. fi
  92. for apr_temp_apr_config_file in $apr_temp_acceptable_apr_config
  93. do
  94. for lookdir in "$withval/bin" "$withval"
  95. do
  96. if $TEST_X "$lookdir/$apr_temp_apr_config_file"; then
  97. apr_found="yes"
  98. apr_config="$lookdir/$apr_temp_apr_config_file"
  99. break 2
  100. fi
  101. done
  102. done
  103. if test "$apr_found" != "yes" && $TEST_X "$withval" && $withval --help > /dev/null 2>&1 ; then
  104. apr_found="yes"
  105. apr_config="$withval"
  106. fi
  107. dnl if --with-apr is used, it is a fatal error for its argument
  108. dnl to be invalid
  109. if test "$apr_found" != "yes"; then
  110. AC_MSG_ERROR([the --with-apr parameter is incorrect. It must specify an install prefix, a build directory, or an apr-config file.])
  111. fi
  112. ],[
  113. dnl If we allow installed copies, check those before using bundled copy.
  114. if test -n "$3" && test "$3" = "1"; then
  115. for apr_temp_apr_config_file in $apr_temp_acceptable_apr_config
  116. do
  117. if $apr_temp_apr_config_file --help > /dev/null 2>&1 ; then
  118. apr_found="yes"
  119. apr_config="$apr_temp_apr_config_file"
  120. break
  121. else
  122. dnl look in some standard places
  123. for lookdir in /usr /usr/local /usr/local/apr /opt/apr; do
  124. if $TEST_X "$lookdir/bin/$apr_temp_apr_config_file"; then
  125. apr_found="yes"
  126. apr_config="$lookdir/bin/$apr_temp_apr_config_file"
  127. break 2
  128. fi
  129. done
  130. fi
  131. done
  132. fi
  133. dnl if we have not found anything yet and have bundled source, use that
  134. if test "$apr_found" = "no" && test -d "$1"; then
  135. apr_temp_abs_srcdir="`cd $1 && pwd`"
  136. apr_found="reconfig"
  137. apr_bundled_major="`sed -n '/#define.*APR_MAJOR_VERSION/s/^[^0-9]*\([0-9]*\).*$/\1/p' \"$1/include/fspr_version.h\"`"
  138. case $apr_bundled_major in
  139. "")
  140. AC_MSG_ERROR([failed to find major version of bundled APR])
  141. ;;
  142. 0)
  143. apr_temp_apr_config_file="apr-config"
  144. ;;
  145. *)
  146. apr_temp_apr_config_file="apr-$apr_bundled_major-config"
  147. ;;
  148. esac
  149. if test -n "$2"; then
  150. apr_config="$2/$apr_temp_apr_config_file"
  151. else
  152. apr_config="$1/$apr_temp_apr_config_file"
  153. fi
  154. fi
  155. ])
  156. AC_MSG_RESULT($apr_found)
  157. ])