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 checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list