summaryrefslogtreecommitdiff
path: root/Modules/FindXercesC.cmake
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2014-12-04 10:36:21 -0500
committerBrad King <brad.king@kitware.com>2014-12-04 10:41:26 -0500
commit27141eede739fb4376a6fe2cec1b1171841bf7fb (patch)
treee15b310f33757a70785d5b2d3567f55b72dba37d /Modules/FindXercesC.cmake
parent433c6d4689ca86f1a8d8d966be0204e98f95b968 (diff)
downloadcmake-27141eede739fb4376a6fe2cec1b1171841bf7fb.tar.gz
Modules: Rename FindXerces to FindXercesC
The FindXerces module was added in commit v3.1.0-rc1~155^2 (FindXerces: New module to find Apache Xerces-C++, 2014-08-17). However, there are two implementations of Xerces, one in C++: http://xerces.apache.org/xerces-c/ and one in Java: http://xerces.apache.org/xerces-j/ Rename FindXerces to FindXercesC to clarify that it is about the C++ implementation. While at it, add the missing CMake 3.1 release note about this module. Suggested-by: Erik Sjölund <erik.sjolund@gmail.com>
Diffstat (limited to 'Modules/FindXercesC.cmake')
-rw-r--r--Modules/FindXercesC.cmake85
1 files changed, 85 insertions, 0 deletions
diff --git a/Modules/FindXercesC.cmake b/Modules/FindXercesC.cmake
new file mode 100644
index 0000000000..5a8ea9de25
--- /dev/null
+++ b/Modules/FindXercesC.cmake
@@ -0,0 +1,85 @@
+#.rst:
+# FindXercesC
+# -----------
+#
+# Find the Apache Xerces-C++ validating XML parser headers and libraries.
+#
+# This module reports information about the Xerces installation in
+# several variables. General variables::
+#
+# XercesC_FOUND - true if the Xerces headers and libraries were found
+# XercesC_VERSION - Xerces release version
+# XercesC_INCLUDE_DIRS - the directory containing the Xerces headers
+# XercesC_LIBRARIES - Xerces libraries to be linked
+#
+# The following cache variables may also be set::
+#
+# XercesC_INCLUDE_DIR - the directory containing the Xerces headers
+# XercesC_LIBRARY - the Xerces library
+
+# Written by Roger Leigh <rleigh@codelibre.net>
+
+#=============================================================================
+# Copyright 2014 University of Dundee
+#
+# Distributed under the OSI-approved BSD License (the "License");
+# see accompanying file Copyright.txt for details.
+#
+# This software is distributed WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the License for more information.
+#=============================================================================
+# (To distribute this file outside of CMake, substitute the full
+# License text for the above reference.)
+
+function(_XercesC_GET_VERSION version_hdr)
+ file(STRINGS ${version_hdr} _contents REGEX "^[ \t]*#define XERCES_VERSION_.*")
+ if(_contents)
+ string(REGEX REPLACE ".*#define XERCES_VERSION_MAJOR[ \t]+([0-9]+).*" "\\1" XercesC_MAJOR "${_contents}")
+ string(REGEX REPLACE ".*#define XERCES_VERSION_MINOR[ \t]+([0-9]+).*" "\\1" XercesC_MINOR "${_contents}")
+ string(REGEX REPLACE ".*#define XERCES_VERSION_REVISION[ \t]+([0-9]+).*" "\\1" XercesC_PATCH "${_contents}")
+
+ if(NOT XercesC_MAJOR MATCHES "^[0-9]+$")
+ message(FATAL_ERROR "Version parsing failed for XERCES_VERSION_MAJOR!")
+ endif()
+ if(NOT XercesC_MINOR MATCHES "^[0-9]+$")
+ message(FATAL_ERROR "Version parsing failed for XERCES_VERSION_MINOR!")
+ endif()
+ if(NOT XercesC_PATCH MATCHES "^[0-9]+$")
+ message(FATAL_ERROR "Version parsing failed for XERCES_VERSION_REVISION!")
+ endif()
+
+ set(XercesC_VERSION "${XercesC_MAJOR}.${XercesC_MINOR}.${XercesC_PATCH}" PARENT_SCOPE)
+ else()
+ message(FATAL_ERROR "Include file ${version_hdr} does not exist or does not contain expected version information")
+ endif()
+endfunction()
+
+# Find include directory
+find_path(XercesC_INCLUDE_DIR
+ NAMES "xercesc/util/PlatformUtils.hpp"
+ DOC "Xerces-C++ include directory")
+mark_as_advanced(XercesC_INCLUDE_DIR)
+
+# Find all XercesC libraries
+find_library(XercesC_LIBRARY "xerces-c"
+ DOC "Xerces-C++ libraries")
+mark_as_advanced(XercesC_LIBRARY)
+
+if(XercesC_INCLUDE_DIR)
+ _XercesC_GET_VERSION("${XercesC_INCLUDE_DIR}/xercesc/util/XercesVersion.hpp")
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(XercesC
+ FOUND_VAR XercesC_FOUND
+ REQUIRED_VARS XercesC_LIBRARY
+ XercesC_INCLUDE_DIR
+ XercesC_VERSION
+ VERSION_VAR XercesC_VERSION
+ FAIL_MESSAGE "Failed to find XercesC")
+
+if(XercesC_FOUND)
+ set(XercesC_INCLUDE_DIRS "${XercesC_INCLUDE_DIR}")
+ set(XercesC_LIBRARIES "${XercesC_LIBRARY}")
+endif()