# From https://code.google.com/p/libcitygml/source/browse/trunk/CMakeModules/FindXerces.cmake?r=95
# - Try to find Xerces-C
# Once done this will define
#
# XERCESC_FOUND - system has Xerces-C
# XERCESC_INCLUDE - the Xerces-C include directory
# XERCESC_LIBRARY - Link these to use Xerces-C
# XERCESC_VERSION - Xerces-C found version

IF (XERCESC_INCLUDE AND XERCESC_LIBRARY)
    # in cache already
    SET(XERCESC_FIND_QUIETLY TRUE)
ENDIF (XERCESC_INCLUDE AND XERCESC_LIBRARY)

OPTION(XERCESC_STATIC "Set to ON to link your project with static library (instead of DLL)." ON)

IF (NOT ${XERCESC_WAS_STATIC} STREQUAL ${XERCESC_STATIC})
    UNSET(XERCESC_LIBRARY CACHE)
    UNSET(XERCESC_LIBRARY_DEBUG CACHE)
ENDIF (NOT ${XERCESC_WAS_STATIC} STREQUAL ${XERCESC_STATIC})

SET(XERCESC_WAS_STATIC ${XERCESC_STATIC} CACHE INTERNAL "" )

FIND_PATH(XERCESC_INCLUDE NAMES xercesc/util/XercesVersion.hpp
        PATHS
        $ENV{XERCESC_INCLUDE_DIR}
        ${XERCESC_INCLUDE_DIR}
        /usr/local/include
        /usr/include
)

IF (XERCESC_STATIC)
    FIND_LIBRARY(XERCESC_LIBRARIES NAMES xerces-c_static_3 xerces-c-3.1 xerces-c
            PATHS
            $ENV{XERCESC_LIBRARY_DIR}
            ${XERCESC_LIBRARY_DIR}
            /usr/lib
            /usr/local/lib
    )
    FIND_LIBRARY(XERCESC_LIBRARIES_DEBUG NAMES xerces-c_static_3D xerces-c-3.1D
            PATHS
            $ENV{XERCESC_LIBRARY_DIR}
            ${XERCESC_LIBRARY_DIR}
            /usr/lib
            /usr/local/lib
    )
    ADD_DEFINITIONS( -DXERCES_STATIC_LIBRARY )
ELSE (XERCESC_STATIC)
    FIND_LIBRARY(XERCESC_LIBRARY NAMES xerces-c_3
            PATHS
            $ENV{XERCESC_LIBRARY_DIR}
            ${XERCESC_LIBRARY_DIR}
    )
    FIND_LIBRARY(XERCESC_LIBRARIES_DEBUG NAMES xerces-c_3D
            PATHS
            $ENV{XERCESC_LIBRARY_DIR}
            ${XERCESC_LIBRARY_DIR}
    )
ENDIF (XERCESC_STATIC)

IF (XERCESC_INCLUDE AND XERCESC_LIBRARIES)
    SET(XERCESC_FOUND TRUE)
ELSE (XERCESC_INCLUDE AND XERCESC_LIBRARIES)
    SET(XERCESC_FOUND FALSE)
ENDIF (XERCESC_INCLUDE AND XERCESC_LIBRARIES)

IF(XERCESC_FOUND)

    FIND_PATH(XERCESC_XVERHPPPATH NAMES XercesVersion.hpp PATHS
            ${XERCESC_INCLUDE}
            PATH_SUFFIXES xercesc/util)

    IF ( ${XERCESC_XVERHPPPATH} STREQUAL XERCESC_XVERHPPPATH-NOTFOUND )
        SET(XERCES_VERSION "0")
    ELSE( ${XERCESC_XVERHPPPATH} STREQUAL XERCESC_XVERHPPPATH-NOTFOUND )
        FILE(READ ${XERCESC_XVERHPPPATH}/XercesVersion.hpp XVERHPP)

        STRING(REGEX MATCHALL "\n *#define XERCES_VERSION_MAJOR +[0-9]+" XVERMAJ
                ${XVERHPP})
        STRING(REGEX MATCH "\n *#define XERCES_VERSION_MINOR +[0-9]+" XVERMIN
                ${XVERHPP})
        STRING(REGEX MATCH "\n *#define XERCES_VERSION_REVISION +[0-9]+" XVERREV
                ${XVERHPP})

        STRING(REGEX REPLACE "\n *#define XERCES_VERSION_MAJOR +" ""
                XVERMAJ ${XVERMAJ})
        STRING(REGEX REPLACE "\n *#define XERCES_VERSION_MINOR +" ""
                XVERMIN ${XVERMIN})
        STRING(REGEX REPLACE "\n *#define XERCES_VERSION_REVISION +" ""
                XVERREV ${XVERREV})

        SET(XERCESC_VERSION ${XVERMAJ}.${XVERMIN}.${XVERREV})

    ENDIF ( ${XERCESC_XVERHPPPATH} STREQUAL XERCESC_XVERHPPPATH-NOTFOUND )

    IF(NOT XERCESC_FIND_QUIETLY)
        MESSAGE(STATUS "Found Xerces-C: ${XERCESC_LIBRARY}")
        MESSAGE(STATUS "              : ${XERCESC_INCLUDE}")
        MESSAGE(STATUS "       Version: ${XERCESC_VERSION}")
    ENDIF(NOT XERCESC_FIND_QUIETLY)
ENDIF(XERCESC_FOUND)


MARK_AS_ADVANCED(XERCESC_INCLUDE XERCESC_LIBRARIES)