[gdal] 02/03: Add patch to support pkg-config for the new libkml.

Sebastiaan Couwenberg sebastic at moszumanska.debian.org
Thu Aug 20 21:11:56 UTC 2015


This is an automated email from the git hooks/post-receive script.

sebastic pushed a commit to branch experimental
in repository gdal.

commit c32e524261b8e4fdcb9782a6430c88423072ac73
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Thu Aug 20 14:58:00 2015 +0200

    Add patch to support pkg-config for the new libkml.
---
 debian/changelog                |   1 +
 debian/patches/libkml-pkgconfig | 407 ++++++++++++++++++++++++++++++++++++++++
 debian/patches/series           |   1 +
 3 files changed, 409 insertions(+)

diff --git a/debian/changelog b/debian/changelog
index 864aa04..c585025 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,7 @@
 gdal (1.11.2+dfsg-1~exp7) UNRELEASED; urgency=medium
 
   * Require at least libkml-dev 1.3.0~rc0-3 for boost dependencies.
+  * Add patch to support pkg-config for the new libkml.
 
  -- Bas Couwenberg <sebastic at debian.org>  Thu, 20 Aug 2015 14:57:44 +0200
 
diff --git a/debian/patches/libkml-pkgconfig b/debian/patches/libkml-pkgconfig
new file mode 100644
index 0000000..8b36dbb
--- /dev/null
+++ b/debian/patches/libkml-pkgconfig
@@ -0,0 +1,407 @@
+Description: Add pkg-config support for libkml.
+ The libkml/libkml fork on GitHub supports pkg-config,
+ and no longer includes the third_partry libraries.
+Author: Bas Couwenberg <sebastic at debian.org>
+Forwarded: https://trac.osgeo.org/gdal/ticket/6077
+
+--- a/m4/ax_lib_libkml.m4
++++ b/m4/ax_lib_libkml.m4
+@@ -5,18 +5,26 @@ dnl
+ dnl This macro provides tests of availability of Google libkml library
+ dnl of particular version or newer.
+ dnl
+-dnl libkml - http://code.google.com/p/libkml/
++dnl libkml - https://github.com/google/libkml
+ dnl
+-dnl This macros checks for Google libkml headers and libraries 
++dnl A fork of libkml is also available:
++dnl
++dnl https://github.com/libkml/libkml
++dnl
++dnl This macros checks for Google libkml headers and libraries
+ dnl and defines compilation flags.
+-dnl 
++dnl
++dnl The libkml fork supports pkg-config, which is tried first.
++dnl If a suitable libkml version is not found with pkg-config, the manual
++dnl checks for the libkml library & include paths are performed.
++dnl
+ dnl Macro supports following options and their values:
+ dnl 1) Single-option usage:
+ dnl --with-libkml - yes, no or path to Google libkml installation prefix
+ dnl 2) Three-options usage (all options are required):
+ dnl --with-libkml=yes
+ dnl --with-libkml-inc - path to base directory with  headers
+-dnl --with-libkml-lib - linker flags for 
++dnl --with-libkml-lib - linker flags for
+ dnl
+ dnl This macro calls:
+ dnl
+@@ -45,7 +53,7 @@ AC_DEFUN([AX_LIB_LIBKML],
+         ),
+         [
+         if test "$withval" = "yes"; then
+-            if test -d /usr/local/include/kml ; then 
++            if test -d /usr/local/include/kml ; then
+                 libkml_prefix=/usr/local
+             elif test -d /usr/include/kml ; then
+                 libkml_prefix=/usr
+@@ -63,12 +71,12 @@ AC_DEFUN([AX_LIB_LIBKML],
+         ],
+         [
+         dnl Default behavior is implicit yes
+-        if test -d /usr/local/include/kml ; then 
++        if test -d /usr/local/include/kml ; then
+             libkml_prefix=/usr/local
+         elif test -d /usr/include/kml ; then
+             libkml_prefix=/usr
+         else
+-            libkml_prefix="" 
++            libkml_prefix=""
+         fi
+         ]
+     )
+@@ -88,181 +96,209 @@ AC_DEFUN([AX_LIB_LIBKML],
+         [libkml_lib_flags=""]
+     )
+ 
+-    LIBKML_CFLAGS=""
+-    LIBKML_LDFLAGS=""
+-    LIBKML_VERSION=""
+-
+-    dnl
+-    dnl Collect include/lib paths and flags
+-    dnl 
+-    run_libkml_test="no"
+-
+-    if test -n "$libkml_prefix"; then
+-        libkml_include_dir="$libkml_prefix/include"
+-        libkml_include_dir2="$libkml_prefix/include/kml"
+-        libkml_include_dir3="$libkml_prefix/include/kml/third_party/boost_1_34_1"
+-        if test "$libkml_prefix" = "/usr"; then
+-            libkml_lib_flags="-lkmldom -lkmlbase -lkmlengine -lkmlconvenience -lminizip -luriparser"
+-        else
+-            libkml_lib_flags="-L$libkml_prefix/lib -lkmldom -lkmlbase -lkmlengine -lkmlconvenience -lminizip -luriparser"
+-        fi
+-        run_libkml_test="yes"
+-    elif test "$libkml_requested" = "yes"; then
+-        if test -n "$libkml_include_dir" -a -n "$libkml_lib_flags"; then
+-            libkml_include_dir2="$libkml_include_dir/kml"
+-            libkml_include_dir3="$libkml_include_dir/kml/third_party/boost_1_34_1"
+-            run_libkml_test="yes"
+-        fi
+-    else
+-        run_libkml_test="no"
+-    fi
+-
+     dnl
+-    dnl Check libkml headers/libraries
++    dnl Try pkg-config first
+     dnl
+-    if test "$run_libkml_test" = "yes"; then
++    PKG_PROG_PKG_CONFIG([0.25]) # check and set $PKG_CONFIG
++
++    PKG_CHECK_MODULES([LIBKML], [libkml >= $1],
++        [LIBKML_VERSION=`$PKG_CONFIG --modversion libkml`],
++        [LIBKML_VERSION=;])
++
++    if test -n "$LIBKML_VERSION" -a -n "$libkml_prefix"; then
++        HAVE_LIBKML="yes"
+ 
+-        saved_CPPFLAGS="$CPPFLAGS"
+-        CPPFLAGS="$CPPFLAGS -I$libkml_include_dir -I$libkml_include_dir2 -I$libkml_include_dir3"
++	LIBKML_LDFLAGS="$LIBKML_LIBS"
+ 
+-        saved_LIBS="$LIBS"
+-        LIBS="$LIBS $libkml_lib_flags"
++	AC_MSG_CHECKING([for LIBKML CFLAGS])
++        AC_MSG_RESULT([$LIBKML_CFLAGS])
++
++	AC_MSG_CHECKING([for LIBKML LDFLAGS])
++	AC_MSG_RESULT([$LIBKML_LDFLAGS])
++
++	AC_MSG_CHECKING([for LIBKML VERSION])
++	AC_MSG_RESULT([$LIBKML_VERSION])
++
++        AC_SUBST([LIBKML_CFLAGS])
++        AC_SUBST([LIBKML_LDLAGS])
++        AC_SUBST([LIBKML_VERSION])
++    else
++        LIBKML_CFLAGS=""
++        LIBKML_LDFLAGS=""
++        LIBKML_VERSION=""
+ 
+         dnl
+-        dnl Check headers
++        dnl Collect include/lib paths and flags
+         dnl
+-        AC_MSG_CHECKING([for Google libkml headers in $libkml_include_dir, $libkml_include_dir2, and $libkml_include_dir3])
++        run_libkml_test="no"
++
++        if test -n "$libkml_prefix"; then
++            libkml_include_dir="$libkml_prefix/include"
++            libkml_include_dir2="$libkml_prefix/include/kml"
++            libkml_include_dir3="$libkml_prefix/include/kml/third_party/boost_1_34_1"
++            if test "$libkml_prefix" = "/usr"; then
++                libkml_lib_flags="-lkmldom -lkmlbase -lkmlengine -lkmlconvenience -lminizip -luriparser"
++            else
++                libkml_lib_flags="-L$libkml_prefix/lib -lkmldom -lkmlbase -lkmlengine -lkmlconvenience -lminizip -luriparser"
++            fi
++            run_libkml_test="yes"
++        elif test "$libkml_requested" = "yes"; then
++            if test -n "$libkml_include_dir" -a -n "$libkml_lib_flags"; then
++                libkml_include_dir2="$libkml_include_dir/kml"
++                libkml_include_dir3="$libkml_include_dir/kml/third_party/boost_1_34_1"
++                run_libkml_test="yes"
++            fi
++        else
++            run_libkml_test="no"
++        fi
+ 
+-        AC_LANG_PUSH([C++])
+-        AC_COMPILE_IFELSE([
+-            AC_LANG_PROGRAM(
+-                [[
+-@%:@include <kml/dom.h>
+-                ]],
+-                [[]]
+-            )],
+-            [
+-            LIBKML_CFLAGS="-I$libkml_include_dir -I$libkml_include_dir2 -I$libkml_include_dir3"
+-            libkml_header_found="yes"
+-            AC_MSG_RESULT([found])
+-            ],
+-            [
+-            libkml_header_found="no"
+-            AC_MSG_RESULT([not found])
+-            ]
+-        )
+-        AC_LANG_POP([C++])
+-        
+         dnl
+-        dnl Check libraries
++        dnl Check libkml headers/libraries
+         dnl
+-        if test "$libkml_header_found" = "yes"; then
++        if test "$run_libkml_test" = "yes"; then
+ 
+-            AC_MSG_CHECKING([for Google libkml libraries])
++            saved_CPPFLAGS="$CPPFLAGS"
++            CPPFLAGS="$CPPFLAGS -I$libkml_include_dir -I$libkml_include_dir2 -I$libkml_include_dir3"
++
++            saved_LIBS="$LIBS"
++            LIBS="$LIBS $libkml_lib_flags"
++
++            dnl
++            dnl Check headers
++            dnl
++            AC_MSG_CHECKING([for Google libkml headers in $libkml_include_dir, $libkml_include_dir2, and $libkml_include_dir3])
+ 
+             AC_LANG_PUSH([C++])
+-            AC_LINK_IFELSE([
++            AC_COMPILE_IFELSE([
+                 AC_LANG_PROGRAM(
+                     [[
+ @%:@include <kml/dom.h>
+                     ]],
+-                    [[
+-kmldom::KmlFactory* factory = kmldom::KmlFactory::GetFactory();
+-                    ]]
++                    [[]]
+                 )],
+                 [
+-                LIBKML_LDFLAGS="$libkml_lib_flags"
+-                libkml_lib_found="yes"
++                LIBKML_CFLAGS="-I$libkml_include_dir -I$libkml_include_dir2 -I$libkml_include_dir3"
++                libkml_header_found="yes"
+                 AC_MSG_RESULT([found])
+                 ],
+                 [
+-                libkml_lib_found="no"
++                libkml_header_found="no"
+                 AC_MSG_RESULT([not found])
+                 ]
+             )
+             AC_LANG_POP([C++])
+-        fi
+ 
+-        CPPFLAGS="$saved_CPPFLAGS"
+-        LIBS="$saved_LIBS"
+-    fi
++            dnl
++            dnl Check libraries
++            dnl
++            if test "$libkml_header_found" = "yes"; then
++
++                AC_MSG_CHECKING([for Google libkml libraries])
++
++                AC_LANG_PUSH([C++])
++                AC_LINK_IFELSE([
++                    AC_LANG_PROGRAM(
++                        [[
++@%:@include <kml/dom.h>
++                        ]],
++                        [[
++kmldom::KmlFactory* factory = kmldom::KmlFactory::GetFactory();
++                        ]]
++                    )],
++                    [
++                    LIBKML_LDFLAGS="$libkml_lib_flags"
++                    libkml_lib_found="yes"
++                    AC_MSG_RESULT([found])
++                    ],
++                    [
++                    libkml_lib_found="no"
++                    AC_MSG_RESULT([not found])
++                    ]
++                )
++                AC_LANG_POP([C++])
++            fi
+ 
+-    AC_MSG_CHECKING([for Google libkml])
++            CPPFLAGS="$saved_CPPFLAGS"
++            LIBS="$saved_LIBS"
++        fi
+ 
+-    if test "$run_libkml_test" = "yes"; then
+-        if test "$libkml_header_found" = "yes" -a "$libkml_lib_found" = "yes"; then
++        AC_MSG_CHECKING([for Google libkml])
+ 
+-            AC_SUBST([LIBKML_CFLAGS])
+-            AC_SUBST([LIBKML_LDFLAGS])
++        if test "$run_libkml_test" = "yes"; then
++            if test "$libkml_header_found" = "yes" -a "$libkml_lib_found" = "yes"; then
+ 
+-            HAVE_LIBKML="yes"
+-        else 
+-            HAVE_LIBKML="no"
+-        fi
++                AC_SUBST([LIBKML_CFLAGS])
++                AC_SUBST([LIBKML_LDFLAGS])
+ 
+-        AC_MSG_RESULT([$HAVE_LIBKML])
++                HAVE_LIBKML="yes"
++            else
++                HAVE_LIBKML="no"
++            fi
+ 
+-        dnl
+-        dnl Check  version
+-        dnl
+-        if test "$HAVE_LIBKML" = "yes"; then
++            AC_MSG_RESULT([$HAVE_LIBKML])
+ 
+-            libkml_version_req=ifelse([$1], [], [], [$1])
+-            
+-            if test  -n "$libkml_version_req"; then
+-
+-                AC_MSG_CHECKING([if Google libkml version is >= $libkml_version_req])
+-
+-                if test -f "$libkml_include_dir2/base/version.h"; then
+-
+-                    libkml_major=$(sed -n '/^#define LIBKML_MAJOR_VERSION.*$/{s/\([^0-9]*\)\([0-9]*\).*/\2/;P;}' \
+-		    	$libkml_include_dir2/base/version.h)
+-                    libkml_minor=$(sed -n '/^#define LIBKML_MINOR_VERSION.*$/{s/\([^0-9]*\)\([0-9]*\).*/\2/;P;}' \
+-		    	$libkml_include_dir2/base/version.h)
+-                    libkml_revision=$(sed -n '/^#define LIBKML_MICRO_VERSION.*$/{s/\([^0-9]*\)\([0-9]*\).*/\2/;P;}' \
+-		    	$libkml_include_dir2/base/version.h)
+-
+-                    LIBKML_VERSION="$libkml_major.$libkml_minor.$libkml_revision"
+-                    AC_SUBST([LIBKML_VERSION])
+-
+-                    dnl Decompose required version string and calculate numerical representation
+-                    libkml_version_req_major=`expr $libkml_version_req : '\([[0-9]]*\)'`
+-                    libkml_version_req_minor=`expr $libkml_version_req : '[[0-9]]*\.\([[0-9]]*\)'`
+-                    libkml_version_req_revision=`expr $libkml_version_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
+-                    if test "x$libkml_version_req_revision" = "x"; then
+-                        libkml_version_req_revision="0"
+-                    fi
+-                    
+-                    libkml_version_req_number=`expr $libkml_version_req_major \* 10000 \
+-                                               \+ $libkml_version_req_minor \* 100 \
+-                                               \+ $libkml_version_req_revision`
+-
+-                    dnl Calculate numerical representation of detected version
+-                    libkml_version_number=`expr $libkml_major \* 10000 \
+-                                          \+ $libkml_minor \* 100 \
+-                                           \+ $libkml_revision`
+-
+-                    libkml_version_check=`expr $libkml_version_number \>\= $libkml_version_req_number`
+-                    if test "$libkml_version_check" = "1"; then
+-                        AC_MSG_RESULT([yes])
++            dnl
++            dnl Check  version
++            dnl
++            if test "$HAVE_LIBKML" = "yes"; then
++
++                libkml_version_req=ifelse([$1], [], [], [$1])
++
++                if test  -n "$libkml_version_req"; then
++
++                    AC_MSG_CHECKING([if Google libkml version is >= $libkml_version_req])
++
++                    if test -f "$libkml_include_dir2/base/version.h"; then
++
++                        libkml_major=$(sed -n '/^#define LIBKML_MAJOR_VERSION.*$/{s/\([^0-9]*\)\([0-9]*\).*/\2/;P;}' \
++                            $libkml_include_dir2/base/version.h)
++                        libkml_minor=$(sed -n '/^#define LIBKML_MINOR_VERSION.*$/{s/\([^0-9]*\)\([0-9]*\).*/\2/;P;}' \
++                            $libkml_include_dir2/base/version.h)
++                        libkml_revision=$(sed -n '/^#define LIBKML_MICRO_VERSION.*$/{s/\([^0-9]*\)\([0-9]*\).*/\2/;P;}' \
++                            $libkml_include_dir2/base/version.h)
++
++                        LIBKML_VERSION="$libkml_major.$libkml_minor.$libkml_revision"
++                        AC_SUBST([LIBKML_VERSION])
++
++                        dnl Decompose required version string and calculate numerical representation
++                        libkml_version_req_major=`expr $libkml_version_req : '\([[0-9]]*\)'`
++                        libkml_version_req_minor=`expr $libkml_version_req : '[[0-9]]*\.\([[0-9]]*\)'`
++                        libkml_version_req_revision=`expr $libkml_version_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
++                        if test "x$libkml_version_req_revision" = "x"; then
++                            libkml_version_req_revision="0"
++                        fi
++
++                        libkml_version_req_number=`expr $libkml_version_req_major \* 10000 \
++                                                   \+ $libkml_version_req_minor \* 100 \
++                                                   \+ $libkml_version_req_revision`
++
++                        dnl Calculate numerical representation of detected version
++                        libkml_version_number=`expr $libkml_major \* 10000 \
++                                              \+ $libkml_minor \* 100 \
++                                               \+ $libkml_revision`
++
++                        libkml_version_check=`expr $libkml_version_number \>\= $libkml_version_req_number`
++                        if test "$libkml_version_check" = "1"; then
++                            AC_MSG_RESULT([yes])
++                        else
++                            AC_MSG_RESULT([no])
++                            AC_MSG_WARN([Found Google libkml ${LIBKML_VERSION}, which is older than required (${libkml_version_req}). KML support disabled.])
++                            HAVE_LIBKML="no"
++                        fi
+                     else
+                         AC_MSG_RESULT([no])
+-                        AC_MSG_WARN([Found Google libkml ${LIBKML_VERSION}, which is older than required (${libkml_version_req}). KML support disabled.])
+-			HAVE_LIBKML="no"
++                        AC_MSG_WARN([Missing header $libkml_include_dir2/base/bersion.hpp. Unable to determine Google libkml version.])
+                     fi
+-                else
+-                    AC_MSG_RESULT([no])
+-                    AC_MSG_WARN([Missing header $libkml_include_dir2/base/bersion.hpp. Unable to determine Google libkml version.])
+                 fi
+             fi
+-        fi
+ 
+-    else
+-        HAVE_LIBKML="no"
+-        AC_MSG_RESULT([$HAVE_LIBKML])
++        else
++            HAVE_LIBKML="no"
++            AC_MSG_RESULT([$HAVE_LIBKML])
+ 
+-        if test "$libkml_requested" = "yes"; then
+-            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])
++            if test "$libkml_requested" = "yes"; then
++                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])
++            fi
+         fi
+     fi
+ ])
diff --git a/debian/patches/series b/debian/patches/series
index ba0fef6..4938718 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -29,3 +29,4 @@ hardening
 recommanded-typo
 perl-vendor
 existant-typo
+libkml-pkgconfig

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/gdal.git



More information about the Pkg-grass-devel mailing list