This is an automated email from the ASF dual-hosted git repository. isapego pushed a commit to branch ignite-17424 in repository https://gitbox.apache.org/repos/asf/ignite-3.git
commit 9bbe9dfb69cb578ea47c66af7e2a977767119576 Author: Igor Sapego <isap...@apache.org> AuthorDate: Sun Aug 28 14:26:57 2022 +0400 IGNITE-17424 Project stub --- .gitignore | 2 + modules/platforms/cpp/CMakeLists.txt | 44 ++++++++++++++++++---- .../platforms/cpp/{ => client-test}/CMakeLists.txt | 31 +++++++-------- .../cpp/client-test/src/ignite_client_test.cpp | 0 modules/platforms/cpp/{ => client}/CMakeLists.txt | 39 ++++++++++--------- .../cpp/client/include/ignite/ignite_client.h | 0 modules/platforms/cpp/client/src/ignite_client.cpp | 0 modules/platforms/cpp/conanfile.txt | 7 ++++ .../platforms/cpp/{ => test-common}/CMakeLists.txt | 30 ++++++--------- .../platforms/cpp/test-common/include/test_utils.h | 0 .../platforms/cpp/test-common/src/test_utils.cpp | 0 11 files changed, 91 insertions(+), 62 deletions(-) diff --git a/.gitignore b/.gitignore index 2db27b173d..316612563b 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,5 @@ build/ *.iml *.ipr out/ + +modules/platforms/cpp/cmake-build-* \ No newline at end of file diff --git a/modules/platforms/cpp/CMakeLists.txt b/modules/platforms/cpp/CMakeLists.txt index 6aa16d0f6e..c4c3b0e195 100644 --- a/modules/platforms/cpp/CMakeLists.txt +++ b/modules/platforms/cpp/CMakeLists.txt @@ -18,24 +18,52 @@ cmake_minimum_required(VERSION 3.10) project(Ignite.C++ VERSION 3 LANGUAGES CXX) -set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED ON) -include(GNUInstallDirs) +set(CMAKE_PROJECT_VERSION ${PROJECT_VERSION}) + +#include(GNUInstallDirs) set(INSTALL_INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR}/ignite) option(ENABLE_ADDRESS_SANITIZER "If address sanitizer is enabled" OFF) option(ENABLE_UB_SANITIZER "If undefined behavior sanitizer is enabled" OFF) +option(ENABLE_CLIENT "Build Ignite.C++ Client module" ON) +option(ENABLE_TESTS "Build Ignite.C++ tests" OFF) +option(WARNINGS_AS_ERRORS "Treat warning as errors" OFF) + +if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU") + if (ENABLE_ADDRESS_SANITIZER) + add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-fsanitize=address>) + add_link_options($<$<COMPILE_LANGUAGE:CXX>:-fsanitize=address>) + endif() + + if (ENABLE_UB_SANITIZER) + add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-fsanitize=undefined>) + add_link_options($<$<COMPILE_LANGUAGE:CXX>:-fsanitize=undefined>) + endif() +endif() -if (ENABLE_ADDRESS_SANITIZER) - add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-fsanitize=address>) - add_link_options($<$<COMPILE_LANGUAGE:CXX>:-fsanitize=address>) +if (CMAKE_BUILD_TYPE STREQUAL "Debug" AND CMAKE_CXX_COMPILER_ID MATCHES "Clang") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstandalone-debug") endif() -if (ENABLE_UB_SANITIZER) - add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-fsanitize=undefined>) - add_link_options($<$<COMPILE_LANGUAGE:CXX>:-fsanitize=undefined>) +if (${WARNINGS_AS_ERRORS}) + if (MSVC) + add_compile_options(/WX) + else() + add_compile_options(-Wall -Wextra -Werror -Wno-variadic-macros) + endif() endif() add_subdirectory(common) add_subdirectory(schema) + +if (${ENABLE_CLIENT}) + add_subdirectory(client) +endif() + +if (${ENABLE_TESTS}) + add_subdirectory(test-common) + add_subdirectory(client-test) +endif() diff --git a/modules/platforms/cpp/CMakeLists.txt b/modules/platforms/cpp/client-test/CMakeLists.txt similarity index 50% copy from modules/platforms/cpp/CMakeLists.txt copy to modules/platforms/cpp/client-test/CMakeLists.txt index 6aa16d0f6e..31c54604a6 100644 --- a/modules/platforms/cpp/CMakeLists.txt +++ b/modules/platforms/cpp/client-test/CMakeLists.txt @@ -15,27 +15,22 @@ # limitations under the License. # -cmake_minimum_required(VERSION 3.10) -project(Ignite.C++ VERSION 3 LANGUAGES CXX) +project(ignite-client-test) -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(TARGET ${PROJECT_NAME}) -include(GNUInstallDirs) -set(INSTALL_INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR}/ignite) +include_directories(include src) -option(ENABLE_ADDRESS_SANITIZER "If address sanitizer is enabled" OFF) -option(ENABLE_UB_SANITIZER "If undefined behavior sanitizer is enabled" OFF) +enable_testing() +find_package(gtest REQUIRED) +include_directories(${GTEST_INCLUDE_DIR}) -if (ENABLE_ADDRESS_SANITIZER) - add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-fsanitize=address>) - add_link_options($<$<COMPILE_LANGUAGE:CXX>:-fsanitize=address>) -endif() +set(SOURCES + src/ignite_client_test.cpp +) -if (ENABLE_UB_SANITIZER) - add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-fsanitize=undefined>) - add_link_options($<$<COMPILE_LANGUAGE:CXX>:-fsanitize=undefined>) -endif() +add_executable(${TARGET} ${SOURCES}) -add_subdirectory(common) -add_subdirectory(schema) +target_link_libraries(${TARGET} ignite-test-common ignite-client ${GTEST_LIBRARY_DEBUG} ${GTEST_MAIN_LIBRARY_DEBUG}) + +add_test(NAME ${TEST_TARGET} COMMAND ${TARGET}) diff --git a/modules/platforms/cpp/client-test/src/ignite_client_test.cpp b/modules/platforms/cpp/client-test/src/ignite_client_test.cpp new file mode 100644 index 0000000000..e69de29bb2 diff --git a/modules/platforms/cpp/CMakeLists.txt b/modules/platforms/cpp/client/CMakeLists.txt similarity index 50% copy from modules/platforms/cpp/CMakeLists.txt copy to modules/platforms/cpp/client/CMakeLists.txt index 6aa16d0f6e..06cce53656 100644 --- a/modules/platforms/cpp/CMakeLists.txt +++ b/modules/platforms/cpp/client/CMakeLists.txt @@ -15,27 +15,32 @@ # limitations under the License. # -cmake_minimum_required(VERSION 3.10) -project(Ignite.C++ VERSION 3 LANGUAGES CXX) +project(ignite-client) -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(TARGET ${PROJECT_NAME}) -include(GNUInstallDirs) -set(INSTALL_INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR}/ignite) +include_directories(include src) -option(ENABLE_ADDRESS_SANITIZER "If address sanitizer is enabled" OFF) -option(ENABLE_UB_SANITIZER "If undefined behavior sanitizer is enabled" OFF) +set(SOURCES + src/ignite_client.cpp +) -if (ENABLE_ADDRESS_SANITIZER) - add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-fsanitize=address>) - add_link_options($<$<COMPILE_LANGUAGE:CXX>:-fsanitize=address>) -endif() +add_library(${TARGET} SHARED ${SOURCES}) + +set_target_properties(${TARGET} PROPERTIES VERSION ${CMAKE_PROJECT_VERSION}) -if (ENABLE_UB_SANITIZER) - add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-fsanitize=undefined>) - add_link_options($<$<COMPILE_LANGUAGE:CXX>:-fsanitize=undefined>) +if (WIN32) + set_target_properties(${TARGET} PROPERTIES OUTPUT_NAME "ignite.client") endif() -add_subdirectory(common) -add_subdirectory(schema) +target_link_libraries(${TARGET} ignite-common) + +target_include_directories(${TARGET} INTERFACE include) + +install(TARGETS ${TARGET} + RUNTIME DESTINATION bin + ARCHIVE DESTINATION lib + LIBRARY DESTINATION lib +) + +install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_PREFIX}/include FILES_MATCHING PATTERN "*.h*") \ No newline at end of file diff --git a/modules/platforms/cpp/client/include/ignite/ignite_client.h b/modules/platforms/cpp/client/include/ignite/ignite_client.h new file mode 100644 index 0000000000..e69de29bb2 diff --git a/modules/platforms/cpp/client/src/ignite_client.cpp b/modules/platforms/cpp/client/src/ignite_client.cpp new file mode 100644 index 0000000000..e69de29bb2 diff --git a/modules/platforms/cpp/conanfile.txt b/modules/platforms/cpp/conanfile.txt new file mode 100644 index 0000000000..facca55edf --- /dev/null +++ b/modules/platforms/cpp/conanfile.txt @@ -0,0 +1,7 @@ +[requires] +msgpack/3.3.0 +gtest/1.12.1 + +[generators] +CMakeDeps +CMakeToolchain \ No newline at end of file diff --git a/modules/platforms/cpp/CMakeLists.txt b/modules/platforms/cpp/test-common/CMakeLists.txt similarity index 50% copy from modules/platforms/cpp/CMakeLists.txt copy to modules/platforms/cpp/test-common/CMakeLists.txt index 6aa16d0f6e..eb186ba9ca 100644 --- a/modules/platforms/cpp/CMakeLists.txt +++ b/modules/platforms/cpp/test-common/CMakeLists.txt @@ -15,27 +15,19 @@ # limitations under the License. # -cmake_minimum_required(VERSION 3.10) -project(Ignite.C++ VERSION 3 LANGUAGES CXX) +project(ignite-test-common) -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(TARGET ${PROJECT_NAME}) -include(GNUInstallDirs) -set(INSTALL_INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR}/ignite) +#include_directories(SYSTEM ${Boost_INCLUDE_DIRS} ${JNI_INCLUDE_DIRS}) +include_directories(include) -option(ENABLE_ADDRESS_SANITIZER "If address sanitizer is enabled" OFF) -option(ENABLE_UB_SANITIZER "If undefined behavior sanitizer is enabled" OFF) +set(SOURCES + src/test_utils.cpp +) -if (ENABLE_ADDRESS_SANITIZER) - add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-fsanitize=address>) - add_link_options($<$<COMPILE_LANGUAGE:CXX>:-fsanitize=address>) -endif() +add_library(${TARGET} OBJECT ${SOURCES}) -if (ENABLE_UB_SANITIZER) - add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-fsanitize=undefined>) - add_link_options($<$<COMPILE_LANGUAGE:CXX>:-fsanitize=undefined>) -endif() - -add_subdirectory(common) -add_subdirectory(schema) +set_target_properties(${TARGET} PROPERTIES VERSION ${CMAKE_PROJECT_VERSION}) +set_target_properties(${TARGET} PROPERTIES POSITION_INDEPENDENT_CODE 1) +target_include_directories(${TARGET} INTERFACE include) diff --git a/modules/platforms/cpp/test-common/include/test_utils.h b/modules/platforms/cpp/test-common/include/test_utils.h new file mode 100644 index 0000000000..e69de29bb2 diff --git a/modules/platforms/cpp/test-common/src/test_utils.cpp b/modules/platforms/cpp/test-common/src/test_utils.cpp new file mode 100644 index 0000000000..e69de29bb2