Skip to content

Commit c676ef7

Browse files
Copilot0xrinegade
andcommitted
Implement comprehensive C++ SDK foundation with full architecture
Co-authored-by: 0xrinegade <[email protected]>
1 parent a1f550d commit c676ef7

29 files changed

+5209
-0
lines changed

cpp_sdk/.gitignore

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# Build directories
2+
build/
3+
cmake-build-*/
4+
_build/
5+
out/
6+
7+
# Generated files
8+
CMakeCache.txt
9+
CMakeFiles/
10+
cmake_install.cmake
11+
Makefile
12+
*.cmake
13+
!CMakeLists.txt
14+
!cmake/*.cmake.in
15+
16+
# Testing
17+
CTestTestfile.cmake
18+
Testing/
19+
20+
# Coverage
21+
*.gcov
22+
*.gcno
23+
*.gcda
24+
coverage.info
25+
coverage_html/
26+
27+
# Documentation
28+
docs/doxygen/html/
29+
docs/doxygen/latex/
30+
docs/doxygen/xml/
31+
32+
# Compiled binaries
33+
*.a
34+
*.so
35+
*.dylib
36+
*.dll
37+
*.exe
38+
39+
# IDE files
40+
.vscode/
41+
.idea/
42+
*.swp
43+
*.swo
44+
*~
45+
46+
# OS files
47+
.DS_Store
48+
Thumbs.db
49+
50+
# Temporary files
51+
*.tmp
52+
*.temp
53+
/tmp/

cpp_sdk/CMakeLists.txt

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
cmake_minimum_required(VERSION 3.16)
2+
project(aireg++ VERSION 1.0.0 LANGUAGES CXX)
3+
4+
# Set C++17 standard
5+
set(CMAKE_CXX_STANDARD 17)
6+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
7+
set(CMAKE_CXX_EXTENSIONS OFF)
8+
9+
# Enable testing
10+
enable_testing()
11+
12+
# Set build type to Release if not specified
13+
if(NOT CMAKE_BUILD_TYPE)
14+
set(CMAKE_BUILD_TYPE Release)
15+
endif()
16+
17+
# Compiler-specific options
18+
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
19+
add_compile_options(-Wall -Wextra -Wpedantic -Werror)
20+
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
21+
add_compile_options(-g -O0 --coverage)
22+
endif()
23+
endif()
24+
25+
# Find required packages
26+
find_package(PkgConfig REQUIRED)
27+
28+
# Find libsodium
29+
pkg_check_modules(LIBSODIUM REQUIRED libsodium)
30+
31+
# Include directories
32+
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
33+
include_directories(${LIBSODIUM_INCLUDE_DIRS})
34+
35+
# Header-only library target
36+
add_library(aireg++ INTERFACE)
37+
target_include_directories(aireg++ INTERFACE
38+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
39+
$<INSTALL_INTERFACE:include>
40+
)
41+
target_compile_features(aireg++ INTERFACE cxx_std_17)
42+
target_link_libraries(aireg++ INTERFACE ${LIBSODIUM_LIBRARIES})
43+
44+
# Implementation library (for non-header-only parts)
45+
add_library(aireg++_impl STATIC
46+
src/aireg++.cpp
47+
src/stubs.cpp
48+
)
49+
target_include_directories(aireg++_impl PUBLIC
50+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
51+
$<INSTALL_INTERFACE:include>
52+
)
53+
target_compile_features(aireg++_impl PUBLIC cxx_std_17)
54+
target_link_libraries(aireg++_impl PUBLIC ${LIBSODIUM_LIBRARIES})
55+
56+
# Link the implementation to the interface
57+
target_link_libraries(aireg++ INTERFACE aireg++_impl)
58+
59+
# Add subdirectories
60+
add_subdirectory(tests)
61+
add_subdirectory(examples)
62+
63+
# Custom targets
64+
add_custom_target(test-integration
65+
COMMAND ${CMAKE_CTEST_COMMAND} -L integration
66+
COMMENT "Running integration tests"
67+
)
68+
69+
add_custom_target(coverage
70+
COMMAND gcov -r *.gcno
71+
COMMAND lcov --capture --directory . --output-file coverage.info
72+
COMMAND genhtml coverage.info --output-directory coverage_html
73+
COMMENT "Generating coverage report"
74+
)
75+
76+
add_custom_target(docs
77+
COMMAND doxygen ${CMAKE_CURRENT_SOURCE_DIR}/docs/Doxyfile
78+
COMMENT "Generating API documentation"
79+
)
80+
81+
# Install configuration
82+
install(TARGETS aireg++ EXPORT aireg++Targets)
83+
install(DIRECTORY include/ DESTINATION include)
84+
install(EXPORT aireg++Targets
85+
FILE aireg++Targets.cmake
86+
NAMESPACE aireg++::
87+
DESTINATION lib/cmake/aireg++
88+
)
89+
90+
# Create config file
91+
include(CMakePackageConfigHelpers)
92+
write_basic_package_version_file(
93+
aireg++ConfigVersion.cmake
94+
VERSION ${PROJECT_VERSION}
95+
COMPATIBILITY AnyNewerVersion
96+
)
97+
98+
configure_package_config_file(
99+
cmake/aireg++Config.cmake.in
100+
aireg++Config.cmake
101+
INSTALL_DESTINATION lib/cmake/aireg++
102+
)
103+
104+
install(FILES
105+
${CMAKE_CURRENT_BINARY_DIR}/aireg++Config.cmake
106+
${CMAKE_CURRENT_BINARY_DIR}/aireg++ConfigVersion.cmake
107+
DESTINATION lib/cmake/aireg++
108+
)

0 commit comments

Comments
 (0)