1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
string(TOUPPER ${PROJECT_NAME} _UPPER_PROJECT_NAME)
set(_PROJECT_DEPENDENCY_DIR ${_UPPER_PROJECT_NAME}_DEPENDENCY_DIR)
find_library(XERCES_LIBRARY
NAMES xerces-c_3.lib xerces-c_4.lib xerces-c
PATHS /usr/lib /usr/local/lib
${${_PROJECT_DEPENDENCY_DIR}}/lib
DOC "The file name of the Xerces library."
)
find_path(XERCES_INCLUDE_DIR
NAMES xercesc/parsers/XercesDOMParser.hpp
PATHS /usr/include /usr/local/include
${CMAKE_OSX_SYSROOT}/usr/include/xercesc
/usr/include/xercesc
/usr/local/include/xercesc
${${_PROJECT_DEPENDENCY_DIR}}/include
DOC "The directory containing the Xerces include files."
)
if (EXISTS "${XERCES_INCLUDE_DIR}/xercesc/util/XercesVersion.hpp")
function(_myXercesC_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(XERCES_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()
_myXercesC_GET_VERSION("${XERCES_INCLUDE_DIR}/xercesc/util/XercesVersion.hpp")
if (XERCES_VERSION VERSION_EQUAL 2.6.0)
message(FATAL_ERROR
"Xerces version ${XERCES_VERSION} contains known bugs
and is not compatible with libSBML. Please use a newer version of
Xerces or an alternate XML parser.")
endif()
endif ()
if(NOT TARGET XERCES::XERCES)
add_library(XERCES::XERCES UNKNOWN IMPORTED)
set_target_properties(XERCES::XERCES PROPERTIES
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
IMPORTED_LOCATION "${XERCES_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${XERCES_INCLUDE_DIR}")
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
XERCES
VERSION_VAR XERCES_VERSION
REQUIRED_VARS XERCES_LIBRARY XERCES_INCLUDE_DIR)
mark_as_advanced(XERCES_VERSION)
|