Changeset: db32e6627e09 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=db32e6627e09
Modified Files:
        CMakeLists.txt
        cmake/BuildMacros.cmake
        embedded/CMakeLists.txt
        gdk/gdk_posix.c
Branch: cmake-monetdblite
Log Message:

Compile as object files instead of a static library to not lose symbols on some 
platforms. Also I realized there is no need to link monetdblite to kvm and 
psapi libraries.


diffs (truncated from 438 to 300 lines):

diff --git a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -355,7 +355,7 @@ if(NOT HAVE_PYTHON3)
        else()
                set(ENABLE_SQL "NO" CACHE STRING "A valid Python 3 interpreter 
is required for MonetDB/SQL" FORCE)
        endif()
-       if(${ENABLE_EMBEDDED} MATCHES "^SHARED|STATIC$")
+       if(${ENABLE_EMBEDDED} MATCHES "^SHARED|OBJECT")
                message(FATAL_ERROR "A valid Python 3 interpreter is required 
for MonetDB embedded library")
        else()
                set(ENABLE_EMBEDDED "NO" CACHE STRING "A valid Python 3 
interpreter is required for MonetDB embedded library" FORCE)
@@ -368,7 +368,7 @@ if(NOT BISON_FOUND)
        if(${ENABLE_SQL} STREQUAL "YES")
                message(FATAL_ERROR "MonetDB/SQL requires bison")
        endif()
-       if(${ENABLE_EMBEDDED} MATCHES "^SHARED|STATIC$")
+       if(${ENABLE_EMBEDDED} MATCHES "^SHARED|OBJECT")
                message(FATAL_ERROR "MonetDB embedded library requires bison")
        endif()
        set(ENABLE_SQL "NO" CACHE STRING "Bison is required for MonetDB/SQL" 
FORCE)
@@ -384,12 +384,6 @@ else()
        set(ICONV_LIBRARIES "" CACHE INTERNAL "iconv libraries to link")
 endif()
 
-# Thread libraries
-if(NOT WIN32)
-       set(THREADS_PREFER_PTHREAD_FLAG ON) # We do prefer pthreads on UNIX 
platforms
-endif()
-find_package(Threads)
-set(THREAD_LIBRARIES "${CMAKE_THREAD_LIBS_INIT}")
 check_include_file("pthread.h" HAVE_PTHREAD_H) # Distinguish between posix 
thread and win32 thread libraries
 
 # Password hash algorithm
@@ -507,25 +501,7 @@ if(NOT HAVE_LIBPCRE AND NOT HAVE_POSIX_R
        endif()
 endif()
 
-# System libraries and optional extra libraries
-set(DL_LIBRARIES "")
-set(KVM_LIBRARIES "")
-set(MATH_LIBRARIES "")
-set(PSAPI_LIBRARIES "")
-set(SOCKET_LIBRARIES "")
-if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
-       set(DL_LIBRARIES "${CMAKE_DL_LIBS}")
-endif()
-if(${CMAKE_SYSTEM_NAME} MATCHES "^FreeBSD|DragonFly|NetBSD$") # Warning - I 
checked the man pages and only tested on FreeBSD yet
-       set(KVM_LIBRARIES "kvm")
-endif()
-if(${CMAKE_SYSTEM_NAME} MATCHES "^Linux|FreeBSD|NetBSD$")
-       set(MATH_LIBRARIES "m")
-endif()
-if(WIN32) # Both these libraries and respective include files (psapi.h and 
winsock2.h) come with the Windows SDK <version>, which should be installed with 
Visual Studio and set on the path by MSVC
-       set(PSAPI_LIBRARIES "psapi") # We need the psapi library for 
GetProcessMemoryInfo function, which is no longer required from Windows 7 and 
Windows Server 2008 R2 up (the latter is suported until January 2020)
-       set(SOCKET_LIBRARIES "ws2_32")
-endif()
+set_system_libraries() # Inside BuildMacros.cmake file
 include(FindExtraLibraries)
 
 # C types existence
@@ -601,12 +577,12 @@ if("${ENABLE_SQL}" MATCHES "^YES|AUTO$")
 else()
        set(HAVE_SQL OFF CACHE INTERNAL "MonetDB/SQL is available" FORCE)
 endif()
-if(${ENABLE_EMBEDDED} MATCHES "^SHARED|STATIC$")
+if(${ENABLE_EMBEDDED} MATCHES "^SHARED|OBJECT")
        set(HAVE_EMBEDDED ON CACHE INTERNAL "MonetDB embedded library is 
enabled" FORCE)
 elseif(${ENABLE_EMBEDDED} STREQUAL "NO")
        set(HAVE_EMBEDDED OFF CACHE INTERNAL "MonetDB embedded library is 
enabled" FORCE)
 else()
-       message(FATAL_ERROR "ENABLE_EMBEDDED parameter must be either SHARED, 
STATIC or NO")
+       message(FATAL_ERROR "ENABLE_EMBEDDED parameter must be either SHARED, 
OBJECT or NO")
 endif()
 if(${ENABLE_STATIC_ANALYSIS} MATCHES "^YES|AUTO$")
        set(STATIC_CODE_ANALYSIS ON CACHE INTERNAL "Static code analysis is 
available" FORCE)
diff --git a/cmake/BuildMacros.cmake b/cmake/BuildMacros.cmake
--- a/cmake/BuildMacros.cmake
+++ b/cmake/BuildMacros.cmake
@@ -37,3 +37,31 @@ macro(BUILD_EMBEDDED_SQL_SCRIPTS BUNDLE_
                message(FATAL_ERROR "Could not generate ${BUNDLE_NAME}.h file")
        endif()
 endmacro()
+
+# This macros sets the required system libraries besides the C standard 
library. It should be used by
+macro(SET_SYSTEM_LIBRARIES)
+       if(NOT WIN32)
+               set(THREADS_PREFER_PTHREAD_FLAG ON) # We do prefer pthreads on 
UNIX platforms
+       endif()
+       find_package(Threads)
+       set(THREAD_LIBRARIES "${CMAKE_THREAD_LIBS_INIT}")
+
+       set(DL_LIBRARIES "")
+       set(KVM_LIBRARIES "")
+       set(MATH_LIBRARIES "")
+       set(PSAPI_LIBRARIES "")
+       set(SOCKET_LIBRARIES "")
+       if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
+               set(DL_LIBRARIES "${CMAKE_DL_LIBS}")
+       endif()
+       if(${CMAKE_SYSTEM_NAME} MATCHES "^FreeBSD|DragonFly|NetBSD$") # Warning 
- I checked the man pages and only tested on FreeBSD yet
+               set(KVM_LIBRARIES "kvm")
+       endif()
+       if(${CMAKE_SYSTEM_NAME} MATCHES "^Linux|FreeBSD|NetBSD$")
+               set(MATH_LIBRARIES "m")
+       endif()
+       if(WIN32) # Both these libraries and respective include files (psapi.h 
and winsock2.h) come with the Windows SDK <version>, which should be installed 
with Visual Studio and set on the path by MSVC
+               set(PSAPI_LIBRARIES "psapi") # We need the psapi library for 
GetProcessMemoryInfo function, which is no longer required from Windows 7 and 
Windows Server 2008 R2 up (the latter is suported until January 2020)
+               set(SOCKET_LIBRARIES "ws2_32")
+       endif()
+endmacro()
diff --git a/embedded/CMakeLists.txt b/embedded/CMakeLists.txt
--- a/embedded/CMakeLists.txt
+++ b/embedded/CMakeLists.txt
@@ -85,127 +85,69 @@ set(SQL_SCRIPTS_LIST
 build_embedded_mal_scripts(mal_inline malModules --remove-command-comments 
"${MAL_SCRIPTS_LIST}")
 build_embedded_sql_scripts(createdb_inline1 "${SQL_SCRIPTS_LIST}")
 
-# All symbols present in monetdblite_no_export and and not required by 
monetdblite will be ditched on Windows
-add_library(monetdblite_no_export STATIC
-               ../common/options/monet_options.c
-               ../common/stream/stream.c
-               ../common/utils/mutils.c
-               ../common/utils/revision.c
-               ../gdk/gdk_aggr.c
-               ../gdk/gdk_align.c
-               ../gdk/gdk_analytic_bounds.c
-               ../gdk/gdk_analytic_func.c
-               ../gdk/gdk_atoms.c
-               ../gdk/gdk_bat.c
-               ../gdk/gdk_batop.c
-               ../gdk/gdk_bbp.c
-               ../gdk/gdk_calc.c
-               ../gdk/gdk_cross.c
-               ../gdk/gdk_delta.c
-               ../gdk/gdk_firstn.c
-               ../gdk/gdk_group.c
-               ../gdk/gdk_hash.c
-               ../gdk/gdk_heap.c
-               ../gdk/gdk_imprints.c
-               ../gdk/gdk_join.c
-               ../gdk/gdk_logger.c
-               ../gdk/gdk_orderidx.c
-               ../gdk/gdk_posix.c
-               ../gdk/gdk_project.c
-               ../gdk/gdk_qsort.c
-               ../gdk/gdk_sample.c
-               ../gdk/gdk_search.c
-               ../gdk/gdk_select.c
-               ../gdk/gdk_ssort.c
-               ../gdk/gdk_storage.c
-               ../gdk/gdk_string.c
-               ../gdk/gdk_system.c
-               ../gdk/gdk_tm.c
-               ../gdk/gdk_unique.c
-               ../gdk/gdk_utils.c
-               ../gdk/gdk_value.c
-               ../monetdb5/mal/mal.c
-               ../monetdb5/mal/mal_atom.c
-               ../monetdb5/mal/mal_builder.c
-               ../monetdb5/mal/mal_client.c
-               ../monetdb5/mal/mal_dataflow.c
-               ../monetdb5/mal/mal_embedded.c
-               ../monetdb5/mal/mal_exception.c
-               ../monetdb5/mal/mal_function.c
-               ../monetdb5/mal/mal_import.c
-               ../monetdb5/mal/mal_instruction.c
-               ../monetdb5/mal/mal_interpreter.c
-               ../monetdb5/mal/mal_linker.c
-               ../monetdb5/mal/mal_listing.c
-               ../monetdb5/mal/mal_module.c
-               ../monetdb5/mal/mal_namespace.c
-               ../monetdb5/mal/mal_parser.c
-               ../monetdb5/mal/mal_resolve.c
-               ../monetdb5/mal/mal_resource.c
-               ../monetdb5/mal/mal_runtime.c
-               ../monetdb5/mal/mal_scenario.c
-               ../monetdb5/mal/mal_session.c
-               ../monetdb5/mal/mal_stack.c
-               ../monetdb5/mal/mal_type.c
-               ../monetdb5/mal/mal_utils.c
-               ../sql/backends/monet5/mal_backend.c
-               ../sql/backends/monet5/rel_bin.c
-               ../sql/backends/monet5/sql_optimizer.c
-               ../sql/backends/monet5/sql_upgrades.c
-               ../sql/common/sql_backend.c
-               ../sql/common/sql_changeset.c
-               ../sql/common/sql_hash.c
-               ../sql/common/sql_keyword.c
-               ../sql/common/sql_list.c
-               ../sql/common/sql_mem.c
-               ../sql/common/sql_stack.c
-               ../sql/common/sql_string.c
-               ../sql/common/sql_types.c
-               ../sql/server/rel_distribute.c
-               ../sql/server/rel_dump.c
-               ../sql/server/rel_exp.c
-               ../sql/server/rel_optimizer.c
-               ../sql/server/rel_partition.c
-               ../sql/server/rel_planner.c
-               ../sql/server/rel_prop.c
-               ../sql/server/rel_psm.c
-               ../sql/server/rel_rel.c
-               ../sql/server/rel_remote.c
-               ../sql/server/rel_schema.c
-               ../sql/server/rel_select.c
-               ../sql/server/rel_semantic.c
-               ../sql/server/rel_sequence.c
-               ../sql/server/rel_trans.c
-               ../sql/server/rel_updates.c
-               ../sql/server/rel_unnest.c
-               ../sql/server/rel_xml.c
-               ../sql/server/sql_atom.c
-               ../sql/server/sql_datetime.c
-               ../sql/server/sql_decimal.c
-               ../sql/server/sql_env.c
-               ../sql/server/sql_mvc.c
-               ../sql/server/sql_privileges.c
-               ../sql/server/sql_qc.c
-               ../sql/server/sql_query.c
-               ../sql/server/sql_scan.c
-               ../sql/server/sql_semantic.c
-               ../sql/server/sql_symbol.c
-               ../sql/storage/bat/bat_logger.c
-               ../sql/storage/bat/bat_storage.c
-               ../sql/storage/bat/bat_table.c
-               ../sql/storage/bat/bat_utils.c
-               ../sql/storage/bat/res_table.c
-               ../sql/storage/sql_catalog.c
-               ../sql/storage/store.c
-               ../sql/storage/store_dependency.c
-               ../sql/storage/store_sequence.c
-               $<TARGET_OBJECTS:bisonlite_obj>)
-set_target_properties(monetdblite_no_export PROPERTIES 
POSITION_INDEPENDENT_CODE ON)
-target_link_libraries(monetdblite_no_export PUBLIC ${MATH_LIBRARIES} 
${THREAD_LIBRARIES} ${DL_LIBRARIES}
-                                         ${KVM_LIBRARIES} ${PSAPI_LIBRARIES})
-
-set(MONETDBLITE_TRANSLATIONS_UNITS
+set(MONETDBLITE_TRANSLATION_UNITS
        monetdb_embedded.c
+       ../common/options/monet_options.c
+       ../common/stream/stream.c
+       ../common/utils/mutils.c
+       ../common/utils/revision.c
+       ../gdk/gdk_aggr.c
+       ../gdk/gdk_align.c
+       ../gdk/gdk_analytic_bounds.c
+       ../gdk/gdk_analytic_func.c
+       ../gdk/gdk_atoms.c
+       ../gdk/gdk_bat.c
+       ../gdk/gdk_batop.c
+       ../gdk/gdk_bbp.c
+       ../gdk/gdk_calc.c
+       ../gdk/gdk_cross.c
+       ../gdk/gdk_delta.c
+       ../gdk/gdk_firstn.c
+       ../gdk/gdk_group.c
+       ../gdk/gdk_hash.c
+       ../gdk/gdk_heap.c
+       ../gdk/gdk_imprints.c
+       ../gdk/gdk_join.c
+       ../gdk/gdk_logger.c
+       ../gdk/gdk_orderidx.c
+       ../gdk/gdk_posix.c
+       ../gdk/gdk_project.c
+       ../gdk/gdk_qsort.c
+       ../gdk/gdk_sample.c
+       ../gdk/gdk_search.c
+       ../gdk/gdk_select.c
+       ../gdk/gdk_ssort.c
+       ../gdk/gdk_storage.c
+       ../gdk/gdk_string.c
+       ../gdk/gdk_system.c
+       ../gdk/gdk_tm.c
+       ../gdk/gdk_unique.c
+       ../gdk/gdk_utils.c
+       ../gdk/gdk_value.c
+       ../monetdb5/mal/mal.c
+       ../monetdb5/mal/mal_atom.c
+       ../monetdb5/mal/mal_builder.c
+       ../monetdb5/mal/mal_client.c
+       ../monetdb5/mal/mal_dataflow.c
+       ../monetdb5/mal/mal_embedded.c
+       ../monetdb5/mal/mal_exception.c
+       ../monetdb5/mal/mal_function.c
+       ../monetdb5/mal/mal_import.c
+       ../monetdb5/mal/mal_instruction.c
+       ../monetdb5/mal/mal_interpreter.c
+       ../monetdb5/mal/mal_linker.c
+       ../monetdb5/mal/mal_listing.c
+       ../monetdb5/mal/mal_module.c
+       ../monetdb5/mal/mal_namespace.c
+       ../monetdb5/mal/mal_parser.c
+       ../monetdb5/mal/mal_resolve.c
+       ../monetdb5/mal/mal_resource.c
+       ../monetdb5/mal/mal_runtime.c
+       ../monetdb5/mal/mal_scenario.c
+       ../monetdb5/mal/mal_session.c
+       ../monetdb5/mal/mal_stack.c
+       ../monetdb5/mal/mal_type.c
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to