Collection of DPF-based plugins for packaging
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

278 lines
9.1KB

  1. # ===========================================================================
  2. # https://www.gnu.org/software/autoconf-archive/ax_lib_libkml.html
  3. # ===========================================================================
  4. #
  5. # SYNOPSIS
  6. #
  7. # AX_LIB_LIBKML([MINIMUM-VERSION])
  8. #
  9. # DESCRIPTION
  10. #
  11. # This macro tests whether Google's libkml library
  12. # <http://code.google.com/p/libkml/> is available in particular version or
  13. # newer. The generated configure script will support the following
  14. # options:
  15. #
  16. # 1) Single-option usage:
  17. #
  18. # --with-libkml - yes, no or path to Google libkml installation prefix
  19. #
  20. # 2) Three-options usage (all options are required):
  21. #
  22. # --with-libkml=yes
  23. # --with-libkml-inc - path to base directory with headers
  24. # --with-libkml-lib - linker flags for
  25. #
  26. # This macro calls:
  27. #
  28. # AC_SUBST(LIBKML_CFLAGS)
  29. # AC_SUBST(LIBKML_LDFLAGS)
  30. # AC_SUBST(LIBKML_VERSION) - only if version requirement is used
  31. #
  32. # And sets:
  33. #
  34. # HAVE_LIBKML
  35. #
  36. # LICENSE
  37. #
  38. # Copyright (c) 2010 Mateusz Loskot <mateusz@loskot.net>
  39. #
  40. # Copying and distribution of this file, with or without modification, are
  41. # permitted in any medium without royalty provided the copyright notice
  42. # and this notice are preserved. This file is offered as-is, without any
  43. # warranty.
  44. #serial 2
  45. AC_DEFUN([AX_LIB_LIBKML],
  46. [
  47. AC_ARG_WITH([libkml],
  48. AC_HELP_STRING([--with-libkml=@<:@ARG@:>@],
  49. [use Google libkml from given prefix (ARG=path); check standard prefixes (ARG=yes); disable (ARG=no)]
  50. ),
  51. [
  52. if test "$withval" = "yes"; then
  53. if test -d /usr/local/include/kml ; then
  54. libkml_prefix=/usr/local
  55. elif test -d /usr/include/kml ; then
  56. libkml_prefix=/usr
  57. else
  58. libkml_prefix=""
  59. fi
  60. libkml_requested="yes"
  61. elif test -d "$withval"; then
  62. libkml_prefix="$withval"
  63. libkml_requested="yes"
  64. else
  65. libkml_prefix=""
  66. libkml_requested="no"
  67. fi
  68. ],
  69. [
  70. dnl Default behavior is implicit yes
  71. if test -d /usr/local/include/kml ; then
  72. libkml_prefix=/usr/local
  73. elif test -d /usr/include/kml ; then
  74. libkml_prefix=/usr
  75. else
  76. libkml_prefix=""
  77. fi
  78. ]
  79. )
  80. AC_ARG_WITH([libkml-inc],
  81. AC_HELP_STRING([--with-libkml-inc=@<:@DIR@:>@],
  82. [path to Google libkml headers]
  83. ),
  84. [libkml_include_dir="$withval"],
  85. [libkml_include_dir=""]
  86. )
  87. AC_ARG_WITH([libkml-lib],
  88. AC_HELP_STRING([--with-libkml-lib=@<:@ARG@:>@],
  89. [link options for Google libkml libraries]
  90. ),
  91. [libkml_lib_flags="$withval"],
  92. [libkml_lib_flags=""]
  93. )
  94. LIBKML_CFLAGS=""
  95. LIBKML_LDFLAGS=""
  96. LIBKML_VERSION=""
  97. dnl
  98. dnl Collect include/lib paths and flags
  99. dnl
  100. run_libkml_test="no"
  101. if test -n "$libkml_prefix"; then
  102. libkml_include_dir="$libkml_prefix/include"
  103. libkml_include_dir2="$libkml_prefix/include/kml"
  104. if test "$libkml_prefix" = "/usr"; then
  105. libkml_lib_flags="-lkmlengine -lkmldom -lkmlbase -lkmlconvenience"
  106. else
  107. libkml_lib_flags="-L$libkml_prefix/lib -lkmlengine -lkmldom -lkmlbase -lkmlconvenience"
  108. fi
  109. run_libkml_test="yes"
  110. elif test "$libkml_requested" = "yes"; then
  111. if test -n "$libkml_include_dir" -a -n "$libkml_lib_flags"; then
  112. libkml_include_dir2="$libkml_include_dir/kml"
  113. run_libkml_test="yes"
  114. fi
  115. else
  116. run_libkml_test="no"
  117. fi
  118. dnl
  119. dnl Check libkml headers/libraries
  120. dnl
  121. if test "$run_libkml_test" = "yes"; then
  122. saved_CPPFLAGS="$CPPFLAGS"
  123. CPPFLAGS="$CPPFLAGS -I$libkml_include_dir -I$libkml_include_dir2"
  124. saved_LDFLAGS="$LDFLAGS"
  125. LDFLAGS="$LDFLAGS $libkml_lib_flags"
  126. dnl
  127. dnl Check headers
  128. dnl
  129. AC_MSG_CHECKING([for Google libkml headers in $libkml_include_dir and $libkml_include_dir2])
  130. AC_LANG_PUSH([C++])
  131. AC_COMPILE_IFELSE([
  132. AC_LANG_PROGRAM(
  133. [[
  134. @%:@include <kml/dom.h>
  135. ]],
  136. [[]]
  137. )],
  138. [
  139. LIBKML_CFLAGS="-I$libkml_include_dir -I$libkml_include_dir2"
  140. libkml_header_found="yes"
  141. AC_MSG_RESULT([found])
  142. ],
  143. [
  144. libkml_header_found="no"
  145. AC_MSG_RESULT([not found])
  146. ]
  147. )
  148. AC_LANG_POP([C++])
  149. dnl
  150. dnl Check libraries
  151. dnl
  152. if test "$libkml_header_found" = "yes"; then
  153. AC_MSG_CHECKING([for Google libkml libraries])
  154. AC_LANG_PUSH([C++])
  155. AC_LINK_IFELSE([
  156. AC_LANG_PROGRAM(
  157. [[
  158. @%:@include <kml/dom.h>
  159. ]],
  160. [[
  161. kmldom::KmlFactory* factory = kmldom::KmlFactory::GetFactory();
  162. ]]
  163. )],
  164. [
  165. LIBKML_LDFLAGS="$libkml_lib_flags"
  166. libkml_lib_found="yes"
  167. AC_MSG_RESULT([found])
  168. ],
  169. [
  170. libkml_lib_found="no"
  171. AC_MSG_RESULT([not found])
  172. ]
  173. )
  174. AC_LANG_POP([C++])
  175. fi
  176. CPPFLAGS="$saved_CPPFLAGS"
  177. LDFLAGS="$saved_LDFLAGS"
  178. fi
  179. AC_MSG_CHECKING([for Google libkml])
  180. if test "$run_libkml_test" = "yes"; then
  181. if test "$libkml_header_found" = "yes" -a "$libkml_lib_found" = "yes"; then
  182. AC_SUBST([LIBKML_CFLAGS])
  183. AC_SUBST([LIBKML_LDFLAGS])
  184. HAVE_LIBKML="yes"
  185. else
  186. HAVE_LIBKML="no"
  187. fi
  188. AC_MSG_RESULT([$HAVE_LIBKML])
  189. dnl
  190. dnl Check version
  191. dnl
  192. if test "$HAVE_LIBKML" = "yes"; then
  193. libkml_version_req=ifelse([$1], [], [], [$1])
  194. if test -n "$libkml_version_req"; then
  195. AC_MSG_CHECKING([if Google libkml version is >= $libkml_version_req])
  196. if test -f "$libkml_include_dir2/base/version.h"; then
  197. libkml_major=`cat $libkml_include_dir2/base/version.h | \
  198. grep '^#define.*LIBKML_MAJOR_VERSION.*[0-9]$' | \
  199. sed -e 's/#define LIBKML_MAJOR_VERSION.//'`
  200. libkml_minor=`cat $libkml_include_dir2/base/version.h | \
  201. grep '^#define.*LIBKML_MINOR_VERSION.*[0-9]$' | \
  202. sed -e 's/#define LIBKML_MINOR_VERSION.//'`
  203. libkml_revision=`cat $libkml_include_dir2/base/version.h | \
  204. grep '^#define.*LIBKML_MICRO_VERSION.*[0-9]$' | \
  205. sed -e 's/#define LIBKML_MICRO_VERSION.//'`
  206. LIBKML_VERSION="$libkml_major.$libkml_minor.$libkml_revision"
  207. AC_SUBST([LIBKML_VERSION])
  208. dnl Decompose required version string and calculate numerical representation
  209. libkml_version_req_major=`expr $libkml_version_req : '\([[0-9]]*\)'`
  210. libkml_version_req_minor=`expr $libkml_version_req : '[[0-9]]*\.\([[0-9]]*\)'`
  211. libkml_version_req_revision=`expr $libkml_version_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
  212. if test "x$libkml_version_req_revision" = "x"; then
  213. libkml_version_req_revision="0"
  214. fi
  215. libkml_version_req_number=`expr $libkml_version_req_major \* 10000 \
  216. \+ $libkml_version_req_minor \* 100 \
  217. \+ $libkml_version_req_revision`
  218. dnl Calculate numerical representation of detected version
  219. libkml_version_number=`expr $libkml_major \* 10000 \
  220. \+ $libkml_minor \* 100 \
  221. \+ $libkml_revision`
  222. libkml_version_check=`expr $libkml_version_number \>\= $libkml_version_req_number`
  223. if test "$libkml_version_check" = "1"; then
  224. AC_MSG_RESULT([yes])
  225. else
  226. AC_MSG_RESULT([no])
  227. AC_MSG_WARN([Found Google libkml $LIBKML_VERSION, which is older than required. Possible compilation failure.])
  228. fi
  229. else
  230. AC_MSG_RESULT([no])
  231. AC_MSG_WARN([Missing header $libkml_include_dir2/base/bersion.hpp. Unable to determine Google libkml version.])
  232. fi
  233. fi
  234. fi
  235. else
  236. HAVE_LIBKML="no"
  237. AC_MSG_RESULT([$HAVE_LIBKML])
  238. if test "$libkml_requested" = "yes"; then
  239. AC_MSG_WARN([Google libkml support requested but headers or library not found. Specify valid prefix of libkml using --with-libkml=@<:@DIR@:>@ or provide include directory and linker flags using --with-libkml-inc and --with-libkml-lib])
  240. fi
  241. fi
  242. ])