From 535d3ac5773f6d85b0162593c8509a1d2c33e9be Mon Sep 17 00:00:00 2001
From: Guillaume Pasero <guillaume.pasero@c-s.fr>
Date: Fri, 24 Apr 2015 17:24:19 +0200
Subject: [PATCH] ENH: TinyXML version parsing

---
 CMake/FindTinyXML.cmake | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/CMake/FindTinyXML.cmake b/CMake/FindTinyXML.cmake
index 66635ca0ea..3f6f6513cd 100644
--- a/CMake/FindTinyXML.cmake
+++ b/CMake/FindTinyXML.cmake
@@ -4,6 +4,11 @@
 #   TINYXML_FOUND        - True if TinyXML found.
 #   TINYXML_INCLUDE_DIRS - where to find tinyxml.h, etc.
 #   TINYXML_LIBRARIES    - List of libraries when using TinyXML.
+#   TINYXML_VERSION        - version string
+#   TINYXML_VERSION_MAJOR  - version major number
+#   TINYXML_VERSION_MINOR  - version minor number
+#   TINYXML_VERSION_PATCH  - version patch number
+#   TINYXML_VERSION_NUMBER - version number ((major*100)+minor)*100+patch
 #
 
 if( TINYXML_INCLUDE_DIR )
@@ -14,6 +19,21 @@ endif()
 find_path( TINYXML_INCLUDE_DIR tinyxml.h
            PATH_SUFFIXES tinyxml )
 
+if(EXISTS "${TINYXML_INCLUDE_DIR}/tinyxml.h")
+  file(READ "${TINYXML_INCLUDE_DIR}/tinyxml.h" _tinyxml_h_CONTENTS)
+  string(REGEX REPLACE ".*const +int +TIXML_MAJOR_VERSION += +([0-9]+);.*" "\\1" TINYXML_VERSION_MAJOR "${_tinyxml_h_CONTENTS}")
+  string(REGEX REPLACE ".*const +int +TIXML_MINOR_VERSION += +([0-9]+);.*" "\\1" TINYXML_VERSION_MINOR "${_tinyxml_h_CONTENTS}")
+  string(REGEX REPLACE ".*const +int +TIXML_PATCH_VERSION += +([0-9]+);.*" "\\1" TINYXML_VERSION_PATCH "${_tinyxml_h_CONTENTS}")
+  set(TINYXML_VERSION "${TINYXML_VERSION_MAJOR}.${TINYXML_VERSION_MINOR}.${TINYXML_VERSION_PATCH}")
+  math(EXPR TINYXML_VERSION_NUMBER
+    "((${TINYXML_VERSION_MAJOR})*100+${TINYXML_VERSION_MINOR})*100+${TINYXML_VERSION_PATCH}")
+else()
+  if(NOT TINYXML_FIND_QUIETLY)
+  message(WARNING "tinyxml.h not found !")
+  endif()
+endif()
+
+
 find_library( TINYXML_LIBRARY
               NAMES tinyxml
               PATH_SUFFIXES tinyxml )
-- 
GitLab