diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 81ddf56dc84ab8900038e8c42d02b11bc720bcf4..b34703452782aabc89c945b25f30463c3a0d9170 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -29,18 +29,25 @@ else() endif() if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC") - add_definitions(-D_WIN32_WINNT=0x0601) - set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Release>:Release>") - set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>") + # add_definitions(-D_WIN32_WINNT=0x0601) + add_definitions(-D_WIN32_WINNT=0x0A00) + + # set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDLL$<$<CONFIG:Release>:Release>") + # set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDLL$<$<CONFIG:Debug>:Debug>") + + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDLL") + if (CMAKE_BUILD_TYPE STREQUAL "Debug") + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDebugDLL") + endif() set(CMAKE_C_FLAGS "/DNDEBUG /DWIN32 /D_WINDOWS /W3") set(CMAKE_CXX_FLAGS "/DNDEBUG /DWIN32 /D_WINDOWS /W3 /GR /EHsc") - set(CMAKE_C_FLAGS_DEBUG "/MTd /Zi /Ob0 /Od /RTC1") - set(CMAKE_CXX_FLAGS_DEBUG "/MTd /Zi /Ob0 /Od /RTC1") + set(CMAKE_C_FLAGS_DEBUG "/MDd /Zi /Ob0 /Od /RTC1") + set(CMAKE_CXX_FLAGS_DEBUG "/MDd /Zi /Ob0 /Od /RTC1") - set(CMAKE_CXX_FLAGS_RELEASE "/Gd /MT /O2 /Oi /Ot /Gy /Zi /GL") - set(CMAKE_C_FLAGS_RELEASE "/Gd /MT /O2 /Oi /Ot /Gy /Zi /GL") + set(CMAKE_CXX_FLAGS_RELEASE "/Gd /MD /O2 /Oi /Ot /Gy /Zi /GL") + set(CMAKE_C_FLAGS_RELEASE "/Gd /MD /O2 /Oi /Ot /Gy /Zi /GL") if (CMAKE_BUILD_TYPE STREQUAL "Release") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DEBUG /OPT:REF /OPT:ICF /LTCG") @@ -64,7 +71,7 @@ endif() set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_EXTENSIONS OFF) message("Generator: " "${CMAKE_GENERATOR}") @@ -81,7 +88,8 @@ message("CXX dll linker flags: " "${CMAKE_SHARED_LINKER_FLAGS}") message("CXX static linker flags: " "${CMAKE_STATIC_LINKER_FLAGS}") string(TOLOWER "${CMAKE_BUILD_TYPE}" _build_type) -set(VENDOR_INSTALL_DIR ${CMAKE_SOURCE_DIR}/cmake-install-vendor-${_build_type} CACHE STRING "vendor directory") +set(VENDOR_INSTALL_DIR ${CMAKE_SOURCE_DIR}/cmake-install-vendor-debug CACHE STRING "vendor directory") +# set(VENDOR_INSTALL_DIR ${CMAKE_SOURCE_DIR}/cmake-install-vendor-${_build_type} CACHE STRING "vendor directory") message(STATUS "Using vendor install dir: ${VENDOR_INSTALL_DIR}") #set(VENDOR_INSTALL_DIR /home/daniel/workspace/local) set(_cmake_prefix_paths @@ -109,7 +117,7 @@ find_package( 1.72.0 EXACT REQUIRED - COMPONENTS regex thread system + COMPONENTS regex thread system date_time ) find_package(Protobuf CONFIG REQUIRED) @@ -161,6 +169,7 @@ message(STATUS "summary of build options: EXE_LINKER_FLAGS: ${CMAKE_EXE_LINKER_FLAGS_${_build_type}} ${CMAKE_EXE_LINKER_FLAGS} WARNCFLAGS: ${WARNCFLAGS} CXX1XCXXFLAGS: ${CXX1XCXXFLAGS} + CMAKE_MSVC_RUNTIME_LIBRARY: ${CMAKE_MSVC_RUNTIME_LIBRARY} Libs: fmt: ${fmt_FOUND} [${fmt_VERSION}] (DIR='${fmt_DIR}') OpenSSL: ${OpenSSL_FOUND} [${OPENSSL_VERSION}] (LIBS='${OPENSSL_LIBRARIES}') diff --git a/cpp/src/CMakeLists.txt b/cpp/src/CMakeLists.txt index 20c17f379bea11d4f5fe8d0ab9852508fb70f17f..ed746947b2c7f9315d61f596b12e5d1ebbc8f0f7 100644 --- a/cpp/src/CMakeLists.txt +++ b/cpp/src/CMakeLists.txt @@ -2,11 +2,15 @@ if (fmt_FOUND) get_target_property(FMT_INCLUDE_DIR fmt::fmt INTERFACE_INCLUDE_DIRECTORIES) endif() +if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + add_definitions(-DNOGDI) +endif() + include_directories( ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/src ${VENDOR_INSTALL_DIR}/include - ${VENDOR_INSTALL_DIR}/boost/include + ${Boost_INCLUDE_DIRS} ${FMT_INCLUDE_DIR} ${CMAKE_SOURCE_DIR}/proto/cpp ) @@ -55,7 +59,10 @@ list(APPEND VEREIGNLIB_SRC ${GENERATED_SERVICES_SRC}) add_library(vereignlib STATIC ${VEREIGNLIB_SRC}) set_property(TARGET vereignlib PROPERTY POSITION_INDEPENDENT_CODE ON) -target_link_libraries(vereignlib PRIVATE nlohmann_json::nlohmann_json) +target_link_libraries(vereignlib PRIVATE + nlohmann_json::nlohmann_json + fmt::fmt +) target_link_libraries(vereignlib PUBLIC vereignproto gRPC::grpc++_reflection @@ -68,7 +75,14 @@ add_library(vereign SHARED target_include_directories(vereign PRIVATE ${CMAKE_SOURCE_DIR}/include ) -target_link_libraries(vereign PRIVATE vereignlib) +target_link_libraries(vereign PRIVATE + vereignlib + $<$<CXX_COMPILER_ID:MSVC>:Boost::date_time> +) +if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + # Set the DLLEXPORT variable to export symbols + target_compile_definitions(vereign PRIVATE WIN_EXPORT) +endif() set(csandbox_sources csandbox.cc @@ -80,7 +94,10 @@ set(csandbox_sources add_executable(csandbox ${csandbox_sources}) target_link_libraries(csandbox - vereign + PRIVATE vereignlib + $<$<CXX_COMPILER_ID:MSVC>:Boost::date_time> + # Boost::thread + # vereign # fmt::fmt # Boost::regex # Threads::Threads diff --git a/cpp/src/csandbox.cc b/cpp/src/csandbox.cc index 7a1eb95ff82436b8f836f9d8e2bdf1e73651a087..561cf2123f21bd6b5ad1a9b6858d2fb5b2e83a7d 100644 --- a/cpp/src/csandbox.cc +++ b/cpp/src/csandbox.cc @@ -1,6 +1,4 @@ -#include <iostream> auto main(int argc, char* argv[]) -> int { - std::cout << "hello" << std::endl; return 0; } diff --git a/cpp/src/vereign/restapi/post_result.hh b/cpp/src/vereign/restapi/post_result.hh index 6d31f5bebb217b9c79d28435f5617a56a3607c81..a975f0efdac8f4fb509d45918bc7a5cf3d31cd56 100644 --- a/cpp/src/vereign/restapi/post_result.hh +++ b/cpp/src/vereign/restapi/post_result.hh @@ -12,12 +12,18 @@ struct PostResult { RequestPtr Request; ResponsePtr Response; + PostResult() + : Request{nullptr}, + Response{nullptr} + {} + PostResult(RequestPtr req, ResponsePtr resp) : Request{std::move(req)}, Response{std::move(resp)} {} PostResult(PostResult&& other) = default; + PostResult& operator=(PostResult&& other) = default; PostResult(const PostResult&) = delete; PostResult& operator=(const PostResult&) = delete; diff --git a/cpp/tests/integration/integration_test.cc b/cpp/tests/integration/integration_test.cc index d89c6d269ff7a2bbdbcf86536e6a9575cd03fb7e..dddb58fa3515807d80a07f9d4207412efd73f091 100644 --- a/cpp/tests/integration/integration_test.cc +++ b/cpp/tests/integration/integration_test.cc @@ -107,7 +107,7 @@ TEST_CASE("vereign_service_start") { SECTION("invalid listen address") { vereign_error* err = nullptr; auto service = vereign_service_start( - "invalid", + "##$$", "", "", "", diff --git a/cpp/vendor/CMakeLists.txt b/cpp/vendor/CMakeLists.txt index 79268ffee9146d86480b59163c23d1ff08175689..3f640200fd7ac829980764522cbbad5e728c7b36 100644 --- a/cpp/vendor/CMakeLists.txt +++ b/cpp/vendor/CMakeLists.txt @@ -1,26 +1,29 @@ cmake_minimum_required (VERSION 3.16.5) -if(WIN32) +if (WIN32) set(CMAKE_IGNORE_PATH "C:/Strawberry/c/bin") endif() project (vereign-vendor) -if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") +if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC") add_definitions(-D_WIN32_WINNT=0x0601) set(CMAKE_C_FLAGS "/DNDEBUG /DWIN32 /D_WINDOWS /W3") set(CMAKE_CXX_FLAGS "/DNDEBUG /DWIN32 /D_WINDOWS /W3 /GR /EHsc") - set(CMAKE_C_FLAGS_DEBUG "/MTd /Zi /Ob0 /Od /RTC1") - set(CMAKE_CXX_FLAGS_DEBUG "/MTd /Zi /Ob0 /Od /RTC1") + set(CMAKE_C_FLAGS_DEBUG "/MDd /Zi /Ob0 /Od /RTC1") + set(CMAKE_CXX_FLAGS_DEBUG "/MDd /Zi /Ob0 /Od /RTC1") - set(CMAKE_CXX_FLAGS_RELEASE "/Gd /MT /O2 /Oi /Ot /Gy /Zi /GL") - set(CMAKE_C_FLAGS_RELEASE "/Gd /MT /O2 /Oi /Ot /Gy /Zi /GL") + set(CMAKE_CXX_FLAGS_RELEASE "/Gd /MD /O2 /Oi /Ot /Gy /Zi /GL") + set(CMAKE_C_FLAGS_RELEASE "/Gd /MD /O2 /Oi /Ot /Gy /Zi /GL") - set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded") - if(CMAKE_BUILD_TYPE STREQUAL "Debug") - set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDebug") + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Release>:Release>") + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL") + + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDLL") + if (CMAKE_BUILD_TYPE STREQUAL "Debug") + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDebugDLL") endif() endif() diff --git a/cpp/vendor/boost.cmake b/cpp/vendor/boost.cmake index e0dfc1cea5f55db13e8fff25727588509cca87b9..430902d781c72e6b107b4709b13a84f7160a1220 100644 --- a/cpp/vendor/boost.cmake +++ b/cpp/vendor/boost.cmake @@ -1,6 +1,6 @@ include(ExternalProject) -set(_boost_libs regex system thread) +set(_boost_libs regex system thread date_time) if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") list(TRANSFORM _boost_libs PREPEND --with-) diff --git a/cpp/vendor/grpc.cmake b/cpp/vendor/grpc.cmake index db85269d94247a04ae1519e97730bffd8b9bedb8..a33a809c38cf41bcf9c0136dc51fab3f9bb4176a 100644 --- a/cpp/vendor/grpc.cmake +++ b/cpp/vendor/grpc.cmake @@ -18,6 +18,13 @@ ExternalProject_Add(grpclib -DCMAKE_CXX_COMPILER:STRING=${CMAKE_CXX_COMPILER} -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} + -DCMAKE_MSVC_RUNTIME_LIBRARY:STRING=${CMAKE_MSVC_RUNTIME_LIBRARY} + -DCMAKE_C_FLAGS:STRING=${CMAKE_C_FLAGS} + -DCMAKE_CXX_FLAGS:STRING=${CMAKE_CXX_FLAGS} + -DCMAKE_C_FLAGS_DEBUG:STRING=${CMAKE_C_FLAGS_DEBUG} + -DCMAKE_CXX_FLAGS_DEBUG:STRING=${CMAKE_CXX_FLAGS_DEBUG} + -DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE} + -DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE} -DBUILD_SHARED_LIBS:BOOL=OFF -DgRPC_SSL_PROVIDER:STRING=package -DOPENSSL_USE_STATIC_LIBS:BOOL=ON