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

Reply via email to