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

Reply via email to