diff --git a/CMakeLists.txt b/CMakeLists.txt index 8c23ec3323b..3454b6d1bc9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,7 +17,7 @@ # ################################################################################ -cmake_minimum_required(VERSION 2.8.12) +cmake_minimum_required(VERSION 3.20) # In-source builds are not possible and so disabled. if (${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) @@ -52,6 +52,14 @@ set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "CMake Targets") project("firebird" C CXX) +set(CMAKE_C_STANDARD 17) +set(CMAKE_C_STANDARD_REQUIRED ON) +set(CMAKE_C_EXTENSIONS ON) + +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS ON) + ######################################## # build type settings ######################################## @@ -152,6 +160,166 @@ if (FREEBSD) set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}) endif() +################################################################################ +# +# Platform/CPU Detection and Definitions (from configure.ac) +# +################################################################################ + +# Set OS and CPU specific definitions used by common.h and other headers. +# This logic mirrors the main case statement in the autoconf script. + +include(CheckTypeSize) +include(TestBigEndian) + +# Check for byte order (endianness) +test_big_endian(WORDS_BIGENDIAN) +if(WORDS_BIGENDIAN) + add_definitions(-DWORDS_BIGENDIAN) +endif() + +if (WIN32) + add_definitions(-DWIN_NT) + if (CMAKE_SYSTEM_PROCESSOR MATCHES "AMD64|x86_64") + add_definitions(-DAMD64) + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64") + add_definitions(-DARM64) + else() + add_definitions(-DI386) + endif() +elseif(APPLE) + add_definitions(-DDARWIN) + if (CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64") + add_definitions(-DARM64) + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64") + add_definitions(-DAMD64) + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i.86") + add_definitions(-DI386) + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "powerpc|ppc") + check_type_size("void*" SIZEOF_VOID_P) + if (SIZEOF_VOID_P EQUAL 8) + add_definitions(-D__ppc64__) + else() + add_definitions(-D__ppc__) + endif() + endif() +elseif(LINUX) + add_definitions(-DLINUX) + if (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64") + add_definitions(-DAMD64) + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i.86") + add_definitions(-DI386) + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64") + add_definitions(-DARM64) + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm") + add_definitions(-DARM) + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "ia64") + add_definitions(-DIA64) + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64le") + add_definitions(-DPPC64EL) + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64" AND NOT CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64le") + add_definitions(-DPPC64) + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "powerpc|ppc") + add_definitions(-DPPC) + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "riscv64") + add_definitions(-DRISCV64) + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "loongarch") + add_definitions(-DLOONGARCH) + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "sparc") + add_definitions(-Dsparc) + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "mips64el") + add_definitions(-DMIPS64EL) + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "mipsel") + add_definitions(-DMIPSEL) + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "mips") + add_definitions(-DMIPSEB) + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "s390x") + add_definitions(-D__s390x__) + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "s390") + add_definitions(-D__s390__) + endif() +elseif(CMAKE_SYSTEM_NAME MATCHES "FreeBSD") + add_definitions(-DFREEBSD) + if (CMAKE_SYSTEM_PROCESSOR MATCHES "amd64|x86_64") + add_definitions(-DAMD64) + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i.86") + add_definitions(-DI386) + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64le") + add_definitions(-DPPC64EL) + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64") + add_definitions(-DPPC64) + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "powerpc|ppc") + add_definitions(-DPPC) + endif() +elseif(CMAKE_SYSTEM_NAME MATCHES "NetBSD") + add_definitions(-DNETBSD) + if (CMAKE_SYSTEM_PROCESSOR MATCHES "i.86") + add_definitions(-D__i386__) + endif() +elseif(CMAKE_SYSTEM_NAME MATCHES "AIX") + add_definitions(-D_AIX) + check_type_size("void*" SIZEOF_VOID_P) + add_definitions(-DSIZEOF_VOID_P=${SIZEOF_VOID_P}) +elseif(CMAKE_SYSTEM_NAME MATCHES "SunOS") + add_definitions(-D__sun -DSOLARIS) + if(CMAKE_SYSTEM_PROCESSOR MATCHES "sparc") + add_definitions(-D__sparc) + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|amd64") + add_definitions(-D__amd64) + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i.86") + add_definitions(-D__i386) + endif() +elseif(CMAKE_SYSTEM_NAME MATCHES "HP-UX") + add_definitions(-DHPUX) +endif() + +######################################## +# LIBRARY Boost +######################################## + +# Provide an option to use system-wide Boost, defaulting to the embedded version. +option(USE_SYSTEM_BOOST "Use system-wide Boost library instead of embedded copy" OFF) + +if(USE_SYSTEM_BOOST) + # Find a system-installed Boost library. + message(STATUS "Searching for system-wide Boost library...") + find_package(Boost 1.70.0 COMPONENTS system thread REQUIRED) + + if(Boost_FOUND) + message(STATUS "Found system Boost: ${Boost_VERSION_STRING}") + # The variables Boost_INCLUDE_DIRS and Boost_LIBRARIES are set by find_package + set(BOOST_INCLUDE_DIRS ${Boost_INCLUDE_DIRS}) + set(BOOST_LIBRARIES ${Boost_LIBRARIES}) + else() + message(FATAL_ERROR "System Boost was requested but not found. Please install the Boost development packages (e.g., libboost-all-dev on Debian/Ubuntu).") + endif() +else() + # Use the embedded header-only Boost library. + message(STATUS "Using embedded Boost library") + set(BOOST_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/extern/boost) + # For a header-only setup, there are no libraries to link. + set(BOOST_LIBRARIES "") +endif() + +######################################## +# LIBRARY libcds +######################################## + +message(STATUS "Using embedded libcds library") + +# Configure the libcds sub-project before adding it. +# We disable its tests as we don't need to build/run them as part of Firebird. +set(WITH_TESTS OFF CACHE BOOL "Disable libcds's own tests" FORCE) +set(ENABLE_UNIT_TEST OFF CACHE BOOL "Disable libcds's unit tests" FORCE) +set(ENABLE_STRESS_TEST OFF CACHE BOOL "Disable libcds's stress tests" FORCE) +add_subdirectory(extern/libcds) + +# We define a variable pointing to the static version of the library ('cds-s'). +# This is the target we will link against. +set(CDS_LIBRARIES cds-s) + +######################################## + set(FB_PREFIX ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}) set(FB_IPC_NAME "FirebirdIPI") set(FB_LOGFILENAME "firebird.log") @@ -206,14 +374,14 @@ if (MINGW) # 0x0601 is Windows 7 - see also comments in autoconfig_msvc.h add_definitions(-D_WIN32_WINNT=0x0601) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4 -std=c++20") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4") endif() if (UNIX) set(OS_DIR posix) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -msse4 -std=c++20") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -msse4") if (NOT CMAKE_CROSSCOMPILING) set(LIB_readline readline) @@ -346,7 +514,7 @@ include_directories("${CMAKE_CURRENT_BINARY_DIR}/src/include/gen") file(GLOB libtommath_src "extern/libtommath/*.c" "extern/libtommath/*.h") -add_library (libtommath ${libtommath_src}) +add_library (libtommath STATIC ${libtommath_src}) project_group (libtommath Extern) @@ -360,6 +528,7 @@ list(FILTER libtomcrypt_src EXCLUDE REGEX ".*whirltab.c") list(FILTER libtomcrypt_src EXCLUDE REGEX ".*sober128tab.c") add_library (libtomcrypt ${libtomcrypt_src}) +target_link_libraries (libtomcrypt libtommath) target_compile_definitions (libtomcrypt PRIVATE LTC_NO_ROLC LTC_SOURCE) project_group (libtomcrypt Extern) @@ -375,6 +544,36 @@ list(FILTER decNumber_src EXCLUDE REGEX ".*decCommon.c") add_library (decNumber ${decNumber_src}) project_group (decNumber Extern) +######################################## +# LIBRARY re2 +######################################## + +# This is needed for a full server build (not client-only). +# We can either use a system-provided re2 or the embedded one. +option(USE_SYSTEM_RE2 "Use system-wide re2 library instead of embedded copy" OFF) + +if(USE_SYSTEM_RE2) + # Find system re2 + find_path(RE2_INCLUDE_DIR re2/re2.h) + find_library(RE2_LIBRARY NAMES re2) + + if(RE2_INCLUDE_DIR AND RE2_LIBRARY) + message(STATUS "Found system RE2: ${RE2_LIBRARY}") + include_directories(${RE2_INCLUDE_DIR}) + set(RE2_LIBRARIES ${RE2_LIBRARY}) + else() + message(FATAL_ERROR "System RE2 not found. Please install re2 development package or disable USE_SYSTEM_RE2 by setting it to OFF.") + endif() +else() + # Use embedded re2 by adding its directory as a sub-project. + message(STATUS "Using embedded re2 library") + # Configure the re2 sub-project: build it as a static library and disable its tests. + set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build RE2 as a static library" FORCE) + set(RE2_BUILD_TESTING OFF CACHE BOOL "Disable RE2's own tests" FORCE) + + add_subdirectory(extern/re2) + set(RE2_LIBRARIES re2) +endif() ######################################## # EXECUTABLE btyacc @@ -385,6 +584,9 @@ file(GLOB btyacc_src "extern/btyacc/*.c" "extern/btyacc/*.h") if (NOT CMAKE_CROSSCOMPILING) add_executable (btyacc ${btyacc_src}) +set_property(TARGET btyacc PROPERTY C_STANDARD 17) +set_property(TARGET btyacc PROPERTY C_STANDARD_REQUIRED OFF) +set_property(TARGET btyacc PROPERTY C_EXTENSIONS ON) project_group (btyacc Extern) set_output_directory (btyacc . CURRENT_DIR) diff --git a/builds/cmake/BuildFunctions.cmake b/builds/cmake/BuildFunctions.cmake index 5469c953a20..8208ddac798 100644 --- a/builds/cmake/BuildFunctions.cmake +++ b/builds/cmake/BuildFunctions.cmake @@ -114,7 +114,6 @@ function(epp_process type files) COMMAND ${CMAKE_COMMAND} -E make_directory ${dir} COMMAND ${CMAKE_COMMAND} -E copy_if_different metadata.fdb ${dir}/yachts.lnk COMMAND ${CMAKE_COMMAND} -E copy_if_different security.fdb ${dir}/security.fdb - COMMAND ${CMAKE_COMMAND} -E copy_if_different msg.fdb ${dir}/msg.fdb COMMAND ${ARGN} -b ${dir}/ ${in} ${out} ) endif() @@ -315,8 +314,7 @@ function(create_boot_commands) boot_gpre boot_gbak boot_gfix - build_msg - codes + build_file gpre_boot ) foreach(cmd ${cmd_list}) diff --git a/extern/libcds/CMakeLists.txt b/extern/libcds/CMakeLists.txt index c64016f0b6b..5d867c2bc79 100644 --- a/extern/libcds/CMakeLists.txt +++ b/extern/libcds/CMakeLists.txt @@ -82,8 +82,8 @@ if(WITH_TESTS_COVERAGE) endif() endif(WITH_TESTS_COVERAGE) -set(CDS_SHARED_LIBRARY ${PROJECT_NAME}) -set(CDS_STATIC_LIBRARY ${PROJECT_NAME}-s) +set(CDS_SHARED_LIBRARY cds) +set(CDS_STATIC_LIBRARY cds-s) set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) set(CMAKE_INCLUDE_CURRENT_DIR ON) @@ -102,13 +102,13 @@ if(NOT CMAKE_BUILD_TYPE) endif() if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") - string(REGEX MATCHALL "-std=[^ ]+" cxx_std_found ${CMAKE_CXX_FLAGS} " dummy@rg") - if(cxx_std_found) - message("C++ std: ${cxx_std_found}") - else() - list(APPEND LIBCDS_PUBLIC_CXX_FLAGS "-std=c++11") - message("C++ std: -std=c++11 (default)") - endif() + # string(REGEX MATCHALL "-std=[^ ]+" cxx_std_found ${CMAKE_CXX_FLAGS} " dummy@rg") + # if(cxx_std_found) + # message("C++ std: ${cxx_std_found}") + # else() + # list(APPEND LIBCDS_PUBLIC_CXX_FLAGS "-std=c++11") + # message("C++ std: -std=c++11 (default)") + # endif() list(APPEND LIBCDS_PRIVATE_CXX_FLAGS "-Wall" "-Wextra" "-pedantic") @@ -170,6 +170,7 @@ if(MINGW) endif() add_library(${CDS_STATIC_LIBRARY} STATIC ${SOURCES}) +set_property(TARGET ${CDS_STATIC_LIBRARY} PROPERTY POSITION_INDEPENDENT_CODE ON) set_target_properties(${CDS_STATIC_LIBRARY} PROPERTIES DEBUG_POSTFIX "_d") if(MINGW) target_compile_definitions(${CDS_STATIC_LIBRARY} PRIVATE CDS_BUILD_STATIC_LIB) diff --git a/extern/re2/CMakeLists.txt b/extern/re2/CMakeLists.txt index f23bfa60124..8303edfdf7d 100644 --- a/extern/re2/CMakeLists.txt +++ b/extern/re2/CMakeLists.txt @@ -13,11 +13,6 @@ project(RE2 CXX) include(CTest) include(GNUInstallDirs) -if(NOT CMAKE_CXX_STANDARD) - set(CMAKE_CXX_STANDARD 11) - set(CMAKE_CXX_STANDARD_REQUIRED ON) -endif() - option(BUILD_SHARED_LIBS "build shared libraries" OFF) option(USEPCRE "use PCRE in tests and benchmarks" OFF) @@ -88,6 +83,9 @@ set(RE2_SOURCES ) add_library(re2 ${RE2_SOURCES}) +set_property(TARGET re2 PROPERTY C_STANDARD 11) +set_property(TARGET re2 PROPERTY C_STANDARD_REQUIRED ON) +set_property(TARGET re2 PROPERTY C_EXTENSIONS OFF) target_include_directories(re2 PUBLIC $) set_target_properties(re2 PROPERTIES SOVERSION ${SONAME} VERSION ${SONAME}.0.0) add_library(re2::re2 ALIAS re2) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 13059dc5ebe..aa93660012b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -39,8 +39,6 @@ set(epp_boot_files alice/alice_meta.epp gpre/std/gpre_meta.epp utilities/stats.epp - yvalve/array.epp - yvalve/blob.epp utilities/gstat/dba.epp ) set(epp_boot_gds_files @@ -56,11 +54,10 @@ set(epp_boot_gds_files jrd/met.epp jrd/scl.epp jrd/Function.epp + jrd/SystemTriggers.epp ) set(epp_master_files auth/SecurityDatabase/LegacyManagement.epp - msgs/build_file.epp - misc/codes.epp ) if (NOT CMAKE_CROSSCOMPILING) @@ -88,16 +85,7 @@ epp_process(master epp_master_files ${BOOT_GPRE_CMD} -n -m) ######################################## set(msgs_src - ${CMAKE_CURRENT_SOURCE_DIR}/msgs/facilities2.sql - ${CMAKE_CURRENT_SOURCE_DIR}/msgs/history2.sql - ${CMAKE_CURRENT_SOURCE_DIR}/msgs/locales.sql - ${CMAKE_CURRENT_SOURCE_DIR}/msgs/messages2.sql - ${CMAKE_CURRENT_SOURCE_DIR}/msgs/msg.sql ${CMAKE_CURRENT_SOURCE_DIR}/msgs/sqlstates.sql - ${CMAKE_CURRENT_SOURCE_DIR}/msgs/symbols2.sql - ${CMAKE_CURRENT_SOURCE_DIR}/msgs/system_errors2.sql - ${CMAKE_CURRENT_SOURCE_DIR}/msgs/transmsgs.de_DE2.sql - ${CMAKE_CURRENT_SOURCE_DIR}/msgs/transmsgs.fr_FR2.sql ) set(databases_src ${CMAKE_CURRENT_SOURCE_DIR}/dbs/security.sql @@ -143,7 +131,6 @@ add_custom_target(databases SOURCES ${databases_src} ) -add_dependencies_cc(databases msg_fdb) project_group(databases "Boot/Custom build steps") @@ -154,79 +141,16 @@ project_group(databases "Boot/Custom build steps") add_custom_command( OUTPUT firebird.msg DEPENDS - build_msg - msg_fdb + build_file # COMMAND ${CMAKE_COMMAND} -E remove firebird.msg - COMMAND ${BUILD_MSG_CMD} -D msg.fdb -P ${CMAKE_CURRENT_BINARY_DIR}/ -F firebird.msg -L all - COMMAND ${BUILD_MSG_CMD} -D msg.fdb -P ${CMAKE_CURRENT_BINARY_DIR}/ -F firebird.msg + COMMAND ${BUILD_FILE_CMD} -F firebird.msg COMMAND ${CMAKE_COMMAND} -E copy_if_different firebird.msg ${output_dir}/firebird.msg ) -add_custom_command( - OUTPUT codes_headers.dummy - DEPENDS - codes - msg_fdb - COMMENT "" - # - COMMAND ${CMAKE_COMMAND} -E echo "" > codes_headers.dummy - COMMAND ${CMAKE_COMMAND} -E echo Building codes header... - COMMAND ${CODES_CMD} ${CMAKE_CURRENT_SOURCE_DIR}/include/gen ${CMAKE_SOURCE_DIR}/lang_helpers -) -add_custom_target(messages ALL DEPENDS firebird.msg codes_headers.dummy) +add_custom_target(messages ALL DEPENDS firebird.msg) project_group(messages "Boot/Custom build steps") -######################################## -# BUILD STEP msg_fdb -######################################## - -set(isql_exec_msg ${BOOT_ISQL_CMD} -q msg_.fdb -i ${CMAKE_CURRENT_SOURCE_DIR}/msgs) - -add_custom_command( - OUTPUT msg.fdb - VERBATIM - DEPENDS - boot_isql - boot_gfix - ${msgs_src} - # - COMMAND ${CMAKE_COMMAND} -E remove msg.fdb - COMMAND ${CMAKE_COMMAND} -E remove msg_.fdb - COMMAND ${CMAKE_COMMAND} -E echo "create database 'msg_.fdb';" > create_db_msg.sql - COMMAND ${BOOT_ISQL_CMD} -q -i create_db_msg.sql - COMMAND ${BOOT_GFIX_CMD} -write async msg_.fdb - COMMAND ${isql_exec_msg}/msg.sql - # - COMMAND echo loading facilities - COMMAND ${isql_exec_msg}/facilities2.sql - COMMAND echo loading sql states - COMMAND ${isql_exec_msg}/sqlstates.sql - COMMAND echo loading locales - COMMAND ${isql_exec_msg}/locales.sql - COMMAND echo loading history - COMMAND ${isql_exec_msg}/history2.sql - COMMAND echo loading messages - COMMAND ${isql_exec_msg}/messages2.sql - COMMAND echo loading symbols - COMMAND ${isql_exec_msg}/symbols2.sql - COMMAND echo loading system errors - COMMAND ${isql_exec_msg}/system_errors2.sql - COMMAND echo loading French translation - COMMAND ${isql_exec_msg}/transmsgs.fr_FR2.sql - COMMAND echo loading German translation - COMMAND ${isql_exec_msg}/transmsgs.de_DE2.sql - # - COMMAND ${CMAKE_COMMAND} -E copy_if_different msg_.fdb msg.fdb -) -add_custom_target(msg_fdb - DEPENDS - boot_engine - msg.fdb -) -project_group(msg_fdb "Boot/Custom build steps") - - ######################################## # BUILD_STEP parse ######################################## @@ -335,6 +259,7 @@ add_epp_suffix(burp_generated_src master) if (NOT CMAKE_CROSSCOMPILING) add_library (boot_burp ${burp_src} ${burp_generated_src_boot}) +target_link_libraries (boot_burp PUBLIC ${RE2_LIBRARIES}) project_group (boot_burp Boot) endif() # if (NOT CMAKE_CROSSCOMPILING) @@ -345,7 +270,7 @@ endif() # if (NOT CMAKE_CROSSCOMPILING) ######################################## add_library (burp ${burp_src} ${burp_generated_src_master}) - +target_link_libraries (burp PUBLIC ${RE2_LIBRARIES}) ######################################## # LIBRARY common @@ -360,10 +285,12 @@ if (APPLE) endif() add_library (common ${common_src} ${common_os_src} ${common_include}) -target_link_libraries (common ${LIB_mpr} libtommath libtomcrypt decNumber) +target_link_libraries (common PUBLIC ${LIB_mpr} libtomcrypt decNumber + ${RE2_LIBRARIES} ${BOOST_LIBRARIES} ${CDS_LIBRARIES}) +target_include_directories (common PUBLIC ${BOOST_INCLUDE_DIRS}) add_dependencies_cc (common UpdateCloopInterfaces) if (UNIX) -target_link_libraries (common dl) +target_link_libraries (common PRIVATE dl) endif() @@ -390,19 +317,13 @@ set(yvalve_src ${yvalve_src} add_src_win32(yvalve_src jrd/os/win32/ibinitdll.cpp ) -set(yvalve_generated_src - yvalve/array.epp - yvalve/blob.epp -) -add_epp_suffix(yvalve_generated_src boot) -add_epp_suffix(yvalve_generated_src master) add_library (yvalve_common OBJECT ${yvalve_src} ${yvalve_include}) add_dependencies_cc (yvalve_common parse UpdateCloopInterfaces) if (NOT CMAKE_CROSSCOMPILING) -add_library (boot_yvalve SHARED $ ${yvalve_generated_src_boot} ${VERSION_RC}) +add_library (boot_yvalve SHARED $ ${VERSION_RC}) target_link_libraries (boot_yvalve PRIVATE remote PRIVATE common @@ -424,7 +345,7 @@ endif() # if (NOT CMAKE_CROSSCOMPILING) # SHARED LIBRARY yvalve ######################################## -add_library (yvalve SHARED $ ${yvalve_generated_src_master} ${VERSION_RC}) +add_library (yvalve SHARED $ ${VERSION_RC}) target_link_libraries (yvalve PRIVATE remote PRIVATE common @@ -452,6 +373,7 @@ file(GLOB engine_src "jrd/recsrc/*.cpp" "jrd/replication/*.cpp" "jrd/trace/*.cpp" + "jrd/sys-packages/*.cpp" "jrd/os/${OS_DIR}/*.cpp" ) set(engine_src ${engine_src} @@ -478,6 +400,7 @@ set(engine_generated_src jrd/ini.epp jrd/met.epp jrd/scl.epp + jrd/SystemTriggers.epp utilities/gstat/dba.epp ) add_epp_suffix(engine_generated_src boot) @@ -486,6 +409,8 @@ add_epp_suffix(engine_generated_src master) file(GLOB_RECURSE engine_include "dsql/*.h" "jrd/*.h" include/gen/iberror.h) add_library (engine_common ${engine_src} ${engine_include} ${parse_src}) +target_link_libraries (engine_common PUBLIC ${RE2_LIBRARIES} ${BOOST_LIBRARIES} ${CDS_LIBRARIES}) +target_include_directories (engine_common PUBLIC ${BOOST_INCLUDE_DIRS}) add_dependencies_cc (engine_common parse UpdateCloopInterfaces) if (NOT CMAKE_CROSSCOMPILING) @@ -505,7 +430,7 @@ endif() # if (NOT CMAKE_CROSSCOMPILING) ######################################## add_library (engine SHARED ${engine_generated_src_master} ${VERSION_RC}) -target_link_libraries (engine engine_common alice burp common yvalve) +target_link_libraries (engine PUBLIC engine_common alice burp common yvalve) set_target_properties (engine PROPERTIES OUTPUT_NAME Engine14) set_output_directory (engine plugins) set_exported_symbols (engine fbplugin) @@ -637,43 +562,22 @@ target_link_libraries (gpre gpre_common common yvalve) ######################################## -# EXECUTABLE build_msg +# EXECUTABLE build_file ######################################## -set(build_msg_generated_src - msgs/build_file.epp +set(build_msg_src + msgs/build_file.cpp ) -add_epp_suffix(build_msg_generated_src master) if (NOT CMAKE_CROSSCOMPILING) -add_executable (build_msg ${build_msg_generated_src_master} ${VERSION_RC}) -target_link_libraries (build_msg boot_yvalve) -set_output_directory (build_msg . CURRENT_DIR) -project_group (build_msg Boot) +add_executable (build_file ${build_msg_src} ${VERSION_RC}) +target_link_libraries (build_file boot_yvalve libtommath) +set_output_directory (build_file . CURRENT_DIR) +project_group (build_file Boot) endif() # if (NOT CMAKE_CROSSCOMPILING) - -######################################## -# EXECUTABLE codes -######################################## - -set(codes_generated_src - misc/codes.epp -) -add_epp_suffix(codes_generated_src master) - -if (NOT CMAKE_CROSSCOMPILING) - -add_executable (codes ${codes_generated_src_master} ${VERSION_RC}) -target_link_libraries (codes boot_yvalve) -set_output_directory (codes . CURRENT_DIR) -project_group (codes Boot) - -endif() # if (NOT CMAKE_CROSSCOMPILING) - - ######################################## # EXECUTABLE gstat ######################################## @@ -907,7 +811,6 @@ add_custom_target(copy_files COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/src/include/gen/iberror.h ${output_dir}/include/iberror.h ) add_dependencies_cc (copy_files databases) -add_dependencies_unix_cc(copy_files makeHeader) project_group(copy_files "Custom build steps") # headers @@ -994,8 +897,6 @@ if (UNIX) if (NOT CMAKE_CROSSCOMPILING) - add_executable (makeHeader misc/makeHeader.cpp) - set_output_directory (makeHeader . CURRENT_DIR) set(files ${CMAKE_SOURCE_DIR}/src/include/types_pub.h ${CMAKE_SOURCE_DIR}/src/include/consts_pub.h @@ -1011,10 +912,6 @@ if (UNIX) add_custom_command(TARGET copy_files POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${F} ${name}) endforeach() - add_custom_command(TARGET copy_files POST_BUILD - # include - COMMAND makeHeader < ibase.h > ${output_dir}/include/ibase.h - ) endif() # if (NOT CMAKE_CROSSCOMPILING) endif() diff --git a/src/remote/CMakeLists.txt b/src/remote/CMakeLists.txt index 8c2fdc6e1be..ca39f5e87f7 100644 --- a/src/remote/CMakeLists.txt +++ b/src/remote/CMakeLists.txt @@ -34,6 +34,7 @@ add_dependencies_cc (remote UpdateCloopInterfaces) set(fbserver_src ../auth/SecureRemotePassword/server/SrpServer.cpp ../auth/SecureRemotePassword/server/SrpServer.h + ../auth/SecDbCache.cpp ) add_src_win32(fbserver_src server/os/win32/chop.cpp @@ -51,6 +52,7 @@ add_src_unix(fbserver_src ../auth/SecureRemotePassword/srp.cpp server/os/posix/inet_server.cpp server/server.cpp + server/ReplServer.cpp inet.cpp merge.cpp