Changeset: 06fd57c6f7aa for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=06fd57c6f7aa Modified Files: cmake/FindIconvMonetDB.cmake cmake/FindUUID.cmake Branch: cmake-fun Log Message:
Fixed iconv and uuid scripts. diffs (81 lines): diff --git a/cmake/FindIconvMonetDB.cmake b/cmake/FindIconvMonetDB.cmake --- a/cmake/FindIconvMonetDB.cmake +++ b/cmake/FindIconvMonetDB.cmake @@ -8,16 +8,15 @@ # ICONV_FOUND - True if iconv found. # ICONV_IS_BUILT_IN - If iconv is built in -if(${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD") # On FreeBSD, libiconv_open symbol is required - check_symbol_exists("libiconv_open" "iconv.h" ICONV_IS_BUILT_IN) -else() +# On FreeBSD, libiconv_open symbol is required and not supplied by the standard C library, so force the library search +if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD") check_symbol_exists("iconv_open" "iconv.h" ICONV_IS_BUILT_IN) endif() if(ICONV_IS_BUILT_IN) - set(ICONV_INCLUDE_DIR "") - set(ICONV_LIBRARIES "") - set(ICONV_FOUND ON) + set(ICONV_INCLUDE_DIR "" CACHE INTERNAL "iconv include directories path") + set(ICONV_LIBRARIES "" CACHE INTERNAL "iconv libraries path") + set(ICONV_FOUND ON CACHE INTERNAL "iconv is available") else() # Look for the header file and library find_path(ICONV_INCLUDE_DIR NAMES "iconv.h" DOC "iconv include directory") diff --git a/cmake/FindUUID.cmake b/cmake/FindUUID.cmake --- a/cmake/FindUUID.cmake +++ b/cmake/FindUUID.cmake @@ -5,33 +5,31 @@ # UUID_LIBRARIES - List of libraries when using uuid. # UUID_FOUND - True if uuid found. +cmake_push_check_state() # Look for the header file. find_path(UUID_INCLUDE_DIR NAMES uuid/uuid.h) - -# Look for the library. -if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") # Linux requires a separate library for UUID - find_library(UUID_LIBRARIES NAMES uuid) +if(UUID_INCLUDE_DIR) + set(CMAKE_REQUIRED_INCLUDES "${CMAKE_REQUIRED_INCLUDES};${UUID_INCLUDE_DIR}") else() - set(UUID_LIBRARIES "") + set(UUID_INCLUDE_DIR "" CACHE INTERNAL "uuid include directories") endif() - +# Look for the library. +find_library(UUID_LIBRARIES NAMES uuid) # Linux requires a separate library for UUID if(UUID_LIBRARIES) - cmake_push_check_state() - set(CMAKE_REQUIRED_INCLUDES "${CMAKE_REQUIRED_INCLUDES};${UUID_INCLUDE_DIR}") set(CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES};${UUID_LIBRARIES}") - check_symbol_exists("uuid_generate" "uuid/uuid.h" HAVE_UUID_GENERATE) # some uuid instalations don't supply this symbol - cmake_pop_check_state() - if(NOT HAVE_UUID_GENERATE) - set(UUID_FOUND OFF) - endif() +else() + set(UUID_LIBRARIES "" CACHE INTERNAL "uuid libraries path") endif() +# Find uuid_generate symbol, which we require and some platforms don't have it +check_symbol_exists("uuid_generate" "uuid/uuid.h" HAVE_UUID_GENERATE) +cmake_pop_check_state() -# On Linux, both library and include directory path must be set -include(FindPackageHandleStandardArgs) -if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") - find_package_handle_standard_args(UUID DEFAULT_MSG UUID_LIBRARIES UUID_INCLUDE_DIR) -else() - find_package_handle_standard_args(UUID DEFAULT_MSG UUID_INCLUDE_DIR) +if(HAVE_UUID_GENERATE) + include(FindPackageHandleStandardArgs) + if(${UUID_LIBRARIES} STREQUAL "") + find_package_handle_standard_args(UUID DEFAULT_MSG UUID_INCLUDE_DIR) + else() + find_package_handle_standard_args(UUID DEFAULT_MSG UUID_LIBRARIES UUID_INCLUDE_DIR) + endif() + mark_as_advanced(UUID_INCLUDE_DIR UUID_LIBRARIES) endif() - -mark_as_advanced(UUID_INCLUDE_DIR UUID_LIBRARIES) _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list