Provide cmake module

* add libxml2-config.cmake.in template
* configure.ac: add libxml2-config.cmake.in to the configured file list
* Makefile.am: install libxml2-config.cmake under ${libdir}/cmake/libxml2

Signed-off-by: Samuel Martin <s.martin49@gmail.com>
diff --git a/Makefile.am b/Makefile.am
index 89748de..70720f3 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1207,6 +1207,7 @@
 	     check-xsddata-test-suite.py check-xinclude-test-suite.py \
              example/Makefile.am example/gjobread.c example/gjobs.xml \
 	     $(man_MANS) libxml-2.0.pc.in libxml-2.0-uninstalled.pc.in \
+	     libxml2-config.cmake.in \
 	     trionan.c trionan.h triostr.c triostr.h trio.c trio.h \
 	     triop.h triodef.h libxml.h elfgcchack.h xzlib.h buf.h \
 	     enc.h save.h testThreadsWin32.c genUnicode.py TODO_SCHEMAS \
@@ -1218,6 +1219,9 @@
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = libxml-2.0.pc
 
+cmakedir = $(libdir)/cmake/libxml2
+cmake_DATA = libxml2-config.cmake
+
 #
 # Install the tests program sources as examples 
 #
diff --git a/configure.ac b/configure.ac
index f157567..eb867ab 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1656,7 +1656,7 @@
 ln -s $srcdir/Copyright COPYING
 
 # keep on one line for cygwin c.f. #130896
-AC_CONFIG_FILES([libxml2.spec:libxml.spec.in Makefile include/Makefile include/libxml/Makefile doc/Makefile doc/examples/Makefile doc/devhelp/Makefile example/Makefile python/Makefile python/tests/Makefile xstc/Makefile include/libxml/xmlversion.h xml2-config libxml-2.0.pc libxml-2.0-uninstalled.pc python/setup.py])
+AC_CONFIG_FILES([libxml2.spec:libxml.spec.in Makefile include/Makefile include/libxml/Makefile doc/Makefile doc/examples/Makefile doc/devhelp/Makefile example/Makefile python/Makefile python/tests/Makefile xstc/Makefile include/libxml/xmlversion.h xml2-config libxml-2.0.pc libxml-2.0-uninstalled.pc libxml2-config.cmake python/setup.py])
 AC_OUTPUT
 
 chmod +x xml2-config python/setup.py
diff --git a/libxml2-config.cmake.in b/libxml2-config.cmake.in
new file mode 100644
index 0000000..ac29329
--- /dev/null
+++ b/libxml2-config.cmake.in
@@ -0,0 +1,50 @@
+# libxml2-config.cmake
+# --------------------
+#
+# Libxml2 cmake module.
+# THis module sets the following variables:
+#
+# ::
+#
+#   LIBXML2_INCLUDE_DIRS      - Directory where libxml2 headers are located.
+#   LIBXML2_LIBRARIES         - xml2 libraries to link against.
+#   LIBXML2_VERSION_MAJOR     - The major version of libxml2.
+#   LIBXML2_VERSION_MINOR     - The minor version of libxml2.
+#   LIBXML2_VERSION_PATCH     - The patch version of libxml2.
+#   LIBXML2_VERSION_STRING    - version number as a string (ex: "2.3.4")
+#   LIBXML2_MODULES           - whether libxml2 as dso support
+
+get_filename_component(_libxml2_rootdir ${CMAKE_CURRENT_LIST_DIR}/../../../ ABSOLUTE)
+
+set(LIBXML2_VERSION_MAJOR  @LIBXML_MAJOR_VERSION@)
+set(LIBXML2_VERSION_MINOR  @LIBXML_MINOR_VERSION@)
+set(LIBXML2_VERSION_MICRO  @LIBXML_MICRO_VERSION@)
+set(LIBXML2_VERSION_STRING "@VERSION@")
+set(LIBXML2_INSTALL_PREFIX ${_libxml2_rootdir})
+set(LIBXML2_INCLUDE_DIRS   ${_libxml2_rootdir}/include)
+set(LIBXML2_LIBRARY_DIR    ${_libxml2_rootdir}/lib)
+set(LIBXML2_LIBRARIES      -L${LIBXML2_LIBRARY_DIR} -lxml2)
+
+if(@WITH_THREADS@)
+  find_package(Threads REQUIRED)
+  list(APPEND LIBXML2_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
+endif()
+
+if(@WITH_LZMA@)
+  find_package(LibLZMA REQUIRED)
+  list(APPEND LIBXML2_LIBRARIES    ${LIBLZMA_LIBRARIES})
+  list(APPEND LIBXML2_INCLUDE_DIRS ${LIBLZMA_INCLUDE_DIRS})
+endif()
+
+if(@WITH_ZLIB@)
+  find_package(ZLIB REQUIRED)
+  list(APPEND LIBXML2_LIBRARIES    ${ZLIB_LIBRARIES})
+  list(APPEND LIBXML2_INCLUDE_DIRS ${ZLIB_INCLUDE_DIRS})
+endif()
+
+list(APPEND LIBXML2_LIBRARIES @ICU_LIBS@ @ICONV_LIBS@ @M_LIBS@ @WIN32_EXTRA_LIBADD@ @LIBS@)
+
+# whether libxml2 has dso support
+set(LIBXML2_MODULES @WITH_MODULES@)
+
+mark_as_advanced( LIBXML2_INCLUDE_DIRS LIBXML2_LIBRARIES )