From dcc525c0e5347521ce51f535251d0902b4535aee Mon Sep 17 00:00:00 2001 From: Adam Glustein Date: Thu, 9 May 2024 13:39:29 -0400 Subject: [PATCH] Upgrade CSP to C++20; build websocket against C++17; rename .hi files Signed-off-by: Adam Glustein --- CMakeLists.txt | 5 +---- cpp/csp/adapters/websocket/CMakeLists.txt | 3 +++ cpp/csp/python/CMakeLists.txt | 10 +++++----- cpp/csp/python/PyStruct.cpp | 2 +- cpp/csp/python/PyStructList.h | 2 +- .../python/{PyStructList.hi => PyStructList_impl.h} | 2 +- cpp/csp/python/adapters/CMakeLists.txt | 8 +++++--- 7 files changed, 17 insertions(+), 15 deletions(-) rename cpp/csp/python/{PyStructList.hi => PyStructList_impl.h} (99%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6699ae74d..97cf3c088 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ ######################### cmake_minimum_required(VERSION 3.20.0) project(csp VERSION "0.0.3") -set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD 20) ################################################################################################################################################### # CMake Dependencies # @@ -153,9 +153,6 @@ endif() ################################################################################################################################################### # Flags # ######### -# Compiler version flags -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17") - # Optimization Flags if(WIN32) if(CMAKE_BUILD_TYPE_LOWER STREQUAL debug) diff --git a/cpp/csp/adapters/websocket/CMakeLists.txt b/cpp/csp/adapters/websocket/CMakeLists.txt index 73513d975..879a156c4 100644 --- a/cpp/csp/adapters/websocket/CMakeLists.txt +++ b/cpp/csp/adapters/websocket/CMakeLists.txt @@ -1,5 +1,8 @@ csp_autogen( csp.adapters.websocket_types websocket_types WEBSOCKET_HEADER WEBSOCKET_SOURCE ) +# Need to build websocket adapter under cpp17 standard due to websocketpp incompatibility issues +set(CMAKE_CXX_STANDARD 17) + set(WS_CLIENT_HEADER_FILES ClientAdapterManager.h ClientInputAdapter.h diff --git a/cpp/csp/python/CMakeLists.txt b/cpp/csp/python/CMakeLists.txt index 13f934f12..ae4328ada 100644 --- a/cpp/csp/python/CMakeLists.txt +++ b/cpp/csp/python/CMakeLists.txt @@ -4,7 +4,8 @@ set(CSPTYPESIMPL_PUBLIC_HEADERS PyCspEnum.h PyCspType.h PyStruct.h - PyStructList.h) + PyStructList.h + PyStructList_impl.h) add_library(csptypesimpl csptypesimpl.cpp @@ -12,8 +13,7 @@ add_library(csptypesimpl PyCspEnum.cpp PyCspType.cpp PyStruct.cpp - PyStructToJson.cpp - PyStructList.hi) + PyStructToJson.cpp) set_target_properties(csptypesimpl PROPERTIES PUBLIC_HEADER "${CSPTYPESIMPL_PUBLIC_HEADERS}") target_compile_definitions(csptypesimpl PUBLIC RAPIDJSON_HAS_STDSTRING=1) target_link_libraries(csptypesimpl csp_core csp_types) @@ -42,7 +42,8 @@ set(CSPIMPL_PUBLIC_HEADERS PyOutputProxy.h PyConstants.h PyStructToJson.h - PyStructList.h) + PyStructList.h + PyStructList_impl.h) add_library(cspimpl SHARED cspimpl.cpp @@ -73,7 +74,6 @@ add_library(cspimpl SHARED PyManagedSimInputAdapter.cpp PyTimerAdapter.cpp PyConstants.cpp - PyStructList.hi ${CSPIMPL_PUBLIC_HEADERS}) set_target_properties(cspimpl PROPERTIES PUBLIC_HEADER "${CSPIMPL_PUBLIC_HEADERS}") diff --git a/cpp/csp/python/PyStruct.cpp b/cpp/csp/python/PyStruct.cpp index ccb821311..63e65a26d 100644 --- a/cpp/csp/python/PyStruct.cpp +++ b/cpp/csp/python/PyStruct.cpp @@ -3,7 +3,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/cpp/csp/python/PyStructList.h b/cpp/csp/python/PyStructList.h index b26116c06..7a8944ed0 100644 --- a/cpp/csp/python/PyStructList.h +++ b/cpp/csp/python/PyStructList.h @@ -14,7 +14,7 @@ struct PyStructList : public PyObject { using ElemT = typename CspType::Type::toCArrayElemType::type; - PyStructList( PyStruct * p, std::vector & v, const CspType & type ) : pystruct( p ), vector( v ), field_type( type ) + PyStructList( PyStruct * p, std::vector & v, const CspType & type ) : pystruct( p ), vector( v ), field_type( type ) { Py_INCREF( pystruct ); } diff --git a/cpp/csp/python/PyStructList.hi b/cpp/csp/python/PyStructList_impl.h similarity index 99% rename from cpp/csp/python/PyStructList.hi rename to cpp/csp/python/PyStructList_impl.h index 7e09a5a2d..884cf3ea0 100644 --- a/cpp/csp/python/PyStructList.hi +++ b/cpp/csp/python/PyStructList_impl.h @@ -435,7 +435,7 @@ PyStructList_dealloc( PyStructList * self ) } template PyTypeObject PyStructList::PyType = { - PyVarObject_HEAD_INIT( NULL, 0 ) + .ob_base = PyVarObject_HEAD_INIT( NULL, 0 ) .tp_name = "_cspimpl.PyStructList", .tp_basicsize = sizeof( PyStructList ), .tp_itemsize = 0, diff --git a/cpp/csp/python/adapters/CMakeLists.txt b/cpp/csp/python/adapters/CMakeLists.txt index a44cd8d38..42654d8c9 100644 --- a/cpp/csp/python/adapters/CMakeLists.txt +++ b/cpp/csp/python/adapters/CMakeLists.txt @@ -35,7 +35,9 @@ if(CSP_BUILD_PARQUET_ADAPTER) endif() if(CSP_BUILD_WS_CLIENT_ADAPTER) - add_library(websocketadapterimpl SHARED websocketadapterimpl.cpp) - target_link_libraries(websocketadapterimpl csp_core csp_engine cspimpl csp_websocket_client_adapter) - install(TARGETS websocketadapterimpl RUNTIME DESTINATION bin/ LIBRARY DESTINATION lib/) + set(CMAKE_CXX_STANDARD 17) + add_library(websocketadapterimpl SHARED websocketadapterimpl.cpp) + target_link_libraries(websocketadapterimpl csp_core csp_engine cspimpl csp_websocket_client_adapter) + install(TARGETS websocketadapterimpl RUNTIME DESTINATION bin/ LIBRARY DESTINATION lib/) + set(CMAKE_CXX_STANDARD 20) endif()