summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2014-01-14 13:40:54 (GMT)
committerStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2014-01-14 13:40:54 (GMT)
commitf7ca1ebaa5a527f817892bc3794452df1a6c20c6 (patch)
tree8a492f82ce2839c82c0fe53d439b2af49b17b9a3
parentb08e0f31b82ddc9e68a5ddbe71aaea08968573af (diff)
downloaduscxml-f7ca1ebaa5a527f817892bc3794452df1a6c20c6.zip
uscxml-f7ca1ebaa5a527f817892bc3794452df1a6c20c6.tar.gz
uscxml-f7ca1ebaa5a527f817892bc3794452df1a6c20c6.tar.bz2
Use pkg-config to search for SWI Prolog
-rw-r--r--contrib/cmake/FindSWI.cmake256
1 files changed, 145 insertions, 111 deletions
diff --git a/contrib/cmake/FindSWI.cmake b/contrib/cmake/FindSWI.cmake
index cb4d8b3..1eb98cd 100644
--- a/contrib/cmake/FindSWI.cmake
+++ b/contrib/cmake/FindSWI.cmake
@@ -1,126 +1,160 @@
-set(64BIT_HOST OFF)
-if(CMAKE_SIZEOF_VOID_P EQUAL 8)
- set(64BIT_HOST ON)
-endif()
+if (NOT WIN32)
+ include(FindPkgConfig)
+ pkg_check_modules(SWI swipl)
+endif (NOT WIN32)
+
+if (SWI_FOUND)
+ # message("SWI_LIBRARIES: ${SWI_LIBRARIES}")
+ # message("SWI_LIBRARY_DIRS: ${SWI_LIBRARY_DIRS}")
+ # message("SWI_LDFLAGS: ${SWI_LDFLAGS}")
+ # message("SWI_LDFLAGS_OTHER: ${SWI_LDFLAGS_OTHER}")
+ # message("SWI_INCLUDE_DIRS: ${SWI_INCLUDE_DIRS}")
+ # message("SWI_CFLAGS: ${SWI_CFLAGS}")
+ # message("SWI_CFLAGS_OTHER: ${SWI_CFLAGS_OTHER}")
+ #
+ # message("SWI_LIBRARIES_STATIC: ${SWI_LIBRARIES_STATIC}")
+ # message("SWI_LIBRARY_DIRS_STATIC: ${SWI_LIBRARY_DIRS_STATIC}")
+ # message("SWI_LDFLAGS_STATIC: ${SWI_LDFLAGS_STATIC}")
+ # message("SWI_LDFLAGS_OTHER_STATIC: ${SWI_LDFLAGS_OTHER_STATIC}")
+ # message("SWI_INCLUDE_DIRS_STATIC: ${SWI_INCLUDE_DIRS_STATIC}")
+ # message("SWI_CFLAGS_STATIC: ${SWI_CFLAGS_STATIC}")
+ # message("SWI_CFLAGS_OTHER_STATIC: ${SWI_CFLAGS_OTHER_STATIC}")
+ # message(FATAL_ERROR "")
+
+ set(SWI_INCLUDE_DIR ${SWI_LIBRARY_DIRS})
+ set(SWI_LIBRARY ${SWI_LIBRARIES})
+
+ FIND_PROGRAM(SWI_BINARY swipl)
+
+ FIND_PATH(SWI_CPP_INCLUDE_DIR SWI-cpp.h
+ PATHS ${SWI_INCLUDE_DIRS}
+ )
-set(SWI_PLATFORM_ID)
-if (UNIX)
- if (APPLE AND 64BIT_HOST)
- set(SWI_PLATFORM_ID "x86_64-${CMAKE_SYSTEM_NAME}${CMAKE_SYSTEM_VERSION}")
- else()
- set(SWI_PLATFORM_ID "${CMAKE_SYSTEM_PROCESSOR}-${CMAKE_SYSTEM_NAME}")
- endif()
else()
- set(SWI_PLATFORM_ID "${CMAKE_SYSTEM_PROCESSOR}-windows")
-endif()
-
-if (SWI_PLATFORM_ID)
- string(TOLOWER ${SWI_PLATFORM_ID} SWI_PLATFORM_ID)
-endif()
+ set(64BIT_HOST OFF)
+ if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+ set(64BIT_HOST ON)
+ endif()
-#message("SWI_PLATFORM_ID: ${SWI_PLATFORM_ID}")
-
-set (SWI_SEARCH_PATHS)
-list (APPEND SWI_SEARCH_PATHS
- $ENV{SWI_HOME}
- ${CMAKE_FIND_ROOT_PATH}
- "/usr/lib/swi-prolog/"
- "/opt/local/"
- "/usr/local/"
- "C:/Program Files (x86)/swipl"
- "C:/Program Files/swipl"
-)
-
-#message("SWI_SEARCH_PATHS: ${SWI_SEARCH_PATHS}")
-
-set (SWI_VERSION)
-set (LOOP_DONE 0)
-foreach(SWI_SEARCH_PATH ${SWI_SEARCH_PATHS})
- if(NOT LOOP_DONE)
- file(GLOB SWI_VERSIONS ${SWI_SEARCH_PATH}/lib/swipl*)
- if (SWI_VERSIONS)
-# message("SWI_VERSIONS: ${SWI_VERSIONS}")
- set(LOOP_DONE 1)
- list(SORT SWI_VERSIONS)
- list(REVERSE SWI_VERSIONS)
- list(GET SWI_VERSIONS 0 SWI_VERSION)
- STRING(REGEX REPLACE ".*(([0-9]+).([0-9]+).([0-9]+))$" "\\1" SWI_VERSION "${SWI_VERSION}")
+ set(SWI_PLATFORM_ID)
+ if (UNIX)
+ if (APPLE AND 64BIT_HOST)
+ set(SWI_PLATFORM_ID "x86_64-${CMAKE_SYSTEM_NAME}${CMAKE_SYSTEM_VERSION}")
+ else()
+ set(SWI_PLATFORM_ID "${CMAKE_SYSTEM_PROCESSOR}-${CMAKE_SYSTEM_NAME}")
endif()
+ else()
+ set(SWI_PLATFORM_ID "${CMAKE_SYSTEM_PROCESSOR}-windows")
endif()
-endforeach()
-#message("SWI_VERSION: ${SWI_VERSION}")
+ if (SWI_PLATFORM_ID)
+ string(TOLOWER ${SWI_PLATFORM_ID} SWI_PLATFORM_ID)
+ endif()
-set(SWI_PLATFORMS)
-foreach (SWI_SEARCH_PATH ${SWI_SEARCH_PATHS})
- file(GLOB CURR_SWI_PLATFORMS ${SWI_SEARCH_PATH}/lib/swipl-${SWI_VERSION}/lib/*)
- foreach(CURR_SWI_PLATFORM ${CURR_SWI_PLATFORMS})
- if(IS_DIRECTORY ${CURR_SWI_PLATFORM})
- list(APPEND SWI_PLATFORMS ${CURR_SWI_PLATFORM})
+ #message("SWI_PLATFORM_ID: ${SWI_PLATFORM_ID}")
+
+ set (SWI_SEARCH_PATHS)
+ list (APPEND SWI_SEARCH_PATHS
+ $ENV{SWI_HOME}
+ ${CMAKE_FIND_ROOT_PATH}
+ "/usr/lib/swi-prolog/"
+ "/opt/local/"
+ "/usr/local/"
+ "C:/Program Files (x86)/swipl"
+ "C:/Program Files/swipl"
+ )
+
+ #message("SWI_SEARCH_PATHS: ${SWI_SEARCH_PATHS}")
+
+ set (SWI_VERSION)
+ set (LOOP_DONE 0)
+ foreach(SWI_SEARCH_PATH ${SWI_SEARCH_PATHS})
+ if(NOT LOOP_DONE)
+ file(GLOB SWI_VERSIONS ${SWI_SEARCH_PATH}/lib/swipl*)
+ if (SWI_VERSIONS)
+ # message("SWI_VERSIONS: ${SWI_VERSIONS}")
+ set(LOOP_DONE 1)
+ list(SORT SWI_VERSIONS)
+ list(REVERSE SWI_VERSIONS)
+ list(GET SWI_VERSIONS 0 SWI_VERSION)
+ STRING(REGEX REPLACE ".*(([0-9]+).([0-9]+).([0-9]+))$" "\\1" SWI_VERSION "${SWI_VERSION}")
+ endif()
endif()
endforeach()
-endforeach()
-#message(FATAL_ERROR "SWI_PLATFORMS: ${SWI_PLATFORMS}")
-
-#message("SWI_VERSION: ${SWI_VERSION}")
-
-# -- find prolog headers
-FIND_PATH(SWI_INCLUDE_DIR SWI-Prolog.h
- PATH_SUFFIXES
- include
- lib/swipl-${SWI_VERSION}/include
- PATHS ${SWI_SEARCH_PATHS}
-)
-
-#message("SWI_INCLUDE_DIR: ${SWI_INCLUDE_DIR}")
-
-FIND_PATH(SWI_CPP_INCLUDE_DIR SWI-cpp.h
- PATH_SUFFIXES
- packages/cpp
- lib/swipl-${SWI_VERSION}/include
- PATHS ${SWI_SEARCH_PATHS}
-)
-
-#message("SWI_CPP_INCLUDE_DIR: ${SWI_CPP_INCLUDE_DIR}")
-
-FIND_PROGRAM(SWI_BINARY swipl
- PATH_SUFFIXES
- src
- lib/swipl-${SWI_VERSION}/bin/${SWI_PLATFORM_ID}
- PATHS ${SWI_SEARCH_PATHS}
-)
-
-FIND_LIBRARY(SWI_LIBRARY_RELEASE
- NAMES libswipl swipl
- PATH_SUFFIXES
- lib/${SWI_PLATFORM_ID} # still in source directory
- lib/swipl-${SWI_VERSION}/lib/${SWI_PLATFORM_ID} # after make install
+
+ #message("SWI_VERSION: ${SWI_VERSION}")
+
+ set(SWI_PLATFORMS)
+ foreach (SWI_SEARCH_PATH ${SWI_SEARCH_PATHS})
+ file(GLOB CURR_SWI_PLATFORMS ${SWI_SEARCH_PATH}/lib/swipl-${SWI_VERSION}/lib/*)
+ foreach(CURR_SWI_PLATFORM ${CURR_SWI_PLATFORMS})
+ if(IS_DIRECTORY ${CURR_SWI_PLATFORM})
+ list(APPEND SWI_PLATFORMS ${CURR_SWI_PLATFORM})
+ endif()
+ endforeach()
+ endforeach()
+ #message(FATAL_ERROR "SWI_PLATFORMS: ${SWI_PLATFORMS}")
+
+ #message("SWI_VERSION: ${SWI_VERSION}")
+
+ # -- find prolog headers
+ FIND_PATH(SWI_INCLUDE_DIR SWI-Prolog.h
+ PATH_SUFFIXES
+ include
+ lib/swipl-${SWI_VERSION}/include
+ PATHS ${SWI_SEARCH_PATHS}
+ )
+
+ #message("SWI_INCLUDE_DIR: ${SWI_INCLUDE_DIR}")
+
+ FIND_PATH(SWI_CPP_INCLUDE_DIR SWI-cpp.h
+ PATH_SUFFIXES
+ packages/cpp
+ lib/swipl-${SWI_VERSION}/include
+ PATHS ${SWI_SEARCH_PATHS}
+ )
+
+ #message("SWI_CPP_INCLUDE_DIR: ${SWI_CPP_INCLUDE_DIR}")
+
+ FIND_PROGRAM(SWI_BINARY swipl
+ PATH_SUFFIXES
+ src
+ lib/swipl-${SWI_VERSION}/bin/${SWI_PLATFORM_ID}
+ PATHS ${SWI_SEARCH_PATHS}
+ )
+
+ FIND_LIBRARY(SWI_LIBRARY_RELEASE
+ NAMES libswipl swipl
+ PATH_SUFFIXES
+ lib/${SWI_PLATFORM_ID} # still in source directory
+ lib/swipl-${SWI_VERSION}/lib/${SWI_PLATFORM_ID} # after make install
- PATHS ${SWI_SEARCH_PATHS} ${SWI_PLATFORMS}
-)
-
-FIND_LIBRARY(SWI_LIBRARY_DEBUG
- NAMES libswipl_d swipl_d
- PATH_SUFFIXES
- lib/${SWI_PLATFORM_ID} # still in source directory
- lib/swipl-${SWI_VERSION}/lib/${SWI_PLATFORM_ID} # after make install
- PATHS ${SWI_SEARCH_PATHS} ${SWI_PLATFORMS}
-)
-
-if (NOT SWI_LIBRARY_DEBUG) # no explicit debug build, just reuse release
- if (UNIX)
- set(SWI_LIBRARY_DEBUG ${SWI_LIBRARY_RELEASE})
+ PATHS ${SWI_SEARCH_PATHS} ${SWI_PLATFORMS}
+ )
+
+ FIND_LIBRARY(SWI_LIBRARY_DEBUG
+ NAMES libswipl_d swipl_d
+ PATH_SUFFIXES
+ lib/${SWI_PLATFORM_ID} # still in source directory
+ lib/swipl-${SWI_VERSION}/lib/${SWI_PLATFORM_ID} # after make install
+ PATHS ${SWI_SEARCH_PATHS} ${SWI_PLATFORMS}
+ )
+
+ if (NOT SWI_LIBRARY_DEBUG) # no explicit debug build, just reuse release
+ if (UNIX)
+ set(SWI_LIBRARY_DEBUG ${SWI_LIBRARY_RELEASE})
+ endif()
endif()
-endif()
-if (SWI_LIBRARY_RELEASE)
- list(APPEND SWI_LIBRARY optimized ${SWI_LIBRARY_RELEASE})
- if (SWI_LIBRARY_DEBUG)
- list(APPEND SWI_LIBRARY debug ${SWI_LIBRARY_DEBUG})
- elseif(UNIX)
- list(APPEND SWI_LIBRARY debug ${SWI_LIBRARY_RELEASE})
- else()
- message(FATAL_ERROR "Cannot find debug version of SWI")
+ if (SWI_LIBRARY_RELEASE)
+ list(APPEND SWI_LIBRARY optimized ${SWI_LIBRARY_RELEASE})
+ if (SWI_LIBRARY_DEBUG)
+ list(APPEND SWI_LIBRARY debug ${SWI_LIBRARY_DEBUG})
+ elseif(UNIX)
+ list(APPEND SWI_LIBRARY debug ${SWI_LIBRARY_RELEASE})
+ else()
+ message(FATAL_ERROR "Cannot find debug version of SWI")
+ endif()
endif()
endif()