Changeset: e8912be442b1 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e8912be442b1
Added Files:
cmake/FindGeos.cmake
Modified Files:
CMakeLists.txt
clients/odbc/winsetup/CMakeLists.txt
Branch: cmake-fun
Log Message:
Use own script to find geos library.
diffs (114 lines):
diff --git a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1597,51 +1597,31 @@ if(NOT ${WITH_SAMTOOLS} STREQUAL "NO")
cmake_pop_check_state()
endif()
-set(GEOS_INCLUDE_DIR "")
-set(GEOS_LIBRARIES "")
-set(WITH_GEOS "AUTO" CACHE PATH "geos library is installed in DIR") # Check
with HAVE_GEOS_LIB
+set(WITH_GEOS "AUTO" CACHE STRING "Include geos library support
(default=AUTO)") # Check with HAVE_GEOS_LIB
if(NOT ${WITH_GEOS} STREQUAL "NO")
- set(GEOS_VERSION_REQUIRED_MIN "3.4.0")
-
- if(${WITH_GEOS} MATCHES "^YES|AUTO$")
- set(GEOS_EXECUTABLE "geos-config")
- else()
- set(GEOS_EXECUTABLE "${WITH_GEOS}/bin/geos-config")
- endif()
-
- exec_program("${GEOS_EXECUTABLE}" ARGS "--version" OUTPUT_VARIABLE
GEOS_VERSION RETURN_VALUE GEOS_RC)
- if(GEOS_RC EQUAL 0)
- if(GEOS_VERSION VERSION_GREATER_EQUAL
${GEOS_VERSION_REQUIRED_MIN})
+ include(FindGeos)
- exec_program("${GEOS_EXECUTABLE}" ARGS "--cflags"
OUTPUT_VARIABLE GEOS_INCLUDE_DIR RETURN_VALUE GEOS_INCS_RC)
- exec_program("${GEOS_EXECUTABLE}" ARGS "--clibs"
OUTPUT_VARIABLE GEOS_LIBRARIES RETURN_VALUE GEOS_LIBS_RC)
- if(NOT GEOS_LIBS_RC EQUAL 0)
- exec_program("${GEOS_EXECUTABLE}" ARGS "--libs"
OUTPUT_VARIABLE GEOS_LIBRARIES RETURN_VALUE GEOS_LIBS_RC)
- if(GEOS_LIBS_RC EQUAL 0)
- string(REPLACE "-lgeos" "-lgeos_c"
GEOS_LIBRARIES ${GEOS_LIBRARIES})
- endif()
+ if(GEOS_FOUND)
+ set(GEOS_MINIMUM_VERSION "3.4.0")
+ if(GEOS_VERSION VERSION_LESS "${GEOS_MINIMUM_VERSION}")
+ if(${WITH_GEOS} STREQUAL "YES")
+ message(FATAL_ERROR "geos library found but
version is too old: ${GEOS_VERSION} < ${GEOS_MINIMUM_VERSION}")
+ else()
+ message(STATUS "geos library found but version
is too old: ${GEOS_VERSION} < ${GEOS_MINIMUM_VERSION}")
endif()
- if(GEOS_INCS_RC EQUAL 0 AND GEOS_LIBS_RC EQUAL 0)
- MT_clibsToCmake(${GEOS_INCLUDE_DIR}
GEOS_INCLUDE_DIR)
- set(HAVE_GEOS_LIB YES)
- elseif(${WITH_GEOS} STREQUAL "YES")
- message(FATAL_ERROR "could not determine geos
cflags and clibs")
- else()
- message(WARNING "could not determine geos
cflags and clibs")
- endif()
- elseif(${WITH_GEOS} STREQUAL "YES")
- message(FATAL_ERROR "geos version is too old
${GEOS_VERSION} < ${GEOS_VERSION_REQUIRED_MIN}")
else()
- message(WARNING "geos version is too old
${GEOS_VERSION} < ${GEOS_VERSION_REQUIRED_MIN}")
+ message(STATUS "geos library found")
+ set(HAVE_GEOS_LIB ON)
endif()
elseif(${WITH_GEOS} STREQUAL "YES")
- message(FATAL_ERROR "geos-config not found")
+ message(FATAL_ERROR "geos library not found")
else()
- message(STATUS "geos-config not found")
+ message(STATUS "geos library not found")
endif()
endif()
-
if(NOT HAVE_GEOS_LIB)
+ set(GEOS_INCLUDE_DIR "")
+ set(GEOS_LIBRARIES "")
if(${ENABLE_GEOM} STREQUAL "YES")
message(FATAL_ERROR "geos library required for geom module")
else()
diff --git a/clients/odbc/winsetup/CMakeLists.txt
b/clients/odbc/winsetup/CMakeLists.txt
--- a/clients/odbc/winsetup/CMakeLists.txt
+++ b/clients/odbc/winsetup/CMakeLists.txt
@@ -6,7 +6,7 @@
# Copyright 1997 - July 2008 CWI, August 2008 - 2019 MonetDB B.V.
#]]
-include_directories(../include ../driver ${ODBC_INCLUDE_DIR})
+include_directories(../driver ${ODBC_INCLUDE_DIR})
add_library(MonetODBCs SHARED setup.c setup.rc setup.syms resource.h)
target_link_libraries(MonetODBCs PRIVATE ${ODBCINST_LIBRARIES})
diff --git a/cmake/FindGeos.cmake b/cmake/FindGeos.cmake
new file mode 100644
--- /dev/null
+++ b/cmake/FindGeos.cmake
@@ -0,0 +1,27 @@
+# - Find geos
+# Find the native geos headers and libraries.
+#
+# GEOS_INCLUDE_DIR - where to find geos_c.h, etc.
+# GEOS_LIBRARIES - List of libraries when using geos.
+# GEOS_VERSION - GEOS_VERSION if found
+# GEOS_FOUND - True if geos found.
+
+# Look for the header file.
+find_path(GEOS_INCLUDE_DIR NAMES geos_c.h)
+
+# Look for the library.
+find_library(GEOS_LIBRARIES NAMES geos_c geos)
+
+# Handle the QUIETLY and REQUIRED arguments and set GEOS_FOUND to TRUE if all
listed variables are TRUE.
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(GEOS DEFAULT_MSG GEOS_LIBRARIES
GEOS_INCLUDE_DIR)
+
+if(GEOS_FOUND)
+ file(STRINGS "${GEOS_INCLUDE_DIR}/geos_c.h" GEOS_VERSION_LINES REGEX
"#define[ \t]+GEOS_VERSION_(MAJOR|MINOR|PATCH)")
+ string(REGEX REPLACE ".*GEOS_VERSION_MAJOR *\([0-9]*\).*" "\\1"
GEOS_VERSION_MAJOR "${GEOS_VERSION_LINES}")
+ string(REGEX REPLACE ".*GEOS_VERSION_MINOR *\([0-9]*\).*" "\\1"
GEOS_VERSION_MINOR "${GEOS_VERSION_LINES}")
+ string(REGEX REPLACE ".*GEOS_VERSION_PATCH *\([0-9]*\).*" "\\1"
GEOS_VERSION_PATCH "${GEOS_VERSION_LINES}")
+ set(GEOS_VERSION
"${GEOS_VERSION_MAJOR}.${GEOS_VERSION_MINOR}.${GEOS_VERSION_PATCH}")
+endif()
+
+mark_as_advanced(GEOS_INCLUDE_DIR GEOS_LIBRARIES GEOS_VERSION)
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list