aboutsummaryrefslogtreecommitdiff
path: root/modules/FindSoprano.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'modules/FindSoprano.cmake')
-rw-r--r--modules/FindSoprano.cmake246
1 files changed, 246 insertions, 0 deletions
diff --git a/modules/FindSoprano.cmake b/modules/FindSoprano.cmake
new file mode 100644
index 00000000..662f1b71
--- /dev/null
+++ b/modules/FindSoprano.cmake
@@ -0,0 +1,246 @@
+#
+# Find an installation of Soprano
+#
+# Sets the following variables:
+# Soprano_FOUND, SOPRANO_FOUND - true is Soprano has been found
+# SOPRANO_ONTO2VOCABULARYCLASS_EXECUTABLE - the onto2vocabularyclass program, required for adding ontologies
+# SOPRANO_SOPRANOCMD_EXECUTABLE - the sopranocmd program
+# SOPRANO_INCLUDE_DIR - The include directory
+# SOPRANO_LIBRARIES - The Soprano core library to link to (libsoprano)
+# SOPRANO_INDEX_LIBRARIES - The Soprano index library (libsopranoindex)
+# SOPRANO_CLIENT_LIBRARIES - The Soprano client library (libsopranoclient)
+# SOPRANO_SERVER_LIBRARIES - The Soprano server library (libsopranoserver)
+# SOPRANO_VERSION - The Soprano version (string value)
+#
+# SOPRANO_PLUGIN_NQUADPARSER_FOUND - true if the nquadparser plugin is found
+# SOPRANO_PLUGIN_NQUADSERIALIZER_FOUND - true if the nquadserializer plugin is found
+# SOPRANO_PLUGIN_RAPTORPARSER_FOUND - true if the raptorparser plugin is found
+# SOPRANO_PLUGIN_RAPTORSERIALIZER_FOUND - true if the raptorserializer plugin is found
+# SOPRANO_PLUGIN_REDLANDBACKEND_FOUND - true if the redlandbackend plugin is found
+# SOPRANO_PLUGIN_SESAME2BACKEND_FOUND - true if the sesame2backend plugin is found
+# SOPRANO_PLUGIN_VIRTUOSOBACKEND_FOUND - true if the virtuosobackend plugin is found
+#
+# Options:
+# Set SOPRANO_MIN_VERSION to set the minimum required Soprano version (default: 1.99)
+#
+# FindSoprano.cmake supports the COMPONENTS keyword of find_package().
+# If the REQUIRED keyword is used and any of the specified components have not been
+# found, SOPRANO_FOUND will be set to FALSE.
+#
+# The following components are supported:
+# PLUGIN_NQUADPARSER
+# PLUGIN_NQUADSERIALIZER
+# PLUGIN_RAPTORPARSER
+# PLUGIN_RAPTORSERIALIZER
+# PLUGIN_REDLANDBACKEND
+# PLUGIN_SESAME2BACKEND
+# PLUGIN_VIRTUOSOBACKEND
+
+# Copyright (c) 2008, Sebastian Trueg, <sebastian@trueg.de>
+# Copyright (c) 2009, Alexander Neundorf, <neundorf@kde.org>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+
+include(FindLibraryWithDebug)
+
+find_program(SOPRANO_SOPRANOCMD_EXECUTABLE
+ NAMES sopranocmd
+ HINTS
+ ${BIN_INSTALL_DIR}
+ ${KDE4_BIN_INSTALL_DIR}
+ )
+
+if(NOT WINCE)
+find_program(SOPRANO_ONTO2VOCABULARYCLASS_EXECUTABLE
+ NAMES onto2vocabularyclass
+ HINTS
+ ${BIN_INSTALL_DIR}
+ ${KDE4_BIN_INSTALL_DIR}
+ )
+else(NOT WINCE)
+find_program(SOPRANO_ONTO2VOCABULARYCLASS_EXECUTABLE
+ NAMES onto2vocabularyclass
+ PATHS ${HOST_BINDIR}
+ NO_DEFAULT_PATH
+ )
+endif(NOT WINCE)
+
+
+find_path(SOPRANO_INCLUDE_DIR
+ NAMES
+ soprano/soprano.h
+ HINTS
+ ${INCLUDE_INSTALL_DIR}
+ ${KDE4_INCLUDE_DIR}
+ )
+
+find_library_with_debug(SOPRANO_INDEX_LIBRARIES
+ WIN32_DEBUG_POSTFIX d
+ NAMES
+ sopranoindex
+ HINTS
+ ${LIB_INSTALL_DIR}
+ ${KDE4_LIB_DIR}
+ )
+
+find_library_with_debug(SOPRANO_CLIENT_LIBRARIES
+ WIN32_DEBUG_POSTFIX d
+ NAMES
+ sopranoclient
+ HINTS
+ ${LIB_INSTALL_DIR}
+ ${KDE4_LIB_DIR}
+ )
+
+find_library_with_debug(SOPRANO_LIBRARIES
+ WIN32_DEBUG_POSTFIX d
+ NAMES soprano
+ HINTS
+ ${LIB_INSTALL_DIR}
+ ${KDE4_LIB_DIR}
+)
+
+find_library_with_debug(SOPRANO_SERVER_LIBRARIES
+ WIN32_DEBUG_POSTFIX d
+ NAMES
+ sopranoserver
+ HINTS
+ ${LIB_INSTALL_DIR}
+ ${KDE4_LIB_DIR}
+ )
+
+
+# check Soprano version
+
+# We set a default for the minimum required version to be backwards compatible
+if(NOT SOPRANO_MIN_VERSION)
+ set(SOPRANO_MIN_VERSION "1.99")
+endif(NOT SOPRANO_MIN_VERSION)
+
+if(SOPRANO_INCLUDE_DIR)
+ file(READ ${SOPRANO_INCLUDE_DIR}/soprano/version.h SOPRANO_VERSION_CONTENT)
+ string(REGEX MATCH "SOPRANO_VERSION_STRING \".*\"\n" SOPRANO_VERSION_MATCH "${SOPRANO_VERSION_CONTENT}")
+ if(SOPRANO_VERSION_MATCH)
+ string(REGEX REPLACE "SOPRANO_VERSION_STRING \"(.*)\"\n" "\\1" SOPRANO_VERSION ${SOPRANO_VERSION_MATCH})
+ if(SOPRANO_VERSION STRLESS "${SOPRANO_MIN_VERSION}")
+ if(Soprano_FIND_REQUIRED)
+ message(FATAL_ERROR "Soprano version ${SOPRANO_VERSION} is too old. Please install ${SOPRANO_MIN_VERSION} or newer")
+ else(Soprano_FIND_REQUIRED)
+ message(STATUS "Soprano version ${SOPRANO_VERSION} is too old. Please install ${SOPRANO_MIN_VERSION} or newer")
+ endif(Soprano_FIND_REQUIRED)
+ endif(SOPRANO_VERSION STRLESS "${SOPRANO_MIN_VERSION}")
+ endif(SOPRANO_VERSION_MATCH)
+endif(SOPRANO_INCLUDE_DIR)
+
+set(_SOPRANO_REQUIRED_COMPONENTS_RESULTS)
+if( Soprano_FIND_COMPONENTS )
+ foreach( _component ${Soprano_FIND_COMPONENTS} )
+ set(_SOPRANO_REQUIRED_COMPONENTS_RESULTS ${_SOPRANO_REQUIRED_COMPONENTS_RESULTS} SOPRANO_${_component}_FOUND)
+ endforeach( _component )
+endif( Soprano_FIND_COMPONENTS )
+
+#look for parser plugins
+if(SOPRANO_INCLUDE_DIR)
+ get_filename_component(_SOPRANO_PREFIX ${SOPRANO_INCLUDE_DIR} PATH)
+
+ find_path(SOPRANO_PLUGIN_ROOT_DIR
+ NAMES
+ soprano/plugins
+ HINTS
+ ${_SOPRANO_PREFIX}/share
+ ${SHARE_INSTALL_PREFIX}
+ PATH_SUFFIXES share
+ )
+ set(SOPRANO_PLUGIN_DIR "${SOPRANO_PLUGIN_ROOT_DIR}/soprano/plugins")
+
+ if(EXISTS ${SOPRANO_PLUGIN_DIR}/nquadparser.desktop)
+ set(SOPRANO_PLUGIN_NQUADPARSER_FOUND TRUE)
+ set(_plugins "${_plugins} nquadparser")
+ endif(EXISTS ${SOPRANO_PLUGIN_DIR}/nquadparser.desktop)
+
+ if(EXISTS ${SOPRANO_PLUGIN_DIR}/nquadserializer.desktop)
+ set(SOPRANO_PLUGIN_NQUADSERIALIZER_FOUND TRUE)
+ set(_plugins "${_plugins} nquadserializer")
+ endif(EXISTS ${SOPRANO_PLUGIN_DIR}/nquadserializer.desktop)
+
+ if(EXISTS ${SOPRANO_PLUGIN_DIR}/raptorparser.desktop)
+ set(SOPRANO_PLUGIN_RAPTORPARSER_FOUND TRUE)
+ set(_plugins "${_plugins} raptorparser")
+ endif(EXISTS ${SOPRANO_PLUGIN_DIR}/raptorparser.desktop)
+
+ if(EXISTS ${SOPRANO_PLUGIN_DIR}/raptorserializer.desktop)
+ set(SOPRANO_PLUGIN_RAPTORSERIALIZER_FOUND TRUE)
+ set(_plugins "${_plugins} raptorserializer")
+ endif(EXISTS ${SOPRANO_PLUGIN_DIR}/raptorserializer.desktop)
+
+ if(EXISTS ${SOPRANO_PLUGIN_DIR}/redlandbackend.desktop)
+ set(SOPRANO_PLUGIN_REDLANDBACKEND_FOUND TRUE)
+ set(_plugins "${_plugins} redlandbackend")
+ endif(EXISTS ${SOPRANO_PLUGIN_DIR}/redlandbackend.desktop)
+
+ if(EXISTS ${SOPRANO_PLUGIN_DIR}/sesame2backend.desktop)
+ set(SOPRANO_PLUGIN_SESAME2BACKEND_FOUND TRUE)
+ set(_plugins "${_plugins} sesame2backend")
+ endif(EXISTS ${SOPRANO_PLUGIN_DIR}/sesame2backend.desktop)
+
+ if(EXISTS ${SOPRANO_PLUGIN_DIR}/virtuosobackend.desktop)
+ set(SOPRANO_PLUGIN_VIRTUOSOBACKEND_FOUND TRUE)
+ set(_plugins "${_plugins} virtuosobackend")
+ endif(EXISTS ${SOPRANO_PLUGIN_DIR}/virtuosobackend.desktop)
+
+ # make sure the Soprano cmake macros are found
+ # We also include it directly for convinience
+ find_file(_SOPRANO_MACRO_FILE NAMES SopranoAddOntology.cmake HINTS ${_SOPRANO_PREFIX}/share/soprano/cmake )
+ if(_SOPRANO_MACRO_FILE)
+ # new Soprano > 2.3.0 location
+ include(${_SOPRANO_MACRO_FILE})
+ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${_SOPRANO_PREFIX}/share/soprano/cmake)
+ else(_SOPRANO_MACRO_FILE)
+ # the old Soprano 2.3.0 location
+ find_file(_SOPRANO_MACRO_FILE_OLD NAMES SopranoAddOntology.cmake HINTS ${_SOPRANO_PREFIX}/share/apps/cmake/modules )
+ if(_SOPRANO_MACRO_FILE_OLD)
+ include(${_SOPRANO_MACRO_FILE_OLD})
+ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${_SOPRANO_PREFIX}/share/apps/cmake/modules)
+ endif(_SOPRANO_MACRO_FILE_OLD)
+ endif(_SOPRANO_MACRO_FILE)
+
+endif(SOPRANO_INCLUDE_DIR)
+
+include(FindPackageHandleStandardArgs)
+
+find_package_handle_standard_args(Soprano REQUIRED_VARS SOPRANO_INCLUDE_DIR SOPRANO_LIBRARIES
+ ${_SOPRANO_REQUIRED_COMPONENTS_RESULTS}
+ VERSION_VAR SOPRANO_VERSION)
+
+# for compatibility:
+set(Soprano_FOUND ${SOPRANO_FOUND})
+
+# check for all the libs as required to make sure that we do not try to compile with an old version
+
+if(SOPRANO_FOUND AND SOPRANO_INDEX_LIBRARIES)
+ set(SopranoIndex_FOUND TRUE)
+endif(SOPRANO_FOUND AND SOPRANO_INDEX_LIBRARIES)
+
+if(SOPRANO_FOUND AND SOPRANO_CLIENT_LIBRARIES)
+ set(SopranoClient_FOUND TRUE)
+endif(SOPRANO_FOUND AND SOPRANO_CLIENT_LIBRARIES)
+
+if(SOPRANO_FOUND AND SOPRANO_SERVER_LIBRARIES)
+ set(SopranoServer_FOUND TRUE)
+endif(SOPRANO_FOUND AND SOPRANO_SERVER_LIBRARIES)
+
+
+
+mark_as_advanced(SOPRANO_CLIENT_LIBRARIES
+ SOPRANO_INDEX_LIBRARIES
+ SOPRANO_LIBRARIES
+ SOPRANO_SERVER_LIBRARIES
+ SOPRANO_INCLUDE_DIR
+ SOPRANO_PLUGIN_ROOT_DIR
+ _SOPRANO_MACRO_FILE
+ SOPRANO_ONTO2VOCABULARYCLASS_EXECUTABLE
+ SOPRANO_SOPRANOCMD_EXECUTABLE
+ )
+