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