Changeset: 38f99a3337f5 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=38f99a3337f5 Modified Files: clients/mapiclient/CMakeLists.txt clients/odbc/driver/CMakeLists.txt clients/odbc/samples/CMakeLists.txt clients/odbc/setup/CMakeLists.txt cmake/Modules/FindUUID.cmake cmake/monetdb-defines.cmake common/stream/CMakeLists.txt common/utils/CMakeLists.txt gdk/CMakeLists.txt geom/lib/CMakeLists.txt geom/monetdb5/CMakeLists.txt monetdb5/extras/mal_optimizer_template/CMakeLists.txt monetdb5/extras/rapi/CMakeLists.txt monetdb5/mal/CMakeLists.txt monetdb5/modules/atoms/CMakeLists.txt monetdb5/modules/kernel/CMakeLists.txt monetdb5/modules/mal/CMakeLists.txt monetdb5/optimizer/CMakeLists.txt monetdb5/scheduler/CMakeLists.txt monetdb5/tools/CMakeLists.txt sql/backends/monet5/CMakeLists.txt sql/backends/monet5/UDF/capi/CMakeLists.txt sql/backends/monet5/UDF/pyapi3/CMakeLists.txt sql/backends/monet5/UDF/udf/CMakeLists.txt sql/backends/monet5/generator/CMakeLists.txt sql/backends/monet5/vaults/fits/CMakeLists.txt sql/backends/monet5/vaults/netcdf/CMakeLists.txt sql/backends/monet5/vaults/shp/CMakeLists.txt sql/common/CMakeLists.txt sql/include/CMakeLists.txt sql/server/CMakeLists.txt sql/storage/CMakeLists.txt sql/storage/bat/CMakeLists.txt tools/monetdbe/CMakeLists.txt tools/mserver/CMakeLists.txt Branch: Oct2020 Log Message:
Clean up cmake use. Don't like to too many libraries ("unused direct dependencies"). Don't include the world for each file. We do this by using the INTERFACE_INCLUDE_DIRECTORIES property instead of the INCLUDE_DIRECTORIES property, and by judicious use of PRIVATE vs. PUBLIC when linking. diffs (truncated from 887 to 300 lines): diff --git a/clients/mapiclient/CMakeLists.txt b/clients/mapiclient/CMakeLists.txt --- a/clients/mapiclient/CMakeLists.txt +++ b/clients/mapiclient/CMakeLists.txt @@ -40,6 +40,10 @@ target_sources(mclient mhelp.c mhelp.h) +target_include_directories(mclient + PRIVATE + $<$<PLATFORM_ID:Windows>:${HAVE_GETOPT_H}>) + target_link_libraries(mclient PRIVATE monetdb_config_header @@ -49,6 +53,7 @@ target_link_libraries(mclient mapi stream $<$<BOOL:${READLINE_FOUND}>:Readline::Readline> + $<$<BOOL:${Iconv_FOUND}>:Iconv::Iconv> $<$<PLATFORM_ID:Windows>:${GETOPT_LIB}>) add_executable(msqldump) @@ -58,6 +63,10 @@ target_sources(msqldump msqldump.c msqldump.h) +target_include_directories(msqldump + PRIVATE + $<$<PLATFORM_ID:Windows>:${HAVE_GETOPT_H}>) + target_link_libraries(msqldump PRIVATE monetdb_config_header @@ -74,6 +83,10 @@ target_sources(stethoscope PRIVATE stethoscope.c) +target_include_directories(stethoscope + PRIVATE + $<$<PLATFORM_ID:Windows>:${HAVE_GETOPT_H}>) + target_link_libraries(stethoscope PRIVATE monetdb_config_header diff --git a/clients/odbc/driver/CMakeLists.txt b/clients/odbc/driver/CMakeLists.txt --- a/clients/odbc/driver/CMakeLists.txt +++ b/clients/odbc/driver/CMakeLists.txt @@ -106,6 +106,8 @@ target_sources(MonetODBC ODBC.syms) target_include_directories(MonetODBC + PRIVATE + $<$<BOOL:${ODBC_FOUND}>:${ODBC_INCLUDE_DIR}> PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/monetdb>) @@ -118,8 +120,7 @@ target_link_libraries(MonetODBC PRIVATE monetdb_config_header mutils - mapi - ODBC::ODBC) + mapi) install(TARGETS MonetODBC diff --git a/clients/odbc/samples/CMakeLists.txt b/clients/odbc/samples/CMakeLists.txt --- a/clients/odbc/samples/CMakeLists.txt +++ b/clients/odbc/samples/CMakeLists.txt @@ -6,7 +6,7 @@ # Copyright 1997 - July 2008 CWI, August 2008 - 2020 MonetDB B.V. #]] -include_directories(${ODBC_INCLUDE_DIR}) +include_directories($<$<BOOL:${ODBC_FOUND}>:${ODBC_INCLUDE_DIR}>) if(TESTING) add_executable(odbcsample1 diff --git a/clients/odbc/setup/CMakeLists.txt b/clients/odbc/setup/CMakeLists.txt --- a/clients/odbc/setup/CMakeLists.txt +++ b/clients/odbc/setup/CMakeLists.txt @@ -15,6 +15,8 @@ target_sources(MonetODBCs drvcfg.h) target_include_directories(MonetODBCs + PRIVATE + $<$<BOOL:${ODBC_FOUND}>:${ODBC_INCLUDE_DIR}> PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/monetdb>) @@ -26,8 +28,7 @@ target_compile_definitions(MonetODBCs target_link_libraries(MonetODBCs PRIVATE monetdb_config_header - mutils - ODBC::ODBC) + mutils) install(TARGETS MonetODBCs diff --git a/cmake/Modules/FindUUID.cmake b/cmake/Modules/FindUUID.cmake --- a/cmake/Modules/FindUUID.cmake +++ b/cmake/Modules/FindUUID.cmake @@ -15,9 +15,7 @@ else() endif() # Look for the library. find_library(UUID_LIBRARIES NAMES uuid) # Linux requires a separate library for UUID -if(UUID_LIBRARIES) - set(CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES};${UUID_LIBRARIES}") -else() +if(NOT UUID_LIBRARIES) set(UUID_LIBRARIES "" CACHE INTERNAL "uuid libraries path") endif() # Find uuid_generate symbol, which we require and some platforms don't have it diff --git a/cmake/monetdb-defines.cmake b/cmake/monetdb-defines.cmake --- a/cmake/monetdb-defines.cmake +++ b/cmake/monetdb-defines.cmake @@ -236,8 +236,8 @@ macro(monetdb_macro_variables) endmacro() macro(monetdb_configure_crypto) - cmake_push_check_state() if(COMMONCRYPTO_FOUND) + cmake_push_check_state() #set(CMAKE_REQUIRED_INCLUDES "${COMMONCRYPTO_INCUDE_DIR}") set(CMAKE_REQUIRED_LIBRARIES "${COMMONCRYPTO_LIBRARIES}") @@ -254,8 +254,10 @@ macro(monetdb_configure_crypto) set_target_properties(OpenSSL::Crypto PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES "C" IMPORTED_LOCATION "${COMMONCRYPTO_LIBRARIES}") + cmake_pop_check_state() endif() if(OPENSSL_FOUND) + cmake_push_check_state() #set(CMAKE_REQUIRED_INCLUDES "${OPENSSL_INCUDE_DIR}") #set(CMAKE_REQUIRED_LIBRARIES "${OPENSSL_LIBRARIES}") @@ -272,8 +274,8 @@ macro(monetdb_configure_crypto) check_symbol_exists("SHA256_Update" "openssl/sha.h" HAVE_SHA256_UPDATE) check_symbol_exists("SHA384_Update" "openssl/sha.h" HAVE_SHA384_UPDATE) check_symbol_exists("SHA512_Update" "openssl/sha.h" HAVE_SHA512_UPDATE) + cmake_pop_check_state() endif() - cmake_pop_check_state() endmacro() macro(monetdb_configure_sizes) diff --git a/common/stream/CMakeLists.txt b/common/stream/CMakeLists.txt --- a/common/stream/CMakeLists.txt +++ b/common/stream/CMakeLists.txt @@ -59,7 +59,7 @@ if(WIN32) endif() target_link_libraries(stream - PUBLIC + PRIVATE $<$<BOOL:${ZLIB_FOUND}>:ZLIB::ZLIB> $<$<BOOL:${BZIP2_FOUND}>:BZip2::BZip2> $<$<BOOL:${CURL_FOUND}>:CURL::libcurl> @@ -67,7 +67,6 @@ target_link_libraries(stream $<$<BOOL:${LZ4_FOUND}>:LZ4::LZ4> $<$<BOOL:${SNAPPY_FOUND}>:SNAPPY::SNAPPY> $<$<BOOL:${Iconv_FOUND}>:Iconv::Iconv> - PRIVATE matomic monetdb_config_header $<$<PLATFORM_ID:Windows>:ws2_32> diff --git a/common/utils/CMakeLists.txt b/common/utils/CMakeLists.txt --- a/common/utils/CMakeLists.txt +++ b/common/utils/CMakeLists.txt @@ -55,9 +55,8 @@ target_include_directories(mcrypt $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/monetdb>) target_link_libraries(mcrypt - PUBLIC + PRIVATE $<$<BOOL:${OPENSSL_FOUND}>:OpenSSL::Crypto> - PRIVATE monetdb_config_header) if(WIN32) @@ -92,10 +91,9 @@ target_include_directories(msabaoth $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/monetdb>) target_link_libraries(msabaoth - PUBLIC + PRIVATE $<$<BOOL:${UUID_FOUND}>:UUID::UUID> $<$<BOOL:${OPENSSL_FOUND}>:OpenSSL::Crypto> - PRIVATE mutils monetdb_config_header) diff --git a/gdk/CMakeLists.txt b/gdk/CMakeLists.txt --- a/gdk/CMakeLists.txt +++ b/gdk/CMakeLists.txt @@ -83,14 +83,15 @@ target_sources(bat target_include_directories(bat PUBLIC + $<TARGET_PROPERTY:stream,INTERFACE_INCLUDE_DIRECTORIES> + $<TARGET_PROPERTY:matomic,INTERFACE_INCLUDE_DIRECTORIES> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/monetdb>) target_link_libraries(bat - PUBLIC + PRIVATE stream matomic - PRIVATE monetdb_config_header moptions mutils diff --git a/geom/lib/CMakeLists.txt b/geom/lib/CMakeLists.txt --- a/geom/lib/CMakeLists.txt +++ b/geom/lib/CMakeLists.txt @@ -15,16 +15,19 @@ if(GEOS_FOUND) libgeom.h) target_include_directories(geomlib + PRIVATE + $<TARGET_PROPERTY:mal,INTERFACE_INCLUDE_DIRECTORIES> PUBLIC - $<TARGET_PROPERTY:mal,INCLUDE_DIRECTORIES> + $<TARGET_PROPERTY:Geos::Geos,INTERFACE_INCLUDE_DIRECTORIES> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> - $<INSTALL_INTERFACE:${INCLUDEDIR}/monetdb>) + $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/monetdb>) target_link_libraries(geomlib PRIVATE mutils stream bat + monetdb_config_header Geos::Geos $<$<BOOL:${PROJ_FOUND}>:PROJ::PROJ>) diff --git a/geom/monetdb5/CMakeLists.txt b/geom/monetdb5/CMakeLists.txt --- a/geom/monetdb5/CMakeLists.txt +++ b/geom/monetdb5/CMakeLists.txt @@ -30,8 +30,14 @@ if(GEOS_FOUND) target_include_directories(geomodule PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}> - $<TARGET_PROPERTY:mal,INCLUDE_DIRECTORIES> - $<TARGET_PROPERTY:sql,INCLUDE_DIRECTORIES> + $<TARGET_PROPERTY:mal,INTERFACE_INCLUDE_DIRECTORIES> + $<TARGET_PROPERTY:malmodules,INTERFACE_INCLUDE_DIRECTORIES> + $<TARGET_PROPERTY:atoms,INTERFACE_INCLUDE_DIRECTORIES> + $<TARGET_PROPERTY:sql,INTERFACE_INCLUDE_DIRECTORIES> + $<TARGET_PROPERTY:sqlinclude,INTERFACE_INCLUDE_DIRECTORIES> + $<TARGET_PROPERTY:sqlserver,INTERFACE_INCLUDE_DIRECTORIES> + $<TARGET_PROPERTY:sqlcommon,INTERFACE_INCLUDE_DIRECTORIES> + $<TARGET_PROPERTY:sqlstorage,INTERFACE_INCLUDE_DIRECTORIES> PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> $<INSTALL_INTERFACE:${INCLUDEDIR}/monetdb>) diff --git a/monetdb5/extras/mal_optimizer_template/CMakeLists.txt b/monetdb5/extras/mal_optimizer_template/CMakeLists.txt --- a/monetdb5/extras/mal_optimizer_template/CMakeLists.txt +++ b/monetdb5/extras/mal_optimizer_template/CMakeLists.txt @@ -14,8 +14,8 @@ target_sources(opt_sql_append target_include_directories(opt_sql_append PRIVATE - $<TARGET_PROPERTY:mal,INCLUDE_DIRECTORIES> - $<TARGET_PROPERTY:optimizer,INCLUDE_DIRECTORIES> + $<TARGET_PROPERTY:mal,INTERFACE_INCLUDE_DIRECTORIES> + $<TARGET_PROPERTY:optimizer,INTERFACE_INCLUDE_DIRECTORIES> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> $<INSTALL_INTERFACE:${INCLUDEDIR}/monetdb>) @@ -23,7 +23,6 @@ target_link_libraries(opt_sql_append PRIVATE monetdb_config_header mutils - stream bat monetdb5) diff --git a/monetdb5/extras/rapi/CMakeLists.txt b/monetdb5/extras/rapi/CMakeLists.txt --- a/monetdb5/extras/rapi/CMakeLists.txt +++ b/monetdb5/extras/rapi/CMakeLists.txt @@ -15,9 +15,14 @@ if(LIBR_FOUND) target_include_directories(rapi PRIVATE - $<TARGET_PROPERTY:mapi,INCLUDE_DIRECTORIES> - $<TARGET_PROPERTY:mal,INCLUDE_DIRECTORIES> - $<TARGET_PROPERTY:sql,INCLUDE_DIRECTORIES> + $<TARGET_PROPERTY:mapi,INTERFACE_INCLUDE_DIRECTORIES> + $<TARGET_PROPERTY:mal,INTERFACE_INCLUDE_DIRECTORIES> + $<TARGET_PROPERTY:malmodules,INTERFACE_INCLUDE_DIRECTORIES> + $<TARGET_PROPERTY:atoms,INTERFACE_INCLUDE_DIRECTORIES> + $<TARGET_PROPERTY:sql,INTERFACE_INCLUDE_DIRECTORIES> + $<TARGET_PROPERTY:sqlserver,INTERFACE_INCLUDE_DIRECTORIES> + $<TARGET_PROPERTY:sqlcommon,INTERFACE_INCLUDE_DIRECTORIES> + $<TARGET_PROPERTY:sqlstorage,INTERFACE_INCLUDE_DIRECTORIES> _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list