diff --git a/.gitignore b/.gitignore index 21fae40622..f3d3258053 100644 --- a/.gitignore +++ b/.gitignore @@ -1,69 +1,70 @@ CMakeLists.txt.user* .clang_complete ########## Git related # Patches and similar *.patch *.diff *.rej *.orig !Utilities/qtsingleapplication/*.patch +!CMakeExternals/*.patch ########## IDE specific ## Office ~$* ## vim Session.vim *.swp *.swo ## Emacs \#*\# /.emacs.desktop /.emacs.desktop.lock .elc auto-save-list tramp .\#* ## Eclipse .cproject .project .settings/ # Org-mode .org-id-locations *_archive ########## OS specific ## Windows files to ignore # Windows image file caches Thumbs.db ehthumbs.db # Folder config file Desktop.ini # Recycle Bin used on file shares $RECYCLE.BIN/ ## OSX specific .DS_Store .AppleDouble .LSOverride Icon # Thumbnails ._* # Files that might appear on external disk .Spotlight-V100 .Trashes ## Linux *~ diff --git a/CMakeExternals/PCRE.cmake b/CMakeExternals/PCRE.cmake index 6b2dc67d1d..2cd87712e0 100644 --- a/CMakeExternals/PCRE.cmake +++ b/CMakeExternals/PCRE.cmake @@ -1,35 +1,37 @@ #-------------------------------------------------------------------------- # PCRE (Perl Compatible Regular Expressions) #-------------------------------------------------------------------------- if(MITK_USE_PCRE) if(DEFINED PCRE_DIR AND NOT EXISTS ${PCRE_DIR}) message(FATAL_ERROR "PCRE_DIR variable is defined but corresponds to non-existing directory") endif() if(NOT PCRE_DIR) set(proj PCRE) set(${proj}_DEPENDENCIES "") - set(PCRE_TARGET_VERSION 8.35) + set(${proj}_DEPENDS ${proj}) ExternalProject_add(${proj} URL ${MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL}/pcre-8.35.tar.gz URL_MD5 "ed58bcbe54d3b1d59e9f5415ef45ce1c" SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/${proj}-src BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${proj}-build INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/${proj}-install PREFIX ${proj}-cmake - CONFIGURE_COMMAND /./configure - CC=${CMAKE_C_COMPILER}${CMAKE_C_COMPILER_ARG1} - LDFLAGS=${CMAKE_LINKER_FLAGS} ${CMAKE_LINKER_FLAGS_RELEASE} - CXX=${CMAKE_CXX_COMPILER}${CMAKE_CXX_COMPILER_ARG1} - --prefix= - --disable-shared + CMAKE_ARGS + ${ep_common_args} + "-DCMAKE_C_FLAGS:STRING=${CMAKE_CXX_FLAGS} -fPIC" + -DCMAKE_INSTALL_PREFIX:PATH= + -DBUILD_SHARED_LIBS:BOOL=OFF + -DPCRE_BUILD_PCREGREP:BOOL=OFF + -DPCRE_BUILD_TESTS:BOOL=OFF + -DPCRE_SUPPORT_JIT:BOOL=ON DEPENDS "${${proj}_DEPENDENCIES}" ) set(PCRE_DIR ${CMAKE_CURRENT_BINARY_DIR}/${proj}-install) else() mitkMacroEmptyExternalProject(${proj} "${${proj}_DEPENDENCIES}") endif() endif() diff --git a/CMakeExternals/Swig.cmake b/CMakeExternals/Swig.cmake index 550680dae7..c165b3652b 100644 --- a/CMakeExternals/Swig.cmake +++ b/CMakeExternals/Swig.cmake @@ -1,64 +1,64 @@ #------------------------------------------------------------ # SWIG (Simple Wrapper Interface Generator) #----------------------------------------------------------- if(MITK_USE_SWIG) if(DEFINED Swig_DIR AND NOT EXISTS ${Swig_DIR}) message(FATAL_ERROR "Swig_DIR variable is defined but corresponds to non-existing directory") endif() if(NOT SWIG_DIR) set(SWIG_TARGET_VERSION 3.0.2) set(proj Swig) - set(Swig_DEPENDENCIES ) + set(Swig_DEPENDENCIES PCRE) set(Swig_DEPENDS ) # binary SWIG for windows if(WIN32) set(swig_source_dir ${CMAKE_CURRENT_BINARY_DIR}/swigwin-${SWIG_TARGET_VERSION}) # swig.exe available as pre-built binary on Windows: ExternalProject_Add(Swig URL ${MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL}/swigwin-${SWIG_TARGET_VERSION}.zip URL_MD5 "3f18de4fc09ab9abb0d3be37c11fbc8f" SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/swigwin-${SWIG_TARGET_VERSION} CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" ) set(SWIG_DIR ${CMAKE_CURRENT_BINARY_DIR}/swigwin-${SWIG_TARGET_VERSION}) # path specified as source in ep set(SWIG_EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/swigwin-${SWIG_TARGET_VERSION}/swig.exe) else() list(APPEND Swig_DEPENDENCIES PCRE) # swig uses bison find it by cmake and pass it down find_package(BISON) set(BISON_FLAGS "" CACHE STRING "Flags used by bison") mark_as_advanced( BISON_FLAGS) ExternalProject_add(${proj} URL ${MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL}/swig-${SWIG_TARGET_VERSION}.tar.gz URL_MD5 "62f9b0d010cef36a13a010dc530d0d41" SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/${proj}-src BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${proj}-build INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/${proj}-install PREFIX ${proj}-cmake CONFIGURE_COMMAND /./configure CC=${CMAKE_C_COMPILER}${CMAKE_C_COMPILER_ARG1} LDFLAGS=${CMAKE_LINKER_FLAGS} ${CMAKE_LINKER_FLAGS_RELEASE} CXX=${CMAKE_CXX_COMPILER}${CMAKE_CXX_COMPILER_ARG1} --prefix= --with-pcre-prefix=${PCRE_DIR} --without-octave --with-python=${PYTHON_EXECUTABLE} DEPENDS ${Swig_DEPENDENCIES} ) set(SWIG_DIR ${CMAKE_CURRENT_BINARY_DIR}/${proj}-install/share/swig/${SWIG_TARGET_VERSION}) set(SWIG_EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/${proj}-install/bin/swig) endif() endif(NOT SWIG_DIR) endif() diff --git a/CMakeExternals/raptor2-2.0.14.patch.txt b/CMakeExternals/raptor2-2.0.14.patch.txt deleted file mode 100644 index c592d44af1..0000000000 --- a/CMakeExternals/raptor2-2.0.14.patch.txt +++ /dev/null @@ -1,179 +0,0 @@ -diff -ruN '--exclude=*~' raptor2-2.0.14/CMakeLists.txt raptor2-2.0.14-patched/CMakeLists.txt ---- raptor2-2.0.14/CMakeLists.txt 2014-01-30 05:07:24.000000000 +0100 -+++ raptor2-2.0.14-patched/CMakeLists.txt 2014-10-28 19:18:11.841191108 +0100 -@@ -30,12 +30,24 @@ - FIND_PACKAGE(LibXslt) - #FIND_PACKAGE(YAJL) - --INCLUDE_DIRECTORIES( -- ${CURL_INCLUDE_DIRS} -- ${EXPAT_INCLUDE_DIRS} -- ${LIBXML2_INCLUDE_DIR} -- ${LIBXSLT_INCLUDE_DIR} --) -+IF(CURL_FOUND) -+ INCLUDE_DIRECTORIES( -+ ${CURL_INCLUDE_DIRS} -+ ) -+ENDIF() -+ -+IF(LIBXML2_FOUND) -+ INCLUDE_DIRECTORIES( -+ ${EXPAT_INCLUDE_DIRS} -+ ${LIBXML2_INCLUDE_DIR} -+ ) -+ENDIF() -+ -+IF(LIBXSLT_FOUND) -+ INCLUDE_DIRECTORIES( -+ ${LIBXSLT_INCLUDE_DIR} -+ ) -+ENDIF() - - ################################################################ - -@@ -89,6 +101,15 @@ - CHECK_TYPE_SIZE("unsigned long" SIZEOF_UNSIGNED_LONG) - CHECK_TYPE_SIZE("unsigned long long" SIZEOF_UNSIGNED_LONG_LONG) - -+CHECK_C_SOURCE_COMPILES(" -+int main() {char *function_name = __func__; return 0;}" -+ HAVE___FUNC__ -+) -+CHECK_C_SOURCE_COMPILES(" -+int main() {char *function_name = __FUNCTION__; return 0;}" -+ HAVE___FUNCTION__ -+) -+ - IF(LIBXML2_FOUND) - - SET(CMAKE_REQUIRED_INCLUDES ${LIBXML2_INCLUDE_DIR}) -@@ -152,6 +173,9 @@ - SET(BUILD_SHARED_LIBS OFF CACHE BOOL - "Build shared libraries instead of static ones.") - -+SET(RAPTOR_ENABLE_TESTING TRUE CACHE BOOL -+ "Enable unit tests") -+ - IF(BUILD_SHARED_LIBS) - SET(RAPTOR_STATIC FALSE) - ELSE(BUILD_SHARED_LIBS) -@@ -273,9 +297,9 @@ - # - # but we don't have a good way of knowing where the third-party DLLs are. - # --IF(CMAKE_GENERATOR MATCHES "Makefiles") -+IF(RAPTOR_ENABLE_TESTING AND CMAKE_GENERATOR MATCHES "Makefiles") - ENABLE_TESTING() --ENDIF(CMAKE_GENERATOR MATCHES "Makefiles") -+ENDIF(RAPTOR_ENABLE_TESTING AND CMAKE_GENERATOR MATCHES "Makefiles") - - SUBDIRS(src) - SUBDIRS(utils) -@@ -335,21 +359,23 @@ - ENDIF(rapper_status EQUAL 0 OR rapper_status EQUAL 2) - - IF(NOT rdfdiff_status EQUAL 0) -- MESSAGE(FATAL_ERROR "Test failed.") -+ MESSAGE(FATAL_ERROR \"Test failed.\") - ENDIF(NOT rdfdiff_status EQUAL 0) - ") - - ADD_TEST(${NAME} ${CMAKE_COMMAND} -P test-${NAME}.cmake) - ENDMACRO(RAPPER_RDFDIFF_TEST NAME RAPPER_COMMAND RAPPER_OUTPUT RDFDIFF_COMMAND) - --SUBDIRS(tests/feeds) --SUBDIRS(tests/grddl) --SUBDIRS(tests/json) --SUBDIRS(tests/ntriples) --SUBDIRS(tests/rdfa) --SUBDIRS(tests/rdfa11) --SUBDIRS(tests/rdfxml) --SUBDIRS(tests/trig) --#SUBDIRS(tests/turtle) # TODO -+IF(RAPTOR_ENABLE_TESTING) -+ SUBDIRS(tests/feeds) -+ SUBDIRS(tests/grddl) -+ SUBDIRS(tests/json) -+ SUBDIRS(tests/ntriples) -+ SUBDIRS(tests/rdfa) -+ SUBDIRS(tests/rdfa11) -+ SUBDIRS(tests/rdfxml) -+ SUBDIRS(tests/trig) -+ #SUBDIRS(tests/turtle) # TODO -+ENDIF(RAPTOR_ENABLE_TESTING) - - # end raptor/CMakeLists.txt -diff -ruN '--exclude=*~' raptor2-2.0.14/src/CMakeLists.txt raptor2-2.0.14-patched/src/CMakeLists.txt ---- raptor2-2.0.14/src/CMakeLists.txt 2013-02-26 01:09:21.000000000 +0100 -+++ raptor2-2.0.14-patched/src/CMakeLists.txt 2014-10-28 19:19:21.803185851 +0100 -@@ -118,6 +118,7 @@ - ADD_LIBRARY(raptor2 - raptor_avltree.c - raptor_concepts.c -+ raptor_escaped.c - raptor_general.c - raptor_iostream.c - raptor_json_writer.c -@@ -125,6 +126,7 @@ - raptor_log.c - raptor_memstr.c - raptor_namespace.c -+ raptor_ntriples.c - raptor_option.c - raptor_parse.c - raptor_qname.c -@@ -183,6 +185,8 @@ - COMPILE_DEFINITIONS "LIBRDFA_IN_RAPTOR;RAPTOR_INTERNAL;${LIBXML2_DEFINITIONS};${LIBXSLT_DEFINITIONS}" - ) - -+IF(RAPTOR_ENABLE_TESTING) -+ - ADD_EXECUTABLE(turtle_lexer_test turtle_lexer.c) - TARGET_LINK_LIBRARIES(turtle_lexer_test raptor2) - -@@ -291,6 +295,8 @@ - ) - ENDIF(RAPTOR_PARSER_RDFXML) - -+ENDIF(RAPTOR_ENABLE_TESTING) -+ - # Generate pkg-config metadata file - # - FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/raptor2.pc -diff -ruN '--exclude=*~' raptor2-2.0.14/src/raptor_config_cmake.h.in raptor2-2.0.14-patched/src/raptor_config_cmake.h.in ---- raptor2-2.0.14/src/raptor_config_cmake.h.in 2012-08-10 19:31:53.000000000 +0200 -+++ raptor2-2.0.14-patched/src/raptor_config_cmake.h.in 2014-10-28 18:59:01.342277564 +0100 -@@ -44,6 +44,9 @@ - #define SIZEOF_UNSIGNED_LONG @SIZEOF_UNSIGNED_LONG@ - #define SIZEOF_UNSIGNED_LONG_LONG @SIZEOF_UNSIGNED_LONG_LONG@ - -+#cmakedefine HAVE___FUNC__ -+#cmakedefine HAVE___FUNCTION__ -+ - #cmakedefine HAVE_XMLCTXTUSEOPTIONS - #cmakedefine HAVE_XMLSAX2INTERNALSUBSET - #cmakedefine RAPTOR_LIBXML_ENTITY_ETYPE -@@ -87,8 +90,9 @@ - # define _CRT_SECURE_NO_DEPRECATE - - # ifdef _MSC_VER --# if _MSC_VER >= 1300 -+# if (_MSC_VER >= 1300) && !defined(__func__) - # define __func__ __FUNCTION__ -+# define HAVE___FUNC__ - # else - /* better than nothing */ - # define raptor_str(s) #s -@@ -126,6 +130,11 @@ - /* These prevent parsedate.c from declaring malloc() and free() */ - # define YYMALLOC malloc - # define YYFREE free -+ -+# if !defined(YY_NO_UNISTD_H) -+# define YY_NO_UNISTD_H -+# endif -+ - #endif - - /* end raptor_config.h */ diff --git a/CMakeExternals/raptor2-2.0.15.patch b/CMakeExternals/raptor2-2.0.15.patch new file mode 100644 index 0000000000..baede38078 --- /dev/null +++ b/CMakeExternals/raptor2-2.0.15.patch @@ -0,0 +1,493 @@ +diff -urNb raptor2-2.0.15-orig/CMakeLists.txt raptor2-2.0.15-patched/CMakeLists.txt +--- raptor2-2.0.15-orig/CMakeLists.txt 2014-11-26 00:11:12.836343793 +0100 ++++ raptor2-2.0.15-patched/CMakeLists.txt 2014-11-20 01:16:40.168582633 +0100 +@@ -30,12 +30,24 @@ + FIND_PACKAGE(LibXslt) + #FIND_PACKAGE(YAJL) + +-INCLUDE_DIRECTORIES( ++IF(CURL_FOUND) ++ INCLUDE_DIRECTORIES( + ${CURL_INCLUDE_DIRS} ++ ) ++ENDIF() ++ ++IF(LIBXML2_FOUND) ++ INCLUDE_DIRECTORIES( + ${EXPAT_INCLUDE_DIRS} + ${LIBXML2_INCLUDE_DIR} ++ ) ++ENDIF() ++ ++IF(LIBXSLT_FOUND) ++ INCLUDE_DIRECTORIES( + ${LIBXSLT_INCLUDE_DIR} +-) ++ ) ++ENDIF() + + ################################################################ + +@@ -89,6 +101,15 @@ + CHECK_TYPE_SIZE("unsigned long" SIZEOF_UNSIGNED_LONG) + CHECK_TYPE_SIZE("unsigned long long" SIZEOF_UNSIGNED_LONG_LONG) + ++CHECK_C_SOURCE_COMPILES(" ++int main() {char *function_name = __func__; return 0;}" ++ HAVE___FUNC__ ++) ++CHECK_C_SOURCE_COMPILES(" ++int main() {char *function_name = __FUNCTION__; return 0;}" ++ HAVE___FUNCTION__ ++) ++ + IF(LIBXML2_FOUND) + + SET(CMAKE_REQUIRED_INCLUDES ${LIBXML2_INCLUDE_DIR}) +@@ -152,103 +173,142 @@ + SET(BUILD_SHARED_LIBS OFF CACHE BOOL + "Build shared libraries instead of static ones.") + ++SET(RAPTOR_ENABLE_TESTING TRUE CACHE BOOL ++ "Enable unit tests") ++ + IF(BUILD_SHARED_LIBS) + SET(RAPTOR_STATIC FALSE) + ELSE(BUILD_SHARED_LIBS) + SET(RAPTOR_STATIC TRUE) + ENDIF(BUILD_SHARED_LIBS) + +-SET(RAPTOR_XML_INIT none) +-IF(LIBXML2_FOUND) +- SET(RAPTOR_XML_INIT libxml) +-ENDIF(LIBXML2_FOUND) +- +-SET(RAPTOR_XML ${RAPTOR_XML_INIT} CACHE STRING +- "Which XML library to use (any of \"libxml\", \"none\").") ++SET(HAVE_RAPTOR_PARSE_DATE 1) ++SET(RAPTOR_PARSEDATE 1) + +-SET(RAPTOR_XML_DEFINE RAPTOR_XML_NONE) +-IF(RAPTOR_XML STREQUAL "libxml") +- SET(RAPTOR_XML_DEFINE RAPTOR_XML_LIBXML) +-ENDIF(RAPTOR_XML STREQUAL "libxml") ++# --------------- XML library ---------------- + +-SET(RAPTOR_WWW_INIT none) +-IF(LIBXML2_FOUND) +- SET(RAPTOR_WWW_INIT xml) +-ENDIF(LIBXML2_FOUND) +-IF(CURL_FOUND) +- SET(RAPTOR_WWW_INIT curl) +-ENDIF(CURL_FOUND) ++set(RAPTOR_XML_INIT none) ++if(LIBXML2_FOUND) ++ set(RAPTOR_XML_INIT libxml) ++endif() + +-SET(RAPTOR_WWW ${RAPTOR_WWW_INIT} CACHE STRING +- "Which WWW library to use (any of \"curl\", \"xml\", \"none\").") ++set(RAPTOR_XML ${RAPTOR_XML_INIT} CACHE STRING ++ "Which XML library to use (any of \"libxml\", \"none\").") + +-SET(RAPTOR_WWW_DEFINE RAPTOR_WWW_NONE) +-IF(RAPTOR_WWW STREQUAL "curl") +- SET(RAPTOR_WWW_DEFINE RAPTOR_WWW_LIBCURL) +-ELSEIF(RAPTOR_WWW STREQUAL "xml") +- SET(RAPTOR_WWW_DEFINE RAPTOR_WWW_LIBXML) +-ENDIF(RAPTOR_WWW STREQUAL "curl") ++set(RAPTOR_XML_DEFINE RAPTOR_XML_NONE) ++if(RAPTOR_XML STREQUAL "libxml") ++ set(RAPTOR_XML_DEFINE RAPTOR_XML_LIBXML) ++endif() + +-SET(RAPTOR_XML_1_1 FALSE CACHE BOOL ++set(RAPTOR_XML_1_1 FALSE CACHE BOOL + "Use XML version 1.1 name checking.") + +-SET(HAVE_RAPTOR_PARSE_DATE 1) +-SET(RAPTOR_PARSEDATE 1) +- +-SET(RAPTOR_PARSER_RDFXML_INIT FALSE) +-IF(LIBXML2_FOUND) +- SET(RAPTOR_PARSER_RDFXML_INIT TRUE) +-ENDIF(LIBXML2_FOUND) ++# --------------- WWW library ---------------- + +-SET(RAPTOR_PARSER_GRDDL_INIT FALSE) +-IF(LIBXML2_FOUND AND LIBXSLT_FOUND) +- SET(RAPTOR_PARSER_GRDDL_INIT TRUE) +-ENDIF(LIBXML2_FOUND AND LIBXSLT_FOUND) +- +-SET(RAPTOR_PARSER_RDFXML ${RAPTOR_PARSER_RDFXML_INIT} +- CACHE BOOL "Build RDF/XML parser.") +-SET(RAPTOR_PARSER_NTRIPLES TRUE +- CACHE BOOL "Build N-Triples parser.") +-SET(RAPTOR_PARSER_TURTLE TRUE +- CACHE BOOL "Build Turtle parser.") +-SET(RAPTOR_PARSER_TRIG TRUE +- CACHE BOOL "Build TRiG parser.") +-SET(RAPTOR_PARSER_RSS ${LIBXML2_FOUND} +- CACHE BOOL "Build RSS Tag Soup parser.") +-SET(RAPTOR_PARSER_GRDDL ${RAPTOR_PARSER_GRDDL_INIT} +- CACHE BOOL "Build GRDDL parser.") +-SET(RAPTOR_PARSER_GUESS TRUE +- CACHE BOOL "Build guess parser.") +-SET(RAPTOR_PARSER_RDFA ${LIBXML2_FOUND} +- CACHE BOOL "Build RDFA parser.") +-SET(RAPTOR_PARSER_JSON ${YAJL_FOUND} +- CACHE BOOL "Build JSON parser.") +-SET(RAPTOR_PARSER_NQUADS TRUE +- CACHE BOOL "Build N-Quads parser.") +- +-SET(RAPTOR_SERIALIZER_RDFXML TRUE +- CACHE BOOL "Build RDF/XML serializer.") +-SET(RAPTOR_SERIALIZER_NTRIPLES TRUE +- CACHE BOOL "Build N-Triples serializer.") +-SET(RAPTOR_SERIALIZER_RDFXML_ABBREV TRUE +- CACHE BOOL "Build RDF/XML-abbreviated serializer.") +-SET(RAPTOR_SERIALIZER_TURTLE TRUE +- CACHE BOOL "Build Turtle serializer.") +-SET(RAPTOR_SERIALIZER_RSS_1_0 TRUE +- CACHE BOOL "Build RSS 1.0 serializer.") +-SET(RAPTOR_SERIALIZER_ATOM TRUE +- CACHE BOOL "Build Atom 1.0 serializer.") +-SET(RAPTOR_SERIALIZER_DOT TRUE +- CACHE BOOL "Build GraphViz DOT serializer.") +-SET(RAPTOR_SERIALIZER_HTML TRUE +- CACHE BOOL "Build HTML Table serializer.") +-SET(RAPTOR_SERIALIZER_JSON TRUE +- CACHE BOOL "Build JSON serializer.") +-SET(RAPTOR_SERIALIZER_NQUADS TRUE +- CACHE BOOL "Build N-Quads serializer.") ++set(RAPTOR_WWW_INIT none) ++if(LIBXML2_FOUND) ++ set(RAPTOR_WWW_INIT xml) ++endif() ++if(CURL_FOUND) ++ set(RAPTOR_WWW_INIT curl) ++endif() ++if(FETCH_FOUND) ++ set(RAPTOR_WWW_INIT fetch) ++endif() ++ ++set(RAPTOR_WWW ${RAPTOR_WWW_INIT} CACHE STRING ++ "Which WWW library to use (any of \"curl\", \"xml\", \"fetch\", \"none\").") ++ ++set(RAPTOR_WWW_DEFINE RAPTOR_WWW_NONE) ++if(RAPTOR_WWW STREQUAL "curl") ++ set(RAPTOR_WWW_DEFINE RAPTOR_WWW_LIBCURL) ++elseif(RAPTOR_WWW STREQUAL "xml") ++ set(RAPTOR_WWW_DEFINE RAPTOR_WWW_LIBXML) ++elseif(RAPTOR_WWW STREQUAL "fetch") ++ set(RAPTOR_WWW_DEFINE RAPTOR_WWW_FETCH) ++endif() ++ ++if(RAPTOR_WWW STREQUAL "none") ++ message(WARNING "No WWW library in use - only file: URLs will work") ++ message(WARNING "Install libcurl, libxml2 or BSD libfetch for WWW access") ++endif() ++ ++# --------------- RDF parsers ---------------- ++ ++set(rdf_parsers_available ntriples turtle trig guess nquads) ++set(rdfxml_name "RDF/XML") ++set(ntriples_name "N-Triples") ++set(turtle_name "Turtle") ++set(trig_name "TRiG") ++set(guess_name "guess") ++set(rss_name "RSS Tag Soup") ++set(rdfa_name "RDFA") ++set(nquads_name "N-Quads") ++set(grddl_name "GRDDL") ++set(json_name "JSON") ++ ++if(LIBXML2_FOUND) ++ list(APPEND rdf_parsers_available rdfxml rss rdfa grddl) ++endif() ++if(YAJL_FOUND) ++ list(APPEND rdf_parsers_available json) ++endif() ++ ++set(RAPTOR_PARSER_RDFXML_INIT ${LIBXML2_FOUND}) ++ ++set(RAPTOR_PARSER_GRDDL_INIT FALSE) ++if(LIBXML2_FOUND AND LIBXSLT_FOUND) ++ set(RAPTOR_PARSER_GRDDL_INIT TRUE) ++endif() ++ ++set(rdf_parsers_enabled ) ++foreach(parser ${rdf_parsers_available}) ++ string(TOUPPER ${parser} parser_uc) ++ if(DEFINED RAPTOR_PARSER_${parser_uc}_INIT) ++ set(parser_init ${RAPTOR_PARSER_${parser_uc}_INIT}) ++ else() ++ set(parser_init TRUE) ++ endif() ++ set(RAPTOR_PARSER_${parser_uc} ${parser_init} ++ CACHE BOOL "Build ${${parser}_name} parser.") ++ if(RAPTOR_PARSER_${parser_uc}) ++ list(APPEND rdf_parsers_enabled ${parser}) ++ endif() ++endforeach() ++ ++# --------------- RDF serializers ---------------- ++ ++set(rdf_serializers_available rdfxml rdfxml-abbrev turtle ntriples rss-1.0 dot html json atom nquads) ++set(rdfxml-abbrev_name "RDF/XML-abbreviated") ++set(rss-1.0_name "RSS 1.0") ++set(dot_name "GraphViz DOT") ++set(html_name "HTML Table") ++set(atom_name "Atom 1.0") ++ ++set(rdf_serializers_enabled ) ++foreach(serializer ${rdf_serializers_available}) ++ string(TOUPPER ${serializer} serializer_uc) ++ string(REGEX REPLACE "[-\\.]" "_" serializer_uc ${serializer_uc}) ++ set(RAPTOR_SERIALIZER_${serializer_uc} TRUE ++ CACHE BOOL "Build ${${serializer}_name} serializer.") ++ if(RAPTOR_SERIALIZER_${serializer_uc}) ++ list(APPEND rdf_serializers_enabled ${serializer}) ++ endif() ++endforeach() ++ ++# --------------- NFC library ---------------- ++ ++set(use_nfc FALSE) ++if(RAPTOR_PARSER_RDFXML AND LIBXML2_FOUND) ++ set(use_nfc TRUE) ++endif() ++# TODO ++set(nfc_library none) + + ################################################################ + ++INCLUDE(CMakePackageConfigHelpers) ++ + CONFIGURE_FILE( + src/raptor_config_cmake.h.in + src/raptor_config.h +@@ -263,6 +323,11 @@ + @ONLY + ) + ++set(INCLUDE_INSTALL_DIR include/raptor2) ++set(LIB_INSTALL_DIR lib) ++set(BIN_INSTALL_DIR bin) ++set(CMAKE_INSTALL_DIR lib/raptor2/cmake) ++ + # On Windows, the test/utility programs usually have DLL dependencies that + # make them cumbersome to invoke within IDE environments, so we enable the + # test suite only when makefiles are being used. +@@ -273,13 +338,30 @@ + # + # but we don't have a good way of knowing where the third-party DLLs are. + # +-IF(CMAKE_GENERATOR MATCHES "Makefiles") ++IF(RAPTOR_ENABLE_TESTING AND CMAKE_GENERATOR MATCHES "Makefiles") + ENABLE_TESTING() +-ENDIF(CMAKE_GENERATOR MATCHES "Makefiles") ++ENDIF(RAPTOR_ENABLE_TESTING AND CMAKE_GENERATOR MATCHES "Makefiles") + + SUBDIRS(src) + SUBDIRS(utils) + ++configure_package_config_file(Raptor2Config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/Raptor2Config.cmake ++ INSTALL_DESTINATION ${CMAKE_INSTALL_DIR} ++ PATH_VARS INCLUDE_INSTALL_DIR ++ NO_CHECK_REQUIRED_COMPONENTS_MACRO ++) ++ ++write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/Raptor2ConfigVersion.cmake ++ VERSION ${VERSION} ++ COMPATIBILITY AnyNewerVersion ++) ++ ++install(FILES ++ ${CMAKE_CURRENT_BINARY_DIR}/Raptor2Config.cmake ++ ${CMAKE_CURRENT_BINARY_DIR}/Raptor2ConfigVersion.cmake ++ DESTINATION ${CMAKE_INSTALL_DIR} ++) ++ + ################################################################ + + FIND_PROGRAM(JING jing) +@@ -335,21 +417,33 @@ + ENDIF(rapper_status EQUAL 0 OR rapper_status EQUAL 2) + + IF(NOT rdfdiff_status EQUAL 0) +- MESSAGE(FATAL_ERROR "Test failed.") ++ MESSAGE(FATAL_ERROR \"Test failed.\") + ENDIF(NOT rdfdiff_status EQUAL 0) + ") + + ADD_TEST(${NAME} ${CMAKE_COMMAND} -P test-${NAME}.cmake) + ENDMACRO(RAPPER_RDFDIFF_TEST NAME RAPPER_COMMAND RAPPER_OUTPUT RDFDIFF_COMMAND) + +-SUBDIRS(tests/feeds) +-SUBDIRS(tests/grddl) +-SUBDIRS(tests/json) +-SUBDIRS(tests/ntriples) +-SUBDIRS(tests/rdfa) +-SUBDIRS(tests/rdfa11) +-SUBDIRS(tests/rdfxml) +-SUBDIRS(tests/trig) +-#SUBDIRS(tests/turtle) # TODO ++IF(RAPTOR_ENABLE_TESTING) ++ SUBDIRS(tests/feeds) ++ SUBDIRS(tests/grddl) ++ SUBDIRS(tests/json) ++ SUBDIRS(tests/ntriples) ++ SUBDIRS(tests/rdfa) ++ SUBDIRS(tests/rdfa11) ++ SUBDIRS(tests/rdfxml) ++ SUBDIRS(tests/trig) ++ #SUBDIRS(tests/turtle) # TODO ++ENDIF(RAPTOR_ENABLE_TESTING) ++ ++message("Raptor build summary: ++ RDF parsers available : ${rdf_parsers_available} ++ RDF parsers enabled : ${rdf_parsers_enabled} ++ RDF serializers available : ${rdf_serializers_available} ++ RDF serializers enabled : ${rdf_serializers_enabled} ++ XML parser : ${RAPTOR_XML} ++ WWW library : ${RAPTOR_WWW} ++ NFC check library : ${nfc_library}" ++) + + # end raptor/CMakeLists.txt +diff -urNb raptor2-2.0.15-orig/Raptor2Config.cmake.in raptor2-2.0.15-patched/Raptor2Config.cmake.in +--- raptor2-2.0.15-orig/Raptor2Config.cmake.in 1970-01-01 01:00:00.000000000 +0100 ++++ raptor2-2.0.15-patched/Raptor2Config.cmake.in 2014-11-17 02:26:45.384582192 +0100 +@@ -0,0 +1,9 @@ ++set(Raptor2_VERSION @VERSION@) ++ ++@PACKAGE_INIT@ ++ ++set_and_check(Raptor2_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@") ++ ++if(NOT TARGET raptor2 AND EXISTS ${CMAKE_CURRENT_LIST_DIR}/Raptor2Targets.cmake) ++ include(${CMAKE_CURRENT_LIST_DIR}/Raptor2Targets.cmake) ++endif() +diff -urNb raptor2-2.0.15-orig/src/CMakeLists.txt raptor2-2.0.15-patched/src/CMakeLists.txt +--- raptor2-2.0.15-orig/src/CMakeLists.txt 2014-11-26 00:11:12.844343793 +0100 ++++ raptor2-2.0.15-patched/src/CMakeLists.txt 2014-11-18 01:23:15.200582940 +0100 +@@ -118,6 +118,7 @@ + ADD_LIBRARY(raptor2 + raptor_avltree.c + raptor_concepts.c ++ raptor_escaped.c + raptor_general.c + raptor_iostream.c + raptor_json_writer.c +@@ -125,6 +126,7 @@ + raptor_log.c + raptor_memstr.c + raptor_namespace.c ++ raptor_ntriples.c + raptor_option.c + raptor_parse.c + raptor_qname.c +@@ -144,6 +146,9 @@ + raptor_xml.c + raptor_xml_writer.c + snprintf.c ++ sort_r.c ++ sort_r.h ++ ssort.h + turtle_common.c + ${raptor_parser_rdfxml_sources} + ${raptor_parser_ntriples_nquads_sources} +@@ -183,6 +188,8 @@ + COMPILE_DEFINITIONS "LIBRDFA_IN_RAPTOR;RAPTOR_INTERNAL;${LIBXML2_DEFINITIONS};${LIBXSLT_DEFINITIONS}" + ) + ++IF(RAPTOR_ENABLE_TESTING) ++ + ADD_EXECUTABLE(turtle_lexer_test turtle_lexer.c) + TARGET_LINK_LIBRARIES(turtle_lexer_test raptor2) + +@@ -291,13 +298,15 @@ + ) + ENDIF(RAPTOR_PARSER_RDFXML) + ++ENDIF(RAPTOR_ENABLE_TESTING) ++ + # Generate pkg-config metadata file + # + FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/raptor2.pc + "prefix=${CMAKE_INSTALL_PREFIX} + exec_prefix=\${prefix} +-libdir=\${exec_prefix}/lib +-includedir=\${prefix}/include/raptor2 ++libdir=\${exec_prefix}/${LIB_INSTALL_DIR} ++includedir=\${prefix}/${INCLUDE_INSTALL_DIR} + + Name: Raptor RDF Parsing Library + Description: RDF Parser Toolkit Library +@@ -310,22 +319,22 @@ + INSTALL(FILES + raptor.h + ${CMAKE_CURRENT_BINARY_DIR}/raptor2.h +- DESTINATION include/raptor2 ++ DESTINATION ${INCLUDE_INSTALL_DIR} + ) + + INSTALL(FILES + ${CMAKE_CURRENT_BINARY_DIR}/raptor2.pc +- DESTINATION lib/pkgconfig ++ DESTINATION ${LIB_INSTALL_DIR}/pkgconfig + ) + + INSTALL( + TARGETS raptor2 +- EXPORT Raptor2Config +- ARCHIVE DESTINATION lib +- LIBRARY DESTINATION lib +- RUNTIME DESTINATION bin ++ EXPORT Raptor2Targets ++ ARCHIVE DESTINATION ${LIB_INSTALL_DIR} ++ LIBRARY DESTINATION ${LIB_INSTALL_DIR} ++ RUNTIME DESTINATION ${BIN_INSTALL_DIR} + ) + +-INSTALL(EXPORT Raptor2Config DESTINATION lib/cmake) ++INSTALL(EXPORT Raptor2Targets DESTINATION ${CMAKE_INSTALL_DIR}) + + # end raptor/src/CMakeLists.txt +diff -urNb raptor2-2.0.15-orig/src/raptor_config_cmake.h.in raptor2-2.0.15-patched/src/raptor_config_cmake.h.in +--- raptor2-2.0.15-orig/src/raptor_config_cmake.h.in 2014-11-26 00:11:12.848343793 +0100 ++++ raptor2-2.0.15-patched/src/raptor_config_cmake.h.in 2014-11-16 22:17:24.896583977 +0100 +@@ -44,6 +44,9 @@ + #define SIZEOF_UNSIGNED_LONG @SIZEOF_UNSIGNED_LONG@ + #define SIZEOF_UNSIGNED_LONG_LONG @SIZEOF_UNSIGNED_LONG_LONG@ + ++#cmakedefine HAVE___FUNC__ ++#cmakedefine HAVE___FUNCTION__ ++ + #cmakedefine HAVE_XMLCTXTUSEOPTIONS + #cmakedefine HAVE_XMLSAX2INTERNALSUBSET + #cmakedefine RAPTOR_LIBXML_ENTITY_ETYPE +@@ -87,8 +90,9 @@ + # define _CRT_SECURE_NO_DEPRECATE + + # ifdef _MSC_VER +-# if _MSC_VER >= 1300 ++# if (_MSC_VER >= 1300) && !defined(__func__) + # define __func__ __FUNCTION__ ++# define HAVE___FUNC__ + # else + /* better than nothing */ + # define raptor_str(s) #s +@@ -126,6 +130,11 @@ + /* These prevent parsedate.c from declaring malloc() and free() */ + # define YYMALLOC malloc + # define YYFREE free ++ ++# if !defined(YY_NO_UNISTD_H) ++# define YY_NO_UNISTD_H ++# endif ++ + #endif + + /* end raptor_config.h */ diff --git a/CMakeExternals/raptor2.cmake b/CMakeExternals/raptor2.cmake index 4eea97c107..9182e86fcf 100644 --- a/CMakeExternals/raptor2.cmake +++ b/CMakeExternals/raptor2.cmake @@ -1,58 +1,63 @@ #----------------------------------------------------------------------------- # raptor2 #----------------------------------------------------------------------------- +if(MITK_USE_raptor2) + # Sanity checks if(DEFINED raptor2_DIR AND NOT EXISTS ${raptor2_DIR}) message(FATAL_ERROR "raptor2_DIR variable is defined but corresponds to non-existing directory") endif() set(proj raptor2) set(proj_DEPENDENCIES ) set(${proj}_DEPENDS ${proj}) if(NOT DEFINED raptor2_DIR) ExternalProject_Add(${proj} SOURCE_DIR ${CMAKE_BINARY_DIR}/${proj}-src BINARY_DIR ${proj}-build - INSTALL_DIR ${proj}-install + INSTALL_DIR ${REDLAND_INSTALL_DIR} PREFIX ${proj}-cmake - URL ${MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL}/raptor2-2.0.14-patched.tar.gz - URL_MD5 28f16fd07bf15bd3769ec066aafc24e5 + URL ${MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL}/raptor2-2.0.15.tar.gz + URL_MD5 a39f6c07ddb20d7dd2ff1f95fa21e2cd + PATCH_COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_LIST_DIR}/raptor2-2.0.15.patch CMAKE_GENERATOR ${gen} CMAKE_ARGS ${ep_common_args} -DCMAKE_INSTALL_PREFIX:PATH= -DBUILD_SHARED_LIBS:BOOL=ON -DRAPTOR_ENABLE_TESTING:BOOL=OFF -DRAPTOR_PARSER_GRDDL:BOOL=OFF -DRAPTOR_PARSER_GUESS:BOOL=OFF -DRAPTOR_PARSER_JSON:BOOL=OFF -DRAPTOR_PARSER_NQUADS:BOOL=ON -DRAPTOR_PARSER_NTRIPLES:BOOL=ON -DRAPTOR_PARSER_RDFA:BOOL=OFF -DRAPTOR_PARSER_RDFXML:BOOL=OFF -DRAPTOR_PARSER_RSS:BOOL=OFF -DRAPTOR_PARSER_TRIG:BOOL=OFF -DRAPTOR_PARSER_TURTLE:BOOL=ON -DRAPTOR_SERIALIZER_ATOM:BOOL=OFF -DRAPTOR_SERIALIZER_DOT:BOOL=OFF -DRAPTOR_SERIALIZER_HTML:BOOL=OFF -DRAPTOR_SERIALIZER_JSON:BOOL=OFF -DRAPTOR_SERIALIZER_NQUADS:BOOL=ON -DRAPTOR_SERIALIZER_NTRIPLES:BOOL=ON -DRAPTOR_SERIALIZER_RDFXML:BOOL=OFF - -DRAPTOR_SERIALIZER_RDFXML_ABBRE:BOOL=OFF + -DRAPTOR_SERIALIZER_RDFXML_ABBREV:BOOL=OFF -DRAPTOR_SERIALIZER_RSS_1_0:BOOL=OFF -DRAPTOR_SERIALIZER_TURTLE:BOOL=ON DEPENDS ${proj_DEPENDENCIES} ) - set(${proj}_DIR ${CMAKE_CURRENT_BINARY_DIR}/${proj}-install) + set(${proj}_DIR ${REDLAND_INSTALL_DIR}/lib/raptor2/cmake/) else() mitkMacroEmptyExternalProject(${proj} "${proj_DEPENDENCIES}") endif() + +endif() diff --git a/CMakeExternals/rasqal-0.9.32.patch b/CMakeExternals/rasqal-0.9.32.patch new file mode 100644 index 0000000000..00be2e45ed --- /dev/null +++ b/CMakeExternals/rasqal-0.9.32.patch @@ -0,0 +1,1014 @@ +diff -urNb rasqal-0.9.32-orig/CMakeLists.txt rasqal-0.9.32-patched/CMakeLists.txt +--- rasqal-0.9.32-orig/CMakeLists.txt 1970-01-01 01:00:00.000000000 +0100 ++++ rasqal-0.9.32-patched/CMakeLists.txt 2014-11-26 03:43:49.708342271 +0100 +@@ -0,0 +1,395 @@ ++# rasqal/CMakeLists.txt ++# ++# This file allows building rasqal with the CMake configuration tool. ++# Download CMake in source or binary form from http://www.cmake.org/ ++# ++# Based on the CMakeLists.txt file from Raptor. ++# This file is in the public domain. ++# ++ ++set(RASQAL_VERSION_MAJOR 0) ++set(RASQAL_VERSION_MINOR 9) ++set(RASQAL_VERSION_RELEASE 32) ++set(RASQAL_MIN_VERSION_DECIMAL 00932) ++ ++set(VERSION "${RASQAL_VERSION_MAJOR}.${RASQAL_VERSION_MINOR}.${RASQAL_VERSION_RELEASE}") ++math(EXPR RASQAL_VERSION_DECIMAL "${RASQAL_VERSION_MAJOR} * 10000 + ${RASQAL_VERSION_MINOR} * 100 + ${RASQAL_VERSION_RELEASE}") ++ ++project(rasqal C) ++ ++cmake_minimum_required(VERSION 2.8.9) ++ ++set(CMAKE_include_CURRENT_DIR 1) ++ ++set(PROJECT_DESCRIPTION "Rasqal RDF Query Library") ++ ++################################################################ ++ ++# Third-party libraries ++ ++set(RAPTOR_MIN_VERSION 2.0.7) ++find_package(Raptor2 ${RAPTOR_MIN_VERSION} REQUIRED) ++include_directories(${Raptor2_INCLUDE_DIR}) ++ ++find_package(LibXml2) ++ ++if(LIBXML2_FOUND) ++ include_directories( ++ ${EXPAT_include_DIRS} ++ ${LIBXML2_include_DIR} ++ ) ++endif() ++ ++################################################################ ++ ++# Configuration checks ++ ++include(CheckIncludeFile) ++include(CheckIncludeFiles) ++include(CheckFunctionExists) ++include(CheckTypeSize) ++include(CheckStructHasMember) ++include(CheckCSourceCompiles) ++ ++check_include_file(dlfcn.h HAVE_DLFCN_H) ++check_include_file(errno.h HAVE_ERRNO_H) ++check_include_file(stddef.h HAVE_STDDEF_H) ++check_include_file(stdlib.h HAVE_STDLIB_H) ++check_include_file(stdint.h HAVE_STDINT_H) ++check_include_file(unistd.h HAVE_UNISTD_H) ++check_include_file(string.h HAVE_STRING_H) ++check_include_file(strings.h HAVE_STRINGS_H) ++check_include_file(getopt.h HAVE_GETOPT_H) ++check_include_file(regex.h HAVE_REGEX_H) ++check_include_file(uuid/uuid.h HAVE_UUID_UUID_H) ++ ++check_include_file(sys/time.h HAVE_SYS_TIME_H) ++check_include_file(time.h HAVE_TIME_H) ++CHECK_include_FILES("sys/time.h;time.h" TIME_WITH_SYS_TIME) ++ ++# Make sure these variables are set to a specific value ++# because they are substituted in rasqal.h.in ++if(NOT HAVE_SYS_TIME_H) ++ set(HAVE_SYS_TIME_H 0) ++endif() ++if(NOT HAVE_TIME_H) ++ set(HAVE_TIME_H 0) ++endif() ++ ++check_include_file(math.h HAVE_MATH_H) ++check_include_file(limits.h HAVE_LIMITS_H) ++check_include_file(float.h HAVE_FLOAT_H) ++check_include_file(memory.h HAVE_MEMORY_H) ++check_include_file(sys/stat.h HAVE_SYS_STAT_H) ++check_include_file(sys/types.h HAVE_SYS_TYPES_H) ++check_include_file(inttypes.h HAVE_INTTYPES_H) ++ ++if(LIBXML2_FOUND) ++ check_include_file(libxml/xmlschemas.h HAVE_LIBXML_XMLSCHEMAS_H) ++ check_include_file(libxml/xmlschemastypes.h HAVE_LIBXML_XMLSCHEMASTYPES_H) ++ check_include_file(libxml/schemasInternals.h HAVE_LIBXML_SCHEMASINTERNALS_H) ++endif() ++ ++CHECK_FUNCTION_EXISTS(access HAVE_ACCESS) ++CHECK_FUNCTION_EXISTS(_access HAVE__ACCESS) ++CHECK_FUNCTION_EXISTS(getopt HAVE_GETOPT) ++CHECK_FUNCTION_EXISTS(getopt_long HAVE_GETOPT_LONG) ++CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY) ++CHECK_FUNCTION_EXISTS(getmtime_r HAVE_GETMTIME_R) ++CHECK_FUNCTION_EXISTS(snprintf HAVE_SNPRINTF) ++CHECK_FUNCTION_EXISTS(_snprintf HAVE__SNPRINTF) ++CHECK_FUNCTION_EXISTS(initstate HAVE_INITSTATE) ++CHECK_FUNCTION_EXISTS(initstate_r HAVE_INITSTATE_R) ++CHECK_FUNCTION_EXISTS(rand HAVE_RAND) ++CHECK_FUNCTION_EXISTS(random HAVE_RANDOM) ++CHECK_FUNCTION_EXISTS(random_r HAVE_RANDOM_R) ++CHECK_FUNCTION_EXISTS(rand_r HAVE_RAND_R) ++CHECK_FUNCTION_EXISTS(srand HAVE_SRAND) ++CHECK_FUNCTION_EXISTS(strcasecmp HAVE_STRCASECMP) ++CHECK_FUNCTION_EXISTS(stricmp HAVE_STRICMP) ++CHECK_FUNCTION_EXISTS(_stricmp HAVE__STRICMP) ++CHECK_FUNCTION_EXISTS(strnicmp HAVE_STRNICMP) ++CHECK_FUNCTION_EXISTS(_strnicmp HAVE__STRNICMP) ++CHECK_FUNCTION_EXISTS(timegm HAVE_TIMEGM) ++CHECK_FUNCTION_EXISTS(vasprintf HAVE_VASPRINTF) ++CHECK_FUNCTION_EXISTS(vsnprintf HAVE_VSNPRINTF) ++CHECK_FUNCTION_EXISTS(_vsnprintf HAVE__VSNPRINTF) ++ ++CHECK_C_SOURCE_COMPILES(" ++\#include ++int main() {struct tm x; x.tm_gmtoff = 0; return 0;}" ++ HAVE_TM_GMTOFF ++) ++ ++CHECK_C_SOURCE_COMPILES(" ++int main() {char *function_name = __func__; return 0;}" ++ HAVE___FUNC__ ++) ++CHECK_C_SOURCE_COMPILES(" ++int main() {char *function_name = __FUNCTION__; return 0;}" ++ HAVE___FUNCTION__ ++) ++ ++CHECK_C_SOURCE_COMPILES(" ++\#include ++\#include ++int main() {regex_t reg; char *pat=\"abc\"; regcomp(®, pat, 0); return 0;}" ++ HAVE_REGEX_POSIX ++) ++ ++find_library(PCRE_LIBRARY_DEBUG NAMES libpcred libpcre pcred pcre) ++find_library(PCRE_LIBRARY_RELEASE NAMES libpcre pcre) ++find_path(PCRE_INCLUDE_DIR pcre.h) ++if((PCRE_LIBRARY_DEBUG OR PCRE_LIBRARY_RELEASE) AND PCRE_INCLUDE_DIR) ++ set(HAVE_REGEX_PCRE 1) ++ set(PCRE_LIBRARY ) ++ if(PCRE_LIBRARY_DEBUG) ++ list(APPEND PCRE_LIBRARY debug ${PCRE_LIBRARY_DEBUG}) ++ endif() ++ if(PCRE_LIBRARY_RELEASE) ++ list(APPEND PCRE_LIBRARY optimized ${PCRE_LIBRARY_RELEASE}) ++ endif() ++endif() ++ ++################################################################ ++ ++# User-configurable options ++# ++# (Note: The CMake GUI displays these in alphabetical order, regardless of ++# the order we use here) ++ ++set(BUILD_SHARED_LIBS OFF CACHE BOOL ++ "Build shared libraries instead of static ones.") ++ ++#set(RASQAL_ENABLE_TESTING TRUE CACHE BOOL ++# "Enable unit tests") ++ ++if(BUILD_SHARED_LIBS) ++ set(RASQAL_STATIC FALSE) ++else() ++ set(RASQAL_STATIC TRUE) ++endif() ++ ++# ----------------------- REGEX library ----------------------- ++ ++set(RASQAL_REGEX_INIT none) ++if(HAVE_REGEX_POSIX) ++ set(RASQAL_REGEX_INIT posix) ++elseif(PCRE_LIBRARY) ++ set(RASQAL_REGEX_INIT pcre) ++endif() ++ ++set(RASQAL_REGEX ${RASQAL_REGEX_INIT} CACHE STRING ++ "Which regular expression library to use (any of \"posix\", \"pcre\", \"none\").") ++ ++set(RASQAL_REGEX_LIBRARY ) ++if(RASQAL_REGEX STREQUAL "none") ++ set(RASQAL_REGEX_NONE 1) ++ set(RASQAL_REGEX_POSIX 0) ++ set(RASQAL_REGEX_PCRE 0) ++elseif(RASQAL_REGEX STREQUAL "posix") ++ set(RASQAL_REGEX_NONE 0) ++ set(RASQAL_REGEX_POSIX 1) ++ set(RASQAL_REGEX_PCRE 0) ++elseif(RASQAL_REGEX STREQUAL "pcre") ++ set(RASQAL_REGEX_NONE 0) ++ set(RASQAL_REGEX_POSIX 0) ++ set(RASQAL_REGEX_PCRE 1) ++ set(RASQAL_REGEX_LIBRARY ${PCRE_LIBRARY}) ++ include_directories(${PCRE_INCLUDE_DIR}) ++else() ++ set(RASQAL_REGEX_NONE 0) ++ set(RASQAL_REGEX_POSIX 0) ++ set(RASQAL_REGEX_PCRE 0) ++endif() ++ ++# ----------------------- Decimal number library ----------------------- ++ ++set(RASQAL_DECIMAL_INIT none) ++ ++set(RASQAL_DECIMAL ${RASQAL_DECIMAL_INIT} CACHE STRING ++ "Which decimal number library to use (any of \"gmp\", \"mpfr\", \"none\").") ++ ++if(RASQAL_DECIMAL STREQUAL "none") ++ set(RASQAL_DECIMAL_NONE 1) ++ set(RASQAL_DECIMAL_GMP 0) ++ set(RASQAL_DECIMAL_MPFR 0) ++elseif(RASQAL_DECIMAL STREQUAL "gmp") ++ set(RASQAL_DECIMAL_NONE 0) ++ set(RASQAL_DECIMAL_GMP 1) ++ set(RASQAL_DECIMAL_MPFR 0) ++elseif(RASQAL_DECIMAL STREQUAL "mpfr") ++ set(RASQAL_DECIMAL_NONE 0) ++ set(RASQAL_DECIMAL_GMP 0) ++ set(RASQAL_DECIMAL_MPFR 1) ++ELSE() ++ set(RASQAL_DECIMAL_NONE 0) ++ set(RASQAL_DECIMAL_GMP 0) ++ set(RASQAL_DECIMAL_MPFR 0) ++endif() ++ ++# ----------------------- Digest library ----------------------- ++ ++set(RASQAL_DIGEST_INIT internal) ++ ++set(RASQAL_DIGEST ${RASQAL_DIGEST_INIT} CACHE STRING ++ "Which message digest library to use (any of \"gcrypt\", \"internal\", \"mhash\", \"none\").") ++ ++if(RASQAL_DIGEST STREQUAL "none") ++ set(RASQAL_DIGEST_NONE 1) ++ set(RASQAL_DIGEST_GCRYPT 0) ++ set(RASQAL_DIGEST_INTERNAL 0) ++ set(RASQAL_DIGEST_MHASH 0) ++elseif(RASQAL_DIGEST STREQUAL "gcrypt") ++ set(RASQAL_DIGEST_NONE 0) ++ set(RASQAL_DIGEST_GCRYPT 1) ++ set(RASQAL_DIGEST_INTERNAL 0) ++ set(RASQAL_DIGEST_MHASH 0) ++elseif(RASQAL_DIGEST STREQUAL "internal") ++ set(RASQAL_DIGEST_NONE 0) ++ set(RASQAL_DIGEST_GCRYPT 0) ++ set(RASQAL_DIGEST_INTERNAL 1) ++ set(RASQAL_DIGEST_MHASH 0) ++elseif(RASQAL_DIGEST STREQUAL "mhash") ++ set(RASQAL_DIGEST_NONE 0) ++ set(RASQAL_DIGEST_GCRYPT 0) ++ set(RASQAL_DIGEST_INTERNAL 0) ++ set(RASQAL_DIGEST_MHASH 1) ++else() ++ set(RASQAL_DIGEST_NONE 0) ++ set(RASQAL_DIGEST_GCRYPT 0) ++ set(RASQAL_DIGEST_INTERNAL 0) ++ set(RASQAL_DIGEST_MHASH 0) ++endif() ++ ++# ----------------------- uuid library ----------------------- ++ ++set(RASQAL_UUID_INIT internal) ++ ++set(RASQAL_UUID ${RASQAL_UUID_INIT} CACHE STRING ++ "Which uuid library to use (any of \"internal\", \"libc\", \"libuuid\", \"none\").") ++ ++if(RASQAL_UUID STREQUAL "none") ++ set(RASQAL_UUID_NONE 1) ++ set(RASQAL_UUID_LIBC 0) ++ set(RASQAL_UUID_INTERNAL 0) ++ set(RASQAL_UUID_LIBUUID 0) ++elseif(RASQAL_UUID STREQUAL "libc") ++ set(RASQAL_UUID_NONE 0) ++ set(RASQAL_UUID_LIBC 1) ++ set(RASQAL_UUID_INTERNAL 0) ++ set(RASQAL_UUID_LIBUUID 0) ++elseif(RASQAL_UUID STREQUAL "internal") ++ set(RASQAL_UUID_NONE 0) ++ set(RASQAL_UUID_LIBC 0) ++ set(RASQAL_UUID_INTERNAL 1) ++ set(RASQAL_UUID_LIBUUID 0) ++elseif(RASQAL_UUID STREQUAL "libuuid") ++ set(RASQAL_UUID_NONE 0) ++ set(RASQAL_UUID_LIBC 0) ++ set(RASQAL_UUID_INTERNAL 0) ++ set(RASQAL_UUID_LIBUUID 1) ++else() ++ set(RASQAL_UUID_NONE 0) ++ set(RASQAL_UUID_LIBC 0) ++ set(RASQAL_UUID_INTERNAL 0) ++ set(RASQAL_UUID_LIBUUID 0) ++endif() ++ ++# ----------------------- random number generator ----------------------- ++ ++set(RASQAL_RANDOM_ALGO_INIT rand) ++ ++set(RASQAL_RANDOM_ALGO ${RASQAL_RANDOM_ALGO_INIT} CACHE STRING ++ "Which random number generator to use (any of \"gmp_rand\", \"mtwist\", \"rand\", \"random\", \"random_r\", \"rand_r\").") ++ ++set(RANDOM_ALGO_GMP_RAND 0) ++set(RANDOM_ALGO_MTWIST 0) ++set(RANDOM_ALGO_RAND 0) ++set(RANDOM_ALGO_RANDOM 0) ++set(RANDOM_ALGO_RANDOM_R 0) ++set(RANDOM_ALGO_RAND_R 0) ++ ++string(TOUPPER ${RASQAL_RANDOM_ALGO} _random_algo_uc) ++set(RANDOM_ALGO_${_random_algo_uc} 1) ++ ++# ----------------------- Query language ----------------------- ++ ++set(RASQAL_QUERY_INIT all) ++ ++set(RASQAL_QUERY ${RASQAL_QUERY_INIT} CACHE STRING ++ "Which query languages to enable (semi-colon separated list of \"sparql\", \"laqrs\", or just \"all\").") ++ ++set(_query_languages SPARQL LAQRS) ++set(_query_lang_default 0) ++list(FIND RASQAL_QUERY all _result) ++if(NOT _result EQUAL -1) ++ set(_query_lang_default 1) ++endif() ++foreach(_lang ${_query_languages}) ++ set(RASQAL_QUERY_${_lang} ${_query_lang_default}) ++ string(TOLOWER ${_lang} _lang_lc) ++ list(FIND RASQAL_QUERY ${_lang_lc} _result) ++ if(NOT _result EQUAL -1) ++ set(RASQAL_QUERY_${_lang} 1) ++ endif() ++endforeach() ++ ++ ++################################################################ ++ ++include(CMakePackageConfigHelpers) ++ ++configure_file( ++ src/rasqal_config_cmake.h.in ++ src/rasqal_config.h ++ @ONLY ++) ++ ++add_definitions(-DHAVE_CONFIG_H) ++ ++configure_file( ++ src/rasqal.h.in ++ src/rasqal.h ++ @ONLY ++) ++ ++set(INCLUDE_INSTALL_DIR include/rasqal) ++set(LIB_INSTALL_DIR lib) ++set(BIN_INSTALL_DIR bin) ++set(CMAKE_INSTALL_DIR lib/rasqal/cmake) ++ ++add_subdirectory(libsv) ++add_subdirectory(src) ++#SUBDIRS(utils) ++ ++configure_package_config_file(RasqalConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/RasqalConfig.cmake ++ INSTALL_DESTINATION ${CMAKE_INSTALL_DIR} ++ PATH_VARS INCLUDE_INSTALL_DIR ++ NO_CHECK_REQUIRED_COMPONENTS_MACRO ++) ++ ++write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/RasqalConfigVersion.cmake ++ VERSION ${VERSION} ++ COMPATIBILITY AnyNewerVersion ++) ++ ++install(FILES ++ ${CMAKE_CURRENT_BINARY_DIR}/RasqalConfig.cmake ++ ${CMAKE_CURRENT_BINARY_DIR}/RasqalConfigVersion.cmake ++ DESTINATION ${CMAKE_INSTALL_DIR} ++) ++ ++ ++message("Rasqal configuration: ++ RDF query languages available : ${_query_languages} ++ RDF query languages enabled : ${RASQAL_QUERY} ++ Raptor version : ${Raptor2_VERSION} ++ Decimal library : ${RASQAL_DECIMAL} ++ Regex library : ${RASQAL_REGEX} ++ Message digest library : ${RASQAL_DIGEST} ++ UUID library : ${RASQAL_UUID} ++ Random approach : ${RASQAL_RANDOM_ALGO}" ++) ++ ++# end rasqal/CMakeLists.txt +diff -urNb rasqal-0.9.32-orig/libsv/CMakeLists.txt rasqal-0.9.32-patched/libsv/CMakeLists.txt +--- rasqal-0.9.32-orig/libsv/CMakeLists.txt 1970-01-01 01:00:00.000000000 +0100 ++++ rasqal-0.9.32-patched/libsv/CMakeLists.txt 2014-11-26 00:50:20.188343513 +0100 +@@ -0,0 +1,12 @@ ++include_directories(${CMAKE_CURRENT_SOURCE_DIR}) ++include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../src) ++include_directories(${CMAKE_CURRENT_BINARY_DIR}/../src) ++ ++add_library(sv STATIC sv.c sv.h) ++ ++set_target_properties( ++ sv ++ PROPERTIES ++ COMPILE_DEFINITIONS "SV_CONFIG" ++ POSITION_INDEPENDENT_CODE ON ++) +diff -urNb rasqal-0.9.32-orig/RasqalConfig.cmake.in rasqal-0.9.32-patched/RasqalConfig.cmake.in +--- rasqal-0.9.32-orig/RasqalConfig.cmake.in 1970-01-01 01:00:00.000000000 +0100 ++++ rasqal-0.9.32-patched/RasqalConfig.cmake.in 2014-11-17 02:35:41.080582128 +0100 +@@ -0,0 +1,9 @@ ++set(Rasqal_VERSION @VERSION@) ++ ++@PACKAGE_INIT@ ++ ++set_and_check(Rasqal_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@") ++ ++if(NOT TARGET rasqal AND EXISTS ${CMAKE_CURRENT_LIST_DIR}/RasqalTargets.cmake) ++ include(${CMAKE_CURRENT_LIST_DIR}/RasqalTargets.cmake) ++endif() +diff -urNb rasqal-0.9.32-orig/src/CMakeLists.txt rasqal-0.9.32-patched/src/CMakeLists.txt +--- rasqal-0.9.32-orig/src/CMakeLists.txt 1970-01-01 01:00:00.000000000 +0100 ++++ rasqal-0.9.32-patched/src/CMakeLists.txt 2014-11-26 01:52:37.032343067 +0100 +@@ -0,0 +1,159 @@ ++# rasqal/src/CMakeLists.txt ++# ++# Based on the src/CMakeLists.txt file from Raptor ++# This file is in the public domain. ++# ++ ++set(rasqal_srcs ++ rasqal_algebra.c ++ rasqal_bindings.c ++ rasqal_data_graph.c ++ rasqal_dataset.c ++ rasqal_datetime.c ++ rasqal_decimal.c ++ rasqal_digest.c ++ rasqal_double.c ++ rasqal_engine_algebra.c ++ rasqal_engine.c ++ rasqal_engine_sort.c ++ rasqal_expr.c ++ rasqal_expr_datetimes.c ++ rasqal_expr_evaluate.c ++ rasqal_expr_numerics.c ++ rasqal_expr_strings.c ++ rasqal_feature.c ++ rasqal_format_html.c ++ rasqal_format_json.c ++ rasqal_format_rdf.c ++ rasqal_format_sparql_xml.c ++ rasqal_format_sv.c ++ rasqal_format_table.c ++ rasqal_formula.c ++ rasqal_general.c ++ rasqal_graph_pattern.c ++ rasqal_iostream.c ++ rasqal_literal.c ++ rasqal_map.c ++ rasqal_ntriples.c ++ rasqal_prefix.c ++ rasqal_projection.c ++ rasqal_query.c ++ rasqal_query_results.c ++ rasqal_query_transform.c ++ rasqal_query_write.c ++ rasqal_random.c ++ rasqal_raptor.c ++ rasqal_regex.c ++ rasqal_result_formats.c ++ rasqal_row.c ++ rasqal_row_compatible.c ++ rasqal_rowsource_aggregation.c ++ rasqal_rowsource_assignment.c ++ rasqal_rowsource_bindings.c ++ rasqal_rowsource.c ++ rasqal_rowsource_distinct.c ++ rasqal_rowsource_empty.c ++ rasqal_rowsource_filter.c ++ rasqal_rowsource_graph.c ++ rasqal_rowsource_groupby.c ++ rasqal_rowsource_having.c ++ rasqal_rowsource_join.c ++ rasqal_rowsource_project.c ++ rasqal_rowsource_rowsequence.c ++ rasqal_rowsource_service.c ++ rasqal_rowsource_slice.c ++ rasqal_rowsource_sort.c ++ rasqal_rowsource_triples.c ++ rasqal_rowsource_union.c ++ rasqal_service.c ++ rasqal_solution_modifier.c ++ rasqal_triple.c ++ rasqal_triples_source.c ++ rasqal_update.c ++ rasqal_variable.c ++ rasqal_xsd_datatypes.c ++ snprintf.c ++) ++ ++if(RASQAL_QUERY_SPARQL) ++ list(APPEND rasqal_srcs ++ sparql_lexer.c ++ sparql_lexer.h ++ sparql_parser.c ++ sparql_parser.h ++ sparql_common.h ++ ) ++endif() ++ ++if(NOT HAVE_STRCASECMP AND NOT HAVE_STRICMP) ++ list(APPEND rasqal_srcs strcasecmp.c) ++endif() ++ ++if(NOT HAVE_TIMEGM) ++ list(APPEND rasqal_srcs timegm.c) ++endif() ++ ++if(NOT HAVE_GETTIMEOFDAY) ++ list(APPEND rasqal_srcs gettimeofday.c) ++endif() ++ ++if(RASQAL_DIGEST_INTERNAL) ++ list(APPEND rasqal_srcs ++ rasqal_digest_md5.c ++ rasqal_digest_sha1.c ++ ) ++endif() ++ ++include_directories(${CMAKE_CURRENT_SOURCE_DIR}) ++include_directories(${CMAKE_CURRENT_BINARY_DIR}) ++include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../libsv) ++add_library(rasqal ${rasqal_srcs}) ++ ++target_link_libraries(rasqal LINK_PRIVATE sv ${RASQAL_REGEX_LIBRARY}) ++target_link_libraries(rasqal LINK_PUBLIC raptor2) ++ ++set_target_properties( ++ rasqal ++ PROPERTIES ++ COMPILE_DEFINITIONS "RASQAL_INTERNAL;SV_CONFIG" #;${LIBXML2_DEFINITIONS};${LIBXSLT_DEFINITIONS}" ++) ++ ++# Generate pkg-config metadata file ++# ++file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/rasqal.pc ++"prefix=${CMAKE_INSTALL_PREFIX} ++exec_prefix=\${prefix} ++libdir=\${exec_prefix}/${LIB_INSTALL_DIR} ++includedir=\${prefix}/${INCLUDE_INSTALL_DIR} ++ ++have_raptor2_api=1 ++ ++Name: ${PROJECT_DESCRIPTION} ++Description: Rasqal RDF Query parsing and execution library ++Requires: raptor2 >= ${RAPTOR_MIN_VERSION} ++Version: ${VERSION} ++Libs: -L\${libdir} -lrasqal ++Cflags: -I\${includedir} ++") ++ ++install(FILES ++ ${CMAKE_CURRENT_BINARY_DIR}/rasqal.h ++ DESTINATION ${INCLUDE_INSTALL_DIR} ++) ++ ++install(FILES ++ ${CMAKE_CURRENT_BINARY_DIR}/rasqal.pc ++ DESTINATION ${LIB_INSTALL_DIR}/pkgconfig ++) ++ ++install( ++ TARGETS rasqal ++ EXPORT RasqalTargets ++ ARCHIVE DESTINATION ${LIB_INSTALL_DIR} ++ LIBRARY DESTINATION ${LIB_INSTALL_DIR} ++ RUNTIME DESTINATION ${BIN_INSTALL_DIR} ++) ++ ++install(EXPORT RasqalTargets DESTINATION ${CMAKE_INSTALL_DIR}) ++ ++# end rasqal/src/CMakeLists.txt +diff -urNb rasqal-0.9.32-orig/src/gettimeofday.c rasqal-0.9.32-patched/src/gettimeofday.c +--- rasqal-0.9.32-orig/src/gettimeofday.c 2011-08-22 23:20:56.000000000 +0200 ++++ rasqal-0.9.32-patched/src/gettimeofday.c 2014-11-19 03:53:51.512582102 +0100 +@@ -7,7 +7,7 @@ + */ + + #ifdef WIN32 +-#include ++#include + + #include + #include +diff -urNb rasqal-0.9.32-orig/src/rasqal_config_cmake.h.in rasqal-0.9.32-patched/src/rasqal_config_cmake.h.in +--- rasqal-0.9.32-orig/src/rasqal_config_cmake.h.in 1970-01-01 01:00:00.000000000 +0100 ++++ rasqal-0.9.32-patched/src/rasqal_config_cmake.h.in 2014-11-19 04:56:07.408581656 +0100 +@@ -0,0 +1,337 @@ ++/* rasqal_config.h */ ++ ++#ifndef RASQAL_CONFIG_H ++ ++/* Release version as a decimal */ ++#define RASQAL_VERSION_DECIMAL @RASQAL_VERSION_DECIMAL@ ++ ++/* Major version number */ ++#define RASQAL_VERSION_MAJOR @RASQAL_VERSION_MAJOR@ ++ ++/* Minor version number */ ++#define RASQAL_VERSION_MINOR @RASQAL_VERSION_MINOR@ ++ ++/* Release version number */ ++#define RASQAL_VERSION_RELEASE @RASQAL_VERSION_RELEASE@ ++ ++/* ---------- package information ------------ */ ++ ++/* Name of package */ ++#define PACKAGE "@PROJECT_NAME@" ++ ++/* Define to the address where bug reports for this package should be sent. */ ++#define PACKAGE_BUGREPORT "http://bugs.librdf.org/" ++ ++/* Define to the full name of this package. */ ++#define PACKAGE_NAME "@PROJECT_DESCRIPTION@" ++ ++/* Define to the full name and version of this package. */ ++#define PACKAGE_STRING "@PROJECT_DESCRIPTION@ @VERSION@" ++ ++/* Define to the one symbol short name of this package. */ ++#define PACKAGE_TARNAME "@PROJECT_NAME@" ++ ++/* Define to the home page for this package. */ ++#define PACKAGE_URL "" ++ ++/* Define to the version of this package. */ ++#define PACKAGE_VERSION "@VERSION@" ++ ++/* Version number of package */ ++#define VERSION "@VERSION@" ++ ++/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most ++ significant byte first (like Motorola and SPARC, unlike Intel). */ ++#if defined AC_APPLE_UNIVERSAL_BUILD ++# if defined __BIG_ENDIAN__ ++# define WORDS_BIGENDIAN 1 ++# endif ++#else ++# ifndef WORDS_BIGENDIAN ++# undef WORDS_BIGENDIAN ++# endif ++#endif ++ ++/* Define to the sub-directory in which libtool stores uninstalled libraries. */ ++#cmakedefine LT_OBJDIR ++ ++/* ------------ header availability --------------- */ ++ ++#cmakedefine HAVE_DLFCN_H ++#cmakedefine HAVE_ERRNO_H ++#cmakedefine HAVE_STDDEF_H ++#cmakedefine HAVE_STDLIB_H ++#cmakedefine HAVE_STDINT_H ++#cmakedefine HAVE_UNISTD_H ++#cmakedefine HAVE_STRING_H ++#cmakedefine HAVE_STRINGS_H ++#cmakedefine HAVE_GETOPT_H ++#cmakedefine HAVE_REGEX_H ++#cmakedefine HAVE_UUID_UUID_H ++ ++#cmakedefine HAVE_SYS_TIME_H ++#cmakedefine HAVE_TIME_H ++ ++#cmakedefine HAVE_MATH_H ++#cmakedefine HAVE_LIMITS_H ++#cmakedefine HAVE_FLOAT_H ++#cmakedefine HAVE_MEMORY_H ++#cmakedefine HAVE_SYS_STAT_H ++#cmakedefine HAVE_SYS_TYPES_H ++#cmakedefine HAVE_INTTYPES_H ++ ++#cmakedefine HAVE_MHASH_H ++#cmakedefine HAVE_MPFR_H ++#cmakedefine HAVE_GCRYPT_H ++#cmakedefine HAVE_GMP_H ++ ++#cmakedefine HAVE_LIBXML_SCHEMASINTERNALS_H ++#cmakedefine HAVE_LIBXML_XMLSCHEMASTYPES_H ++#cmakedefine HAVE_LIBXML_XMLSCHEMAS_H ++ ++ ++/* --------- feature availability ------------ */ ++ ++#cmakedefine HAVE_GMP_VERSION ++ ++#cmakedefine HAVE_REGEX_PCRE ++#cmakedefine HAVE_REGEX_POSIX ++ ++/* need 'extern int optind' declaration? */ ++#cmakedefine NEED_OPTIND_DECLARATION ++ ++/* Define to 1 if your C compiler doesn't accept -c and -o together. */ ++#cmakedefine NO_MINUS_C_MINUS_O ++ ++/* Use GMP gmp_randseed_ui() and mpz_urandomm() */ ++#cmakedefine RANDOM_ALGO_GMP_RAND ++ ++/* Use internal Mersenne Twister */ ++#cmakedefine RANDOM_ALGO_MTWIST ++ ++/* Use POSIX srand() and rand() */ ++#cmakedefine RANDOM_ALGO_RAND ++ ++/* Use BSD initstate() and random() */ ++#cmakedefine RANDOM_ALGO_RANDOM ++ ++/* Use glibc initstate_r() and random_r() */ ++#cmakedefine RANDOM_ALGO_RANDOM_R ++ ++/* Use POSIX rand_r() */ ++#cmakedefine RANDOM_ALGO_RAND_R ++ ++/* Decimal from GNU MP library */ ++#cmakedefine RASQAL_DECIMAL_GMP ++ ++/* Decimal from MPFR library */ ++#cmakedefine RASQAL_DECIMAL_MPFR ++ ++/* Decimal without a library */ ++#cmakedefine RASQAL_DECIMAL_NONE ++ ++/* Use gcrypt library for message digests */ ++#cmakedefine RASQAL_DIGEST_GCRYPT ++ ++/* Use internal routines for message digests */ ++#cmakedefine RASQAL_DIGEST_INTERNAL ++ ++/* Use mhash library for message digests */ ++#cmakedefine RASQAL_DIGEST_MHASH ++ ++/* Use no message digest library */ ++#cmakedefine RASQAL_DIGEST_NONE ++ ++/* Building LAQRS query */ ++#cmakedefine RASQAL_QUERY_LAQRS ++ ++/* Building SPARQL query */ ++#cmakedefine RASQAL_QUERY_SPARQL ++ ++/* Use no regex library */ ++#cmakedefine RASQAL_REGEX_NONE ++ ++/* Use PCRE regex library */ ++#cmakedefine RASQAL_REGEX_PCRE ++ ++/* Use POSIX regex library */ ++#cmakedefine RASQAL_REGEX_POSIX ++ ++/* Use internal routines for UUID */ ++#cmakedefine RASQAL_UUID_INTERNAL ++ ++/* Use UUID in libc library for UUID */ ++#cmakedefine RASQAL_UUID_LIBC ++ ++/* Use libuuid library for UUID */ ++#cmakedefine RASQAL_UUID_LIBUUID ++ ++/* Use no UUID library */ ++#cmakedefine RASQAL_UUID_NONE ++ ++/* Use OSSP library for UUID */ ++#cmakedefine RASQAL_UUID_OSSP ++ ++/* Define to 1 if you have the ANSI C header files. */ ++#cmakedefine STDC_HEADERS ++ ++/* Define to 1 if you can safely include both and . */ ++#cmakedefine TIME_WITH_SYS_TIME ++ ++/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a ++ `char[]'. */ ++#cmakedefine YYTEXT_POINTER ++ ++/* Define to empty if `const' does not conform to ANSI C. */ ++// #cmakedefine const ++ ++/* --------- function availability ----------- */ ++ ++#cmakedefine HAVE_ACCESS ++#cmakedefine HAVE__ACCESS ++#cmakedefine HAVE_GETOPT ++#cmakedefine HAVE_GETOPT_LONG ++#cmakedefine HAVE_GETTIMEOFDAY ++#cmakedefine HAVE_GMTIME_R ++#cmakedefine HAVE_SNPRINTF ++#cmakedefine HAVE__SNPRINTF ++#cmakedefine HAVE_INITSTATE ++#cmakedefine HAVE_INITSTATE_R ++#cmakedefine HAVE_RAND ++#cmakedefine HAVE_RANDOM ++#cmakedefine HAVE_RANDOM_R ++#cmakedefine HAVE_RAND_R ++#cmakedefine HAVE_SRAND ++#cmakedefine HAVE_STRCASECMP ++#cmakedefine HAVE_STRICMP ++#cmakedefine HAVE__STRICMP ++#cmakedefine HAVE_STRNICMP ++#cmakedefine HAVE__STRNICMP ++#cmakedefine HAVE_TIMEGM ++#cmakedefine HAVE_VASPRINTF ++#cmakedefine HAVE_VSNPRINTF ++#cmakedefine HAVE__VSNPRINTF ++ ++/* struct tm has tm_gmtoff field */ ++#cmakedefine HAVE_TM_GMTOFF ++#cmakedefine HAVE___FUNC__ ++ ++ ++/* --------- WIN32 config ----------- */ ++ ++#ifdef WIN32 ++ ++# ifdef __cplusplus ++ extern "C" { ++# endif ++ ++# define WIN32_LEAN_AND_MEAN 1 ++# define _CRT_NONSTDC_NO_DEPRECATE ++# define _CRT_SECURE_NO_DEPRECATE ++# include ++ ++ /* MS names for these functions */ ++ // next line breaks build on wntmsci12 ++ //#define vsnprintf _vsnprintf ++# if !defined(HAVE_SNPRINTF) && defined(HAVE__SNPRINTF) ++# define snprintf _snprintf ++# endif ++# if !defined(HAVE_STRICMP) && defined(HAVE__STRICMP) ++# define stricmp _stricmp ++# endif ++# if !defined(HAVE_STRNICMP) && defined(HAVE__STRNICMP) ++# define strnicmp _strnicmp ++# endif ++ ++ /* definition from winsock2.h */ ++# ifndef _TIMEVAL_DEFINED ++# define _TIMEVAL_DEFINED ++ typedef struct timeval { ++ long tv_sec; ++ long tv_usec; ++ } timeval; ++# endif ++ ++# ifndef _TIMEZONE_DEFINED ++# define _TIMEZONE_DEFINED ++ struct timezone ++ { ++ int tz_minuteswest; /* minutes West of Greenwich */ ++ int tz_dsttime; /* type of dst correction */ ++ }; ++# endif ++ ++# ifndef HAVE_GETTIMEOFDAY ++ int rasqal_gettimeofday(struct timeval *tv, struct timezone *tz); ++# endif ++ ++# include ++# define isnan(n) _isnan(n) ++ /* no round function available */ ++# define round(x) floor(x+0.5) ++ ++ /* These are SPARQL token definitions */ ++# ifdef OPTIONAL ++# undef OPTIONAL ++# endif ++ ++# ifdef DELETE ++# undef DELETE ++# endif ++ ++# ifdef IN ++# undef IN ++# endif ++ ++# ifdef GROUP ++# undef GROUP ++# endif ++ ++ /* for access() which is POSIX but doesn't seem to have the defines in VC */ ++# ifndef R_OK ++# define R_OK 4 ++# endif ++ ++# ifndef W_OK ++# define W_OK 2 ++# endif ++ ++ /* bison: output uses ERROR in an enum which breaks if this is defined */ ++# ifdef ERROR ++# undef ERROR ++# endif ++ ++# ifdef _MSC_VER ++# if (_MSC_VER >= 1300) && !defined(__func__) ++# define __func__ __FUNCTION__ ++# define HAVE___FUNC__ ++# elif !defined(__func__) ++ /* better than nothing */ ++# define rasqal_str(s) #s ++# define __func__ "func@" __FILE__ ":" rasqal_str(__LINE__) ++# endif ++# endif ++ ++# if !defined(HAVE_ACCESS) && defined(HAVE__ACCESS) ++# define access(p,m) _access(p,m) ++# endif ++ ++ /* flex: const is available */ ++# define YY_USE_CONST ++ /* looks like the .c files define this anyway */ ++ /* #define YY_NO_UNISTD_H */ ++ ++# undef RASQAL_INLINE ++# define RASQAL_INLINE __inline ++ ++# ifdef _DEBUG ++# define RASQAL_DEBUG 1 ++# endif ++ ++# ifdef __cplusplus ++ } ++# endif ++ ++#endif ++ ++#endif +diff -urNb rasqal-0.9.32-orig/src/rasqal_config.h.in rasqal-0.9.32-patched/src/rasqal_config.h.in +--- rasqal-0.9.32-orig/src/rasqal_config.h.in 2014-02-23 16:22:21.000000000 +0100 ++++ rasqal-0.9.32-patched/src/rasqal_config.h.in 2014-11-18 02:32:39.740582443 +0100 +@@ -245,16 +245,16 @@ + #undef RASQAL_UUID_OSSP + + /* Release version as a decimal */ +-#undef RASQAL_VERSION_DECIMAL ++#define RASQAL_VERSION_DECIMAL @RASQAL_VERSION_DECIMAL@ + + /* Major version number */ +-#undef RASQAL_VERSION_MAJOR ++#define RASQAL_VERSION_MAJOR @RASQAL_VERSION_MAJOR@ + + /* Minor version number */ +-#undef RASQAL_VERSION_MINOR ++#define RASQAL_VERSION_MINOR @RASQAL_VERSION_MINOR@ + + /* Release version number */ +-#undef RASQAL_VERSION_RELEASE ++#define RASQAL_VERSION_RELEASE @RASQAL_VERSION_RELEASE@ + + /* Define to 1 if you have the ANSI C header files. */ + #undef STDC_HEADERS +diff -urNb rasqal-0.9.32-orig/src/rasqal_regex.c rasqal-0.9.32-patched/src/rasqal_regex.c +--- rasqal-0.9.32-orig/src/rasqal_regex.c 2014-02-20 06:00:40.000000000 +0100 ++++ rasqal-0.9.32-patched/src/rasqal_regex.c 2014-11-19 02:55:04.604582523 +0100 +@@ -161,7 +161,7 @@ + #ifdef RASQAL_REGEX_NONE + rasqal_log_warning_simple(world, RASQAL_WARNING_LEVEL_MISSING_SUPPORT, locator, + "Regex support missing, cannot compare '%s' to '%s'", +- match_string, pattern); ++ subject, pattern); + rc = -1; + #endif + +diff -urNb rasqal-0.9.32-orig/src/win32_rasqal_config.h rasqal-0.9.32-patched/src/win32_rasqal_config.h +--- rasqal-0.9.32-orig/src/win32_rasqal_config.h 2014-02-23 17:39:47.000000000 +0100 ++++ rasqal-0.9.32-patched/src/win32_rasqal_config.h 2014-11-19 02:34:19.852582671 +0100 +@@ -21,7 +21,7 @@ + * + */ + +- ++#if 0 + #ifndef WIN32_CONFIG_H + #define WIN32_CONFIG_H + +@@ -171,3 +171,4 @@ + #endif + + #endif ++#endif +diff -urNb rasqal-0.9.32-orig/src/win32_rasqal_config.h.in rasqal-0.9.32-patched/src/win32_rasqal_config.h.in +--- rasqal-0.9.32-orig/src/win32_rasqal_config.h.in 2013-04-05 19:17:36.000000000 +0200 ++++ rasqal-0.9.32-patched/src/win32_rasqal_config.h.in 2014-11-19 02:34:14.668582672 +0100 +@@ -21,7 +21,7 @@ + * + */ + +- ++#if 0 + #ifndef WIN32_CONFIG_H + #define WIN32_CONFIG_H + +@@ -171,3 +171,4 @@ + #endif + + #endif ++#endif diff --git a/CMakeExternals/rasqal.cmake b/CMakeExternals/rasqal.cmake new file mode 100644 index 0000000000..055d18877c --- /dev/null +++ b/CMakeExternals/rasqal.cmake @@ -0,0 +1,47 @@ +#----------------------------------------------------------------------------- +# rasqal +#----------------------------------------------------------------------------- + +if(MITK_USE_rasqal) + +# Sanity checks +if(DEFINED rasqal_DIR AND NOT EXISTS ${rasqal_DIR}) + message(FATAL_ERROR "rasqal_DIR variable is defined but corresponds to non-existing directory") +endif() + +set(proj rasqal) +set(proj_DEPENDENCIES ${raptor2_DEPENDS} ${PCRE_DEPENDS}) +set(${proj}_DEPENDS ${proj}) + +if(NOT DEFINED rasqal_DIR) + + ExternalProject_Add(${proj} + SOURCE_DIR ${CMAKE_BINARY_DIR}/${proj}-src + BINARY_DIR ${proj}-build + INSTALL_DIR ${REDLAND_INSTALL_DIR} + PREFIX ${proj}-cmake + URL ${MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL}/rasqal-0.9.32.tar.gz + URL_MD5 dc7c6107de00c47f85f6ab7db164a136 + PATCH_COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_LIST_DIR}/rasqal-0.9.32.patch + LIST_SEPARATOR ^^ + CMAKE_GENERATOR ${gen} + CMAKE_ARGS + ${ep_common_args} + -DCMAKE_INSTALL_PREFIX:PATH= + -DBUILD_SHARED_LIBS:BOOL=ON + "-DCMAKE_C_FLAGS:STRING=-DPCRE_STATIC ${CMAKE_C_FLAGS}" + -DRASQAL_REGEX:STRING=pcre + -DCMAKE_PREFIX_PATH:STRING=${PCRE_DIR}^^${REDLAND_INSTALL_DIR} + -DPCRE_INCLUDE_DIR:PATH=${PCRE_DIR}/include + DEPENDS ${proj_DEPENDENCIES} + ) + + set(${proj}_DIR ${REDLAND_INSTALL_DIR}/lib/rasqal/cmake/) + +else() + + mitkMacroEmptyExternalProject(${proj} "${proj_DEPENDENCIES}") + +endif() + +endif() diff --git a/CMakeExternals/redland-1.0.17.patch b/CMakeExternals/redland-1.0.17.patch new file mode 100644 index 0000000000..126a91123b --- /dev/null +++ b/CMakeExternals/redland-1.0.17.patch @@ -0,0 +1,1034 @@ +diff -urNb redland-1.0.17-orig/CMakeLists.txt redland-1.0.17-patched/CMakeLists.txt +--- redland-1.0.17-orig/CMakeLists.txt 1970-01-01 01:00:00.000000000 +0100 ++++ redland-1.0.17-patched/CMakeLists.txt 2014-11-19 04:51:54.088581687 +0100 +@@ -0,0 +1,298 @@ ++# redland/CMakeLists.txt ++# ++# This file allows building Redland with the CMake configuration tool. ++# Download CMake in source or binary form from http://www.cmake.org/ ++# ++# Based on the CMakeLists.txt file from Raptor. ++# This file is in the public domain. ++# ++ ++SET(REDLAND_VERSION_MAJOR 1) ++SET(REDLAND_VERSION_MINOR 0) ++SET(REDLAND_VERSION_RELEASE 17) ++SET(REDLAND_MIN_VERSION_DECIMAL 10017) ++ ++SET(VERSION "${REDLAND_VERSION_MAJOR}.${REDLAND_VERSION_MINOR}.${REDLAND_VERSION_RELEASE}") ++MATH(EXPR REDLAND_VERSION_DECIMAL "${REDLAND_VERSION_MAJOR} * 10000 + ${REDLAND_VERSION_MINOR} * 100 + ${REDLAND_VERSION_RELEASE}") ++ ++PROJECT(redland C) ++ ++CMAKE_MINIMUM_REQUIRED(VERSION 2.8.9) ++ ++SET(CMAKE_INCLUDE_CURRENT_DIR 1) ++ ++SET(PROJECT_DESCRIPTION "Redland RDF API Library") ++ ++################################################################ ++ ++# Third-party libraries ++ ++SET(RAPTOR_MIN_VERSION 2.0.7) ++FIND_PACKAGE(Raptor2 ${RAPTOR_MIN_VERSION} REQUIRED) ++include_directories(${Raptor2_INCLUDE_DIR}) ++ ++set(rdf_parsers_available "raptor(${Raptor2_VERSION})") ++ ++find_package(Rasqal REQUIRED) ++include_directories(${Rasqal_INCLUDE_DIR}) ++ ++set(rdf_query "rasqal(${Rasqal_VERSION})") ++ ++################################################################ ++ ++# Configuration checks ++ ++INCLUDE(CheckIncludeFile) ++INCLUDE(CheckIncludeFiles) ++INCLUDE(CheckFunctionExists) ++INCLUDE(CheckTypeSize) ++INCLUDE(CheckStructHasMember) ++INCLUDE(CheckCSourceCompiles) ++ ++CHECK_INCLUDE_FILE(errno.h HAVE_ERRNO_H) ++CHECK_INCLUDE_FILE(stdlib.h HAVE_STDLIB_H) ++CHECK_INCLUDE_FILE(unistd.h HAVE_UNISTD_H) ++CHECK_INCLUDE_FILE(string.h HAVE_STRING_H) ++CHECK_INCLUDE_FILE(fcntl.h HAVE_FCNTL_H) ++CHECK_INCLUDE_FILE(getopt.h HAVE_GETOPT_H) ++CHECK_INCLUDE_FILE(stddef.h HAVE_STDDEF_H) ++CHECK_INCLUDE_FILE(memory.h HAVE_MEMORY_H) ++CHECK_INCLUDE_FILE(pthread.h HAVE_PTHREAD_H) ++ ++CHECK_INCLUDE_FILE(sys/time.h HAVE_SYS_TIME_H) ++CHECK_INCLUDE_FILE(time.h HAVE_TIME_H) ++CHECK_INCLUDE_FILES("sys/time.h;time.h" TIME_WITH_SYS_TIME) ++ ++CHECK_INCLUDE_FILE(sys/stat.h HAVE_SYS_STAT_H) ++ ++CHECK_FUNCTION_EXISTS(access HAVE_ACCESS) ++CHECK_FUNCTION_EXISTS(_access HAVE__ACCESS) ++CHECK_FUNCTION_EXISTS(getopt HAVE_GETOPT) ++CHECK_FUNCTION_EXISTS(getopt_long HAVE_GETOPT_LONG) ++CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY) ++CHECK_FUNCTION_EXISTS(snprintf HAVE_SNPRINTF) ++CHECK_FUNCTION_EXISTS(_snprintf HAVE__SNPRINTF) ++CHECK_FUNCTION_EXISTS(strcasecmp HAVE_STRCASECMP) ++CHECK_FUNCTION_EXISTS(stricmp HAVE_STRICMP) ++CHECK_FUNCTION_EXISTS(_stricmp HAVE__STRICMP) ++CHECK_FUNCTION_EXISTS(strnicmp HAVE_STRNICMP) ++CHECK_FUNCTION_EXISTS(_strnicmp HAVE__STRNICMP) ++CHECK_FUNCTION_EXISTS(vasprintf HAVE_VASPRINTF) ++CHECK_FUNCTION_EXISTS(vsnprintf HAVE_VSNPRINTF) ++CHECK_FUNCTION_EXISTS(_vsnprintf HAVE__VSNPRINTF) ++CHECK_FUNCTION_EXISTS(opendir HAVE_OPENDIR) ++CHECK_FUNCTION_EXISTS(readdir HAVE_READDIR) ++CHECK_FUNCTION_EXISTS(shl_load HAVE_SHL_LOAD) ++CHECK_FUNCTION_EXISTS(strlcat HAVE_STRLCAT) ++CHECK_FUNCTION_EXISTS(strlcpy HAVE_STRLCPY) ++ ++CHECK_FUNCTION_EXISTS(memcmp HAVE_MEMCMP) ++CHECK_FUNCTION_EXISTS(mkstemp HAVE_MKSTEMP) ++CHECK_FUNCTION_EXISTS(mktemp HAVE_MKTEMP) ++CHECK_FUNCTION_EXISTS(mktemp HAVE__MKTEMP) ++CHECK_FUNCTION_EXISTS(tmpnam HAVE_TMPNAM) ++CHECK_FUNCTION_EXISTS(getenv HAVE_GETENV) ++CHECK_FUNCTION_EXISTS(close HAVE_CLOSE) ++CHECK_FUNCTION_EXISTS(_close HAVE__CLOSE) ++CHECK_FUNCTION_EXISTS(unlink HAVE_UNLINK) ++CHECK_FUNCTION_EXISTS(_unlink HAVE__UNLINK) ++ ++CHECK_TYPE_SIZE(byte BYTE) ++CHECK_TYPE_SIZE(u32 U32) ++CHECK_TYPE_SIZE(u64 U64) ++ ++CHECK_TYPE_SIZE("unsigned char" SIZEOF_UNSIGNED_CHAR) ++CHECK_TYPE_SIZE("unsigned int" SIZEOF_UNSIGNED_INT) ++CHECK_TYPE_SIZE("unsigned long" SIZEOF_UNSIGNED_LONG) ++CHECK_TYPE_SIZE("unsigned long long" SIZEOF_UNSIGNED_LONG_LONG) ++ ++CHECK_C_SOURCE_COMPILES(" ++int main() {char *function_name = __func__; return 0;}" ++ HAVE___FUNC__ ++) ++CHECK_C_SOURCE_COMPILES(" ++int main() {char *function_name = __FUNCTION__; return 0;}" ++ HAVE___FUNCTION__ ++) ++ ++################################################################ ++ ++# User-configurable options ++# ++# (Note: The CMake GUI displays these in alphabetical order, regardless of ++# the order we use here) ++ ++SET(BUILD_SHARED_LIBS OFF CACHE BOOL ++ "Build shared libraries instead of static ones.") ++ ++#SET(REDLAND_ENABLE_TESTING TRUE CACHE BOOL ++# "Enable unit tests") ++ ++IF(BUILD_SHARED_LIBS) ++ SET(REDLAND_STATIC FALSE) ++ELSE() ++ SET(REDLAND_STATIC TRUE) ++ENDIF() ++ ++# ---------- Threading ----------- ++ ++if(HAVE_PTHREAD_H) ++ set(WITH_THREADS OFF CACHE BOOL "With POSIX thread support") ++ if(WITH_THREADS) ++ set(CMAKE_THREAD_PREFER_PTHREAD) ++ find_package(Threads REQUIRED) ++ if(NOT CMAKE_USE_PTHREADS_INIT) ++ message(SEND_ERROR "POSIX pthread library not found") ++ endif() ++ endif() ++endif() ++ ++ ++########## ------- Storage Backends ------- ########### ++ ++set(persistent_storages "file tstore mysql sqlite") ++set(persistent_store 0) ++set(all_storages memory file hashes trees mysql sqlite tstore postgresql virtuoso) ++set(always_available_storages memory file hashes trees) ++set(storages_enabled ) ++ ++set(ENABLE_ALL_STORAGES OFF CACHE BOOL "Use all available storages") ++ ++# default availabilities and enablements ++foreach(storage ${all_storages}) ++ set(${storage}_storage_available 0) ++ set(${storage}_storage 0) ++endforeach() ++foreach(storage ${always_available_storages}) ++ set(${storage}_storage_available 1) ++ string(TOUPPER ${storage} storage_uc) ++ if(NOT ${storage} STREQUAL "memory") ++ set(ENABLE_${storage_uc} 1 CACHE BOOL "Use ${storage} storage backend") ++ endif() ++endforeach() ++set(ENABLE_MEMORY 1) ++ ++# ----------- BerkeleyDB ------------- ++ ++set(bdb_available "Missing") ++set(bdb_version "n/a") ++set(storages_available ${always_available_storages}) ++ ++if(HAVE_LIBDB) ++ list(APPEND storages_available "hashes(bdb ${bdb_version})") ++endif() ++ ++# ----------- MySql ------------- ++ ++set(ENABLE_MYSQL_INIT 0) ++set(libmysql_min_version 3.23.56) ++set(mysql_storage_available 0) ++ ++find_program(MYSQL_CONFIG mysql_config) ++if(MYSQL_CONFIG) ++ execute_process(COMMAND ${MYSQL_CONFIG} --version ++ OUTPUT_VARIABLE LIBMYSQL_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE ++ ) ++ message("mysql version: ${LIBMYSQL_VERSION}") ++ execute_process(COMMAND ${MYSQL_CONFIG} --libs ++ OUTPUT_VARIABLE LIBMYSQL_LIBRARIES OUTPUT_STRIP_TRAILING_WHITESPACE ++ ) ++ execute_process(COMMAND ${MYSQL_CONFIG} --include ++ OUTPUT_VARIABLE LIBMYSQL_INCLUDE_DIR OUTPUT_STRIP_TRAILING_WHITESPACE ++ ) ++ string(REPLACE "-I" "" LIBMYSQL_INCLUDE_DIR ${LIBMYSQL_INCLUDE_DIR}) ++ message("mysql include dir: ${LIBMYSQL_INCLUDE_DIR}") ++ list(APPEND storages_available "mysql(${LIBMYSQL_VERSION})") ++ set(ENABLE_MYSQL_INIT 1) ++ set(mysql_storage_available 1) ++endif() ++ ++set(ENABLE_MYSQL ${ENABLE_MYSQL_INIT} CACHE BOOL "Use MySQL 3/4 storage backend") ++ ++foreach(storage ${all_storages}) ++ string(TOUPPER ${storage} storage_uc) ++ if(${storage}_storage_available AND ++ (ENABLE_${storage_uc} OR ENABLE_ALL_STORAGES)) ++ set(STORAGE_${storage_uc} 1) ++ list(APPEND storages_enabled ${storage}) ++ list(FIND persistent_storages ${storage} _index) ++ if(${_index} GREATER -1) ++ set(persistent_store 1) ++ endif() ++ endif() ++endforeach() ++ ++if(NOT persistent_store) ++ message("WARNING: No persistant storage is available or enabled") ++endif() ++ ++########## ------- Digest Modules ------- ########### ++ ++set(digest_modules md5 sha1 ripemd160) ++set(digest_modules_available ) ++ ++set(digest_srcs ) ++foreach(module ${digest_modules}) ++ string(TOUPPER ${module} module_uc) ++ set(base rdf_digest_${module}) ++ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/src/${base}.c) ++ set(HAVE_LOCAL_${module_uc}_DIGEST 1) ++ list(APPEND digest_srcs ${base}.c) ++ list(APPEND digest_modules_available ${module}) ++ endif() ++endforeach() ++ ++################################################################ ++ ++include(CMakePackageConfigHelpers) ++ ++CONFIGURE_FILE( ++ src/rdf_config_cmake.h.in ++ src/rdf_config.h ++ @ONLY ++) ++ ++ADD_DEFINITIONS(-DHAVE_CONFIG_H) ++ ++#CONFIGURE_FILE( ++# src/rasqal.h.in ++# src/rasqal.h ++# @ONLY ++#) ++ ++set(INCLUDE_INSTALL_DIR include) ++set(LIB_INSTALL_DIR lib) ++set(BIN_INSTALL_DIR bin) ++set(CMAKE_INSTALL_DIR lib/redland/cmake) ++set(DATA_INSTALL_DIR share/redland) ++ ++add_subdirectory(src) ++ ++configure_package_config_file(RedlandConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/RedlandConfig.cmake ++ INSTALL_DESTINATION ${CMAKE_INSTALL_DIR} ++ PATH_VARS INCLUDE_INSTALL_DIR ++ NO_CHECK_REQUIRED_COMPONENTS_MACRO ++) ++ ++write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/RedlandConfigVersion.cmake ++ VERSION ${VERSION} ++ COMPATIBILITY AnyNewerVersion ++) ++ ++install(FILES ++ ${CMAKE_CURRENT_BINARY_DIR}/RedlandConfig.cmake ++ ${CMAKE_CURRENT_BINARY_DIR}/RedlandConfigVersion.cmake ++ DESTINATION ${CMAKE_INSTALL_DIR} ++) ++ ++ ++message("Redland configuration: ++ Oracle Berkeley DB (BDB) : ${bdb_available} ++ Triple stores available : ${storages_available} ++ Triple stores enabled : ${storages_enabled} ++ RDF parsers : ${rdf_parsers_available} ++ RDF query : ${rdf_query} ++ Content digests : ${digest_modules_available}" ++) ++ ++# end redland/CMakeLists.txt +diff -urNb redland-1.0.17-orig/RedlandConfig.cmake.in redland-1.0.17-patched/RedlandConfig.cmake.in +--- redland-1.0.17-orig/RedlandConfig.cmake.in 1970-01-01 01:00:00.000000000 +0100 ++++ redland-1.0.17-patched/RedlandConfig.cmake.in 2014-11-18 01:58:58.476582684 +0100 +@@ -0,0 +1,9 @@ ++set(Redland_VERSION @VERSION@) ++ ++@PACKAGE_INIT@ ++ ++set_and_check(Redland_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@") ++ ++if(NOT TARGET rdf AND EXISTS ${CMAKE_CURRENT_LIST_DIR}/RedlandTargets.cmake) ++ include(${CMAKE_CURRENT_LIST_DIR}/RedlandTargets.cmake) ++endif() +diff -urNb redland-1.0.17-orig/src/CMakeLists.txt redland-1.0.17-patched/src/CMakeLists.txt +--- redland-1.0.17-orig/src/CMakeLists.txt 1970-01-01 01:00:00.000000000 +0100 ++++ redland-1.0.17-patched/src/CMakeLists.txt 2014-11-18 03:05:23.608582208 +0100 +@@ -0,0 +1,171 @@ ++# redland/src/CMakeLists.txt ++# ++# Based on the src/CMakeLists.txt file from Raptor ++# This file is in the public domain. ++# ++ ++set(public_headers ++ librdf.h ++ rdf_concepts.h ++ rdf_digest.h ++ rdf_hash.h ++ rdf_init.h ++ rdf_iterator.h ++ rdf_list.h ++ rdf_log.h ++ rdf_model.h ++ rdf_node.h ++ rdf_parser.h ++ rdf_query.h ++ rdf_raptor.h ++ rdf_serializer.h ++ rdf_statement.h ++ rdf_storage.h ++ rdf_storage_module.h ++ rdf_stream.h ++ rdf_uri.h ++ rdf_utf8.h ++ redland.h ++) ++ ++set(internal_headers ++ rdf_concepts_internal.h ++ rdf_digest_internal.h ++ rdf_files.h ++ rdf_hash_internal.h ++ rdf_heuristics.h ++ rdf_init_internal.h ++ rdf_internal.h ++ rdf_iterator_internal.h ++ rdf_list_internal.h ++ rdf_log_internal.h ++ rdf_model_internal.h ++ rdf_node_internal.h ++ rdf_parser_internal.h ++ rdf_query_internal.h ++ rdf_raptor_internal.h ++ rdf_serializer_internal.h ++ rdf_statement_internal.h ++ rdf_storage_internal.h ++ rdf_stream_internal.h ++ rdf_types.h ++ rdf_uri_internal.h ++) ++ ++set(srcs ++ rdf_concepts.c ++ rdf_digest.c ++ rdf_files.c ++ rdf_hash.c ++ rdf_hash_cursor.c ++ rdf_hash_memory.c ++ rdf_heuristics.c ++ rdf_init.c ++ rdf_iterator.c ++ rdf_list.c ++ rdf_log.c ++ rdf_model.c ++ rdf_model_storage.c ++ rdf_node_common.c ++ rdf_node.c ++ rdf_parser.c ++ rdf_parser_raptor.c ++ rdf_query.c ++ rdf_query_rasqal.c ++ rdf_query_results.c ++ rdf_raptor.c ++ rdf_serializer.c ++ rdf_serializer_raptor.c ++ rdf_statement.c ++ rdf_statement_common.c ++ rdf_storage.c ++ rdf_storage_sql.c ++ rdf_stream.c ++ rdf_uri.c ++ rdf_utf8.c ++ ${digest_srcs} ++ ${internal_headers} ++) ++ ++if(HAVE_MEMCMP) ++ list(APPEND srcs memcmp.c) ++endif() ++ ++# Storages always built-in ++list(APPEND srcs rdf_storage_list.c rdf_storage_hashes.c rdf_storage_trees.c) ++if(STORAGE_FILE) ++ list(APPEND srcs rdf_storage_file.c) ++endif() ++ ++set(storage_libs ) ++if(STORAGE_TSTORE) ++ list(APPEND srcs rdf_storage_tstore.c) ++endif() ++if(STORAGE_MYSQL) ++ list(APPEND srcs rdf_storage_mysql.c) ++ include_directories(${LIBMYSQL_INCLUDE_DIR}) ++ list(APPEND storage_libs ${LIBMYSQL_LIBRARIES}) ++ INSTALL(FILES mysql-v1.ttl mysql-v2.ttl ++ DESTINATION ${DATA_INSTALL_DIR} ++ ) ++endif() ++if(STORAGE_SQLITE) ++ list(APPEND srcs rdf_storage_sqlite.c) ++endif() ++if(STORAGE_POSTGRESQL) ++ list(APPEND srcs rdf_storage_postgresql.c) ++endif() ++if(STORAGE_VIRTUOSO) ++ list(APPEND srcs rdf_storage_virtuoso.c rdf_query_virtuoso.c rdf_storage_virtuoso_internal.h) ++endif() ++ ++add_library(rdf ${srcs}) ++ ++target_link_libraries(rdf raptor2 rasqal ${storage_libs}) ++if(WITH_THREADS) ++ target_link_libraries(rdf ${CMAKE_THREAD_LIBS_INIT}) ++endif() ++ ++SET_TARGET_PROPERTIES( ++ rdf ++ PROPERTIES ++ COMPILE_DEFINITIONS "LIBRDF_INTERNAL;PKGDATADIR=\"${CMAKE_INSTALL_PREFIX}/${DATA_INSTALL_DIR}\"" ++ PUBLIC_HEADER "${public_headers}" ++) ++ ++# Generate pkg-config metadata file ++# ++FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/redland.pc ++"prefix=${CMAKE_INSTALL_PREFIX} ++exec_prefix=\${prefix} ++libdir=\${exec_prefix}/${LIB_INSTALL_DIR} ++includedir=\${prefix}/${INCLUDE_INSTALL_DIR} ++ ++have_raptor2_api=1 ++ ++Name: ${PROJECT_DESCRIPTION} ++Description: Redland RDF API and triple store library ++Requires.private: raptor2 >= ${RAPTOR_MIN_VERSION}, rasqal >= ${RASQAL_MIN_VERSION}, rasqal <= 0.9.99 ++Version: ${VERSION} ++Libs: -L\${libdir} -lrdf ++Libs.private: -ldl ++Cflags: -I\${includedir} ++") ++ ++INSTALL(FILES ++ ${CMAKE_CURRENT_BINARY_DIR}/redland.pc ++ DESTINATION ${LIB_INSTALL_DIR}/pkgconfig ++) ++ ++INSTALL( ++ TARGETS rdf ++ EXPORT RedlandTargets ++ ARCHIVE DESTINATION ${LIB_INSTALL_DIR} ++ LIBRARY DESTINATION ${LIB_INSTALL_DIR} ++ RUNTIME DESTINATION ${BIN_INSTALL_DIR} ++ PUBLIC_HEADER DESTINATION ${INCLUDE_INSTALL_DIR} ++) ++ ++INSTALL(EXPORT RedlandTargets DESTINATION ${CMAKE_INSTALL_DIR}) ++ ++# end redland/src/CMakeLists.txt +diff -urNb redland-1.0.17-orig/src/rdf_config_cmake.h.in redland-1.0.17-patched/src/rdf_config_cmake.h.in +--- redland-1.0.17-orig/src/rdf_config_cmake.h.in 1970-01-01 01:00:00.000000000 +0100 ++++ redland-1.0.17-patched/src/rdf_config_cmake.h.in 2014-11-19 04:58:44.804581637 +0100 +@@ -0,0 +1,508 @@ ++/* src/rdf_config_cmake.h.in.*/ ++ ++/* Release version as a decimal */ ++#define LIBRDF_VERSION_DECIMAL @REDLAND_VERSION_DECIMAL@ ++ ++/* Major version number */ ++#define LIBRDF_VERSION_MAJOR @REDLAND_VERSION_MAJOR@ ++ ++/* Minor version number */ ++#define LIBRDF_VERSION_MINOR @REDLAND_VERSION_MINOR@ ++ ++/* Release version number */ ++#define LIBRDF_VERSION_RELEASE @REDLAND_VERSION_RELEASE@ ++ ++/* ---------- package information ------------ */ ++ ++/* Name of package */ ++#define PACKAGE @PROJECT_NAME@ ++ ++/* Define to the address where bug reports for this package should be sent. */ ++#define PACKAGE_BUGREPORT "http://bugs.librdf.org/" ++ ++/* Define to the full name of this package. */ ++#define PACKAGE_NAME "@PROJECT_DESCRIPTION@" ++ ++/* Define to the full name and version of this package. */ ++#define PACKAGE_STRING "@PROJECT_DESCRIPTION@ @VERSION@" ++ ++/* Define to the one symbol short name of this package. */ ++#define PACKAGE_TARNAME librdf ++ ++/* Define to the home page for this package. */ ++#define PACKAGE_URL "" ++ ++/* Define to the version of this package. */ ++#define PACKAGE_VERSION "@VERSION@" ++ ++/* Version number of package */ ++#define VERSION "@VERSION@" ++ ++/* Define if building universal (internal helper macro) */ ++#cmakedefine AC_APPLE_UNIVERSAL_BUILD ++ ++/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most ++ significant byte first (like Motorola and SPARC, unlike Intel). */ ++#if defined AC_APPLE_UNIVERSAL_BUILD ++# if defined __BIG_ENDIAN__ ++# define WORDS_BIGENDIAN 1 ++# endif ++#else ++# ifndef WORDS_BIGENDIAN ++# undef WORDS_BIGENDIAN ++# endif ++#endif ++ ++/* ------------ header availability --------------- */ ++ ++/* Define to 1 if you have the header file. */ ++#cmakedefine HAVE_DB_H ++ ++/* Define to 1 if you have the header file. */ ++#cmakedefine HAVE_DIRENT_H ++ ++/* Define to 1 if you have the header file. */ ++#cmakedefine HAVE_DLD_H ++ ++/* Define to 1 if you have the header file. */ ++#cmakedefine HAVE_DLFCN_H ++ ++/* Define to 1 if you have the header file. */ ++#cmakedefine HAVE_DL_H ++ ++/* Define if you have the _dyld_func_lookup function. */ ++#cmakedefine HAVE_DYLD ++ ++/* Define to 1 if you have the header file. */ ++#cmakedefine HAVE_ERRNO_H ++ ++/* Define to 1 if you have the header file. */ ++#cmakedefine HAVE_FCNTL_H ++ ++/* Define to 1 if you have the header file. */ ++#cmakedefine HAVE_GETOPT_H ++ ++/* Define to 1 if you have the header file. */ ++#cmakedefine HAVE_INTTYPES_H ++ ++/* Define to 1 if you have the header file. */ ++#cmakedefine HAVE_LIBPQ_FE_H ++ ++/* Define to 1 if you have the header file. */ ++#cmakedefine HAVE_MACH_O_DYLD_H ++ ++/* Define to 1 if you have the header file. */ ++#cmakedefine HAVE_MEMORY_H ++ ++/* Define to 1 if you have the header file. */ ++#cmakedefine HAVE_PTHREAD_H ++ ++/* Define to 1 if you have the header file. */ ++#cmakedefine HAVE_SQLITE3_H ++ ++/* Define to 1 if you have the header file. */ ++#cmakedefine HAVE_SQLITE_H ++ ++/* Define to 1 if you have the header file. */ ++#cmakedefine HAVE_STDDEF_H ++ ++/* Define to 1 if you have the header file. */ ++#cmakedefine HAVE_STDINT_H ++ ++/* Define to 1 if you have the header file. */ ++#cmakedefine HAVE_STDLIB_H ++ ++/* Define to 1 if you have the header file. */ ++#cmakedefine HAVE_STRINGS_H ++ ++/* Define to 1 if you have the header file. */ ++#cmakedefine HAVE_STRING_H ++ ++/* Define to 1 if you have the header file. */ ++#cmakedefine HAVE_SYS_DL_H ++ ++/* Define to 1 if you have the header file. */ ++#cmakedefine HAVE_SYS_STAT_H ++ ++/* Define to 1 if you have the header file. */ ++#cmakedefine01 HAVE_SYS_TIME_H ++ ++/* Define to 1 if you have the header file. */ ++#cmakedefine HAVE_SYS_TYPES_H ++ ++/* Define to 1 if you have the header file. */ ++#cmakedefine HAVE_TIME_H ++ ++/* Define to 1 if you have the header file. */ ++#cmakedefine HAVE_UNISTD_H ++ ++ ++/* --------- feature availability ------------ */ ++ ++/* Define so that glibc/gnulib argp.h does not typedef error_t. */ ++#undef __error_t_defined ++ ++/* Define to a type to use for `error_t' if it is not otherwise available. */ ++#undef error_t ++ ++/* BDB has close method with 2 args */ ++#cmakedefine HAVE_BDB_CLOSE_2_ARGS ++ ++/* BDB defines DBC */ ++#cmakedefine HAVE_BDB_CURSOR ++ ++/* BDB cursor method has 4 arguments */ ++#cmakedefine HAVE_BDB_CURSOR_4_ARGS ++ ++/* BDB defines DB_TXN */ ++#cmakedefine HAVE_BDB_DB_TXN ++ ++/* BDB has fd method with 2 args */ ++#cmakedefine HAVE_BDB_FD_2_ARGS ++ ++/* Have BDB hash support */ ++#cmakedefine HAVE_BDB_HASH ++ ++/* BDB has open method with 6 args */ ++#cmakedefine HAVE_BDB_OPEN_6_ARGS ++ ++/* BDB has open method with 7 args */ ++#cmakedefine HAVE_BDB_OPEN_7_ARGS ++ ++/* BDB has set_flags method */ ++#cmakedefine HAVE_BDB_SET_FLAGS ++ ++/* Define to 1 if the system has the type `byte'. */ ++#cmakedefine HAVE_BYTE ++ ++/* Define if you have the GNU dld library. */ ++#cmakedefine HAVE_DLD ++ ++/* Have local MD5 digest */ ++#cmakedefine HAVE_LOCAL_MD5_DIGEST ++ ++/* Have local RIPEMD160 digest */ ++#cmakedefine HAVE_LOCAL_RIPEMD160_DIGEST ++ ++/* Have local SHA1 digest */ ++#cmakedefine HAVE_LOCAL_SHA1_DIGEST ++ ++/* Define this if a modern libltdl is already installed */ ++#cmakedefine HAVE_LTDL ++ ++/* Define if you have the libdl library or equivalent. */ ++#cmakedefine HAVE_LIBDL ++ ++/* Define if libdlloader will be built on this platform */ ++#cmakedefine HAVE_LIBDLLOADER ++ ++/* have MYSQL_OPT_RECONNECT declared */ ++#cmakedefine HAVE_MYSQL_OPT_RECONNECT ++ ++/* Define if libtool can extract symbol lists from object files. */ ++#cmakedefine HAVE_PRELOADED_SYMBOLS ++ ++/* Define to 1 if the system has the type `u32'. */ ++#cmakedefine HAVE_U32 ++ ++/* Define to 1 if the system has the type `u64'. */ ++#cmakedefine HAVE_U64 ++ ++/* This value is set to 1 to indicate that the system argz facility works */ ++#cmakedefine HAVE_WORKING_ARGZ ++ ++/* Run time assertion checks. */ ++#cmakedefine LIBRDF_ASSERT ++ ++/* Print run time assertion check failure messages. */ ++#cmakedefine LIBRDF_ASSERT_MESSAGES ++ ++/* Define if the OS needs help to load dependent libraries for dlopen(). */ ++#cmakedefine LTDL_DLOPEN_DEPLIBS ++ ++/* Define to the system default library search path. */ ++#cmakedefine LT_DLSEARCH_PATH ++ ++/* The archive extension */ ++#cmakedefine LT_LIBEXT ++ ++/* The archive prefix */ ++#cmakedefine LT_LIBPREFIX ++ ++/* Define to the extension used for runtime loadable modules, say, ".so". */ ++#cmakedefine LT_MODULE_EXT ++ ++/* Define to the name of the environment variable that determines the run-time ++ module search path. */ ++#cmakedefine LT_MODULE_PATH_VAR ++ ++/* Define to the sub-directory in which libtool stores uninstalled libraries. ++ */ ++#cmakedefine LT_OBJDIR ++ ++/* Define to the shared library suffix, say, ".dylib". */ ++#cmakedefine LT_SHARED_EXT ++ ++/* Build storage backends as modules */ ++#cmakedefine MODULAR_LIBRDF ++ ++/* Define if dlsym() requires a leading underscore in symbol names. */ ++#cmakedefine NEED_USCORE ++ ++/* Define to 1 if your C compiler doesn't accept -c and -o together. */ ++#cmakedefine NO_MINUS_C_MINUS_O ++ ++ ++/* The size of `unsigned char', as computed by sizeof. */ ++#define SIZEOF_UNSIGNED_CHAR @SIZEOF_UNSIGNED_CHAR@ ++ ++/* The size of `unsigned int', as computed by sizeof. */ ++#define SIZEOF_UNSIGNED_INT @SIZEOF_UNSIGNED_INT@ ++ ++/* The size of `unsigned long', as computed by sizeof. */ ++#define SIZEOF_UNSIGNED_LONG @SIZEOF_UNSIGNED_LONG@ ++ ++/* The size of `unsigned long long', as computed by sizeof. */ ++#define SIZEOF_UNSIGNED_LONG_LONG @SIZEOF_UNSIGNED_LONG_LONG@ ++ ++/* define to SQLINTEGER if not defined in the ODBC headers */ ++#cmakedefine SQLLEN ++ ++/* define to SQLUINTEGER if not defined in the ODBC headers */ ++#cmakedefine SQLULEN ++ ++/* Define to 1 if you have the ANSI C header files. */ ++#cmakedefine STDC_HEADERS ++ ++/* Building file storage */ ++#cmakedefine STORAGE_FILE ++ ++/* Building hashes storage */ ++#cmakedefine STORAGE_HASHES ++ ++/* Building memory storage */ ++#cmakedefine STORAGE_MEMORY ++ ++/* Building MySQL storage */ ++#cmakedefine STORAGE_MYSQL ++ ++/* Building PostgreSQL storage */ ++#cmakedefine STORAGE_POSTGRESQL ++ ++/* Building SQLite storage */ ++#cmakedefine STORAGE_SQLITE ++ ++/* Building trees storage */ ++#cmakedefine STORAGE_TREES ++ ++/* Building 3store storage */ ++#cmakedefine STORAGE_TSTORE ++ ++/* Building Virtuoso storage */ ++#cmakedefine STORAGE_VIRTUOSO ++ ++/* Define to 1 if you can safely include both and . */ ++#cmakedefine01 TIME_WITH_SYS_TIME ++ ++/* Use POSIX threads */ ++#cmakedefine WITH_THREADS ++ ++/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most ++ significant byte first (like Motorola and SPARC, unlike Intel). */ ++#if defined AC_APPLE_UNIVERSAL_BUILD ++# if defined __BIG_ENDIAN__ ++# define WORDS_BIGENDIAN 1 ++# endif ++#else ++# ifndef WORDS_BIGENDIAN ++# undef WORDS_BIGENDIAN ++# endif ++#endif ++ ++/* --------- function availability ----------- */ ++ ++/* Define to 1 if you have the `argz_add' function. */ ++#cmakedefine HAVE_ARGZ_ADD ++ ++/* Define to 1 if you have the `argz_append' function. */ ++#cmakedefine HAVE_ARGZ_APPEND ++ ++/* Define to 1 if you have the `argz_count' function. */ ++#cmakedefine HAVE_ARGZ_COUNT ++ ++/* Define to 1 if you have the `argz_create_sep' function. */ ++#cmakedefine HAVE_ARGZ_CREATE_SEP ++ ++/* Define to 1 if you have the header file. */ ++#cmakedefine HAVE_ARGZ_H ++ ++/* Define to 1 if you have the `argz_insert' function. */ ++#cmakedefine HAVE_ARGZ_INSERT ++ ++/* Define to 1 if you have the `argz_next' function. */ ++#cmakedefine HAVE_ARGZ_NEXT ++ ++/* Define to 1 if you have the `argz_stringify' function. */ ++#cmakedefine HAVE_ARGZ_STRINGIFY ++ ++/* Define to 1 if you have the `closedir' function. */ ++#cmakedefine HAVE_CLOSEDIR ++ ++/* BDB has dbopen method */ ++#cmakedefine HAVE_DBOPEN ++ ++/* BDB has db_create method */ ++#cmakedefine HAVE_DB_CREATE ++ ++/* BDB has db_open method */ ++#cmakedefine HAVE_DB_OPEN ++ ++/* Define to 1 if you have the declaration of `cygwin_conv_path', and to 0 if ++ you don't. */ ++#cmakedefine HAVE_DECL_CYGWIN_CONV_PATH ++ ++/* Define to 1 if you have the `dlerror' function. */ ++#cmakedefine HAVE_DLERROR ++ ++/* Define to 1 if the system has the type `error_t'. */ ++#cmakedefine HAVE_ERROR_T ++ ++/* Define to 1 if you have the `getenv' function. */ ++#cmakedefine HAVE_GETENV ++ ++/* Define to 1 if you have the `getopt' function. */ ++#cmakedefine HAVE_GETOPT ++ ++/* Define to 1 if you have the `getopt_long' function. */ ++#cmakedefine HAVE_GETOPT_LONG ++ ++/* Define to 1 if you have the `gettimeofday' function. */ ++#cmakedefine HAVE_GETTIMEOFDAY ++ ++#cmakedefine HAVE_ACCESS ++#cmakedefine HAVE__ACCESS ++#cmakedefine HAVE_SNPRINTF ++#cmakedefine HAVE__SNPRINTF ++#cmakedefine HAVE_STRCASECMP ++#cmakedefine HAVE_STRICMP ++#cmakedefine HAVE__STRICMP ++#cmakedefine HAVE_STRNICMP ++#cmakedefine HAVE__STRNICMP ++#cmakedefine HAVE_VASPRINTF ++#cmakedefine HAVE_VSNPRINTF ++#cmakedefine HAVE__VSNPRINTF ++ ++/* Define to 1 if you have the `memcmp' function. */ ++#cmakedefine HAVE_MEMCMP ++ ++/* Define to 1 if you have the `mkstemp' function. */ ++#cmakedefine HAVE_MKSTEMP ++ ++/* Define to 1 if you have the `mktemp' function. */ ++#cmakedefine HAVE_MKTEMP ++#cmakedefine HAVE__MKTEMP ++ ++/* Define to 1 if you have the `opendir' function. */ ++#cmakedefine HAVE_OPENDIR ++ ++/* Define to 1 if you have the `readdir' function. */ ++#cmakedefine HAVE_READDIR ++ ++/* Define if you have the shl_load function. */ ++#cmakedefine HAVE_SHL_LOAD ++ ++/* Define to 1 if you have the `strlcat' function. */ ++#cmakedefine HAVE_STRLCAT ++ ++/* Define to 1 if you have the `strlcpy' function. */ ++#cmakedefine HAVE_STRLCPY ++ ++/* Define to 1 if you have the `tmpnam' function. */ ++#cmakedefine HAVE_TMPNAM ++ ++#cmakedefine HAVE_CLOSE ++#cmakedefine HAVE__CLOSE ++ ++#cmakedefine HAVE_UNLINK ++#cmakedefine HAVE__UNLINK ++ ++ ++/* --------- WIN32 config ----------- */ ++ ++#ifdef WIN32 ++ ++# ifdef __cplusplus ++ extern "C" { ++# endif ++ ++# define WIN32_LEAN_AND_MEAN 1 ++# define _CRT_NONSTDC_NO_DEPRECATE ++# define _CRT_SECURE_NO_DEPRECATE ++ ++ ++ /* MS names for these functions */ ++ // next line breaks build on wntmsci12 ++ //#define vsnprintf _vsnprintf ++# if !defined(HAVE_SNPRINTF) && defined(HAVE__SNPRINTF) ++# define snprintf _snprintf ++# endif ++# if !defined(HAVE_STRICMP) && defined(HAVE__STRICMP) ++# define stricmp _stricmp ++# endif ++# if !defined(HAVE_STRNICMP) && defined(HAVE__STRNICMP) ++# define strnicmp _strnicmp ++# endif ++ ++# if !defined(HAVE_CLOSE) && defined(HAVE__CLOSE) ++# define close _close ++# endif ++# if !defined(HAVE_UNLINK) && defined(HAVE__UNLINK) ++# define unlink _unlink ++# endif ++# if !defined(HAVE_MKTEMP) && defined(HAVE__MKTEMP) ++# define mktemp _mktemp ++# endif ++ ++/* Define the following if you are calling the librdf from C# or any language which uses stdcall */ ++#define USE_STDCALL_CALLBACKS 1 ++ ++/* for access() which is POSIX but doesn't seem to have the defines in VC */ ++# ifndef R_OK ++# define F_OK 0 ++# define R_OK 4 ++# endif ++ ++# ifdef _MSC_VER ++# if (_MSC_VER >= 1300) && !defined(__func__) ++# define __func__ __FUNCTION__ ++# define HAVE___FUNC__ ++# elif !defined(__func__) ++ /* better than nothing */ ++# define rasqal_str(s) #s ++# define __func__ "func@" __FILE__ ":" rasqal_str(__LINE__) ++# endif ++# endif ++ ++# if !defined(HAVE_ACCESS) && defined(HAVE__ACCESS) ++# define access(p,m) _access(p,m) ++# endif ++ ++# undef REDLAND_INLINE ++# define REDLAND_INLINE __inline ++ ++# include ++# include ++# include ++# include ++ ++ /* get _isnan() since it is not in math.h */ ++# include ++# ifndef isnan ++# define isnan(d) (_isnan(d)) ++# endif ++ ++# ifdef __cplusplus ++ } ++# endif ++ ++#endif +diff -urNb redland-1.0.17-orig/src/win32_rdf_config.h redland-1.0.17-patched/src/win32_rdf_config.h +--- redland-1.0.17-orig/src/win32_rdf_config.h 2013-12-28 17:31:20.000000000 +0100 ++++ redland-1.0.17-patched/src/win32_rdf_config.h 2014-11-19 04:21:48.112581902 +0100 +@@ -21,6 +21,7 @@ + * + */ + ++#if 0 + #ifndef WIN32_RDF_CONFIG_H + #define WIN32_RDF_CONFIG_H + +@@ -300,3 +301,4 @@ + #endif + + #endif ++#endif +diff -urNb redland-1.0.17-orig/src/win32_rdf_config.h.in redland-1.0.17-patched/src/win32_rdf_config.h.in +--- redland-1.0.17-orig/src/win32_rdf_config.h.in 2013-04-05 19:17:40.000000000 +0200 ++++ redland-1.0.17-patched/src/win32_rdf_config.h.in 2014-11-19 04:20:56.204581908 +0100 +@@ -21,6 +21,7 @@ + * + */ + ++#if 0 + #ifndef WIN32_RDF_CONFIG_H + #define WIN32_RDF_CONFIG_H + +@@ -300,3 +301,4 @@ + #endif + + #endif ++#endif diff --git a/CMakeExternals/redland.cmake b/CMakeExternals/redland.cmake new file mode 100644 index 0000000000..cf3f947d00 --- /dev/null +++ b/CMakeExternals/redland.cmake @@ -0,0 +1,44 @@ +#----------------------------------------------------------------------------- +# redland +#----------------------------------------------------------------------------- + +if(MITK_USE_redland) + +# Sanity checks +if(DEFINED redland_DIR AND NOT EXISTS ${redland_DIR}) + message(FATAL_ERROR "redland_DIR variable is defined but corresponds to non-existing directory") +endif() + +set(proj redland) +set(proj_DEPENDENCIES ${raptor2_DEPENDS} ${rasqal_DEPENDS}) +set(${proj}_DEPENDS ${proj}) + +if(NOT DEFINED redland_DIR) + + ExternalProject_Add(${proj} + SOURCE_DIR ${CMAKE_BINARY_DIR}/${proj}-src + BINARY_DIR ${proj}-build + INSTALL_DIR ${REDLAND_INSTALL_DIR} + PREFIX ${proj}-cmake + URL ${MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL}/redland-1.0.17.tar.gz + URL_MD5 e5be03eda13ef68aabab6e42aa67715e + PATCH_COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_LIST_DIR}/redland-1.0.17.patch + CMAKE_GENERATOR ${gen} + CMAKE_ARGS + ${ep_common_args} + -DCMAKE_INSTALL_PREFIX:PATH= + -DBUILD_SHARED_LIBS:BOOL=ON + -DWITH_THREADS:BOOL=OFF + -DCMAKE_PREFIX_PATH:STRING=${REDLAND_INSTALL_DIR} + DEPENDS ${proj_DEPENDENCIES} + ) + + set(${proj}_DIR ${CMAKE_CURRENT_BINARY_DIR}/${REDLAND_INSTALL_DIR}/lib/redland/cmake/) + +else() + + mitkMacroEmptyExternalProject(${proj} "${proj_DEPENDENCIES}") + +endif() + +endif() diff --git a/SuperBuild.cmake b/SuperBuild.cmake index 054b6285ef..60ed263b8b 100644 --- a/SuperBuild.cmake +++ b/SuperBuild.cmake @@ -1,497 +1,524 @@ #----------------------------------------------------------------------------- # Convenient macro allowing to download a file #----------------------------------------------------------------------------- +if(NOT MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL) + set(MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL http://mitk.org/download/thirdparty) +endif() + macro(downloadFile url dest) file(DOWNLOAD ${url} ${dest} STATUS status) list(GET status 0 error_code) list(GET status 1 error_msg) if(error_code) message(FATAL_ERROR "error: Failed to download ${url} - ${error_msg}") endif() endmacro() #----------------------------------------------------------------------------- # MITK Prerequisites #----------------------------------------------------------------------------- if(UNIX AND NOT APPLE) include(mitkFunctionCheckPackageHeader) # Check for libxt-dev mitkFunctionCheckPackageHeader(StringDefs.h libxt-dev /usr/include/X11/) # Check for libtiff4-dev mitkFunctionCheckPackageHeader(tiff.h libtiff4-dev) # Check for libwrap0-dev mitkFunctionCheckPackageHeader(tcpd.h libwrap0-dev) endif() +# We need a proper patch program. On Linux and MacOS, we assume +# that "patch" is available. On Windows, we download patch.exe +# if not patch program is found. +find_program(PATCH_COMMAND patch) +if((NOT PATCH_COMMAND OR NOT EXISTS ${PATCH_COMMAND}) AND WIN32) + downloadFile(${MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL}/patch.exe + ${CMAKE_CURRENT_BINARY_DIR}/patch.exe) + find_program(PATCH_COMMAND patch ${CMAKE_CURRENT_BINARY_DIR}) +endif() +if(NOT PATCH_COMMAND) + message(FATAL_ERROR "No patch program found.") +endif() + #----------------------------------------------------------------------------- # Qt options for external projects and MITK #----------------------------------------------------------------------------- if(MITK_USE_QT) set(qt_project_args -DDESIRED_QT_VERSION:STRING=${DESIRED_QT_VERSION}) else() set(qt_project_args ) endif() if(MITK_USE_Qt4) list(APPEND qt_project_args -DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE} ) endif() #----------------------------------------------------------------------------- # ExternalProjects #----------------------------------------------------------------------------- set(external_projects ZLIB Python Numpy tinyxml GLUT ANN CppUnit GLEW VTK ACVD GDCM OpenCV Poco ITK Boost DCMTK CTK SOFA MITKData Qwt PCRE Swig SimpleITK Eigen raptor2 + rasqal + redland ) # Qxt supports Qt5. We need to also support it in QxtCMakeLists.txt #if(MITK_USE_Qt4) list(APPEND external_projects Qxt) #endif() # These are "hard" dependencies and always set to ON set(MITK_USE_tinyxml 1) set(MITK_USE_ANN 1) set(MITK_USE_Eigen 1) set(MITK_USE_GLEW 1) set(MITK_USE_GDCM 1) set(MITK_USE_ITK 1) set(MITK_USE_VTK 1) # Semi-hard dependencies, enabled by user-controlled variables if(MITK_USE_QT) set(MITK_USE_Qwt 1) #if(MITK_USE_Qt4) set(MITK_USE_Qxt 1) #TODO: Check how Qxt builds with Qt 5 #endif() endif() if(MITK_USE_Redland) + set(REDLAND_INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/Redland-install) set(MITK_USE_raptor2 1) + set(MITK_USE_PCRE 1) + set(MITK_USE_rasqal 1) + set(MITK_USE_redland 1) endif() if(MITK_USE_SOFA) set(MITK_USE_GLUT 1) endif() if(NOT MITK_USE_SYSTEM_PYTHON) set(MITK_USE_ZLIB 1) endif() if(MITK_USE_SimpleITK OR MITK_USE_Python) set(MITK_USE_SWIG 1) if(UNIX) set(MITK_USE_PCRE 1) endif() endif() # A list of "nice" external projects, playing well together with CMake set(nice_external_projects ${external_projects}) list(REMOVE_ITEM nice_external_projects Boost) foreach(proj ${nice_external_projects}) if(MITK_USE_${proj}) set(EXTERNAL_${proj}_DIR "${${proj}_DIR}" CACHE PATH "Path to ${proj} build directory") mark_as_advanced(EXTERNAL_${proj}_DIR) if(EXTERNAL_${proj}_DIR) set(${proj}_DIR ${EXTERNAL_${proj}_DIR}) endif() endif() endforeach() if(MITK_USE_Boost) set(EXTERNAL_BOOST_ROOT "${BOOST_ROOT}" CACHE PATH "Path to Boost directory") mark_as_advanced(EXTERNAL_BOOST_ROOT) if(EXTERNAL_BOOST_ROOT) set(BOOST_ROOT ${EXTERNAL_BOOST_ROOT}) endif() endif() # Setup file for setting custom ctest vars configure_file( CMake/SuperbuildCTestCustom.cmake.in ${MITK_BINARY_DIR}/CTestCustom.cmake @ONLY ) if(BUILD_TESTING) set(EXTERNAL_MITK_DATA_DIR "${MITK_DATA_DIR}" CACHE PATH "Path to the MITK data directory") mark_as_advanced(EXTERNAL_MITK_DATA_DIR) if(EXTERNAL_MITK_DATA_DIR) set(MITK_DATA_DIR ${EXTERNAL_MITK_DATA_DIR}) endif() endif() # Look for git early on, if needed if((BUILD_TESTING AND NOT EXTERNAL_MITK_DATA_DIR) OR (MITK_USE_CTK AND NOT EXTERNAL_CTK_DIR)) find_package(Git REQUIRED) endif() #----------------------------------------------------------------------------- # External project settings #----------------------------------------------------------------------------- include(ExternalProject) set(ep_base "${CMAKE_BINARY_DIR}/CMakeExternals") set_property(DIRECTORY PROPERTY EP_BASE ${ep_base}) set(ep_install_dir ${ep_base}/Install) #set(ep_build_dir ${ep_base}/Build) set(ep_source_dir ${ep_base}/Source) #set(ep_parallelism_level) set(ep_build_shared_libs ON) set(ep_build_testing OFF) -if(NOT MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL) - set(MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL http://mitk.org/download/thirdparty) -endif() - # Compute -G arg for configuring external projects with the same CMake generator: if(CMAKE_EXTRA_GENERATOR) set(gen "${CMAKE_EXTRA_GENERATOR} - ${CMAKE_GENERATOR}") else() set(gen "${CMAKE_GENERATOR}") endif() # Use this value where semi-colons are needed in ep_add args: set(sep "^^") ## if(MSVC_VERSION) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /bigobj /MP") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj /MP") endif() set(ep_common_args -DBUILD_TESTING:BOOL=${ep_build_testing} -DCMAKE_INSTALL_PREFIX:PATH=${ep_install_dir} -DCMAKE_PREFIX_PATH:PATH=${CMAKE_PREFIX_PATH} -DBUILD_SHARED_LIBS:BOOL=ON -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} -DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER} -DCMAKE_C_FLAGS:STRING=${CMAKE_C_FLAGS} -DCMAKE_CXX_FLAGS:STRING=${CMAKE_CXX_FLAGS} #debug flags -DCMAKE_CXX_FLAGS_DEBUG:STRING=${CMAKE_CXX_FLAGS_DEBUG} -DCMAKE_C_FLAGS_DEBUG:STRING=${CMAKE_C_FLAGS_DEBUG} #release flags -DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE} -DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE} #relwithdebinfo -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_C_FLAGS_RELWITHDEBINFO} #link flags -DCMAKE_EXE_LINKER_FLAGS:STRING=${CMAKE_EXE_LINKER_FLAGS} -DCMAKE_SHARED_LINKER_FLAGS:STRING=${CMAKE_SHARED_LINKER_FLAGS} -DCMAKE_MODULE_LINKER_FLAGS:STRING=${CMAKE_MODULE_LINKER_FLAGS} ) # Pass the CMAKE_OSX variables to external projects if(APPLE) set(MAC_OSX_ARCHITECTURE_ARGS -DCMAKE_OSX_ARCHITECTURES:PATH=${CMAKE_OSX_ARCHITECTURES} -DCMAKE_OSX_DEPLOYMENT_TARGET:PATH=${CMAKE_OSX_DEPLOYMENT_TARGET} -DCMAKE_OSX_SYSROOT:PATH=${CMAKE_OSX_SYSROOT} ) set(ep_common_args ${MAC_OSX_ARCHITECTURE_ARGS} ${ep_common_args} ) endif() # Include external projects foreach(p ${external_projects}) include(CMakeExternals/${p}.cmake) endforeach() #----------------------------------------------------------------------------- # Set superbuild boolean args #----------------------------------------------------------------------------- set(mitk_cmake_boolean_args BUILD_SHARED_LIBS WITH_COVERAGE BUILD_TESTING MITK_USE_QT MITK_BUILD_ALL_PLUGINS MITK_BUILD_ALL_APPS MITK_BUILD_TUTORIAL # Deprecated. Use MITK_BUILD_EXAMPLES instead MITK_BUILD_EXAMPLES MITK_USE_ACVD MITK_USE_CppUnit MITK_USE_GLEW MITK_USE_Boost MITK_USE_SYSTEM_Boost MITK_USE_BLUEBERRY MITK_USE_CTK MITK_USE_DCMTK MITK_USE_OpenCV MITK_USE_Poco MITK_USE_Redland MITK_USE_SOFA MITK_USE_Python MITK_USE_OpenCL MITK_ENABLE_PIC_READER ) #----------------------------------------------------------------------------- # Create the final variable containing superbuild boolean args #----------------------------------------------------------------------------- set(mitk_superbuild_boolean_args) foreach(mitk_cmake_arg ${mitk_cmake_boolean_args}) list(APPEND mitk_superbuild_boolean_args -D${mitk_cmake_arg}:BOOL=${${mitk_cmake_arg}}) endforeach() if(MITK_BUILD_ALL_PLUGINS) list(APPEND mitk_superbuild_boolean_args -DBLUEBERRY_BUILD_ALL_PLUGINS:BOOL=ON) endif() #----------------------------------------------------------------------------- # MITK Utilities #----------------------------------------------------------------------------- set(proj MITK-Utilities) ExternalProject_Add(${proj} DOWNLOAD_COMMAND "" CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" DEPENDS # Mandatory dependencies ${tinyxml_DEPENDS} ${ANN_DEPENDS} ${VTK_DEPENDS} ${ITK_DEPENDS} # Optionnal dependencies ${ACVD_DEPENDS} ${CppUnit_DEPENDS} ${Eigen_DEPENDS} ${GLUT_DEPENDS} ${GLEW_DEPENDS} ${Boost_DEPENDS} ${CTK_DEPENDS} ${DCMTK_DEPENDS} ${OpenCV_DEPENDS} ${Poco_DEPENDS} + ${PCRE_DEPENDS} + ${Swig_DEPENDS} ${raptor2_DEPENDS} + ${rasqal_DEPENDS} + ${redland_DEPENDS} ${SOFA_DEPENDS} ${MITK-Data_DEPENDS} ${Qwt_DEPENDS} ${Qxt_DEPENDS} ${ZLIB_DEPENDS} ${SimpleITK_DEPENDS} ${Numpy_DEPENDS} ) #----------------------------------------------------------------------------- # Additional MITK CXX/C Flags #----------------------------------------------------------------------------- set(MITK_ADDITIONAL_C_FLAGS "" CACHE STRING "Additional C Flags for MITK") set(MITK_ADDITIONAL_C_FLAGS_RELEASE "" CACHE STRING "Additional Release C Flags for MITK") set(MITK_ADDITIONAL_C_FLAGS_DEBUG "" CACHE STRING "Additional Debug C Flags for MITK") mark_as_advanced(MITK_ADDITIONAL_C_FLAGS MITK_ADDITIONAL_C_FLAGS_DEBUG MITK_ADDITIONAL_C_FLAGS_RELEASE) set(MITK_ADDITIONAL_CXX_FLAGS "" CACHE STRING "Additional CXX Flags for MITK") set(MITK_ADDITIONAL_CXX_FLAGS_RELEASE "" CACHE STRING "Additional Release CXX Flags for MITK") set(MITK_ADDITIONAL_CXX_FLAGS_DEBUG "" CACHE STRING "Additional Debug CXX Flags for MITK") mark_as_advanced(MITK_ADDITIONAL_CXX_FLAGS MITK_ADDITIONAL_CXX_FLAGS_DEBUG MITK_ADDITIONAL_CXX_FLAGS_RELEASE) set(MITK_ADDITIONAL_EXE_LINKER_FLAGS "" CACHE STRING "Additional exe linker flags for MITK") set(MITK_ADDITIONAL_SHARED_LINKER_FLAGS "" CACHE STRING "Additional shared linker flags for MITK") set(MITK_ADDITIONAL_MODULE_LINKER_FLAGS "" CACHE STRING "Additional module linker flags for MITK") mark_as_advanced(MITK_ADDITIONAL_EXE_LINKER_FLAGS MITK_ADDITIONAL_SHARED_LINKER_FLAGS MITK_ADDITIONAL_MODULE_LINKER_FLAGS) #----------------------------------------------------------------------------- # MITK Configure #----------------------------------------------------------------------------- if(MITK_INITIAL_CACHE_FILE) set(mitk_initial_cache_arg -C "${MITK_INITIAL_CACHE_FILE}") endif() set(mitk_optional_cache_args ) foreach(type RUNTIME ARCHIVE LIBRARY) if(DEFINED CTK_PLUGIN_${type}_OUTPUT_DIRECTORY) list(APPEND mitk_optional_cache_args -DCTK_PLUGIN_${type}_OUTPUT_DIRECTORY:PATH=${CTK_PLUGIN_${type}_OUTPUT_DIRECTORY}) endif() endforeach() # Optional python variables if(MITK_USE_Python) list(APPEND mitk_optional_cache_args -DPYTHON_EXECUTABLE:FILEPATH=${PYTHON_EXECUTABLE} -DPYTHON_INCLUDE_DIR:PATH=${PYTHON_INCLUDE_DIR} -DPYTHON_LIBRARY:FILEPATH=${PYTHON_LIBRARY} -DPYTHON_INCLUDE_DIR2:PATH=${PYTHON_INCLUDE_DIR2} -DMITK_USE_SYSTEM_PYTHON:BOOL=${MITK_USE_SYSTEM_PYTHON} -DMITK_BUILD_org.mitk.gui.qt.python:BOOL=ON ) if( NOT MITK_USE_SYSTEM_PYTHON ) list(APPEND mitk_optional_cache_args # Folders are needed to create an installer -DPython_DIR:PATH=${Python_DIR} -DNumpy_DIR:PATH=${Numpy_DIR} ) endif() endif() set(proj MITK-Configure) ExternalProject_Add(${proj} LIST_SEPARATOR ^^ DOWNLOAD_COMMAND "" CMAKE_GENERATOR ${gen} CMAKE_CACHE_ARGS # --------------- Build options ---------------- -DBUILD_TESTING:BOOL=${ep_build_testing} -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/MITK-build/install -DBUILD_SHARED_LIBS:BOOL=ON -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} # --------------- Compile options ---------------- -DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER} "-DCMAKE_C_FLAGS:STRING=${CMAKE_C_FLAGS} ${MITK_ADDITIONAL_C_FLAGS}" "-DCMAKE_CXX_FLAGS:STRING=${CMAKE_CXX_FLAGS} ${MITK_ADDITIONAL_CXX_FLAGS}" # debug flags "-DCMAKE_CXX_FLAGS_DEBUG:STRING=${CMAKE_CXX_FLAGS_DEBUG} ${MITK_ADDITIONAL_CXX_FLAGS_DEBUG}" "-DCMAKE_C_FLAGS_DEBUG:STRING=${CMAKE_C_FLAGS_DEBUG} ${MITK_ADDITIONAL_C_FLAGS_DEBUG}" # release flags "-DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE} ${MITK_ADDITIONAL_CXX_FLAGS_RELEASE}" "-DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE} ${MITK_ADDITIONAL_C_FLAGS_RELEASE}" # relwithdebinfo -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_C_FLAGS_RELWITHDEBINFO} # link flags "-DCMAKE_EXE_LINKER_FLAGS:STRING=${CMAKE_EXE_LINKER_FLAGS} ${MITK_ADDITIONAL_EXE_LINKER_FLAGS}" "-DCMAKE_SHARED_LINKER_FLAGS:STRING=${CMAKE_SHARED_LINKER_FLAGS} ${MITK_ADDITIONAL_SHARED_LINKER_FLAGS}" "-DCMAKE_MODULE_LINKER_FLAGS:STRING=${CMAKE_MODULE_LINKER_FLAGS} ${MITK_ADDITIONAL_MODULE_LINKER_FLAGS}" # Output directories -DMITK_CMAKE_LIBRARY_OUTPUT_DIRECTORY:PATH=${MITK_CMAKE_LIBRARY_OUTPUT_DIRECTORY} -DMITK_CMAKE_RUNTIME_OUTPUT_DIRECTORY:PATH=${MITK_CMAKE_RUNTIME_OUTPUT_DIRECTORY} -DMITK_CMAKE_ARCHIVE_OUTPUT_DIRECTORY:PATH=${MITK_CMAKE_ARCHIVE_OUTPUT_DIRECTORY} # ------------- Boolean build options -------------- ${mitk_superbuild_boolean_args} ${mitk_optional_cache_args} -DMITK_USE_SUPERBUILD:BOOL=OFF -DMITK_BUILD_CONFIGURATION:STRING=${MITK_BUILD_CONFIGURATION} -DCTEST_USE_LAUNCHERS:BOOL=${CTEST_USE_LAUNCHERS} # ----------------- Miscellaneous --------------- -DMITK_CTEST_SCRIPT_MODE:STRING=${MITK_CTEST_SCRIPT_MODE} -DMITK_SUPERBUILD_BINARY_DIR:PATH=${MITK_BINARY_DIR} -DMITK_MODULES_TO_BUILD:INTERNAL=${MITK_MODULES_TO_BUILD} ${qt_project_args} -DMITK_ACCESSBYITK_INTEGRAL_PIXEL_TYPES:STRING=${MITK_ACCESSBYITK_INTEGRAL_PIXEL_TYPES} -DMITK_ACCESSBYITK_FLOATING_PIXEL_TYPES:STRING=${MITK_ACCESSBYITK_FLOATING_PIXEL_TYPES} -DMITK_ACCESSBYITK_COMPOSITE_PIXEL_TYPES:STRING=${MITK_ACCESSBYITK_COMPOSITE_PIXEL_TYPES} -DMITK_ACCESSBYITK_VECTOR_PIXEL_TYPES:STRING=${MITK_ACCESSBYITK_VECTOR_PIXEL_TYPES} -DMITK_ACCESSBYITK_DIMENSIONS:STRING=${MITK_ACCESSBYITK_DIMENSIONS} # --------------- External project dirs --------------- -DCppMicroServices_DIR:PATH=${CppMicroServices_DIR} -DMITK_KWSTYLE_EXECUTABLE:FILEPATH=${MITK_KWSTYLE_EXECUTABLE} -DCTK_DIR:PATH=${CTK_DIR} -DDCMTK_DIR:PATH=${DCMTK_DIR} -DEigen_DIR:PATH=${Eigen_DIR} -Dtinyxml_DIR:PATH=${tinyxml_DIR} -DGLUT_DIR:PATH=${GLUT_DIR} -DGLEW_DIR:PATH=${GLEW_DIR} -DANN_DIR:PATH=${ANN_DIR} -DCppUnit_DIR:PATH=${CppUnit_DIR} -DVTK_DIR:PATH=${VTK_DIR} # FindVTK expects VTK_DIR -DITK_DIR:PATH=${ITK_DIR} # FindITK expects ITK_DIR -DACVD_DIR:PATH=${ACVD_DIR} -DOpenCV_DIR:PATH=${OpenCV_DIR} -DPoco_DIR:PATH=${Poco_DIR} - -Draptor2_DIR:PATH=${raptor2_DIR} + -DPCRE_DIR:PATH=${PCRE_DIR} + -DSwig_DIR:PATH=${Swig_DIR} + -DRaptor2_DIR:PATH=${raptor2_DIR} + -DRasqal_DIR:PATH=${rasqal_DIR} + -DRedland_DIR:PATH=${redland_DIR} -DSOFA_DIR:PATH=${SOFA_DIR} -DGDCM_DIR:PATH=${GDCM_DIR} -DBOOST_ROOT:PATH=${BOOST_ROOT} -DMITK_USE_Boost_LIBRARIES:STRING=${MITK_USE_Boost_LIBRARIES} -DMITK_DATA_DIR:PATH=${MITK_DATA_DIR} -DQwt_DIR:PATH=${Qwt_DIR} -DQxt_DIR:PATH=${Qxt_DIR} -DSimpleITK_DIR:PATH=${SimpleITK_DIR} -DNumpy_DIR:PATH=${Numpy_DIR} CMAKE_ARGS ${mitk_initial_cache_arg} ${MAC_OSX_ARCHITECTURE_ARGS} SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} BINARY_DIR ${CMAKE_BINARY_DIR}/MITK-build BUILD_COMMAND "" INSTALL_COMMAND "" DEPENDS MITK-Utilities ) #----------------------------------------------------------------------------- # MITK #----------------------------------------------------------------------------- if(CMAKE_GENERATOR MATCHES ".*Makefiles.*") set(mitk_build_cmd "$(MAKE)") else() set(mitk_build_cmd ${CMAKE_COMMAND} --build ${CMAKE_CURRENT_BINARY_DIR}/MITK-build --config ${CMAKE_CFG_INTDIR}) endif() if(NOT DEFINED SUPERBUILD_EXCLUDE_MITKBUILD_TARGET OR NOT SUPERBUILD_EXCLUDE_MITKBUILD_TARGET) set(MITKBUILD_TARGET_ALL_OPTION "ALL") else() set(MITKBUILD_TARGET_ALL_OPTION "") endif() add_custom_target(MITK-build ${MITKBUILD_TARGET_ALL_OPTION} COMMAND ${mitk_build_cmd} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/MITK-build DEPENDS MITK-Configure ) #----------------------------------------------------------------------------- # Custom target allowing to drive the build of the MITK project itself #----------------------------------------------------------------------------- add_custom_target(MITK COMMAND ${mitk_build_cmd} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/MITK-build )