diff options
Diffstat (limited to 'share/cmake/FindTinyXML.cmake')
-rw-r--r-- | share/cmake/FindTinyXML.cmake | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/share/cmake/FindTinyXML.cmake b/share/cmake/FindTinyXML.cmake new file mode 100644 index 0000000..7e54cc0 --- /dev/null +++ b/share/cmake/FindTinyXML.cmake @@ -0,0 +1,59 @@ +# Find the tinyxml XML parsing library. +# +# Sets the usual variables expected for find_package scripts: +# +# TINYXML_INCLUDE_DIRS - header location +# TINYXML_LIBRARIES - library to link against +# TINYXML_FOUND - true if tinyxml was found. +# TINYXML_MAJOR_VERSION +# TINYXML_MINOR_VERSION +# TINYXML_PATCH_VERSION +# TINYXML_VERSION + +find_path(TINYXML_INCLUDE_DIR tinyxml.h) +find_library(TINYXML_LIBRARY NAMES tinyxml) + +# Try to get the tinyxml version from the header file. +if(TINYXML_INCLUDE_DIR) + set(_tixml_header ${TINYXML_INCLUDE_DIR}/tinyxml.h) + file(READ ${_tixml_header} _contents) + if(_contents) + string(REGEX MATCH "const int TIXML_MAJOR_VERSION = ([0-9]+);" _TMP_major "${_contents}") + string(REGEX REPLACE ".*([0-9]+).*" "\\1" _OUT_major "${_TMP_major}") + string(REGEX MATCH "const int TIXML_MINOR_VERSION = ([0-9]+);" _TMP_minor "${_contents}") + string(REGEX REPLACE ".*([0-9]+).*" "\\1" _OUT_minor "${_TMP_minor}") + string(REGEX MATCH "const int TIXML_PATCH_VERSION = ([0-9]+);" _TMP_patch "${_contents}") + string(REGEX REPLACE ".*([0-9]+).*" "\\1" _OUT_patch "${_TMP_patch}") + + if(NOT ${_OUT_major} MATCHES "[0-9]+") + message(FATAL_ERROR "Version parsing failed for TIXML_MAJOR_VERSION!") + endif() + if(NOT ${_OUT_minor} MATCHES "[0-9]+") + message(FATAL_ERROR "Version parsing failed for TIXML_MINOR_VERSION!") + endif() + if(NOT ${_OUT_patch} MATCHES "[0-9]+") + message(FATAL_ERROR "Version parsing failed for TIXML_MICRO_VERSION!") + endif() + + set(TINYXML_MAJOR_VERSION ${_OUT_major}) + set(TINYXML_MINOR_VERSION ${_OUT_minor}) + set(TINYXML_PATCH_VERSION ${_OUT_patch}) + set(TINYXML_VERSION ${TINYXML_MAJOR_VERSION}.${TINYXML_MINOR_VERSION}.${TINYXML_PATCH_VERSION}) + else() + message(FATAL_ERROR "Include file ${_tixml_header} does not exist") + endif() +endif() + +# Support the REQUIRED and QUIET arguments, and set TINYXML_FOUND if found. +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS (TinyXML DEFAULT_MSG TINYXML_LIBRARY + TINYXML_INCLUDE_DIR) + +message(STATUS "TinyXML version: ${TINYXML_VERSION}") + +if(TINYXML_FOUND) + set(TINYXML_LIBRARIES ${TINYXML_LIBRARY}) + set(TINYXML_INCLUDE_DIRS ${TINYXML_INCLUDE_DIR}) +endif() + +mark_as_advanced(TINYXML_LIBRARY TINYXML_INCLUDE_DIR) |