# Module for locating marpaWrapper, based on ICU module.
#
# Cutomizable variables:
# MARPAWRAPPER_ROOT_DIR
# This variable points to the marpaWrapper root directory. On Windows the
# library location typically will have to be provided explicitly using the
# -D command-line option. Alternatively, an environment variable can be set.
#
# Read-Only variables:
# MARPAWRAPPER_FOUND
# Indicates whether the library has been found.
#
# MARPAWRAPPER_INCLUDE_DIRS
# Points to the marpaWrapper include directory.
#
# MARPAWRAPPER_LIBRARIES
# Points to the marpaWrapper libraries that should be passed to
# target_link_libraries in dynamic mode.
#
# MARPAWRAPPER_LIBRARIES_STATIC
# Points to the marpaWrapper libraries static that should be passed to
# target_link_libraries in static mode.
#
# MARPAWRAPPER_LINK_FLAGS
# Linker flags when building linking against marpaWrapper. Defaults to "libmarpaWrapper". Take care, this is a list.
#
# MARPAWRAPPER_STATIC_LINK_FLAGS
# Linker flags when building linking against static marpaWrapper. Defaults to "libmarpaWrapper_static". Take care, this is a list.
#
# MARPAWRAPPER_LDFLAGS
# Stringified version of MARPAWRAPPER_LINK_FLAGS
#
# MARPAWRAPPER_STATIC_LDFLAGS
# Stringified version of MARPAWRAPPER_STATIC_LINK_FLAGS
#
INCLUDE (CMakeParseArguments)
INCLUDE (FindPackageHandleStandardArgs)
SET (_PF86 "ProgramFiles(x86)")
SET (_MARPAWRAPPER_POSSIBLE_DIRS
${MARPAWRAPPER_ROOT_DIR}
"$ENV{MARPAWRAPPER_ROOT_DIR}"
"C:/marpaWrapper"
"$ENV{PROGRAMFILES}/marpaWrapper"
"$ENV{${_PF86}}/marpaWrapper")
SET (_MARPAWRAPPER_POSSIBLE_INCLUDE_SUFFIXES include)
IF (CMAKE_SIZEOF_VOID_P EQUAL 8)
SET (_MARPAWRAPPER_POSSIBLE_LIB_SUFFIXES lib64)
SET (_MARPAWRAPPER_POSSIBLE_BIN_SUFFIXES bin64)
IF (NOT WIN32)
LIST (APPEND _MARPAWRAPPER_POSSIBLE_LIB_SUFFIXES lib)
LIST (APPEND _MARPAWRAPPER_POSSIBLE_BIN_SUFFIXES bin)
ENDIF (NOT WIN32)
ELSE (CMAKE_SIZEOF_VOID_P EQUAL 8)
SET (_MARPAWRAPPER_POSSIBLE_LIB_SUFFIXES lib)
SET (_MARPAWRAPPER_POSSIBLE_BIN_SUFFIXES bin)
ENDIF (CMAKE_SIZEOF_VOID_P EQUAL 8)
FIND_PATH (MARPAWRAPPER_ROOT_DIR
NAMES include/marpaWrapper.h
PATHS ${_MARPAWRAPPER_POSSIBLE_DIRS}
DOC "marpaWrapper root directory")
IF (MARPAWRAPPER_ROOT_DIR)
# Re-use the previous path:
FIND_PATH (MARPAWRAPPER_INCLUDE_DIR
NAMES marpaWrapper.h
PATHS ${MARPAWRAPPER_ROOT_DIR}
PATH_SUFFIXES ${_MARPAWRAPPER_POSSIBLE_INCLUDE_SUFFIXES}
DOC "marpaWrapper include directory"
# NO_DEFAULT_PATH
)
ELSE (MARPAWRAPPER_ROOT_DIR)
# Use default path search
FIND_PATH (MARPAWRAPPER_INCLUDE_DIR
NAMES marpaWrapper.h
DOC "marpaWrapper include directory"
)
ENDIF (MARPAWRAPPER_ROOT_DIR)
IF (NOT MARPAWRAPPER_FIND_COMPONENTS)
SET (MARPAWRAPPER_FIND_COMPONENTS marpaWrapper)
ENDIF (NOT MARPAWRAPPER_FIND_COMPONENTS)
IF (MARPAWRAPPER_INCLUDE_DIR)
# Loop over each components
FOREACH (_MARPAWRAPPER_COMPONENT ${MARPAWRAPPER_FIND_COMPONENTS})
SET (_MARPAWRAPPER_COMPONENT_BASE ${_MARPAWRAPPER_COMPONENT})
SET (_MARPAWRAPPER_COMPONENT_POSSIBLE_DEBUG_NAMES ${_MARPAWRAPPER_COMPONENT_BASE}d)
SET (_MARPAWRAPPER_COMPONENT_POSSIBLE_RELEASE_NAMES ${_MARPAWRAPPER_COMPONENT_BASE})
SET (_MARPAWRAPPER_STATIC_COMPONENT_BASE "${_MARPAWRAPPER_COMPONENT}_static")
SET (_MARPAWRAPPER_STATIC_COMPONENT_POSSIBLE_DEBUG_NAMES ${_MARPAWRAPPER_STATIC_COMPONENT_BASE}d)
SET (_MARPAWRAPPER_STATIC_COMPONENT_POSSIBLE_RELEASE_NAMES ${_MARPAWRAPPER_STATIC_COMPONENT_BASE})
STRING (TOUPPER ${_MARPAWRAPPER_COMPONENT} _MARPAWRAPPER_COMPONENT_UPPER)
SET (_MARPAWRAPPER_LIBRARY_BASE MARPAWRAPPER_${_MARPAWRAPPER_COMPONENT_UPPER}_LIBRARY)
SET (_MARPAWRAPPER_STATIC_LIBRARY_BASE MARPAWRAPPER_STATIC_${_MARPAWRAPPER_COMPONENT_UPPER}_LIBRARY)
IF (MARPAWRAPPER_ROOT_DIR)
FIND_LIBRARY (${_MARPAWRAPPER_LIBRARY_BASE}_DEBUG
NAMES ${_MARPAWRAPPER_COMPONENT_POSSIBLE_DEBUG_NAMES}
PATHS ${MARPAWRAPPER_ROOT_DIR} PATH_SUFFIXES ${_MARPAWRAPPER_POSSIBLE_LIB_SUFFIXES}
# NO_DEFAULT_PATH
)
FIND_LIBRARY (${_MARPAWRAPPER_STATIC_LIBRARY_BASE}_DEBUG
NAMES ${_MARPAWRAPPER_STATIC_COMPONENT_POSSIBLE_DEBUG_NAMES}
PATHS ${MARPAWRAPPER_ROOT_DIR} PATH_SUFFIXES ${_MARPAWRAPPER_POSSIBLE_LIB_SUFFIXES}
# NO_DEFAULT_PATH
)
ELSE (MARPAWRAPPER_ROOT_DIR)
FIND_LIBRARY (${_MARPAWRAPPER_LIBRARY_BASE}_DEBUG
NAMES ${_MARPAWRAPPER_COMPONENT_POSSIBLE_DEBUG_NAMES}
PATH_SUFFIXES ${_MARPAWRAPPER_POSSIBLE_LIB_SUFFIXES}
)
FIND_LIBRARY (${_MARPAWRAPPER_STATIC_LIBRARY_BASE}_DEBUG
NAMES ${_MARPAWRAPPER_COMPONENT_STATIC_POSSIBLE_DEBUG_NAMES}
PATH_SUFFIXES ${_MARPAWRAPPER_POSSIBLE_LIB_SUFFIXES}
)
ENDIF (MARPAWRAPPER_ROOT_DIR)
IF (MARPAWRAPPER_ROOT_DIR)
FIND_LIBRARY (${_MARPAWRAPPER_LIBRARY_BASE}_RELEASE
NAMES ${_MARPAWRAPPER_COMPONENT_POSSIBLE_RELEASE_NAMES}
PATHS ${MARPAWRAPPER_ROOT_DIR} PATH_SUFFIXES ${_MARPAWRAPPER_POSSIBLE_LIB_SUFFIXES}
# NO_DEFAULT_PATH
)
FIND_LIBRARY (${_MARPAWRAPPER_STATIC_LIBRARY_BASE}_RELEASE
NAMES ${_MARPAWRAPPER_STATIC_COMPONENT_POSSIBLE_RELEASE_NAMES}
PATHS ${MARPAWRAPPER_ROOT_DIR} PATH_SUFFIXES ${_MARPAWRAPPER_POSSIBLE_LIB_SUFFIXES}
# NO_DEFAULT_PATH
)
ELSE (ICU_ROOT_DIR)
FIND_LIBRARY (${_MARPAWRAPPER_LIBRARY_BASE}_RELEASE
NAMES ${_MARPAWRAPPER_COMPONENT_POSSIBLE_RELEASE_NAMES}
PATH_SUFFIXES ${_MARPAWRAPPER_POSSIBLE_LIB_SUFFIXES}
)
FIND_LIBRARY (${_MARPAWRAPPER_STATIC_LIBRARY_BASE}_RELEASE
NAMES ${_MARPAWRAPPER_STATIC_COMPONENT_POSSIBLE_RELEASE_NAMES}
PATH_SUFFIXES ${_MARPAWRAPPER_POSSIBLE_LIB_SUFFIXES}
)
ENDIF (MARPAWRAPPER_ROOT_DIR)
SET (MARPAWRAPPER_${_MARPAWRAPPER_COMPONENT_UPPER}_FOUND TRUE)
# Debug and release
IF (${_MARPAWRAPPER_LIBRARY_BASE}_DEBUG AND ${_MARPAWRAPPER_LIBRARY_BASE}_RELEASE)
SET (${_MARPAWRAPPER_LIBRARY_BASE}
debug ${${_MARPAWRAPPER_LIBRARY_BASE}_DEBUG}
optimized ${${_MARPAWRAPPER_LIBRARY_BASE}_RELEASE})
# Debug only
ELSEIF (${_MARPAWRAPPER_LIBRARY_BASE}_DEBUG)
SET (${_MARPAWRAPPER_LIBRARY_BASE} ${${_MARPAWRAPPER_LIBRARY_BASE}_DEBUG})
# Release only
ELSEIF (${_MARPAWRAPPER_LIBRARY_BASE}_RELEASE)
SET (${_MARPAWRAPPER_LIBRARY_BASE} ${${_MARPAWRAPPER_LIBRARY_BASE}_RELEASE})
ELSE (${_MARPAWRAPPER_LIBRARY_BASE}_DEBUG AND ${_MARPAWRAPPER_LIBRARY_BASE}_RELEASE)
# Component missing: record it for a later report
LIST (APPEND _MARPAWRAPPER_MISSING_COMPONENTS ${_MARPAWRAPPER_COMPONENT})
SET (MARPAWRAPPER_${__COMPONENT_UPPER}_FOUND FALSE)
ENDIF (${_MARPAWRAPPER_LIBRARY_BASE}_DEBUG AND ${_MARPAWRAPPER_LIBRARY_BASE}_RELEASE)
IF (${_MARPAWRAPPER_STATIC_LIBRARY_BASE}_DEBUG AND ${_MARPAWRAPPER_STATIC_LIBRARY_BASE}_RELEASE)
SET (${_MARPAWRAPPER_STATIC_LIBRARY_BASE}
debug ${${_MARPAWRAPPER_STATIC_LIBRARY_BASE}_DEBUG}
optimized ${${_MARPAWRAPPER_STATIC_LIBRARY_BASE}_RELEASE})
# Debug only
ELSEIF (${_MARPAWRAPPER_STATIC_LIBRARY_BASE}_DEBUG)
SET (${_MARPAWRAPPER_STATIC_LIBRARY_BASE} ${${_MARPAWRAPPER_STATIC_LIBRARY_BASE}_DEBUG})
# Release only
ELSEIF (${_MARPAWRAPPER_STATIC_LIBRARY_BASE}_RELEASE)
SET (${_MARPAWRAPPER_STATIC_LIBRARY_BASE} ${${_MARPAWRAPPER_STATIC_LIBRARY_BASE}_RELEASE})
ELSE (${_MARPAWRAPPER_STATIC_LIBRARY_BASE}_DEBUG AND ${_MARPAWRAPPER_STATIC_LIBRARY_BASE}_RELEASE)
# Component missing: record it for a later report
LIST (APPEND _MARPAWRAPPER_STATIC_MISSING_COMPONENTS ${_MARPAWRAPPER_COMPONENT})
SET (MARPAWRAPPER_STATIC_${__COMPONENT_UPPER}_FOUND FALSE)
ENDIF (${_MARPAWRAPPER_STATIC_LIBRARY_BASE}_DEBUG AND ${_MARPAWRAPPER_STATIC_LIBRARY_BASE}_RELEASE)
MARK_AS_ADVANCED (${_MARPAWRAPPER_LIBRARY_BASE}_DEBUG ${_MARPAWRAPPER_LIBRARY_BASE}_RELEASE)
MARK_AS_ADVANCED (${_MARPAWRAPPER_STATIC_LIBRARY_BASE}_DEBUG ${_MARPAWRAPPER_STATIC_LIBRARY_BASE}_RELEASE)
# Make sure only libraries that have been actually found are registered
IF (${_MARPAWRAPPER_LIBRARY_BASE})
LIST (APPEND _MARPAWRAPPER_LIBRARIES ${${_MARPAWRAPPER_LIBRARY_BASE}})
ENDIF (${_MARPAWRAPPER_LIBRARY_BASE})
IF (${_MARPAWRAPPER_STATIC_LIBRARY_BASE})
LIST (APPEND _MARPAWRAPPER_STATIC_LIBRARIES ${${_MARPAWRAPPER_STATIC_LIBRARY_BASE}})
ENDIF (${_MARPAWRAPPER_STATIC_LIBRARY_BASE})
ENDFOREACH (_MARPAWRAPPER_COMPONENT)
IF (NOT DEFINED _MARPAWRAPPER_MISSING_COMPONENTS AND NOT DEFINED _MARPAWRAPPER_STATIC_MISSING_COMPONENTS)
# Success: all components were found
SET (MARPAWRAPPER_INCLUDE_DIRS "${MARPAWRAPPER_INCLUDE_DIR}")
SET (MARPAWRAPPER_LIBRARIES ${_MARPAWRAPPER_LIBRARIES})
SET (MARPAWRAPPER_STATIC_LIBRARIES ${_MARPAWRAPPER_STATIC_LIBRARIES})
ELSE ()
MESSAGE (STATUS "Several MARPAWRAPPER components were not found:")
# Display missing components indented, each on a separate line
FOREACH (_MARPAWRAPPER_MISSING_COMPONENT ${_MARPAWRAPPER_MISSING_COMPONENTS})
MESSAGE (STATUS " " ${_MARPAWRAPPER_MISSING_COMPONENT})
ENDFOREACH ()
FOREACH (_MARPAWRAPPER_STATIC_MISSING_COMPONENT ${_MARPAWRAPPER_STATIC_MISSING_COMPONENTS})
MESSAGE (STATUS " " ${_MARPAWRAPPER_STATIC_MISSING_COMPONENT})
ENDFOREACH ()
ENDIF ()
#
# Simulate hopefully correct flags based on heuristic discovery
#
IF (NOT _MARPAWRAPPER_C_FLAGS_SHARED)
SET (_MARPAWRAPPER_C_FLAGS_SHARED "${CMAKE_SHARED_LIBRARY_C_FLAGS}")
ENDIF ()
IF (NOT _MARPAWRAPPER_CXX_FLAGS_SHARED)
SET (_MARPAWRAPPER_CXX_FLAGS_SHARED "${CMAKE_SHARED_LIBRARY_CXX_FLAGS}")
ENDIF ()
IF (NOT _MARPAWRAPPER_LINK_FLAGS)
SET (_MARPAWRAPPER_LINK_FLAGS ${MARPAWRAPPER_LIBRARIES})
ENDIF ()
IF (NOT _MARPAWRAPPER_STATIC_LINK_FLAGS)
SET (_MARPAWRAPPER_STATIC_LINK_FLAGS ${MARPAWRAPPER_STATIC_LIBRARIES})
ENDIF ()
ENDIF (MARPAWRAPPER_INCLUDE_DIR)
SET (_MARPAWRAPPER_LDFLAGS " ")
FOREACH (_marpawrapper_link_flag ${_MARPAWRAPPER_LINK_FLAGS})
SET (_MARPAWRAPPER_LDFLAGS "${_MARPAWRAPPER_LDFLAGS} ${_marpawrapper_link_flag}")
ENDFOREACH ()
SET (_MARPAWRAPPER_STATIC_LDFLAGS " ")
FOREACH (_marpawrapper_static_link_flag ${_MARPAWRAPPER_STATIC_LINK_FLAGS})
SET (_MARPAWRAPPER_STATIC_LDFLAGS "${_MARPAWRAPPER_STATIC_LDFLAGS} ${_marpawrapper_static_link_flag}")
ENDFOREACH ()
MARK_AS_ADVANCED (MARPAWRAPPER_ROOT_DIR MARPAWRAPPER_INCLUDE_DIR)
FIND_PACKAGE_HANDLE_STANDARD_ARGS (MARPAWRAPPER
REQUIRED_VARS
MARPAWRAPPER_INCLUDE_DIR
MARPAWRAPPER_LIBRARIES)
IF (_MARPAWRAPPER_LINK_FLAGS AND _MARPAWRAPPER_STATIC_LINK_FLAGS)
SET (MARPAWRAPPER_FOUND 1 CACHE STRING "MARPAWRAPPER is found")
ENDIF ()
SET (MARPAWRAPPER_C_FLAGS_SHARED "${_MARPAWRAPPER_C_FLAGS_SHARED}" CACHE STRING "C flags when compiling against shared MARPAWRAPPER")
SET (MARPAWRAPPER_CXX_FLAGS_SHARED "${_MARPAWRAPPER_CXX_FLAGS_SHARED}" CACHE STRING "C flags when compiling against shared MARPAWRAPPER")
SET (MARPAWRAPPER_LINK_FLAGS "${_MARPAWRAPPER_LINK_FLAGS}" CACHE STRING "Linker flags when linking against MARPAWRAPPER")
SET (MARPAWRAPPER_LDFLAGS "${_MARPAWRAPPER_LDFLAGS}" CACHE STRING "Stringified version of MARPAWRAPPER_LINK_FLAGS")
SET (MARPAWRAPPER_STATIC_LINK_FLAGS "${_MARPAWRAPPER_STATIC_LINK_FLAGS}" CACHE STRING "Linker flags when linking against static MARPAWRAPPER")
SET (MARPAWRAPPER_STATIC_LDFLAGS "${_MARPAWRAPPER_STATIC_LDFLAGS}" CACHE STRING "Stringified version of MARPAWRAPPER_STATIC_LINK_FLAGS")
IF(MARPAWRAPPER_FOUND)
MESSAGE(STATUS "-----------------------------------------")
MESSAGE(STATUS "Setup MARPAWRAPPER:")
MESSAGE(STATUS "")
MESSAGE(STATUS " ROOT_DIR: ${MARPAWRAPPER_ROOT_DIR}")
MESSAGE(STATUS " C_FLAGS_SHARED: ${MARPAWRAPPER_C_FLAGS_SHARED}")
MESSAGE(STATUS " CXX_FLAGS_SHARED: ${MARPAWRAPPER_CXX_FLAGS_SHARED}")
MESSAGE(STATUS " INCLUDE_DIR: ${MARPAWRAPPER_INCLUDE_DIR}")
MESSAGE(STATUS " LIBRARIES: ${MARPAWRAPPER_LIBRARIES}")
MESSAGE(STATUS " STATIC LIBRARIES: ${MARPAWRAPPER_STATIC_LIBRARIES}")
MESSAGE(STATUS " LINK_FLAGS: ${MARPAWRAPPER_LINK_FLAGS}")
MESSAGE(STATUS " STATIC LINK_FLAGS: ${MARPAWRAPPER_STATIC_LINK_FLAGS}")
MESSAGE(STATUS " LDFLAGS: ${MARPAWRAPPER_LDFLAGS}")
MESSAGE(STATUS " STATIC LDFLAGS: ${MARPAWRAPPER_STATIC_LDFLAGS}")
MESSAGE(STATUS "-----------------------------------------")
ENDIF()
MARK_AS_ADVANCED (
MARPAWRAPPER_FOUND
MARPAWRAPPER_C_FLAGS_SHARED
MARPAWRAPPER_CXX_FLAGS_SHARED
MARPAWRAPPER_LINK_FLAGS
MARPAWRAPPER_LDFLAGS
MARPAWRAPPER_STATIC_LINK_FLAGS
MARPAWRAPPER_STATIC_LDFLAGS
)