From 62927427ec0013085eb71f81706a9bf65ead5336 Mon Sep 17 00:00:00 2001 From: Anatoly Kalin Date: Mon, 14 Apr 2025 16:36:27 +0300 Subject: [PATCH 01/11] [MDAPI-254][C++] Migrate to dxFeed Graal Native SDK 2.5.0 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e915c8e2..1615e925 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,7 +21,7 @@ set(DXFCXX_VERSION "v4.2.0" CACHE STRING "The dxFeed Graal CXX API package versi dxfcxx_ParseVersion(${DXFCXX_VERSION} DXFCXX_MAJOR_VERSION DXFCXX_MINOR_VERSION DXFCXX_PATCH_VERSION DXFCXX_SUFFIX_VERSION) -set(DXFEED_GRAAL_NATIVE_SDK_VERSION "2.2.1" CACHE STRING "") +set(DXFEED_GRAAL_NATIVE_SDK_VERSION "2.5.0" CACHE STRING "") set(FMTLIB_VERSION "11.0.2") set(BOOST_VERSION "1.84.0") set(UTFCPP_VERSION "3.2.3") From 6db80d774c8f1348f6898ff225633c69d52bf708 Mon Sep 17 00:00:00 2001 From: Anatoly Kalin Date: Mon, 21 Apr 2025 17:50:33 +0300 Subject: [PATCH 02/11] Refactor build system to introduce object library. Reorganized the build system by creating an object library for better modularity and reuse. Replaced redundant target definitions and centralized compilation/linking settings for shared, static, and object libraries. Adjusted visibility of certain link and compile options to be private for cleaner and more encapsulated configuration. --- CMakeLists.txt | 152 ++++++++++++++++++++++--------------- cmake/LinkStacktrace.cmake | 10 +-- 2 files changed, 94 insertions(+), 68 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1615e925..3dd36ac4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -424,8 +424,11 @@ set(dxFeedGraalCxxApi_Sources ${dxFeedGraalCxxApi_EventMisc_Sources} ${dxFeedGraalCxxApi_Schedule_Sources} ${dxFeedGraalCxxApi_Util_Sources} + src/api.cpp ) +add_library(${PROJECT_NAME}_objects OBJECT ${dxFeedGraalCxxApi_Sources}) + if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") set(CMAKE_MACOSX_RPATH ON) set(CMAKE_SKIP_BUILD_RPATH ON) @@ -441,9 +444,36 @@ elseif (UNIX) set(CMAKE_INSTALL_RPATH "$ORIGIN/../${CMAKE_INSTALL_LIBDIR}:$ORIGIN/../lib64:$ORIGIN/../lib:$ORIGIN") endif () +# fatal error C1128: number of sections exceeded object file format limit: compile with /bigobj +set(DXFCXX_MSVC_COMPILE_OPTIONS /W4 /bigobj /utf-8) +set(DXFCXX_MSVC_DEBUG_LINK_OPTIONS /PDBALTPATH:$) +set(DXFCXX_GCC_LIKE_COMPILE_OPTIONS -fPIC -Wall -Wextra -pedantic) +set(DXFCXX_GCC_LIKE_LINK_OPTIONS "-fPIC") + +#A workaround to fix 'relocation truncated to fit: IMAGE_REL_AMD64_SECREL' error (MinGW + Debug) +set(DXFCXX_MINGW_DEBUG_LINK_OPTIONS "-Wl,--disable-dynamicbase,--disable-high-entropy-va,--default-image-base-low") + +target_include_directories(${PROJECT_NAME}_objects PUBLIC include) +target_include_directories(${PROJECT_NAME}_objects PRIVATE third_party/range-v3-${RANGE_VERSION}/include) +target_compile_definitions(${PROJECT_NAME}_objects PRIVATE + FMT_HEADER_ONLY=1 _SILENCE_ALL_MS_EXT_DEPRECATION_WARNINGS=1) + +target_compile_options(${PROJECT_NAME}_objects + PRIVATE + $<$:${DXFCXX_MSVC_COMPILE_OPTIONS}> + $<$:${DXFCXX_MSVC_COMPILE_OPTIONS}> + $<$:${DXFCXX_GCC_LIKE_COMPILE_OPTIONS}> + $<$:${DXFCXX_GCC_LIKE_COMPILE_OPTIONS}> +) + +if (DXFCXX_USE_PRECOMPILED_HEADERS) + target_precompile_headers(${PROJECT_NAME}_objects PRIVATE include/dxfeed_graal_cpp_api/internal/PrecompiledHeaders.hpp) +endif () + +target_link_libraries(${PROJECT_NAME}_objects PRIVATE DxFeedGraalNativeSdk utf8cpp fmt::fmt-header-only date::date) + add_library(${PROJECT_NAME}_static STATIC - ${dxFeedGraalCxxApi_Sources} - src/api.cpp + $ ) if (WIN32) @@ -454,18 +484,65 @@ if (WIN32) endif () add_library(${PROJECT_NAME} SHARED - ${dxFeedGraalCxxApi_Sources} + $ resources/dxFeedGraalCxxApi.rc - src/api.cpp ) else () add_library(${PROJECT_NAME} SHARED - ${dxFeedGraalCxxApi_Sources} - src/api.cpp + $ ) endif () +# https://developercommunity.visualstudio.com/t/Invalid-code-generation-in-release-1940/10678572?sort=newest&viewtype=all +# https://github.com/microsoft/STL/wiki/Changelog#vs-2022-1710 +# https://github.com/actions/runner-images/issues/10004 +if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + target_compile_definitions(${PROJECT_NAME}_objects PRIVATE _DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR) + target_compile_definitions(${PROJECT_NAME} PRIVATE _DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR) + target_compile_definitions(${PROJECT_NAME}_static PRIVATE _DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR) +endif () + +if (DXFCXX_FEATURE_STACKTRACE) + LinkStacktrace(${PROJECT_NAME}_objects) + + target_compile_definitions(${PROJECT_NAME}_objects PRIVATE DXFCXX_FEATURE_STACKTRACE) + target_compile_definitions(${PROJECT_NAME} PRIVATE DXFCXX_FEATURE_STACKTRACE) + target_compile_definitions(${PROJECT_NAME}_static PRIVATE DXFCXX_FEATURE_STACKTRACE) +endif () + +target_compile_definitions(${PROJECT_NAME}_objects PUBLIC + DXFCXX_VERSION="${DXFCXX_VERSION}" + DXFCXX_MAJOR_VERSION=${DXFCXX_MAJOR_VERSION} + DXFCXX_MINOR_VERSION=${DXFCXX_MINOR_VERSION} + DXFCXX_PATCH_VERSION=${DXFCXX_PATCH_VERSION} +) + +target_compile_definitions(${PROJECT_NAME} PUBLIC + DXFCXX_VERSION="${DXFCXX_VERSION}" + DXFCXX_MAJOR_VERSION=${DXFCXX_MAJOR_VERSION} + DXFCXX_MINOR_VERSION=${DXFCXX_MINOR_VERSION} + DXFCXX_PATCH_VERSION=${DXFCXX_PATCH_VERSION} +) + +target_compile_definitions(${PROJECT_NAME}_static PUBLIC + DXFCXX_VERSION="${DXFCXX_VERSION}" + DXFCXX_MAJOR_VERSION=${DXFCXX_MAJOR_VERSION} + DXFCXX_MINOR_VERSION=${DXFCXX_MINOR_VERSION} + DXFCXX_PATCH_VERSION=${DXFCXX_PATCH_VERSION} +) + +if (DXFCXX_ENABLE_METRICS) + target_compile_definitions(${PROJECT_NAME}_objects PRIVATE DXFCXX_ENABLE_METRICS=1) + target_compile_definitions(${PROJECT_NAME} PRIVATE DXFCXX_ENABLE_METRICS=1) + target_compile_definitions(${PROJECT_NAME}_static PRIVATE DXFCXX_ENABLE_METRICS=1) +endif () + +target_link_libraries(${PROJECT_NAME} PRIVATE DxFeedGraalNativeSdk utf8cpp fmt::fmt-header-only date::date) +target_link_libraries(${PROJECT_NAME}_static PRIVATE DxFeedGraalNativeSdk utf8cpp fmt::fmt-header-only date::date) + + add_library(dxfcxx ALIAS ${PROJECT_NAME}) +add_library(dxfcxx::objects ALIAS ${PROJECT_NAME}_objects) add_library(dxfcxx::static ALIAS ${PROJECT_NAME}_static) add_library(dxfcxx::graal ALIAS DxFeedGraalNativeSdk) @@ -485,6 +562,7 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") endif () endif () + target_include_directories(${PROJECT_NAME} PUBLIC include) target_include_directories(${PROJECT_NAME} PRIVATE third_party/range-v3-${RANGE_VERSION}/include) target_compile_definitions(${PROJECT_NAME} PRIVATE @@ -495,25 +573,8 @@ target_include_directories(${PROJECT_NAME}_static PRIVATE third_party/range-v3-$ target_compile_definitions(${PROJECT_NAME}_static PRIVATE FMT_HEADER_ONLY=1 _SILENCE_ALL_MS_EXT_DEPRECATION_WARNINGS=1) -# fatal error C1128: number of sections exceeded object file format limit: compile with /bigobj -set(DXFCXX_MSVC_COMPILE_OPTIONS /W4 /bigobj /utf-8) -set(DXFCXX_MSVC_DEBUG_LINK_OPTIONS /PDBALTPATH:$) -set(DXFCXX_GCC_LIKE_COMPILE_OPTIONS -fPIC -Wall -Wextra -pedantic) -set(DXFCXX_GCC_LIKE_LINK_OPTIONS "-fPIC") - -#A workaround to fix 'relocation truncated to fit: IMAGE_REL_AMD64_SECREL' error (MinGW + Debug) -set(DXFCXX_MINGW_DEBUG_LINK_OPTIONS "-Wl,--disable-dynamicbase,--disable-high-entropy-va,--default-image-base-low") - -# https://developercommunity.visualstudio.com/t/Invalid-code-generation-in-release-1940/10678572?sort=newest&viewtype=all -# https://github.com/microsoft/STL/wiki/Changelog#vs-2022-1710 -# https://github.com/actions/runner-images/issues/10004 -if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") - target_compile_definitions(${PROJECT_NAME} PUBLIC _DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR) - target_compile_definitions(${PROJECT_NAME}_static PUBLIC _DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR) -endif () - target_compile_options(${PROJECT_NAME} - PUBLIC + PRIVATE $<$:${DXFCXX_MSVC_COMPILE_OPTIONS}> $<$:${DXFCXX_MSVC_COMPILE_OPTIONS}> $<$:${DXFCXX_GCC_LIKE_COMPILE_OPTIONS}> @@ -521,7 +582,7 @@ target_compile_options(${PROJECT_NAME} ) target_link_options(${PROJECT_NAME} - PUBLIC + PRIVATE $<$,$,$>>:${DXFCXX_MSVC_DEBUG_LINK_OPTIONS}> $<$,$,$>>:${DXFCXX_MSVC_DEBUG_LINK_OPTIONS}> $<$:${DXFCXX_GCC_LIKE_LINK_OPTIONS}> @@ -530,7 +591,7 @@ target_link_options(${PROJECT_NAME} if (MINGW) target_link_options(${PROJECT_NAME} - PUBLIC + PRIVATE $<$,$>:${DXFCXX_MINGW_DEBUG_LINK_OPTIONS}> ) endif () @@ -544,34 +605,18 @@ target_compile_options(${PROJECT_NAME}_static ) target_link_options(${PROJECT_NAME}_static - PUBLIC + PRIVATE $<$:${DXFCXX_GCC_LIKE_LINK_OPTIONS}> $<$:${DXFCXX_GCC_LIKE_LINK_OPTIONS}> ) if (MINGW) target_link_options(${PROJECT_NAME}_static - PUBLIC + PRIVATE $<$,$>:${DXFCXX_MINGW_DEBUG_LINK_OPTIONS}> ) endif () -if (DXFCXX_USE_PRECOMPILED_HEADERS) - target_precompile_headers(${PROJECT_NAME} PRIVATE include/dxfeed_graal_cpp_api/internal/PrecompiledHeaders.hpp) - target_precompile_headers(${PROJECT_NAME}_static PRIVATE include/dxfeed_graal_cpp_api/internal/PrecompiledHeaders.hpp) -endif () - -target_link_libraries(${PROJECT_NAME} PRIVATE DxFeedGraalNativeSdk utf8cpp fmt::fmt-header-only date::date) -target_link_libraries(${PROJECT_NAME}_static PRIVATE DxFeedGraalNativeSdk utf8cpp fmt::fmt-header-only date::date) - -if (DXFCXX_FEATURE_STACKTRACE) - LinkStacktrace(${PROJECT_NAME}) - LinkStacktrace(${PROJECT_NAME}_static) - - target_compile_definitions(${PROJECT_NAME} PUBLIC DXFCXX_FEATURE_STACKTRACE) - target_compile_definitions(${PROJECT_NAME}_static PUBLIC DXFCXX_FEATURE_STACKTRACE) -endif () - if (DXFCXX_ENABLE_ASAN) LinkAsan(${PROJECT_NAME}) elseif (DXFCXX_ENABLE_UBSAN) @@ -583,25 +628,6 @@ add_custom_command(TARGET ${PROJECT_NAME}_static POST_BUILD COMMAND ${CMAKE_COMM add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $ $) -target_compile_definitions(${PROJECT_NAME} PUBLIC - DXFCXX_VERSION="${DXFCXX_VERSION}" - DXFCXX_MAJOR_VERSION=${DXFCXX_MAJOR_VERSION} - DXFCXX_MINOR_VERSION=${DXFCXX_MINOR_VERSION} - DXFCXX_PATCH_VERSION=${DXFCXX_PATCH_VERSION} -) - -target_compile_definitions(${PROJECT_NAME}_static PUBLIC - DXFCXX_VERSION="${DXFCXX_VERSION}" - DXFCXX_MAJOR_VERSION=${DXFCXX_MAJOR_VERSION} - DXFCXX_MINOR_VERSION=${DXFCXX_MINOR_VERSION} - DXFCXX_PATCH_VERSION=${DXFCXX_PATCH_VERSION} -) - -if (DXFCXX_ENABLE_METRICS) - target_compile_definitions(${PROJECT_NAME} PUBLIC DXFCXX_ENABLE_METRICS=1) - target_compile_definitions(${PROJECT_NAME}_static PUBLIC DXFCXX_ENABLE_METRICS=1) -endif () - if (DXFCXX_BUILD_UNIT_TESTS) include(CTest) add_subdirectory(tests) diff --git a/cmake/LinkStacktrace.cmake b/cmake/LinkStacktrace.cmake index aefa8a60..495b615f 100644 --- a/cmake/LinkStacktrace.cmake +++ b/cmake/LinkStacktrace.cmake @@ -5,18 +5,18 @@ function(LinkStacktrace targetName) target_compile_definitions(${targetName} PRIVATE $<$:BOOST_STACKTRACE_GNU_SOURCE_NOT_REQUIRED>) if (TARGET Boost::stacktrace_windbg) - target_link_libraries(${targetName} PUBLIC Boost::stacktrace_windbg ole32 dbgeng) + target_link_libraries(${targetName} PRIVATE Boost::stacktrace_windbg ole32 dbgeng) elseif (TARGET Boost::stacktrace_backtrace) - target_link_libraries(${targetName} PUBLIC Boost::stacktrace_backtrace dl backtrace) + target_link_libraries(${targetName} PRIVATE Boost::stacktrace_backtrace dl backtrace) if (TARGET Boost::stacktrace_addr2line) target_compile_definitions(${targetName} PRIVATE BOOST_STACKTRACE_USE_ADDR2LINE) endif () elseif (TARGET Boost::stacktrace_addr2line) - target_link_libraries(${targetName} PUBLIC Boost::stacktrace_addr2line dl) + target_link_libraries(${targetName} PRIVATE Boost::stacktrace_addr2line dl) elseif (TARGET Boost::stacktrace_basic) - target_link_libraries(${targetName} PUBLIC Boost::stacktrace_basic dl) + target_link_libraries(${targetName} PRIVATE Boost::stacktrace_basic dl) else () - target_link_libraries(${targetName} PUBLIC Boost::stacktrace_noop) + target_link_libraries(${targetName} PRIVATE Boost::stacktrace_noop) endif () endfunction() \ No newline at end of file From 87f85bb24e74780dac9ce646ad3f27e45ec2d92f Mon Sep 17 00:00:00 2001 From: Anatoly Kalin Date: Mon, 21 Apr 2025 19:36:00 +0300 Subject: [PATCH 03/11] Enable verbose makefiles and add Clang-MSVC compatibility. This commit enables `CMAKE_VERBOSE_MAKEFILE` across all `CMakeLists.txt` to improve debug output during builds. It also extends compatibility for Clang in MSVC emulation mode by updating conditions targeting the MSVC runtime configuration logic. --- CMakeLists.txt | 60 +++++++++++++++---- samples/cpp/API/AuthSample/CMakeLists.txt | 4 +- samples/cpp/API/ConnectSample/CMakeLists.txt | 4 +- .../API/PrintQuoteEventsSample/CMakeLists.txt | 4 +- .../API/PublishProfilesSample/CMakeLists.txt | 4 +- .../API/QuoteAndTradeSample/CMakeLists.txt | 4 +- .../cpp/API/ReconnectSample/CMakeLists.txt | 4 +- .../API/RequestProfileSample/CMakeLists.txt | 4 +- .../FetchDailyCandlesSample/CMakeLists.txt | 4 +- .../LastEventConsoleSample/CMakeLists.txt | 4 +- .../File/ConvertTapeFileSample/CMakeLists.txt | 4 +- .../cpp/File/FileParserSample/CMakeLists.txt | 4 +- .../File/WriteTapeFileSample/CMakeLists.txt | 4 +- samples/cpp/IPF/IpfLiveSample/CMakeLists.txt | 4 +- samples/cpp/IPF/IpfSample/CMakeLists.txt | 4 +- .../cpp/IPF/OptionChainSample/CMakeLists.txt | 4 +- .../IncOrderSnapshotSample/CMakeLists.txt | 4 +- .../MarketDepthModelSample/CMakeLists.txt | 4 +- .../MultipleMarketDepthSample/CMakeLists.txt | 4 +- .../Model/PriceLevelBookSample/CMakeLists.txt | 4 +- .../OnDemand/OnDemandSample/CMakeLists.txt | 4 +- .../Schedule/ScheduleSample/CMakeLists.txt | 4 +- tests/CMakeLists.txt | 4 +- tools/Tools/CMakeLists.txt | 2 + 24 files changed, 117 insertions(+), 33 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3dd36ac4..c76efd87 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,6 +15,8 @@ set(CMAKE_POLICY_DEFAULT_CMP0077 NEW) project(dxFeedGraalCxxApi) +set(CMAKE_VERBOSE_MAKEFILE ON) + include(cmake/ParseVersion.cmake) set(DXFCXX_VERSION "v4.2.0" CACHE STRING "The dxFeed Graal CXX API package version") @@ -146,16 +148,19 @@ else () CPMAddPackage("gh:ttldtor/Process#v${PROCESS_VERSION}") endif () -if (DXFCXX_LINK_STATIC_RUNTIME) - set_target_properties(process PROPERTIES - MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" - ) - - if (DXFCXX_NODEFAULTLIB_LIBCMT) - target_link_options(process PRIVATE - "/NODEFAULTLIB:LIBCMT" - "/NODEFAULTLIB:LIBCMTD" +if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) + if (DXFCXX_LINK_STATIC_RUNTIME) + set_target_properties(process PROPERTIES + MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" ) + + if (DXFCXX_NODEFAULTLIB_LIBCMT) + target_link_options(process PRIVATE + "/NODEFAULTLIB:LIBCMT" + "/NODEFAULTLIB:LIBCMTD" + "/VERBOSE" + ) + endif () endif () endif () @@ -165,12 +170,44 @@ else () CPMAddPackage("gh:ttldtor/Console#v${CONSOLE_VERSION}") endif () +if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) + if (DXFCXX_LINK_STATIC_RUNTIME) + set_target_properties(console PROPERTIES + MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" + ) + + if (DXFCXX_NODEFAULTLIB_LIBCMT) + target_link_options(console PRIVATE + "/NODEFAULTLIB:LIBCMT" + "/NODEFAULTLIB:LIBCMTD" + "/VERBOSE" + ) + endif () + endif () +endif () + if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/third_party/portals/CMakeLists.txt") add_subdirectory(third_party/portals) else () CPMAddPackage("gh:ttldtor/portals#default") endif () +if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) + if (DXFCXX_LINK_STATIC_RUNTIME) + set_target_properties(portals PROPERTIES + MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" + ) + + if (DXFCXX_NODEFAULTLIB_LIBCMT) + target_link_options(portals PRIVATE + "/NODEFAULTLIB:LIBCMT" + "/NODEFAULTLIB:LIBCMTD" + "/VERBOSE" + ) + endif () + endif () +endif () + add_subdirectory(third_party/utfcpp-${UTFCPP_VERSION}) set(FMT_INSTALL OFF) @@ -446,7 +483,7 @@ endif () # fatal error C1128: number of sections exceeded object file format limit: compile with /bigobj set(DXFCXX_MSVC_COMPILE_OPTIONS /W4 /bigobj /utf-8) -set(DXFCXX_MSVC_DEBUG_LINK_OPTIONS /PDBALTPATH:$) +set(DXFCXX_MSVC_DEBUG_LINK_OPTIONS /PDBALTPATH:$ /VERBOSE) set(DXFCXX_GCC_LIKE_COMPILE_OPTIONS -fPIC -Wall -Wextra -pedantic) set(DXFCXX_GCC_LIKE_LINK_OPTIONS "-fPIC") @@ -546,7 +583,7 @@ add_library(dxfcxx::objects ALIAS ${PROJECT_NAME}_objects) add_library(dxfcxx::static ALIAS ${PROJECT_NAME}_static) add_library(dxfcxx::graal ALIAS DxFeedGraalNativeSdk) -if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") +if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) set_target_properties(${PROJECT_NAME} PROPERTIES CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME}_static PROPERTIES @@ -557,6 +594,7 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") target_link_options(${PROJECT_NAME}_static PRIVATE "/NODEFAULTLIB:LIBCMT" "/NODEFAULTLIB:LIBCMTD" + "/VERBOSE" ) endif () endif () diff --git a/samples/cpp/API/AuthSample/CMakeLists.txt b/samples/cpp/API/AuthSample/CMakeLists.txt index b0f7d4ee..781c2a02 100644 --- a/samples/cpp/API/AuthSample/CMakeLists.txt +++ b/samples/cpp/API/AuthSample/CMakeLists.txt @@ -13,6 +13,8 @@ endif () project(AuthSample LANGUAGES CXX) +set(CMAKE_VERBOSE_MAKEFILE ON) + set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -41,7 +43,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static fmt::fmt-header-only) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/API/ConnectSample/CMakeLists.txt b/samples/cpp/API/ConnectSample/CMakeLists.txt index 997c028b..0f228642 100644 --- a/samples/cpp/API/ConnectSample/CMakeLists.txt +++ b/samples/cpp/API/ConnectSample/CMakeLists.txt @@ -13,6 +13,8 @@ endif () project(ConnectSample LANGUAGES CXX) +set(CMAKE_VERBOSE_MAKEFILE ON) + set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -43,7 +45,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/API/PrintQuoteEventsSample/CMakeLists.txt b/samples/cpp/API/PrintQuoteEventsSample/CMakeLists.txt index 0c689c9e..55d322e2 100644 --- a/samples/cpp/API/PrintQuoteEventsSample/CMakeLists.txt +++ b/samples/cpp/API/PrintQuoteEventsSample/CMakeLists.txt @@ -13,6 +13,8 @@ endif () project(PrintQuoteEventsSample LANGUAGES CXX) +set(CMAKE_VERBOSE_MAKEFILE ON) + set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -41,7 +43,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/API/PublishProfilesSample/CMakeLists.txt b/samples/cpp/API/PublishProfilesSample/CMakeLists.txt index 94331994..ae9d913b 100644 --- a/samples/cpp/API/PublishProfilesSample/CMakeLists.txt +++ b/samples/cpp/API/PublishProfilesSample/CMakeLists.txt @@ -13,6 +13,8 @@ endif () project(PublishProfilesSample LANGUAGES CXX) +set(CMAKE_VERBOSE_MAKEFILE ON) + set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -41,7 +43,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/API/QuoteAndTradeSample/CMakeLists.txt b/samples/cpp/API/QuoteAndTradeSample/CMakeLists.txt index 5d6d1506..61cb40ee 100644 --- a/samples/cpp/API/QuoteAndTradeSample/CMakeLists.txt +++ b/samples/cpp/API/QuoteAndTradeSample/CMakeLists.txt @@ -13,6 +13,8 @@ endif () project(QuoteAndTradeSample LANGUAGES CXX) +set(CMAKE_VERBOSE_MAKEFILE ON) + set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -41,7 +43,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/API/ReconnectSample/CMakeLists.txt b/samples/cpp/API/ReconnectSample/CMakeLists.txt index 0ce1a11d..b46ce30a 100644 --- a/samples/cpp/API/ReconnectSample/CMakeLists.txt +++ b/samples/cpp/API/ReconnectSample/CMakeLists.txt @@ -13,6 +13,8 @@ endif () project(ReconnectSample LANGUAGES CXX) +set(CMAKE_VERBOSE_MAKEFILE ON) + set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -41,7 +43,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static fmt::fmt-header-only) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/API/RequestProfileSample/CMakeLists.txt b/samples/cpp/API/RequestProfileSample/CMakeLists.txt index 50705df3..41c7c319 100644 --- a/samples/cpp/API/RequestProfileSample/CMakeLists.txt +++ b/samples/cpp/API/RequestProfileSample/CMakeLists.txt @@ -13,6 +13,8 @@ endif () project(RequestProfileSample LANGUAGES CXX) +set(CMAKE_VERBOSE_MAKEFILE ON) + set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -41,7 +43,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/Candle/FetchDailyCandlesSample/CMakeLists.txt b/samples/cpp/Candle/FetchDailyCandlesSample/CMakeLists.txt index 1dc0d70f..e6ec9337 100644 --- a/samples/cpp/Candle/FetchDailyCandlesSample/CMakeLists.txt +++ b/samples/cpp/Candle/FetchDailyCandlesSample/CMakeLists.txt @@ -13,6 +13,8 @@ endif () project(FetchDailyCandlesSample LANGUAGES CXX) +set(CMAKE_VERBOSE_MAKEFILE ON) + set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -41,7 +43,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/Console/LastEventConsoleSample/CMakeLists.txt b/samples/cpp/Console/LastEventConsoleSample/CMakeLists.txt index cffdb6be..e6fb46aa 100644 --- a/samples/cpp/Console/LastEventConsoleSample/CMakeLists.txt +++ b/samples/cpp/Console/LastEventConsoleSample/CMakeLists.txt @@ -13,6 +13,8 @@ endif () project(LastEventConsoleSample LANGUAGES CXX) +set(CMAKE_VERBOSE_MAKEFILE ON) + set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -41,7 +43,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/File/ConvertTapeFileSample/CMakeLists.txt b/samples/cpp/File/ConvertTapeFileSample/CMakeLists.txt index 21c13b8d..b018eae7 100644 --- a/samples/cpp/File/ConvertTapeFileSample/CMakeLists.txt +++ b/samples/cpp/File/ConvertTapeFileSample/CMakeLists.txt @@ -13,6 +13,8 @@ endif () project(ConvertTapeFileSample LANGUAGES CXX) +set(CMAKE_VERBOSE_MAKEFILE ON) + set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -41,7 +43,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/File/FileParserSample/CMakeLists.txt b/samples/cpp/File/FileParserSample/CMakeLists.txt index 646f34c6..1ec075b5 100644 --- a/samples/cpp/File/FileParserSample/CMakeLists.txt +++ b/samples/cpp/File/FileParserSample/CMakeLists.txt @@ -13,6 +13,8 @@ endif () project(FileParserSample LANGUAGES CXX) +set(CMAKE_VERBOSE_MAKEFILE ON) + set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -41,7 +43,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/File/WriteTapeFileSample/CMakeLists.txt b/samples/cpp/File/WriteTapeFileSample/CMakeLists.txt index 5aa1204f..c8de01ee 100644 --- a/samples/cpp/File/WriteTapeFileSample/CMakeLists.txt +++ b/samples/cpp/File/WriteTapeFileSample/CMakeLists.txt @@ -13,6 +13,8 @@ endif () project(WriteTapeFileSample LANGUAGES CXX) +set(CMAKE_VERBOSE_MAKEFILE ON) + set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -41,7 +43,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/IPF/IpfLiveSample/CMakeLists.txt b/samples/cpp/IPF/IpfLiveSample/CMakeLists.txt index 49f76278..adce90da 100644 --- a/samples/cpp/IPF/IpfLiveSample/CMakeLists.txt +++ b/samples/cpp/IPF/IpfLiveSample/CMakeLists.txt @@ -13,6 +13,8 @@ endif () project(IpfLiveSample LANGUAGES CXX) +set(CMAKE_VERBOSE_MAKEFILE ON) + set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -41,7 +43,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/IPF/IpfSample/CMakeLists.txt b/samples/cpp/IPF/IpfSample/CMakeLists.txt index b1a31e72..f47a07ae 100644 --- a/samples/cpp/IPF/IpfSample/CMakeLists.txt +++ b/samples/cpp/IPF/IpfSample/CMakeLists.txt @@ -13,6 +13,8 @@ endif () project(IpfSample LANGUAGES CXX) +set(CMAKE_VERBOSE_MAKEFILE ON) + set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -41,7 +43,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/IPF/OptionChainSample/CMakeLists.txt b/samples/cpp/IPF/OptionChainSample/CMakeLists.txt index 5f88c17f..74b713a8 100644 --- a/samples/cpp/IPF/OptionChainSample/CMakeLists.txt +++ b/samples/cpp/IPF/OptionChainSample/CMakeLists.txt @@ -13,6 +13,8 @@ endif () project(OptionChainSample LANGUAGES CXX) +set(CMAKE_VERBOSE_MAKEFILE ON) + set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -41,7 +43,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/Model/IncOrderSnapshotSample/CMakeLists.txt b/samples/cpp/Model/IncOrderSnapshotSample/CMakeLists.txt index d83f7324..26b14ccf 100644 --- a/samples/cpp/Model/IncOrderSnapshotSample/CMakeLists.txt +++ b/samples/cpp/Model/IncOrderSnapshotSample/CMakeLists.txt @@ -13,6 +13,8 @@ endif () project(IncOrderSnapshotSample LANGUAGES CXX) +set(CMAKE_VERBOSE_MAKEFILE ON) + set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -43,7 +45,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static fmt::fmt-header-only) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/Model/MarketDepthModelSample/CMakeLists.txt b/samples/cpp/Model/MarketDepthModelSample/CMakeLists.txt index 0009280b..7ce5a982 100644 --- a/samples/cpp/Model/MarketDepthModelSample/CMakeLists.txt +++ b/samples/cpp/Model/MarketDepthModelSample/CMakeLists.txt @@ -13,6 +13,8 @@ endif () project(MarketDepthModelSample LANGUAGES CXX) +set(CMAKE_VERBOSE_MAKEFILE ON) + set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -43,7 +45,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static portals::portals fmt::fmt-header-only) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/Model/MultipleMarketDepthSample/CMakeLists.txt b/samples/cpp/Model/MultipleMarketDepthSample/CMakeLists.txt index 1f1311d9..07d8ed7f 100644 --- a/samples/cpp/Model/MultipleMarketDepthSample/CMakeLists.txt +++ b/samples/cpp/Model/MultipleMarketDepthSample/CMakeLists.txt @@ -13,6 +13,8 @@ endif () project(MultipleMarketDepthSample LANGUAGES CXX) +set(CMAKE_VERBOSE_MAKEFILE ON) + set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -41,7 +43,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static fmt::fmt-header-only) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/Model/PriceLevelBookSample/CMakeLists.txt b/samples/cpp/Model/PriceLevelBookSample/CMakeLists.txt index 11a1f0f3..13c35d77 100644 --- a/samples/cpp/Model/PriceLevelBookSample/CMakeLists.txt +++ b/samples/cpp/Model/PriceLevelBookSample/CMakeLists.txt @@ -13,6 +13,8 @@ endif () project(PriceLevelBookSample LANGUAGES CXX) +set(CMAKE_VERBOSE_MAKEFILE ON) + set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -41,7 +43,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static fmt::fmt-header-only) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/OnDemand/OnDemandSample/CMakeLists.txt b/samples/cpp/OnDemand/OnDemandSample/CMakeLists.txt index 33280802..beff2e44 100644 --- a/samples/cpp/OnDemand/OnDemandSample/CMakeLists.txt +++ b/samples/cpp/OnDemand/OnDemandSample/CMakeLists.txt @@ -13,6 +13,8 @@ endif () project(OnDemandSample LANGUAGES CXX) +set(CMAKE_VERBOSE_MAKEFILE ON) + set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -41,7 +43,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/Schedule/ScheduleSample/CMakeLists.txt b/samples/cpp/Schedule/ScheduleSample/CMakeLists.txt index aec0b72f..e68336f7 100644 --- a/samples/cpp/Schedule/ScheduleSample/CMakeLists.txt +++ b/samples/cpp/Schedule/ScheduleSample/CMakeLists.txt @@ -13,6 +13,8 @@ endif () project(ScheduleSample LANGUAGES CXX) +set(CMAKE_VERBOSE_MAKEFILE ON) + set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -41,7 +43,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index bce04330..f0dfebf5 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -13,6 +13,8 @@ endif () project(dxFeedGraalCXXAPITests LANGUAGES CXX) +set(CMAKE_VERBOSE_MAKEFILE ON) + set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -54,7 +56,7 @@ foreach (DXFC_TEST_SOURCE ${DXFC_TEST_SOURCES}) else () target_link_libraries(${DXFC_TEST_BASENAME} PRIVATE dxfcxx::static fmt::fmt-header-only) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${DXFC_TEST_BASENAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/tools/Tools/CMakeLists.txt b/tools/Tools/CMakeLists.txt index a435fa66..1dedf549 100644 --- a/tools/Tools/CMakeLists.txt +++ b/tools/Tools/CMakeLists.txt @@ -13,6 +13,8 @@ endif () project(Tools LANGUAGES CXX) +set(CMAKE_VERBOSE_MAKEFILE ON) + set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) From 76bed6a73743c0e67b45f8beac8a78c13c76f2a1 Mon Sep 17 00:00:00 2001 From: Anatoly Kalin Date: Mon, 21 Apr 2025 20:01:41 +0300 Subject: [PATCH 04/11] Update default library linking options and disable redundant flag Renamed `DXFCXX_NODEFAULTLIB_LIBCMT` to `DXFCXX_NODEFAULTLIB` for clearer purposes and added support for additional libraries in `/NODEFAULTLIB` configuration. Also commented out an unnecessary `/fsanitize=address` linker option in `LinkAsanUbsan.cmake` to avoid redundancy. --- CMakeLists.txt | 42 +++++++++++++++++++++++---------------- cmake/LinkAsanUbsan.cmake | 2 +- 2 files changed, 26 insertions(+), 18 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c76efd87..c2495ec4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -65,7 +65,7 @@ option(DXFCXX_INSTALL_SAMPLES "Prepare install the samples" ${DXFCXX_IS_ROOT_PRO option(DXFCXX_INSTALL_TOOLS "Prepare install the tools" ${DXFCXX_IS_ROOT_PROJECT}) option(DXFCXX_LINK_STATIC_RUNTIME "Compile and link with -MT/-MTd or equivalent flag(s) to use a multi-threaded statically-linked runtime library. Visual Studio only." OFF) -option(DXFCXX_NODEFAULTLIB_LIBCMT "Ignore libcmt/libcmtd. Use if DXFCXX_LINK_STATIC_RUNTIME == ON." ${DXFCXX_LINK_STATIC_RUNTIME}) +option(DXFCXX_NODEFAULTLIB "Ignore libcmt/libcmtd/msvcrt/msvcrtd. Use if DXFCXX_LINK_STATIC_RUNTIME == ON." ${DXFCXX_LINK_STATIC_RUNTIME}) option(DXFCXX_ENABLE_METRICS "Enable metrics collection" OFF) @@ -154,11 +154,13 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Cl MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" ) - if (DXFCXX_NODEFAULTLIB_LIBCMT) + if (DXFCXX_NODEFAULTLIB) target_link_options(process PRIVATE - "/NODEFAULTLIB:LIBCMT" - "/NODEFAULTLIB:LIBCMTD" - "/VERBOSE" + /NODEFAULTLIB:libcmt + /NODEFAULTLIB:libcmtd + /NODEFAULTLIB:msvcrt + /NODEFAULTLIB:msvcrtd + /VERBOSE ) endif () endif () @@ -176,11 +178,13 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Cl MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" ) - if (DXFCXX_NODEFAULTLIB_LIBCMT) + if (DXFCXX_NODEFAULTLIB) target_link_options(console PRIVATE - "/NODEFAULTLIB:LIBCMT" - "/NODEFAULTLIB:LIBCMTD" - "/VERBOSE" + /NODEFAULTLIB:libcmt + /NODEFAULTLIB:libcmtd + /NODEFAULTLIB:msvcrt + /NODEFAULTLIB:msvcrtd + /VERBOSE ) endif () endif () @@ -198,11 +202,13 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Cl MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" ) - if (DXFCXX_NODEFAULTLIB_LIBCMT) + if (DXFCXX_NODEFAULTLIB) target_link_options(portals PRIVATE - "/NODEFAULTLIB:LIBCMT" - "/NODEFAULTLIB:LIBCMTD" - "/VERBOSE" + /NODEFAULTLIB:libcmt + /NODEFAULTLIB:libcmtd + /NODEFAULTLIB:msvcrt + /NODEFAULTLIB:msvcrtd + /VERBOSE ) endif () endif () @@ -590,11 +596,13 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Cl MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" ) - if (DXFCXX_NODEFAULTLIB_LIBCMT) + if (DXFCXX_NODEFAULTLIB) target_link_options(${PROJECT_NAME}_static PRIVATE - "/NODEFAULTLIB:LIBCMT" - "/NODEFAULTLIB:LIBCMTD" - "/VERBOSE" + /NODEFAULTLIB:libcmt + /NODEFAULTLIB:libcmtd + /NODEFAULTLIB:msvcrt + /NODEFAULTLIB:msvcrtd + /VERBOSE ) endif () endif () diff --git a/cmake/LinkAsanUbsan.cmake b/cmake/LinkAsanUbsan.cmake index 61b66649..3474ca7f 100644 --- a/cmake/LinkAsanUbsan.cmake +++ b/cmake/LinkAsanUbsan.cmake @@ -8,7 +8,7 @@ function(LinkAsan targetName) target_link_options(${targetName} PRIVATE "-fsanitize=address") else () target_compile_options(${targetName} PRIVATE "/fsanitize=address") - target_link_options(${targetName} PRIVATE "/fsanitize=address") + # target_link_options(${targetName} PRIVATE "/fsanitize=address") target_compile_definitions(${targetName} PUBLIC From 4a055f9e422a4021a1cff6a507a6f127fc2f6341 Mon Sep 17 00:00:00 2001 From: AnatolyKalin Date: Wed, 23 Apr 2025 17:21:25 +0300 Subject: [PATCH 05/11] Revert "Update default library linking options and disable redundant flag" This reverts commit 76bed6a73743c0e67b45f8beac8a78c13c76f2a1. --- CMakeLists.txt | 42 ++++++++++++++++----------------------- cmake/LinkAsanUbsan.cmake | 2 +- 2 files changed, 18 insertions(+), 26 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c2495ec4..c76efd87 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -65,7 +65,7 @@ option(DXFCXX_INSTALL_SAMPLES "Prepare install the samples" ${DXFCXX_IS_ROOT_PRO option(DXFCXX_INSTALL_TOOLS "Prepare install the tools" ${DXFCXX_IS_ROOT_PROJECT}) option(DXFCXX_LINK_STATIC_RUNTIME "Compile and link with -MT/-MTd or equivalent flag(s) to use a multi-threaded statically-linked runtime library. Visual Studio only." OFF) -option(DXFCXX_NODEFAULTLIB "Ignore libcmt/libcmtd/msvcrt/msvcrtd. Use if DXFCXX_LINK_STATIC_RUNTIME == ON." ${DXFCXX_LINK_STATIC_RUNTIME}) +option(DXFCXX_NODEFAULTLIB_LIBCMT "Ignore libcmt/libcmtd. Use if DXFCXX_LINK_STATIC_RUNTIME == ON." ${DXFCXX_LINK_STATIC_RUNTIME}) option(DXFCXX_ENABLE_METRICS "Enable metrics collection" OFF) @@ -154,13 +154,11 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Cl MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" ) - if (DXFCXX_NODEFAULTLIB) + if (DXFCXX_NODEFAULTLIB_LIBCMT) target_link_options(process PRIVATE - /NODEFAULTLIB:libcmt - /NODEFAULTLIB:libcmtd - /NODEFAULTLIB:msvcrt - /NODEFAULTLIB:msvcrtd - /VERBOSE + "/NODEFAULTLIB:LIBCMT" + "/NODEFAULTLIB:LIBCMTD" + "/VERBOSE" ) endif () endif () @@ -178,13 +176,11 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Cl MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" ) - if (DXFCXX_NODEFAULTLIB) + if (DXFCXX_NODEFAULTLIB_LIBCMT) target_link_options(console PRIVATE - /NODEFAULTLIB:libcmt - /NODEFAULTLIB:libcmtd - /NODEFAULTLIB:msvcrt - /NODEFAULTLIB:msvcrtd - /VERBOSE + "/NODEFAULTLIB:LIBCMT" + "/NODEFAULTLIB:LIBCMTD" + "/VERBOSE" ) endif () endif () @@ -202,13 +198,11 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Cl MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" ) - if (DXFCXX_NODEFAULTLIB) + if (DXFCXX_NODEFAULTLIB_LIBCMT) target_link_options(portals PRIVATE - /NODEFAULTLIB:libcmt - /NODEFAULTLIB:libcmtd - /NODEFAULTLIB:msvcrt - /NODEFAULTLIB:msvcrtd - /VERBOSE + "/NODEFAULTLIB:LIBCMT" + "/NODEFAULTLIB:LIBCMTD" + "/VERBOSE" ) endif () endif () @@ -596,13 +590,11 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Cl MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" ) - if (DXFCXX_NODEFAULTLIB) + if (DXFCXX_NODEFAULTLIB_LIBCMT) target_link_options(${PROJECT_NAME}_static PRIVATE - /NODEFAULTLIB:libcmt - /NODEFAULTLIB:libcmtd - /NODEFAULTLIB:msvcrt - /NODEFAULTLIB:msvcrtd - /VERBOSE + "/NODEFAULTLIB:LIBCMT" + "/NODEFAULTLIB:LIBCMTD" + "/VERBOSE" ) endif () endif () diff --git a/cmake/LinkAsanUbsan.cmake b/cmake/LinkAsanUbsan.cmake index 3474ca7f..61b66649 100644 --- a/cmake/LinkAsanUbsan.cmake +++ b/cmake/LinkAsanUbsan.cmake @@ -8,7 +8,7 @@ function(LinkAsan targetName) target_link_options(${targetName} PRIVATE "-fsanitize=address") else () target_compile_options(${targetName} PRIVATE "/fsanitize=address") - # target_link_options(${targetName} PRIVATE "/fsanitize=address") + target_link_options(${targetName} PRIVATE "/fsanitize=address") target_compile_definitions(${targetName} PUBLIC From ebf90aa742828afc948f1379cb0d8dae9eb92edb Mon Sep 17 00:00:00 2001 From: AnatolyKalin Date: Wed, 23 Apr 2025 17:21:25 +0300 Subject: [PATCH 06/11] Revert "Enable verbose makefiles and add Clang-MSVC compatibility." This reverts commit 87f85bb24e74780dac9ce646ad3f27e45ec2d92f. --- CMakeLists.txt | 60 ++++--------------- samples/cpp/API/AuthSample/CMakeLists.txt | 4 +- samples/cpp/API/ConnectSample/CMakeLists.txt | 4 +- .../API/PrintQuoteEventsSample/CMakeLists.txt | 4 +- .../API/PublishProfilesSample/CMakeLists.txt | 4 +- .../API/QuoteAndTradeSample/CMakeLists.txt | 4 +- .../cpp/API/ReconnectSample/CMakeLists.txt | 4 +- .../API/RequestProfileSample/CMakeLists.txt | 4 +- .../FetchDailyCandlesSample/CMakeLists.txt | 4 +- .../LastEventConsoleSample/CMakeLists.txt | 4 +- .../File/ConvertTapeFileSample/CMakeLists.txt | 4 +- .../cpp/File/FileParserSample/CMakeLists.txt | 4 +- .../File/WriteTapeFileSample/CMakeLists.txt | 4 +- samples/cpp/IPF/IpfLiveSample/CMakeLists.txt | 4 +- samples/cpp/IPF/IpfSample/CMakeLists.txt | 4 +- .../cpp/IPF/OptionChainSample/CMakeLists.txt | 4 +- .../IncOrderSnapshotSample/CMakeLists.txt | 4 +- .../MarketDepthModelSample/CMakeLists.txt | 4 +- .../MultipleMarketDepthSample/CMakeLists.txt | 4 +- .../Model/PriceLevelBookSample/CMakeLists.txt | 4 +- .../OnDemand/OnDemandSample/CMakeLists.txt | 4 +- .../Schedule/ScheduleSample/CMakeLists.txt | 4 +- tests/CMakeLists.txt | 4 +- tools/Tools/CMakeLists.txt | 2 - 24 files changed, 33 insertions(+), 117 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c76efd87..3dd36ac4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,8 +15,6 @@ set(CMAKE_POLICY_DEFAULT_CMP0077 NEW) project(dxFeedGraalCxxApi) -set(CMAKE_VERBOSE_MAKEFILE ON) - include(cmake/ParseVersion.cmake) set(DXFCXX_VERSION "v4.2.0" CACHE STRING "The dxFeed Graal CXX API package version") @@ -148,19 +146,16 @@ else () CPMAddPackage("gh:ttldtor/Process#v${PROCESS_VERSION}") endif () -if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) - if (DXFCXX_LINK_STATIC_RUNTIME) - set_target_properties(process PROPERTIES - MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" - ) +if (DXFCXX_LINK_STATIC_RUNTIME) + set_target_properties(process PROPERTIES + MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" + ) - if (DXFCXX_NODEFAULTLIB_LIBCMT) - target_link_options(process PRIVATE - "/NODEFAULTLIB:LIBCMT" - "/NODEFAULTLIB:LIBCMTD" - "/VERBOSE" - ) - endif () + if (DXFCXX_NODEFAULTLIB_LIBCMT) + target_link_options(process PRIVATE + "/NODEFAULTLIB:LIBCMT" + "/NODEFAULTLIB:LIBCMTD" + ) endif () endif () @@ -170,44 +165,12 @@ else () CPMAddPackage("gh:ttldtor/Console#v${CONSOLE_VERSION}") endif () -if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) - if (DXFCXX_LINK_STATIC_RUNTIME) - set_target_properties(console PROPERTIES - MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" - ) - - if (DXFCXX_NODEFAULTLIB_LIBCMT) - target_link_options(console PRIVATE - "/NODEFAULTLIB:LIBCMT" - "/NODEFAULTLIB:LIBCMTD" - "/VERBOSE" - ) - endif () - endif () -endif () - if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/third_party/portals/CMakeLists.txt") add_subdirectory(third_party/portals) else () CPMAddPackage("gh:ttldtor/portals#default") endif () -if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) - if (DXFCXX_LINK_STATIC_RUNTIME) - set_target_properties(portals PROPERTIES - MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" - ) - - if (DXFCXX_NODEFAULTLIB_LIBCMT) - target_link_options(portals PRIVATE - "/NODEFAULTLIB:LIBCMT" - "/NODEFAULTLIB:LIBCMTD" - "/VERBOSE" - ) - endif () - endif () -endif () - add_subdirectory(third_party/utfcpp-${UTFCPP_VERSION}) set(FMT_INSTALL OFF) @@ -483,7 +446,7 @@ endif () # fatal error C1128: number of sections exceeded object file format limit: compile with /bigobj set(DXFCXX_MSVC_COMPILE_OPTIONS /W4 /bigobj /utf-8) -set(DXFCXX_MSVC_DEBUG_LINK_OPTIONS /PDBALTPATH:$ /VERBOSE) +set(DXFCXX_MSVC_DEBUG_LINK_OPTIONS /PDBALTPATH:$) set(DXFCXX_GCC_LIKE_COMPILE_OPTIONS -fPIC -Wall -Wextra -pedantic) set(DXFCXX_GCC_LIKE_LINK_OPTIONS "-fPIC") @@ -583,7 +546,7 @@ add_library(dxfcxx::objects ALIAS ${PROJECT_NAME}_objects) add_library(dxfcxx::static ALIAS ${PROJECT_NAME}_static) add_library(dxfcxx::graal ALIAS DxFeedGraalNativeSdk) -if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) +if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") set_target_properties(${PROJECT_NAME} PROPERTIES CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME}_static PROPERTIES @@ -594,7 +557,6 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Cl target_link_options(${PROJECT_NAME}_static PRIVATE "/NODEFAULTLIB:LIBCMT" "/NODEFAULTLIB:LIBCMTD" - "/VERBOSE" ) endif () endif () diff --git a/samples/cpp/API/AuthSample/CMakeLists.txt b/samples/cpp/API/AuthSample/CMakeLists.txt index 781c2a02..b0f7d4ee 100644 --- a/samples/cpp/API/AuthSample/CMakeLists.txt +++ b/samples/cpp/API/AuthSample/CMakeLists.txt @@ -13,8 +13,6 @@ endif () project(AuthSample LANGUAGES CXX) -set(CMAKE_VERBOSE_MAKEFILE ON) - set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -43,7 +41,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static fmt::fmt-header-only) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/API/ConnectSample/CMakeLists.txt b/samples/cpp/API/ConnectSample/CMakeLists.txt index 0f228642..997c028b 100644 --- a/samples/cpp/API/ConnectSample/CMakeLists.txt +++ b/samples/cpp/API/ConnectSample/CMakeLists.txt @@ -13,8 +13,6 @@ endif () project(ConnectSample LANGUAGES CXX) -set(CMAKE_VERBOSE_MAKEFILE ON) - set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -45,7 +43,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/API/PrintQuoteEventsSample/CMakeLists.txt b/samples/cpp/API/PrintQuoteEventsSample/CMakeLists.txt index 55d322e2..0c689c9e 100644 --- a/samples/cpp/API/PrintQuoteEventsSample/CMakeLists.txt +++ b/samples/cpp/API/PrintQuoteEventsSample/CMakeLists.txt @@ -13,8 +13,6 @@ endif () project(PrintQuoteEventsSample LANGUAGES CXX) -set(CMAKE_VERBOSE_MAKEFILE ON) - set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -43,7 +41,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/API/PublishProfilesSample/CMakeLists.txt b/samples/cpp/API/PublishProfilesSample/CMakeLists.txt index ae9d913b..94331994 100644 --- a/samples/cpp/API/PublishProfilesSample/CMakeLists.txt +++ b/samples/cpp/API/PublishProfilesSample/CMakeLists.txt @@ -13,8 +13,6 @@ endif () project(PublishProfilesSample LANGUAGES CXX) -set(CMAKE_VERBOSE_MAKEFILE ON) - set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -43,7 +41,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/API/QuoteAndTradeSample/CMakeLists.txt b/samples/cpp/API/QuoteAndTradeSample/CMakeLists.txt index 61cb40ee..5d6d1506 100644 --- a/samples/cpp/API/QuoteAndTradeSample/CMakeLists.txt +++ b/samples/cpp/API/QuoteAndTradeSample/CMakeLists.txt @@ -13,8 +13,6 @@ endif () project(QuoteAndTradeSample LANGUAGES CXX) -set(CMAKE_VERBOSE_MAKEFILE ON) - set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -43,7 +41,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/API/ReconnectSample/CMakeLists.txt b/samples/cpp/API/ReconnectSample/CMakeLists.txt index b46ce30a..0ce1a11d 100644 --- a/samples/cpp/API/ReconnectSample/CMakeLists.txt +++ b/samples/cpp/API/ReconnectSample/CMakeLists.txt @@ -13,8 +13,6 @@ endif () project(ReconnectSample LANGUAGES CXX) -set(CMAKE_VERBOSE_MAKEFILE ON) - set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -43,7 +41,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static fmt::fmt-header-only) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/API/RequestProfileSample/CMakeLists.txt b/samples/cpp/API/RequestProfileSample/CMakeLists.txt index 41c7c319..50705df3 100644 --- a/samples/cpp/API/RequestProfileSample/CMakeLists.txt +++ b/samples/cpp/API/RequestProfileSample/CMakeLists.txt @@ -13,8 +13,6 @@ endif () project(RequestProfileSample LANGUAGES CXX) -set(CMAKE_VERBOSE_MAKEFILE ON) - set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -43,7 +41,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/Candle/FetchDailyCandlesSample/CMakeLists.txt b/samples/cpp/Candle/FetchDailyCandlesSample/CMakeLists.txt index e6ec9337..1dc0d70f 100644 --- a/samples/cpp/Candle/FetchDailyCandlesSample/CMakeLists.txt +++ b/samples/cpp/Candle/FetchDailyCandlesSample/CMakeLists.txt @@ -13,8 +13,6 @@ endif () project(FetchDailyCandlesSample LANGUAGES CXX) -set(CMAKE_VERBOSE_MAKEFILE ON) - set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -43,7 +41,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/Console/LastEventConsoleSample/CMakeLists.txt b/samples/cpp/Console/LastEventConsoleSample/CMakeLists.txt index e6fb46aa..cffdb6be 100644 --- a/samples/cpp/Console/LastEventConsoleSample/CMakeLists.txt +++ b/samples/cpp/Console/LastEventConsoleSample/CMakeLists.txt @@ -13,8 +13,6 @@ endif () project(LastEventConsoleSample LANGUAGES CXX) -set(CMAKE_VERBOSE_MAKEFILE ON) - set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -43,7 +41,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/File/ConvertTapeFileSample/CMakeLists.txt b/samples/cpp/File/ConvertTapeFileSample/CMakeLists.txt index b018eae7..21c13b8d 100644 --- a/samples/cpp/File/ConvertTapeFileSample/CMakeLists.txt +++ b/samples/cpp/File/ConvertTapeFileSample/CMakeLists.txt @@ -13,8 +13,6 @@ endif () project(ConvertTapeFileSample LANGUAGES CXX) -set(CMAKE_VERBOSE_MAKEFILE ON) - set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -43,7 +41,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/File/FileParserSample/CMakeLists.txt b/samples/cpp/File/FileParserSample/CMakeLists.txt index 1ec075b5..646f34c6 100644 --- a/samples/cpp/File/FileParserSample/CMakeLists.txt +++ b/samples/cpp/File/FileParserSample/CMakeLists.txt @@ -13,8 +13,6 @@ endif () project(FileParserSample LANGUAGES CXX) -set(CMAKE_VERBOSE_MAKEFILE ON) - set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -43,7 +41,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/File/WriteTapeFileSample/CMakeLists.txt b/samples/cpp/File/WriteTapeFileSample/CMakeLists.txt index c8de01ee..5aa1204f 100644 --- a/samples/cpp/File/WriteTapeFileSample/CMakeLists.txt +++ b/samples/cpp/File/WriteTapeFileSample/CMakeLists.txt @@ -13,8 +13,6 @@ endif () project(WriteTapeFileSample LANGUAGES CXX) -set(CMAKE_VERBOSE_MAKEFILE ON) - set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -43,7 +41,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/IPF/IpfLiveSample/CMakeLists.txt b/samples/cpp/IPF/IpfLiveSample/CMakeLists.txt index adce90da..49f76278 100644 --- a/samples/cpp/IPF/IpfLiveSample/CMakeLists.txt +++ b/samples/cpp/IPF/IpfLiveSample/CMakeLists.txt @@ -13,8 +13,6 @@ endif () project(IpfLiveSample LANGUAGES CXX) -set(CMAKE_VERBOSE_MAKEFILE ON) - set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -43,7 +41,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/IPF/IpfSample/CMakeLists.txt b/samples/cpp/IPF/IpfSample/CMakeLists.txt index f47a07ae..b1a31e72 100644 --- a/samples/cpp/IPF/IpfSample/CMakeLists.txt +++ b/samples/cpp/IPF/IpfSample/CMakeLists.txt @@ -13,8 +13,6 @@ endif () project(IpfSample LANGUAGES CXX) -set(CMAKE_VERBOSE_MAKEFILE ON) - set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -43,7 +41,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/IPF/OptionChainSample/CMakeLists.txt b/samples/cpp/IPF/OptionChainSample/CMakeLists.txt index 74b713a8..5f88c17f 100644 --- a/samples/cpp/IPF/OptionChainSample/CMakeLists.txt +++ b/samples/cpp/IPF/OptionChainSample/CMakeLists.txt @@ -13,8 +13,6 @@ endif () project(OptionChainSample LANGUAGES CXX) -set(CMAKE_VERBOSE_MAKEFILE ON) - set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -43,7 +41,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/Model/IncOrderSnapshotSample/CMakeLists.txt b/samples/cpp/Model/IncOrderSnapshotSample/CMakeLists.txt index 26b14ccf..d83f7324 100644 --- a/samples/cpp/Model/IncOrderSnapshotSample/CMakeLists.txt +++ b/samples/cpp/Model/IncOrderSnapshotSample/CMakeLists.txt @@ -13,8 +13,6 @@ endif () project(IncOrderSnapshotSample LANGUAGES CXX) -set(CMAKE_VERBOSE_MAKEFILE ON) - set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -45,7 +43,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static fmt::fmt-header-only) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/Model/MarketDepthModelSample/CMakeLists.txt b/samples/cpp/Model/MarketDepthModelSample/CMakeLists.txt index 7ce5a982..0009280b 100644 --- a/samples/cpp/Model/MarketDepthModelSample/CMakeLists.txt +++ b/samples/cpp/Model/MarketDepthModelSample/CMakeLists.txt @@ -13,8 +13,6 @@ endif () project(MarketDepthModelSample LANGUAGES CXX) -set(CMAKE_VERBOSE_MAKEFILE ON) - set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -45,7 +43,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static portals::portals fmt::fmt-header-only) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/Model/MultipleMarketDepthSample/CMakeLists.txt b/samples/cpp/Model/MultipleMarketDepthSample/CMakeLists.txt index 07d8ed7f..1f1311d9 100644 --- a/samples/cpp/Model/MultipleMarketDepthSample/CMakeLists.txt +++ b/samples/cpp/Model/MultipleMarketDepthSample/CMakeLists.txt @@ -13,8 +13,6 @@ endif () project(MultipleMarketDepthSample LANGUAGES CXX) -set(CMAKE_VERBOSE_MAKEFILE ON) - set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -43,7 +41,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static fmt::fmt-header-only) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/Model/PriceLevelBookSample/CMakeLists.txt b/samples/cpp/Model/PriceLevelBookSample/CMakeLists.txt index 13c35d77..11a1f0f3 100644 --- a/samples/cpp/Model/PriceLevelBookSample/CMakeLists.txt +++ b/samples/cpp/Model/PriceLevelBookSample/CMakeLists.txt @@ -13,8 +13,6 @@ endif () project(PriceLevelBookSample LANGUAGES CXX) -set(CMAKE_VERBOSE_MAKEFILE ON) - set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -43,7 +41,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static fmt::fmt-header-only) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/OnDemand/OnDemandSample/CMakeLists.txt b/samples/cpp/OnDemand/OnDemandSample/CMakeLists.txt index beff2e44..33280802 100644 --- a/samples/cpp/OnDemand/OnDemandSample/CMakeLists.txt +++ b/samples/cpp/OnDemand/OnDemandSample/CMakeLists.txt @@ -13,8 +13,6 @@ endif () project(OnDemandSample LANGUAGES CXX) -set(CMAKE_VERBOSE_MAKEFILE ON) - set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -43,7 +41,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/samples/cpp/Schedule/ScheduleSample/CMakeLists.txt b/samples/cpp/Schedule/ScheduleSample/CMakeLists.txt index e68336f7..aec0b72f 100644 --- a/samples/cpp/Schedule/ScheduleSample/CMakeLists.txt +++ b/samples/cpp/Schedule/ScheduleSample/CMakeLists.txt @@ -13,8 +13,6 @@ endif () project(ScheduleSample LANGUAGES CXX) -set(CMAKE_VERBOSE_MAKEFILE ON) - set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -43,7 +41,7 @@ if (DXFCXX_DYNAMICALLY_LINK_SAMPLES) else () target_link_libraries(${PROJECT_NAME} PRIVATE dxfcxx::static) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index f0dfebf5..bce04330 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -13,8 +13,6 @@ endif () project(dxFeedGraalCXXAPITests LANGUAGES CXX) -set(CMAKE_VERBOSE_MAKEFILE ON) - set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) @@ -56,7 +54,7 @@ foreach (DXFC_TEST_SOURCE ${DXFC_TEST_SOURCES}) else () target_link_libraries(${DXFC_TEST_BASENAME} PRIVATE dxfcxx::static fmt::fmt-header-only) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") if (DXFCXX_LINK_STATIC_RUNTIME) set_target_properties(${DXFC_TEST_BASENAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" diff --git a/tools/Tools/CMakeLists.txt b/tools/Tools/CMakeLists.txt index 1dedf549..a435fa66 100644 --- a/tools/Tools/CMakeLists.txt +++ b/tools/Tools/CMakeLists.txt @@ -13,8 +13,6 @@ endif () project(Tools LANGUAGES CXX) -set(CMAKE_VERBOSE_MAKEFILE ON) - set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_STANDARD 11) set(CXX_EXTENSIONS OFF) From 9af6e5758f4ec4d19175b26e608dae20e8390e27 Mon Sep 17 00:00:00 2001 From: AnatolyKalin Date: Wed, 23 Apr 2025 17:21:26 +0300 Subject: [PATCH 07/11] Revert "Refactor build system to introduce object library." This reverts commit 6db80d774c8f1348f6898ff225633c69d52bf708. --- CMakeLists.txt | 152 +++++++++++++++---------------------- cmake/LinkStacktrace.cmake | 10 +-- 2 files changed, 68 insertions(+), 94 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3dd36ac4..1615e925 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -424,11 +424,8 @@ set(dxFeedGraalCxxApi_Sources ${dxFeedGraalCxxApi_EventMisc_Sources} ${dxFeedGraalCxxApi_Schedule_Sources} ${dxFeedGraalCxxApi_Util_Sources} - src/api.cpp ) -add_library(${PROJECT_NAME}_objects OBJECT ${dxFeedGraalCxxApi_Sources}) - if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") set(CMAKE_MACOSX_RPATH ON) set(CMAKE_SKIP_BUILD_RPATH ON) @@ -444,36 +441,9 @@ elseif (UNIX) set(CMAKE_INSTALL_RPATH "$ORIGIN/../${CMAKE_INSTALL_LIBDIR}:$ORIGIN/../lib64:$ORIGIN/../lib:$ORIGIN") endif () -# fatal error C1128: number of sections exceeded object file format limit: compile with /bigobj -set(DXFCXX_MSVC_COMPILE_OPTIONS /W4 /bigobj /utf-8) -set(DXFCXX_MSVC_DEBUG_LINK_OPTIONS /PDBALTPATH:$) -set(DXFCXX_GCC_LIKE_COMPILE_OPTIONS -fPIC -Wall -Wextra -pedantic) -set(DXFCXX_GCC_LIKE_LINK_OPTIONS "-fPIC") - -#A workaround to fix 'relocation truncated to fit: IMAGE_REL_AMD64_SECREL' error (MinGW + Debug) -set(DXFCXX_MINGW_DEBUG_LINK_OPTIONS "-Wl,--disable-dynamicbase,--disable-high-entropy-va,--default-image-base-low") - -target_include_directories(${PROJECT_NAME}_objects PUBLIC include) -target_include_directories(${PROJECT_NAME}_objects PRIVATE third_party/range-v3-${RANGE_VERSION}/include) -target_compile_definitions(${PROJECT_NAME}_objects PRIVATE - FMT_HEADER_ONLY=1 _SILENCE_ALL_MS_EXT_DEPRECATION_WARNINGS=1) - -target_compile_options(${PROJECT_NAME}_objects - PRIVATE - $<$:${DXFCXX_MSVC_COMPILE_OPTIONS}> - $<$:${DXFCXX_MSVC_COMPILE_OPTIONS}> - $<$:${DXFCXX_GCC_LIKE_COMPILE_OPTIONS}> - $<$:${DXFCXX_GCC_LIKE_COMPILE_OPTIONS}> -) - -if (DXFCXX_USE_PRECOMPILED_HEADERS) - target_precompile_headers(${PROJECT_NAME}_objects PRIVATE include/dxfeed_graal_cpp_api/internal/PrecompiledHeaders.hpp) -endif () - -target_link_libraries(${PROJECT_NAME}_objects PRIVATE DxFeedGraalNativeSdk utf8cpp fmt::fmt-header-only date::date) - add_library(${PROJECT_NAME}_static STATIC - $ + ${dxFeedGraalCxxApi_Sources} + src/api.cpp ) if (WIN32) @@ -484,65 +454,18 @@ if (WIN32) endif () add_library(${PROJECT_NAME} SHARED - $ + ${dxFeedGraalCxxApi_Sources} resources/dxFeedGraalCxxApi.rc + src/api.cpp ) else () add_library(${PROJECT_NAME} SHARED - $ + ${dxFeedGraalCxxApi_Sources} + src/api.cpp ) endif () -# https://developercommunity.visualstudio.com/t/Invalid-code-generation-in-release-1940/10678572?sort=newest&viewtype=all -# https://github.com/microsoft/STL/wiki/Changelog#vs-2022-1710 -# https://github.com/actions/runner-images/issues/10004 -if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") - target_compile_definitions(${PROJECT_NAME}_objects PRIVATE _DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR) - target_compile_definitions(${PROJECT_NAME} PRIVATE _DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR) - target_compile_definitions(${PROJECT_NAME}_static PRIVATE _DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR) -endif () - -if (DXFCXX_FEATURE_STACKTRACE) - LinkStacktrace(${PROJECT_NAME}_objects) - - target_compile_definitions(${PROJECT_NAME}_objects PRIVATE DXFCXX_FEATURE_STACKTRACE) - target_compile_definitions(${PROJECT_NAME} PRIVATE DXFCXX_FEATURE_STACKTRACE) - target_compile_definitions(${PROJECT_NAME}_static PRIVATE DXFCXX_FEATURE_STACKTRACE) -endif () - -target_compile_definitions(${PROJECT_NAME}_objects PUBLIC - DXFCXX_VERSION="${DXFCXX_VERSION}" - DXFCXX_MAJOR_VERSION=${DXFCXX_MAJOR_VERSION} - DXFCXX_MINOR_VERSION=${DXFCXX_MINOR_VERSION} - DXFCXX_PATCH_VERSION=${DXFCXX_PATCH_VERSION} -) - -target_compile_definitions(${PROJECT_NAME} PUBLIC - DXFCXX_VERSION="${DXFCXX_VERSION}" - DXFCXX_MAJOR_VERSION=${DXFCXX_MAJOR_VERSION} - DXFCXX_MINOR_VERSION=${DXFCXX_MINOR_VERSION} - DXFCXX_PATCH_VERSION=${DXFCXX_PATCH_VERSION} -) - -target_compile_definitions(${PROJECT_NAME}_static PUBLIC - DXFCXX_VERSION="${DXFCXX_VERSION}" - DXFCXX_MAJOR_VERSION=${DXFCXX_MAJOR_VERSION} - DXFCXX_MINOR_VERSION=${DXFCXX_MINOR_VERSION} - DXFCXX_PATCH_VERSION=${DXFCXX_PATCH_VERSION} -) - -if (DXFCXX_ENABLE_METRICS) - target_compile_definitions(${PROJECT_NAME}_objects PRIVATE DXFCXX_ENABLE_METRICS=1) - target_compile_definitions(${PROJECT_NAME} PRIVATE DXFCXX_ENABLE_METRICS=1) - target_compile_definitions(${PROJECT_NAME}_static PRIVATE DXFCXX_ENABLE_METRICS=1) -endif () - -target_link_libraries(${PROJECT_NAME} PRIVATE DxFeedGraalNativeSdk utf8cpp fmt::fmt-header-only date::date) -target_link_libraries(${PROJECT_NAME}_static PRIVATE DxFeedGraalNativeSdk utf8cpp fmt::fmt-header-only date::date) - - add_library(dxfcxx ALIAS ${PROJECT_NAME}) -add_library(dxfcxx::objects ALIAS ${PROJECT_NAME}_objects) add_library(dxfcxx::static ALIAS ${PROJECT_NAME}_static) add_library(dxfcxx::graal ALIAS DxFeedGraalNativeSdk) @@ -562,7 +485,6 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") endif () endif () - target_include_directories(${PROJECT_NAME} PUBLIC include) target_include_directories(${PROJECT_NAME} PRIVATE third_party/range-v3-${RANGE_VERSION}/include) target_compile_definitions(${PROJECT_NAME} PRIVATE @@ -573,8 +495,25 @@ target_include_directories(${PROJECT_NAME}_static PRIVATE third_party/range-v3-$ target_compile_definitions(${PROJECT_NAME}_static PRIVATE FMT_HEADER_ONLY=1 _SILENCE_ALL_MS_EXT_DEPRECATION_WARNINGS=1) +# fatal error C1128: number of sections exceeded object file format limit: compile with /bigobj +set(DXFCXX_MSVC_COMPILE_OPTIONS /W4 /bigobj /utf-8) +set(DXFCXX_MSVC_DEBUG_LINK_OPTIONS /PDBALTPATH:$) +set(DXFCXX_GCC_LIKE_COMPILE_OPTIONS -fPIC -Wall -Wextra -pedantic) +set(DXFCXX_GCC_LIKE_LINK_OPTIONS "-fPIC") + +#A workaround to fix 'relocation truncated to fit: IMAGE_REL_AMD64_SECREL' error (MinGW + Debug) +set(DXFCXX_MINGW_DEBUG_LINK_OPTIONS "-Wl,--disable-dynamicbase,--disable-high-entropy-va,--default-image-base-low") + +# https://developercommunity.visualstudio.com/t/Invalid-code-generation-in-release-1940/10678572?sort=newest&viewtype=all +# https://github.com/microsoft/STL/wiki/Changelog#vs-2022-1710 +# https://github.com/actions/runner-images/issues/10004 +if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + target_compile_definitions(${PROJECT_NAME} PUBLIC _DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR) + target_compile_definitions(${PROJECT_NAME}_static PUBLIC _DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR) +endif () + target_compile_options(${PROJECT_NAME} - PRIVATE + PUBLIC $<$:${DXFCXX_MSVC_COMPILE_OPTIONS}> $<$:${DXFCXX_MSVC_COMPILE_OPTIONS}> $<$:${DXFCXX_GCC_LIKE_COMPILE_OPTIONS}> @@ -582,7 +521,7 @@ target_compile_options(${PROJECT_NAME} ) target_link_options(${PROJECT_NAME} - PRIVATE + PUBLIC $<$,$,$>>:${DXFCXX_MSVC_DEBUG_LINK_OPTIONS}> $<$,$,$>>:${DXFCXX_MSVC_DEBUG_LINK_OPTIONS}> $<$:${DXFCXX_GCC_LIKE_LINK_OPTIONS}> @@ -591,7 +530,7 @@ target_link_options(${PROJECT_NAME} if (MINGW) target_link_options(${PROJECT_NAME} - PRIVATE + PUBLIC $<$,$>:${DXFCXX_MINGW_DEBUG_LINK_OPTIONS}> ) endif () @@ -605,18 +544,34 @@ target_compile_options(${PROJECT_NAME}_static ) target_link_options(${PROJECT_NAME}_static - PRIVATE + PUBLIC $<$:${DXFCXX_GCC_LIKE_LINK_OPTIONS}> $<$:${DXFCXX_GCC_LIKE_LINK_OPTIONS}> ) if (MINGW) target_link_options(${PROJECT_NAME}_static - PRIVATE + PUBLIC $<$,$>:${DXFCXX_MINGW_DEBUG_LINK_OPTIONS}> ) endif () +if (DXFCXX_USE_PRECOMPILED_HEADERS) + target_precompile_headers(${PROJECT_NAME} PRIVATE include/dxfeed_graal_cpp_api/internal/PrecompiledHeaders.hpp) + target_precompile_headers(${PROJECT_NAME}_static PRIVATE include/dxfeed_graal_cpp_api/internal/PrecompiledHeaders.hpp) +endif () + +target_link_libraries(${PROJECT_NAME} PRIVATE DxFeedGraalNativeSdk utf8cpp fmt::fmt-header-only date::date) +target_link_libraries(${PROJECT_NAME}_static PRIVATE DxFeedGraalNativeSdk utf8cpp fmt::fmt-header-only date::date) + +if (DXFCXX_FEATURE_STACKTRACE) + LinkStacktrace(${PROJECT_NAME}) + LinkStacktrace(${PROJECT_NAME}_static) + + target_compile_definitions(${PROJECT_NAME} PUBLIC DXFCXX_FEATURE_STACKTRACE) + target_compile_definitions(${PROJECT_NAME}_static PUBLIC DXFCXX_FEATURE_STACKTRACE) +endif () + if (DXFCXX_ENABLE_ASAN) LinkAsan(${PROJECT_NAME}) elseif (DXFCXX_ENABLE_UBSAN) @@ -628,6 +583,25 @@ add_custom_command(TARGET ${PROJECT_NAME}_static POST_BUILD COMMAND ${CMAKE_COMM add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $ $) +target_compile_definitions(${PROJECT_NAME} PUBLIC + DXFCXX_VERSION="${DXFCXX_VERSION}" + DXFCXX_MAJOR_VERSION=${DXFCXX_MAJOR_VERSION} + DXFCXX_MINOR_VERSION=${DXFCXX_MINOR_VERSION} + DXFCXX_PATCH_VERSION=${DXFCXX_PATCH_VERSION} +) + +target_compile_definitions(${PROJECT_NAME}_static PUBLIC + DXFCXX_VERSION="${DXFCXX_VERSION}" + DXFCXX_MAJOR_VERSION=${DXFCXX_MAJOR_VERSION} + DXFCXX_MINOR_VERSION=${DXFCXX_MINOR_VERSION} + DXFCXX_PATCH_VERSION=${DXFCXX_PATCH_VERSION} +) + +if (DXFCXX_ENABLE_METRICS) + target_compile_definitions(${PROJECT_NAME} PUBLIC DXFCXX_ENABLE_METRICS=1) + target_compile_definitions(${PROJECT_NAME}_static PUBLIC DXFCXX_ENABLE_METRICS=1) +endif () + if (DXFCXX_BUILD_UNIT_TESTS) include(CTest) add_subdirectory(tests) diff --git a/cmake/LinkStacktrace.cmake b/cmake/LinkStacktrace.cmake index 495b615f..aefa8a60 100644 --- a/cmake/LinkStacktrace.cmake +++ b/cmake/LinkStacktrace.cmake @@ -5,18 +5,18 @@ function(LinkStacktrace targetName) target_compile_definitions(${targetName} PRIVATE $<$:BOOST_STACKTRACE_GNU_SOURCE_NOT_REQUIRED>) if (TARGET Boost::stacktrace_windbg) - target_link_libraries(${targetName} PRIVATE Boost::stacktrace_windbg ole32 dbgeng) + target_link_libraries(${targetName} PUBLIC Boost::stacktrace_windbg ole32 dbgeng) elseif (TARGET Boost::stacktrace_backtrace) - target_link_libraries(${targetName} PRIVATE Boost::stacktrace_backtrace dl backtrace) + target_link_libraries(${targetName} PUBLIC Boost::stacktrace_backtrace dl backtrace) if (TARGET Boost::stacktrace_addr2line) target_compile_definitions(${targetName} PRIVATE BOOST_STACKTRACE_USE_ADDR2LINE) endif () elseif (TARGET Boost::stacktrace_addr2line) - target_link_libraries(${targetName} PRIVATE Boost::stacktrace_addr2line dl) + target_link_libraries(${targetName} PUBLIC Boost::stacktrace_addr2line dl) elseif (TARGET Boost::stacktrace_basic) - target_link_libraries(${targetName} PRIVATE Boost::stacktrace_basic dl) + target_link_libraries(${targetName} PUBLIC Boost::stacktrace_basic dl) else () - target_link_libraries(${targetName} PRIVATE Boost::stacktrace_noop) + target_link_libraries(${targetName} PUBLIC Boost::stacktrace_noop) endif () endfunction() \ No newline at end of file From 43f0a05d432d2ebb79183d86d2045fe1f1487159 Mon Sep 17 00:00:00 2001 From: AnatolyKalin Date: Wed, 23 Apr 2025 17:51:06 +0300 Subject: [PATCH 08/11] `Refactor MSVC static runtime setup into reusable function` Moved the MSVC static runtime configuration logic into a new reusable function `SetupStaticRuntimeMSVC` in `SetupStaticRuntimeMSVC.cmake`. This simplifies redundant code across multiple targets and makes the configuration clearer and more maintainable. --- CMakeLists.txt | 45 +++++++++++++----------------- cmake/LinkAsanUbsan.cmake | 2 +- cmake/SetupStaticRuntimeMSVC.cmake | 20 +++++++++++++ 3 files changed, 40 insertions(+), 27 deletions(-) create mode 100644 cmake/SetupStaticRuntimeMSVC.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 1615e925..8f4c3c00 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -63,7 +63,7 @@ option(DXFCXX_INSTALL_SAMPLES "Prepare install the samples" ${DXFCXX_IS_ROOT_PRO option(DXFCXX_INSTALL_TOOLS "Prepare install the tools" ${DXFCXX_IS_ROOT_PROJECT}) option(DXFCXX_LINK_STATIC_RUNTIME "Compile and link with -MT/-MTd or equivalent flag(s) to use a multi-threaded statically-linked runtime library. Visual Studio only." OFF) -option(DXFCXX_NODEFAULTLIB_LIBCMT "Ignore libcmt/libcmtd. Use if DXFCXX_LINK_STATIC_RUNTIME == ON." ${DXFCXX_LINK_STATIC_RUNTIME}) +option(DXFCXX_NODEFAULTLIB "Ignore libcmt/libcmtd/msvcrt/msvcrtd. Use if DXFCXX_LINK_STATIC_RUNTIME == ON." ${DXFCXX_LINK_STATIC_RUNTIME}) option(DXFCXX_ENABLE_METRICS "Enable metrics collection" OFF) @@ -93,6 +93,7 @@ set(DXFCXX_GRAAL_TARGET_CPU "unknown" CACHE STRING "") include(cmake/ParseAndDetectPlatforms.cmake) include(cmake/LinkStacktrace.cmake) include(cmake/LinkAsanUbsan.cmake) +include(cmake/SetupStaticRuntimeMSVC.cmake) if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/third_party/graal-native-sdk-${DXFEED_GRAAL_NATIVE_SDK_VERSION}-${DXFCXX_GRAAL_TARGET_PLATFORM}/CMakeLists.txt") add_subdirectory(third_party/graal-native-sdk-${DXFEED_GRAAL_NATIVE_SDK_VERSION}-${DXFCXX_GRAAL_TARGET_PLATFORM}) @@ -146,17 +147,8 @@ else () CPMAddPackage("gh:ttldtor/Process#v${PROCESS_VERSION}") endif () -if (DXFCXX_LINK_STATIC_RUNTIME) - set_target_properties(process PROPERTIES - MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" - ) - - if (DXFCXX_NODEFAULTLIB_LIBCMT) - target_link_options(process PRIVATE - "/NODEFAULTLIB:LIBCMT" - "/NODEFAULTLIB:LIBCMTD" - ) - endif () +if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) + SetupStaticRuntimeMSVC(process ${DXFCXX_LINK_STATIC_RUNTIME} ${DXFCXX_NODEFAULTLIB}) endif () if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/third_party/Console-${CONSOLE_VERSION}/CMakeLists.txt") @@ -165,12 +157,20 @@ else () CPMAddPackage("gh:ttldtor/Console#v${CONSOLE_VERSION}") endif () +if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) + SetupStaticRuntimeMSVC(console ${DXFCXX_LINK_STATIC_RUNTIME} ${DXFCXX_NODEFAULTLIB}) +endif () + if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/third_party/portals/CMakeLists.txt") add_subdirectory(third_party/portals) else () CPMAddPackage("gh:ttldtor/portals#default") endif () +if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) + SetupStaticRuntimeMSVC(portals ${DXFCXX_LINK_STATIC_RUNTIME} ${DXFCXX_NODEFAULTLIB}) +endif () + add_subdirectory(third_party/utfcpp-${UTFCPP_VERSION}) set(FMT_INSTALL OFF) @@ -189,6 +189,10 @@ else () FetchContent_MakeAvailable(fmt) endif () +if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) + SetupStaticRuntimeMSVC(fmt ${DXFCXX_LINK_STATIC_RUNTIME} ${DXFCXX_NODEFAULTLIB}) +endif () + #set(BUILD_TZ_LIB ON) #set(USE_SYSTEM_TZ_DB ON) add_subdirectory(third_party/date-${DATE_VERSION}) @@ -469,20 +473,9 @@ add_library(dxfcxx ALIAS ${PROJECT_NAME}) add_library(dxfcxx::static ALIAS ${PROJECT_NAME}_static) add_library(dxfcxx::graal ALIAS DxFeedGraalNativeSdk) -if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") - set_target_properties(${PROJECT_NAME} PROPERTIES CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) - if (DXFCXX_LINK_STATIC_RUNTIME) - set_target_properties(${PROJECT_NAME}_static PROPERTIES - MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" - ) - - if (DXFCXX_NODEFAULTLIB_LIBCMT) - target_link_options(${PROJECT_NAME}_static PRIVATE - "/NODEFAULTLIB:LIBCMT" - "/NODEFAULTLIB:LIBCMTD" - ) - endif () - endif () +if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) + # set_target_properties(${PROJECT_NAME} PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON) + SetupStaticRuntimeMSVC(${PROJECT_NAME}_static ${DXFCXX_LINK_STATIC_RUNTIME} ${DXFCXX_NODEFAULTLIB}) endif () target_include_directories(${PROJECT_NAME} PUBLIC include) diff --git a/cmake/LinkAsanUbsan.cmake b/cmake/LinkAsanUbsan.cmake index 61b66649..3474ca7f 100644 --- a/cmake/LinkAsanUbsan.cmake +++ b/cmake/LinkAsanUbsan.cmake @@ -8,7 +8,7 @@ function(LinkAsan targetName) target_link_options(${targetName} PRIVATE "-fsanitize=address") else () target_compile_options(${targetName} PRIVATE "/fsanitize=address") - target_link_options(${targetName} PRIVATE "/fsanitize=address") + # target_link_options(${targetName} PRIVATE "/fsanitize=address") target_compile_definitions(${targetName} PUBLIC diff --git a/cmake/SetupStaticRuntimeMSVC.cmake b/cmake/SetupStaticRuntimeMSVC.cmake new file mode 100644 index 00000000..14b4aed8 --- /dev/null +++ b/cmake/SetupStaticRuntimeMSVC.cmake @@ -0,0 +1,20 @@ +# Copyright (c) 2025 Devexperts LLC. +# SPDX-License-Identifier: MPL-2.0 + +function(SetupStaticRuntimeMSVC targetName linkStaticRuntime noDefaultLib) + if (${linkStaticRuntime}) + set_target_properties(${targetName} PROPERTIES + MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" + ) + + if (${noDefaultLib}) + target_link_options(${targetName} PRIVATE + /NODEFAULTLIB:libcmt + /NODEFAULTLIB:libcmtd + /NODEFAULTLIB:msvcrt + /NODEFAULTLIB:msvcrtd + /VERBOSE + ) + endif () + endif () +endfunction() \ No newline at end of file From c5cac0d6fbddb46ff810f634ad4274464d71ca66 Mon Sep 17 00:00:00 2001 From: AnatolyKalin Date: Fri, 2 May 2025 23:42:25 +0300 Subject: [PATCH 09/11] [MDAPI-254][C++] Migrate to dxFeed Graal Native SDK 2.5.0 --- ReleaseNotes.md | 9 ++++ .../event/market/OrderSource.hpp | 50 +++++++++++++++++-- src/event/market/OrderSource.cpp | 7 ++- 3 files changed, 61 insertions(+), 5 deletions(-) diff --git a/ReleaseNotes.md b/ReleaseNotes.md index a27c4c5d..23651efc 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -1,3 +1,12 @@ +## v4.3.0 + +* Renamed `DXFCXX_NODEFAULTLIB_LIBCMT` to `DXFCXX_NODEFAULTLIB` CMake project option for clearer purposes and added support for additional libraries in `/NODEFAULTLIB` configuration. +* **\[MDAPI-254]\[C++]** Migrated to Graal SDK v2.5.0 + * Added `AGGREGATE`, `COMPOSITE`, `REGIONAL` OrderSource. The new system property `dxscheme.unitaryOrderSource=true|false` has been added. + It controls whether a single or unitary source is used when subscribing to all sources. It is set to 'false' by default. + All separate sources, such as `COMPOSITE_ASK`, `COMPOSITE_BID`, `REGIONAL_ASK`, `REGIONAL_BID`, `AGGREGATE_ASK` and `AGGREGATE_BID` have been + declared deprecated. + ## v4.2.0 * **\[MDAPI-249]\[C++]** Transitive dependencies are hidden. diff --git a/include/dxfeed_graal_cpp_api/event/market/OrderSource.hpp b/include/dxfeed_graal_cpp_api/event/market/OrderSource.hpp index 970ed0d7..8f72ef69 100644 --- a/include/dxfeed_graal_cpp_api/event/market/OrderSource.hpp +++ b/include/dxfeed_graal_cpp_api/event/market/OrderSource.hpp @@ -85,43 +85,87 @@ class DXFCPP_EXPORT OrderSource final : public IndexedEventSource { /** * Bid side of a composite Quote. * It is a synthetic source. + * It cannot be used with DXFeed::getIndexedEventsPromise method and it cannot be published directly to. * The subscription on composite Quote event is observed when this source is subscribed to. + * @deprecated Use the OrderSource::COMPOSITE source. */ static const OrderSource COMPOSITE_BID; /** * Ask side of a composite Quote. - * It is a synthetic source. + * It is a synthetic and separate source. + * It cannot be used with DXFeed::getIndexedEventsPromise method and it cannot be published directly to. * The subscription on composite Quote event is observed when this source is subscribed to. + * @deprecated Use the OrderSource::COMPOSITE source. */ static const OrderSource COMPOSITE_ASK; /** * Bid side of a regional Quote. - * It is a synthetic source. + * It is a synthetic and separate source. + * It cannot be used with DXFeed::getIndexedEventsPromise method and it cannot be published directly to. * The subscription on regional Quote event is observed when this source is subscribed to. + * @deprecated Use the OrderSource::REGIONAL source. */ static const OrderSource REGIONAL_BID; /** * Ask side of a regional Quote. - * It is a synthetic source. + * It is a synthetic and separate source. + * It cannot be used with DXFeed::getIndexedEventsPromise method and it cannot be published directly to. * The subscription on regional Quote event is observed when this source is subscribed to. + * @deprecated Use the OrderSource::REGIONAL source. */ static const OrderSource REGIONAL_ASK; /** * Bid side of an aggregate order book (futures depth and NASDAQ Level II). + * It is a aggregate and separate source. * This source cannot be directly published via dxFeed API, but otherwise it is fully operational. + * @deprecated Use the OrderSource::AGGREGATE source. */ static const OrderSource AGGREGATE_BID; /** * Ask side of an aggregate order book (futures depth and NASDAQ Level II). + * It is a aggregate and separate source. * This source cannot be directly published via dxFeed API, but otherwise it is fully operational. + * @deprecated Use the OrderSource::AGGREGATE source. */ static const OrderSource AGGREGATE_ASK; + /** + * Composite Quote. + * It is a synthetic and unitary source, that represents both bid and ask side. + * It cannot be used with DXFeed::getIndexedEventsPromise method and it cannot be published directly to. + * The subscription on composite Quote event is observed when this source is subscribed to. + * To use this source when subscribing to all sources (e.g., when subscribing to an order without specifying a + * source), instead of OrderSource::COMPOSITE_ASK and OrderSource::COMPOSITE_BID, set the system property + * `dxscheme.unitaryOrderSource` to `true`. + */ + static const OrderSource COMPOSITE; + + /** + * Regional Quote. + * It is a synthetic and unitary source, that represents both bid and ask side. + * It cannot be used with DXFeed::getIndexedEventsPromise method and it cannot be published directly to. + * The subscription on regional Quote event is observed when this source is subscribed to. + * To use this source when subscribing to all sources (e.g., when subscribing to an order without specifying a source), + * instead of OrderSource::REGIONAL_ASK and OrderSource::REGIONAL_BID, set the system property + * `dxscheme.unitaryOrderSource` to `true`. + */ + static const OrderSource REGIONAL; + + /** + * Aggregate order book (futures depth and NASDAQ Level II). + * It is a aggregate and unitary source, that represents both bid and ask side. + * This source cannot be directly published via dxFeed API, but otherwise it is fully operational. + * To use this source when subscribing to all sources (e.g., when subscribing to an order without specifying a source), + * instead of OrderSource::AGGREGATE_ASK and OrderSource::AGGREGATE_BID, set the system property + * `dxscheme.unitaryOrderSource` to `true`. + */ + static const OrderSource AGGREGATE; + /** * Default source for publishing custom order books. * Order, AnalyticOrder, OtcMarketsOrder and SpreadOrder events are @ref ::isPublishable() "publishable" diff --git a/src/event/market/OrderSource.cpp b/src/event/market/OrderSource.cpp index 386941cb..7b742b15 100644 --- a/src/event/market/OrderSource.cpp +++ b/src/event/market/OrderSource.cpp @@ -14,6 +14,9 @@ const OrderSource OrderSource::REGIONAL_BID(3, "REGIONAL_BID", 0); const OrderSource OrderSource::REGIONAL_ASK(4, "REGIONAL_ASK", 0); const OrderSource OrderSource::AGGREGATE_BID(5, "AGGREGATE_BID", 0); const OrderSource OrderSource::AGGREGATE_ASK(6, "AGGREGATE_ASK", 0); +const OrderSource OrderSource::COMPOSITE(7, "COMPOSITE", 0); +const OrderSource OrderSource::REGIONAL(8, "REGIONAL", 0); +const OrderSource OrderSource::AGGREGATE(9, "AGGREGATE", 0); const OrderSource OrderSource::DEFAULT(0, "DEFAULT", PUB_ORDER | PUB_ANALYTIC_ORDER | PUB_OTC_MARKETS_ORDER | PUB_SPREAD_ORDER | FULL_ORDER_BOOK); @@ -71,7 +74,7 @@ const std::unordered_map, std::reference return result; }({// - COMPOSITE_BID, COMPOSITE_ASK, REGIONAL_BID, REGIONAL_ASK, AGGREGATE_BID, AGGREGATE_ASK, + COMPOSITE_BID, COMPOSITE_ASK, REGIONAL_BID, REGIONAL_ASK, AGGREGATE_BID, AGGREGATE_ASK, COMPOSITE, REGIONAL, AGGREGATE, // DEFAULT, // @@ -172,7 +175,7 @@ std::unique_ptr OrderSource::toG } bool OrderSource::isSpecialSourceId(std::int32_t sourceId) noexcept { - return sourceId >= COMPOSITE_BID.id() && sourceId <= AGGREGATE_ASK.id(); + return sourceId >= COMPOSITE_BID.id() && sourceId <= AGGREGATE.id(); } const OrderSource &OrderSource::valueOf(std::int32_t sourceId) { From 2fafa1e1a393110424ce740d8949c16d41df1526 Mon Sep 17 00:00:00 2001 From: AnatolyKalin Date: Sat, 3 May 2025 00:26:22 +0300 Subject: [PATCH 10/11] [MDAPI-254][C++] Migrate to dxFeed Graal Native SDK 2.5.0 --- ReleaseNotes.md | 4 ++ .../event/market/OrderSource.hpp | 66 +++++++++++++++++-- src/event/market/OrderSource.cpp | 21 ++++-- 3 files changed, 82 insertions(+), 9 deletions(-) diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 23651efc..6ffaae62 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -6,6 +6,10 @@ It controls whether a single or unitary source is used when subscribing to all sources. It is set to 'false' by default. All separate sources, such as `COMPOSITE_ASK`, `COMPOSITE_BID`, `REGIONAL_ASK`, `REGIONAL_BID`, `AGGREGATE_ASK` and `AGGREGATE_BID` have been declared deprecated. + * Added new Order source for BlueOcean ATS: ocea. + * Added new Order sources for IG CFDs Gate: IGC, igc. + * Added new Order sources for EDX Gate: EDX, edx. + * Added new Order sources for Nuam Exchange Gate: NUAM, nuam. ## v4.2.0 diff --git a/include/dxfeed_graal_cpp_api/event/market/OrderSource.hpp b/include/dxfeed_graal_cpp_api/event/market/OrderSource.hpp index 8f72ef69..b49b583f 100644 --- a/include/dxfeed_graal_cpp_api/event/market/OrderSource.hpp +++ b/include/dxfeed_graal_cpp_api/event/market/OrderSource.hpp @@ -42,8 +42,9 @@ class DXFCPP_EXPORT OrderSource final : public IndexedEventSource { static constexpr std::uint32_t PUB_OTC_MARKETS_ORDER = 0x0004; static constexpr std::uint32_t PUB_SPREAD_ORDER = 0x0008U; static constexpr std::uint32_t FULL_ORDER_BOOK = 0x0010U; + static constexpr std::uint32_t PUB_NUAM_ORDER = 0x0020U; - static constexpr std::uint32_t FLAGS_SIZE = 5U; + static constexpr std::uint32_t FLAGS_SIZE = 6U; public: static const std::unordered_map, std::reference_wrapper> @@ -150,8 +151,8 @@ class DXFCPP_EXPORT OrderSource final : public IndexedEventSource { * It is a synthetic and unitary source, that represents both bid and ask side. * It cannot be used with DXFeed::getIndexedEventsPromise method and it cannot be published directly to. * The subscription on regional Quote event is observed when this source is subscribed to. - * To use this source when subscribing to all sources (e.g., when subscribing to an order without specifying a source), - * instead of OrderSource::REGIONAL_ASK and OrderSource::REGIONAL_BID, set the system property + * To use this source when subscribing to all sources (e.g., when subscribing to an order without specifying a + * source), instead of OrderSource::REGIONAL_ASK and OrderSource::REGIONAL_BID, set the system property * `dxscheme.unitaryOrderSource` to `true`. */ static const OrderSource REGIONAL; @@ -160,8 +161,8 @@ class DXFCPP_EXPORT OrderSource final : public IndexedEventSource { * Aggregate order book (futures depth and NASDAQ Level II). * It is a aggregate and unitary source, that represents both bid and ask side. * This source cannot be directly published via dxFeed API, but otherwise it is fully operational. - * To use this source when subscribing to all sources (e.g., when subscribing to an order without specifying a source), - * instead of OrderSource::AGGREGATE_ASK and OrderSource::AGGREGATE_BID, set the system property + * To use this source when subscribing to all sources (e.g., when subscribing to an order without specifying a + * source), instead of OrderSource::AGGREGATE_ASK and OrderSource::AGGREGATE_BID, set the system property * `dxscheme.unitaryOrderSource` to `true`. */ static const OrderSource AGGREGATE; @@ -446,6 +447,13 @@ class DXFCPP_EXPORT OrderSource final : public IndexedEventSource { */ static const OrderSource OCEA; + /** + * Blue Ocean Technologies Alternative Trading System. Record for price level book. + * Order events are @ref ::isPublishable() "publishable" on this source and the corresponding subscription can be + * observed via DXPublisher. + */ + static const OrderSource ocea; + /** * Pink Sheets. Record for price level book. * Pink sheets are listings for stocks that trade over-the-counter (OTC). @@ -487,6 +495,54 @@ class DXFCPP_EXPORT OrderSource final : public IndexedEventSource { */ static const OrderSource cedx; + /** + * IG CFDs Gate. + * + * Order events are @ref ::isPublishable() "publishable" on this source and the corresponding subscription can be + * observed via DXPublisher. + */ + static const OrderSource IGC; + + /** + * IG CFDs Gate. Record for price level book. + * + * Order events are @ref ::isPublishable() "publishable" on this source and the corresponding subscription can be + * observed via DXPublisher. + */ + static const OrderSource igc; + + /** + * EDX Exchange. + * + * Order events are @ref ::isPublishable() "publishable" on this source and the corresponding subscription can be + * observed via DXPublisher. + */ + static const OrderSource EDX; + + /** + * EDX Exchange. Record for price level book. + * + * Order events are @ref ::isPublishable() "publishable" on this source and the corresponding subscription can be + * observed via DXPublisher. + */ + static const OrderSource edx; + + /** + * Nuam Exchange Gate. + * + * Order and NuamOrder events are @ref ::isPublishable() "publishable" on this source and the corresponding + * subscription can be observed via DXPublisher. + */ + static const OrderSource NUAM; + + /** + * Nuam Exchange Gate. Record for price level book. + * + * Order and NuamOrder events are @ref ::isPublishable() "publishable" on this source and the corresponding + * subscription can be observed via DXPublisher. + */ + static const OrderSource nuam; + /** * Determines whether specified source identifier refers to special order source. * Special order sources are used for wrapping non-order events into order events. diff --git a/src/event/market/OrderSource.cpp b/src/event/market/OrderSource.cpp index 7b742b15..83c80bbe 100644 --- a/src/event/market/OrderSource.cpp +++ b/src/event/market/OrderSource.cpp @@ -19,7 +19,7 @@ const OrderSource OrderSource::REGIONAL(8, "REGIONAL", 0); const OrderSource OrderSource::AGGREGATE(9, "AGGREGATE", 0); const OrderSource OrderSource::DEFAULT(0, "DEFAULT", PUB_ORDER | PUB_ANALYTIC_ORDER | PUB_OTC_MARKETS_ORDER | PUB_SPREAD_ORDER | - FULL_ORDER_BOOK); + FULL_ORDER_BOOK | PUB_NUAM_ORDER); const OrderSource OrderSource::NTV("NTV", PUB_ORDER | FULL_ORDER_BOOK); const OrderSource OrderSource::ntv("ntv", PUB_ORDER); @@ -55,11 +55,18 @@ const OrderSource OrderSource::iex("iex", PUB_ORDER); const OrderSource OrderSource::MEMX("MEMX", PUB_ORDER); const OrderSource OrderSource::memx("memx", PUB_ORDER); const OrderSource OrderSource::OCEA("OCEA", PUB_ORDER); +const OrderSource OrderSource::ocea("ocea", PUB_ORDER); const OrderSource OrderSource::pink("pink", PUB_ORDER | PUB_OTC_MARKETS_ORDER); const OrderSource OrderSource::ARCA("ARCA", PUB_ORDER); const OrderSource OrderSource::arca("arca", PUB_ORDER); const OrderSource OrderSource::CEDX("CEDX", PUB_ORDER); const OrderSource OrderSource::cedx("cedx", PUB_ORDER); +const OrderSource OrderSource::IGC("IGC", PUB_ORDER); +const OrderSource OrderSource::igc("igc", PUB_ORDER); +const OrderSource OrderSource::EDX("EDX", PUB_ORDER); +const OrderSource OrderSource::edx("edx", PUB_ORDER); +const OrderSource OrderSource::NUAM("NUAM", PUB_ORDER | FULL_ORDER_BOOK | PUB_NUAM_ORDER); +const OrderSource OrderSource::nuam("nuam", PUB_ORDER | PUB_NUAM_ORDER); const std::unordered_map, std::reference_wrapper> OrderSource::PREDEFINED_SOURCES = @@ -74,13 +81,14 @@ const std::unordered_map, std::reference return result; }({// - COMPOSITE_BID, COMPOSITE_ASK, REGIONAL_BID, REGIONAL_ASK, AGGREGATE_BID, AGGREGATE_ASK, COMPOSITE, REGIONAL, AGGREGATE, + COMPOSITE_BID, COMPOSITE_ASK, REGIONAL_BID, REGIONAL_ASK, AGGREGATE_BID, AGGREGATE_ASK, COMPOSITE, REGIONAL, + AGGREGATE, // DEFAULT, // NTV, ntv, NFX, ESPD, XNFI, ICE, ISE, DEA, DEX, dex, BYX, BZX, bzx, BATE, CHIX, CEUX, BXTR, IST, BI20, ABE, - FAIR, GLBX, glbx, ERIS, XEUR, xeur, CFE, C2OX, SMFE, smfe, iex, MEMX, memx, OCEA, pink, ARCA, arca, CEDX, - cedx}); + FAIR, GLBX, glbx, ERIS, XEUR, xeur, CFE, C2OX, SMFE, smfe, iex, MEMX, memx, OCEA, ocea, pink, ARCA, arca, + CEDX, cedx, IGC, igc, EDX, edx, NUAM, nuam}); std::unordered_map OrderSource::USER_SOURCES_{}; @@ -161,6 +169,11 @@ std::uint32_t OrderSource::getEventTypeMask(const EventTypeEnum &eventType) { return PUB_SPREAD_ORDER; } + // TODO: MDAPI-243, MDAPI-256 + // if (eventType == EventTypeEnum::NUAM_ORDER) { + // return PUB_NUAM_ORDER; + // } + throw InvalidArgumentException("Invalid order event type: " + eventType.getName()); } From 01a24c568e502acf8267ae97b19dffe325673d6c Mon Sep 17 00:00:00 2001 From: AnatolyKalin Date: Sat, 3 May 2025 00:58:06 +0300 Subject: [PATCH 11/11] Added the ability to automatically generate the DXEndpoint name. If the user does not explicitly specify the endpoint name, it will be generated using the template "qdcxx{Id}", where {Id} will be an empty string for the first instance of the endpoint and "-2", "-3", etc. for subsequent instances. --- ReleaseNotes.md | 3 +++ src/api/DXEndpoint.cpp | 23 +++++++++++++---------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 6ffaae62..cf5924bc 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -10,6 +10,9 @@ * Added new Order sources for IG CFDs Gate: IGC, igc. * Added new Order sources for EDX Gate: EDX, edx. * Added new Order sources for Nuam Exchange Gate: NUAM, nuam. +* Added the ability to automatically generate the DXEndpoint name. + If the user does not explicitly specify the endpoint name, it will be generated using the template `qdcxx{Id}`, + where `{Id}` will be an empty string for the first instance of the endpoint and "-2", "-3", etc. for subsequent instances. ## v4.2.0 diff --git a/src/api/DXEndpoint.cpp b/src/api/DXEndpoint.cpp index 135ec37c..f4ed508c 100644 --- a/src/api/DXEndpoint.cpp +++ b/src/api/DXEndpoint.cpp @@ -125,16 +125,9 @@ std::shared_ptr DXEndpoint::create(void *endpointHandle, DXEndpoint: ", role = " + roleToString(role) + ", properties[" + std::to_string(properties.size()) + "])"); } - auto name = properties.contains(NAME_PROPERTY) ? properties.at(NAME_PROPERTY) : std::string{}; - - if (name.empty()) { - std::size_t id = ApiContext::getInstance()->getManager>()->getLastId(); - - name = fmt::format("qdcxx{}", (id <= 1) ? "" : fmt::format("-{}", id)); - } - - auto endpoint = DXEndpoint::createShared(JavaObjectHandle(endpointHandle), role, name); - auto id = ApiContext::getInstance()->getManager>()->registerEntity(endpoint); + auto endpoint = + DXEndpoint::createShared(JavaObjectHandle(endpointHandle), role, properties.at(NAME_PROPERTY)); + const auto id = ApiContext::getInstance()->getManager>()->registerEntity(endpoint); endpoint->stateChangeListenerHandle_ = isolated::api::IsolatedDXEndpoint::StateChangeListener::create( dxfcpp::bit_cast(&Impl::onPropertyChange), dxfcpp::bit_cast(id.getValue())); @@ -336,6 +329,16 @@ std::shared_ptr DXEndpoint::Builder::build() { loadDefaultPropertiesImpl(); + if (auto name = properties_.contains(NAME_PROPERTY) ? properties_.at(NAME_PROPERTY) : std::string{}; name.empty()) { + std::size_t id = ApiContext::getInstance()->getManager>()->getLastId(); + + name = fmt::format("qdcxx{}", (id <= 1) ? "" : fmt::format("-{}", id)); + + const auto newBuilder = withProperty(NAME_PROPERTY, name); + + return newBuilder->build(); + } + return DXEndpoint::create(isolated::api::IsolatedDXEndpoint::Builder::build(handle_), role_, properties_); }