zswag 1.9.2.dev14__tar.gz → 1.9.2.dev21__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/.github/workflows/build-deploy.yml +5 -3
  2. zswag-1.9.2.dev21/.gitmodules +3 -0
  3. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/CMakeLists.txt +9 -4
  4. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/PKG-INFO +1 -1
  5. zswag-1.9.2.dev21/cmake/Dependencies.cmake +121 -0
  6. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswag.egg-info/PKG-INFO +1 -1
  7. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswag.egg-info/SOURCES.txt +1 -1
  8. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswag.egg-info/requires.txt +1 -1
  9. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswagcl/test/src/oauth2-integration-test.cpp +1 -0
  10. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswagcl/test/src/oauth2-test.cpp +1 -0
  11. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswagcl/test/testdata/oauth2-openapi.yaml +1 -0
  12. zswag-1.9.2.dev14/cmake/Dependencies.cmake +0 -223
  13. zswag-1.9.2.dev14/cmake/OpenSSL.cmake +0 -175
  14. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/.clang-format +0 -0
  15. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/.github/pull_request_template.md +0 -0
  16. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/.github/scripts/validate_version.py +0 -0
  17. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/.gitignore +0 -0
  18. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/LICENSE +0 -0
  19. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/README.md +0 -0
  20. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/deploy.sh +0 -0
  21. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/doc/zswag-architecture.mdj +0 -0
  22. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/doc/zswag-architecture.png +0 -0
  23. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/httpcl/CMakeLists.txt +0 -0
  24. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/httpcl/include/httpcl/http-client.hpp +0 -0
  25. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/httpcl/include/httpcl/http-settings.hpp +0 -0
  26. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/httpcl/include/httpcl/log.hpp +0 -0
  27. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/httpcl/include/httpcl/uri.hpp +0 -0
  28. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/httpcl/src/http-client.cpp +0 -0
  29. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/httpcl/src/http-settings.cpp +0 -0
  30. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/httpcl/src/log.cpp +0 -0
  31. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/httpcl/src/uri.cpp +0 -0
  32. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/httpcl/test/CMakeLists.txt +0 -0
  33. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/httpcl/test/src/main.cpp +0 -0
  34. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/httpcl/test/src/uri.cpp +0 -0
  35. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/pyzswagcl/CMakeLists.txt +0 -0
  36. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/pyzswagcl/py-openapi-client.cpp +0 -0
  37. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/pyzswagcl/py-openapi-client.h +0 -0
  38. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/pyzswagcl/py-zswagcl.cpp +0 -0
  39. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswag/__init__.py +0 -0
  40. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswag/app.py +0 -0
  41. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswag/doc.py +0 -0
  42. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswag/gen.py +0 -0
  43. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswag/reflect.py +0 -0
  44. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswag/test/.gitignore +0 -0
  45. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswag/test/CMakeLists.txt +0 -0
  46. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswag/test/__init__.py +0 -0
  47. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswag/test/calc/__init__.py +0 -0
  48. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswag/test/calc/__main__.py +0 -0
  49. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswag/test/calc/api.yaml +0 -0
  50. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswag/test/calc/calculator.zs +0 -0
  51. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswag/test/calc/client.py +0 -0
  52. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswag/test/calc/server.py +0 -0
  53. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswag/test/client.cpp +0 -0
  54. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswag/test/test_nested_service/services.zs +0 -0
  55. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswag/test/test_openapi_generator.bash +0 -0
  56. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswag/test/test_openapi_generator_1.yaml +0 -0
  57. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswag/test/test_openapi_generator_2.yaml +0 -0
  58. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswag/test/test_openapi_generator_3.yaml +0 -0
  59. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswag/test/test_openapi_generator_base_config.yaml +0 -0
  60. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswag.egg-info/dependency_links.txt +0 -0
  61. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswag.egg-info/top_level.txt +0 -0
  62. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswagcl/CMakeLists.txt +0 -0
  63. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswagcl/include/zswagcl/export.hpp +0 -0
  64. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswagcl/include/zswagcl/oaclient.hpp +0 -0
  65. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswagcl/include/zswagcl/private/openapi-client.hpp +0 -0
  66. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswagcl/include/zswagcl/private/openapi-config.hpp +0 -0
  67. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswagcl/include/zswagcl/private/openapi-oauth.hpp +0 -0
  68. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswagcl/include/zswagcl/private/openapi-parameter-helper.hpp +0 -0
  69. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswagcl/include/zswagcl/private/openapi-parser.hpp +0 -0
  70. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswagcl/include/zswagcl/private/openapi-security.hpp +0 -0
  71. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswagcl/src/base64.cpp +0 -0
  72. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswagcl/src/base64.hpp +0 -0
  73. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswagcl/src/oaclient.cpp +0 -0
  74. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswagcl/src/openapi-client.cpp +0 -0
  75. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswagcl/src/openapi-config.cpp +0 -0
  76. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswagcl/src/openapi-oauth.cpp +0 -0
  77. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswagcl/src/openapi-parameter-helper.cpp +0 -0
  78. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswagcl/src/openapi-parser.cpp +0 -0
  79. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswagcl/src/openapi-security.cpp +0 -0
  80. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswagcl/test/CMakeLists.txt +0 -0
  81. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswagcl/test/src/base64.cpp +0 -0
  82. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswagcl/test/src/http-service-format.cpp +0 -0
  83. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswagcl/test/src/main.cpp +0 -0
  84. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswagcl/test/src/oaclient.cpp +0 -0
  85. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswagcl/test/src/openapi-parameter-helper.cpp +0 -0
  86. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswagcl/test/src/service_client_test.zs +0 -0
  87. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswagcl/test/testdata/auth.yaml +0 -0
  88. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswagcl/test/testdata/config-template.json +0 -0
  89. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswagcl/test/testdata/config-with-auth.json +0 -0
  90. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswagcl/test/testdata/dummy.json +0 -0
  91. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/libs/zswagcl/test/testdata/oauth2-settings.yaml +0 -0
  92. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/requirements.txt +0 -0
  93. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/setup.cfg +0 -0
  94. {zswag-1.9.2.dev14 → zswag-1.9.2.dev21}/setup.py +0 -0
@@ -48,6 +48,8 @@ jobs:
48
48
  echo "Node at $(which node): $(node -v); npm: $(npm -v)"
49
49
  - name: Checkout code
50
50
  uses: actions/checkout@v4
51
+ with:
52
+ submodules: recursive
51
53
  - name: Configure
52
54
  run: |
53
55
  python3 -m venv venv && . ./venv/bin/activate
@@ -124,8 +126,8 @@ jobs:
124
126
  if: matrix.os == 'windows-latest'
125
127
  working-directory: build
126
128
  run: |
127
- # Install NASM using chocolatey (required for OpenSSL build)
128
- choco install nasm -y
129
+ # Install NASM and jom using chocolatey (required for OpenSSL build)
130
+ choco install nasm jom -y
129
131
  # Add NASM to PATH for current session
130
132
  $env:PATH = "$env:PATH;C:\Program Files\NASM"
131
133
  # Verify NASM installation
@@ -155,7 +157,7 @@ jobs:
155
157
  with:
156
158
  fetch-depth: 0
157
159
  fetch-tags: true
158
-
160
+
159
161
  - name: Setup Python
160
162
  uses: actions/setup-python@v5
161
163
  with:
@@ -0,0 +1,3 @@
1
+ [submodule "cmake/CPM.cmake"]
2
+ path = cmake/CPM.cmake
3
+ url = https://github.com/cpm-cmake/CPM.cmake.git
@@ -10,7 +10,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
10
10
  # without requiring CMakeLists.txt updates between releases.
11
11
  # For official releases, this value should match the git tag.
12
12
  if(NOT DEFINED ZSWAG_VERSION)
13
- set(ZSWAG_VERSION 1.9.1)
13
+ set(ZSWAG_VERSION 1.10.0)
14
14
  endif()
15
15
 
16
16
  option(ZSWAG_BUILD_WHEELS "Enable zswag whl-output to WHEEL_DEPLOY_DIRECTORY." ON)
@@ -41,9 +41,14 @@ set (CMAKE_LIBRARY_OUTPUT_DIRECTORY "${ZSWAG_DEPLOY_DIR}")
41
41
  set (CMAKE_RUNTIME_OUTPUT_DIRECTORY "${ZSWAG_DEPLOY_DIR}")
42
42
 
43
43
  ##############
44
- # Dependencies via FetchContent
45
-
46
- # Include centralized dependency management
44
+ # Dependencies via CPM (CMake Package Manager)
45
+
46
+ set(CPM_DOWNLOAD_ALL ON)
47
+ set(CPM_USE_LOCAL_PACKAGES OFF)
48
+ # Include CPM.cmake
49
+ if (NOT CPM_INITIALIZED)
50
+ add_subdirectory(cmake/CPM.cmake)
51
+ endif ()
47
52
  include(cmake/Dependencies.cmake)
48
53
 
49
54
  ##############
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zswag
3
- Version: 1.9.2.dev14
3
+ Version: 1.9.2.dev21
4
4
  Summary: OpenAPI service transport layer for zserio.
5
5
  Home-page: https://github.com/klebert-engineering/zswag
6
6
  Author: Klebert Engineering
@@ -0,0 +1,121 @@
1
+ # Dependencies.cmake
2
+ # Centralized dependency management using CPM (CMake Package Manager)
3
+ # CPM provides better version management and diagnostics compared to raw FetchContent
4
+
5
+ # =============================================================================
6
+ # Core dependencies
7
+ # =============================================================================
8
+
9
+ # zlib
10
+ CPMAddPackage(
11
+ URI "gh:madler/zlib@1.3.1"
12
+ OPTIONS
13
+ "ZLIB_BUILD_EXAMPLES OFF"
14
+ "BUILD_TESTING OFF")
15
+ if(zlib_ADDED)
16
+ set_target_properties(zlib PROPERTIES EXCLUDE_FROM_ALL TRUE)
17
+ set_target_properties(zlibstatic PROPERTIES EXCLUDE_FROM_ALL TRUE)
18
+ # Create ZLIB::ZLIB alias if it doesn't exist
19
+ if(NOT TARGET ZLIB::ZLIB)
20
+ if(TARGET zlib)
21
+ add_library(ZLIB::ZLIB ALIAS zlib)
22
+ elseif(TARGET zlibstatic)
23
+ add_library(ZLIB::ZLIB ALIAS zlibstatic)
24
+ endif()
25
+ endif()
26
+ endif()
27
+
28
+ # fmt
29
+ CPMAddPackage(
30
+ URI "gh:fmtlib/fmt#11.1.3"
31
+ OPTIONS "FMT_HEADER_ONLY OFF"
32
+ )
33
+
34
+ # spdlog
35
+ CPMAddPackage(
36
+ URI "gh:gabime/spdlog@1.15.3"
37
+ OPTIONS
38
+ "SPDLOG_BUILD_TESTS OFF"
39
+ "SPDLOG_BUILD_EXAMPLE OFF"
40
+ "SPDLOG_FMT_EXTERNAL ON"
41
+ )
42
+
43
+ # yaml-cpp
44
+ CPMAddPackage(
45
+ URI "gh:jbeder/yaml-cpp#aa8d4e4750ec9fe9f8cc680eb90f1b15955c817e"
46
+ OPTIONS
47
+ "YAML_CPP_BUILD_TESTS OFF"
48
+ "YAML_CPP_BUILD_TOOLS OFF"
49
+ "YAML_CPP_BUILD_CONTRIB OFF"
50
+ )
51
+
52
+ # stx
53
+ CPMAddPackage("gh:Klebert-Engineering/stx@1.0.0")
54
+
55
+ # httplib
56
+ CPMAddPackage(
57
+ URI "gh:yhirose/cpp-httplib@0.15.3"
58
+ OPTIONS
59
+ "HTTPLIB_USE_CERTS_FROM_MACOSX_KEYCHAIN OFF"
60
+ "HTTPLIB_INSTALL OFF"
61
+ )
62
+
63
+ # OpenSSL
64
+ set (OPENSSL_VERSION openssl-3.5.2)
65
+ CPMAddPackage("gh:klebert-engineering/openssl-cmake@1.0.0")
66
+
67
+ # pybind11 (only needed when building wheels)
68
+ if(ZSWAG_BUILD_WHEELS)
69
+ CPMAddPackage("gh:pybind/pybind11@2.13.6")
70
+ endif()
71
+
72
+ # python-cmake-wheel (only needed when building wheels)
73
+ if(ZSWAG_BUILD_WHEELS)
74
+ CPMAddPackage("gh:Klebert-Engineering/python-cmake-wheel@1.0.1")
75
+ endif()
76
+
77
+ # keychain
78
+ if(ZSWAG_KEYCHAIN_SUPPORT)
79
+ CPMAddPackage("gh:hrantzsch/keychain@1.3.1")
80
+ endif()
81
+
82
+ # Catch2 (for testing)
83
+ if(ZSWAG_ENABLE_TESTING)
84
+ CPMAddPackage(
85
+ URI "gh:catchorg/Catch2@3.8.1"
86
+ OPTIONS
87
+ "CATCH_INSTALL_DOCS OFF"
88
+ "CATCH_INSTALL_EXTRAS OFF"
89
+ )
90
+ endif()
91
+
92
+ # zserio-cmake-helper
93
+ set(ZSERIO_VERSION "2.16.1")
94
+ CPMAddPackage("gh:Klebert-Engineering/zserio-cmake-helper@1.1.4")
95
+ # Add zserio C++ runtime target
96
+ if(NOT TARGET ZserioCppRuntime)
97
+ add_zserio_cpp_runtime()
98
+ endif()
99
+
100
+ # =============================================================================
101
+ # Configure httplib with OpenSSL and zlib support
102
+ # =============================================================================
103
+
104
+ if (TARGET httplib)
105
+ target_compile_definitions(httplib INTERFACE CPPHTTPLIB_OPENSSL_SUPPORT)
106
+ target_link_libraries(httplib INTERFACE OpenSSL::SSL OpenSSL::Crypto ZLIB::ZLIB)
107
+ endif()
108
+
109
+ # =============================================================================
110
+ # Configure python-cmake-wheel integration
111
+ # =============================================================================
112
+
113
+ if(ZSWAG_BUILD_WHEELS AND python-cmake-wheel_ADDED)
114
+ set(CMAKE_MODULE_PATH "${python-cmake-wheel_SOURCE_DIR}" ${CMAKE_MODULE_PATH})
115
+
116
+ if(NOT TARGET wheel)
117
+ set(Python3_FIND_STRATEGY LOCATION)
118
+ include(python-wheel)
119
+ set(WHEEL_DEPLOY_DIRECTORY "${ZSWAG_DEPLOY_DIR}/wheel")
120
+ endif()
121
+ endif()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zswag
3
- Version: 1.9.2.dev14
3
+ Version: 1.9.2.dev21
4
4
  Summary: OpenAPI service transport layer for zserio.
5
5
  Home-page: https://github.com/klebert-engineering/zswag
6
6
  Author: Klebert Engineering
@@ -1,5 +1,6 @@
1
1
  .clang-format
2
2
  .gitignore
3
+ .gitmodules
3
4
  CMakeLists.txt
4
5
  LICENSE
5
6
  README.md
@@ -10,7 +11,6 @@ setup.py
10
11
  .github/scripts/validate_version.py
11
12
  .github/workflows/build-deploy.yml
12
13
  cmake/Dependencies.cmake
13
- cmake/OpenSSL.cmake
14
14
  doc/zswag-architecture.mdj
15
15
  doc/zswag-architecture.png
16
16
  libs/httpcl/CMakeLists.txt
@@ -1,4 +1,4 @@
1
- pyzswagcl==1.9.2.dev14
1
+ pyzswagcl==1.9.2.dev21
2
2
  connexion~=2.14.2
3
3
  requests
4
4
  zserio<3.0.0
@@ -289,3 +289,4 @@ TEST_CASE("OAuth2 Integration with OpenAPI Parser", "[oauth2][integration]") {
289
289
  REQUIRE(tokenEndpointCalled);
290
290
  }
291
291
  }
292
+
@@ -463,3 +463,4 @@ TEST_CASE("OAuth2 Client Credentials Flow", "[oauth2]") {
463
463
  oaClient->callMethod("test", zserio::ReflectableServiceData(request.reflectable()), nullptr);
464
464
  }
465
465
  }
466
+
@@ -57,3 +57,4 @@ components:
57
57
  read: Read access
58
58
  write: Write access
59
59
  admin: Admin access
60
+
@@ -1,223 +0,0 @@
1
- # Dependencies.cmake
2
- # Centralized dependency management using FetchContent
3
-
4
- include(FetchContent)
5
-
6
- # Option to enable offline builds
7
- option(FETCHCONTENT_FULLY_DISCONNECTED "Enable offline build mode" OFF)
8
-
9
- # Set FetchContent properties
10
- set(FETCHCONTENT_QUIET OFF)
11
-
12
- # =============================================================================
13
- # Local override checks and messages
14
- # =============================================================================
15
-
16
- macro(check_fetchcontent_override dep_name)
17
- if(FETCHCONTENT_SOURCE_DIR_${dep_name})
18
- message(STATUS "Using local source for ${dep_name}: ${FETCHCONTENT_SOURCE_DIR_${dep_name}}")
19
- endif()
20
- endmacro()
21
-
22
- # =============================================================================
23
- # Core dependencies
24
- # =============================================================================
25
-
26
- # zlib
27
- if(NOT TARGET zlib AND NOT TARGET zlibstatic AND NOT TARGET ZLIB::ZLIB)
28
- check_fetchcontent_override(ZLIB)
29
- FetchContent_Declare(
30
- zlib
31
- GIT_REPOSITORY https://github.com/madler/zlib.git
32
- GIT_TAG "v1.3.1"
33
- GIT_SHALLOW TRUE
34
- )
35
- set(ZLIB_BUILD_TESTS OFF CACHE BOOL "" FORCE)
36
- set(ZLIB_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
37
- FetchContent_MakeAvailable(zlib)
38
- endif()
39
-
40
- # create ZLIB::ZLIB alias if it doesn't exist
41
- if(NOT TARGET ZLIB::ZLIB)
42
- if(TARGET zlib)
43
- add_library(ZLIB::ZLIB ALIAS zlib)
44
- elseif(TARGET zlibstatic)
45
- add_library(ZLIB::ZLIB ALIAS zlibstatic)
46
- endif()
47
- endif()
48
-
49
- # fmt
50
- if (NOT TARGET fmt::fmt)
51
- FetchContent_Declare(fmt
52
- GIT_REPOSITORY "https://github.com/fmtlib/fmt.git"
53
- GIT_TAG "11.1.3"
54
- GIT_SHALLOW ON
55
- CMAKE_ARGS -DFMT_HEADER_ONLY=OFF)
56
- FetchContent_MakeAvailable(fmt)
57
- endif()
58
-
59
- # spdlog
60
- if(NOT TARGET spdlog)
61
- check_fetchcontent_override(SPDLOG)
62
- FetchContent_Declare(
63
- spdlog
64
- GIT_REPOSITORY https://github.com/gabime/spdlog.git
65
- GIT_TAG "v1.15.3"
66
- GIT_SHALLOW TRUE
67
- )
68
- set(SPDLOG_BUILD_TESTS OFF CACHE BOOL "" FORCE)
69
- set(SPDLOG_BUILD_EXAMPLE OFF CACHE BOOL "" FORCE)
70
- set(SPDLOG_FMT_EXTERNAL ON CACHE BOOL "" FORCE)
71
- FetchContent_MakeAvailable(spdlog)
72
- endif()
73
-
74
- # yaml-cpp - use specific commit hash for stability
75
- if(NOT TARGET yaml-cpp)
76
- check_fetchcontent_override(YAML_CPP)
77
- FetchContent_Declare(
78
- yaml-cpp
79
- GIT_REPOSITORY https://github.com/jbeder/yaml-cpp.git
80
- GIT_TAG "aa8d4e4750ec9fe9f8cc680eb90f1b15955c817e" # Latest commit on master as of Dec 2024
81
- GIT_SHALLOW TRUE
82
- )
83
- set(YAML_CPP_BUILD_TESTS OFF CACHE BOOL "" FORCE)
84
- set(YAML_CPP_BUILD_TOOLS OFF CACHE BOOL "" FORCE)
85
- set(YAML_CPP_BUILD_CONTRIB OFF CACHE BOOL "" FORCE)
86
- FetchContent_MakeAvailable(yaml-cpp)
87
- endif()
88
-
89
- # stx - use specific commit hash for stability
90
- if(NOT TARGET stx)
91
- check_fetchcontent_override(STX)
92
- FetchContent_Declare(
93
- stx
94
- GIT_REPOSITORY https://github.com/Klebert-Engineering/stx.git
95
- GIT_TAG "019d7e4978a7e60ac90223a96ad87963840308ef" # Latest commit on main as of Dec 2024
96
- GIT_SHALLOW TRUE
97
- )
98
- FetchContent_MakeAvailable(stx)
99
- endif()
100
-
101
- # httplib - configure to not install/export targets to avoid dependency issues
102
- if(NOT TARGET httplib)
103
- check_fetchcontent_override(HTTPLIB)
104
- FetchContent_Declare(
105
- httplib
106
- GIT_REPOSITORY https://github.com/yhirose/cpp-httplib.git
107
- GIT_TAG "v0.15.3"
108
- GIT_SHALLOW TRUE
109
- )
110
- set(HTTPLIB_USE_CERTS_FROM_MACOSX_KEYCHAIN OFF CACHE BOOL "" FORCE)
111
- set(HTTPLIB_INSTALL OFF CACHE BOOL "" FORCE) # Disable installation to avoid export issues
112
- FetchContent_MakeAvailable(httplib)
113
- endif()
114
-
115
- # OpenSSL
116
- if(NOT TARGET OpenSSL::SSL AND NOT TARGET OpenSSL::Crypto)
117
- check_fetchcontent_override(OPENSSL)
118
- FetchContent_Declare(
119
- openssl
120
- GIT_REPOSITORY https://github.com/openssl/openssl.git
121
- GIT_TAG "openssl-3.5.1"
122
- GIT_SHALLOW TRUE
123
- )
124
- FetchContent_MakeAvailable(openssl)
125
- set(OPENSSL_SOURCE_DIR ${openssl_SOURCE_DIR})
126
- # Include the OpenSSL build logic
127
- include(${CMAKE_CURRENT_LIST_DIR}/OpenSSL.cmake)
128
- endif()
129
-
130
- # pybind11 (only needed when building wheels)
131
- if(ZSWAG_BUILD_WHEELS AND NOT TARGET pybind11)
132
- check_fetchcontent_override(PYBIND11)
133
- FetchContent_Declare(
134
- pybind11
135
- GIT_REPOSITORY https://github.com/pybind/pybind11.git
136
- GIT_TAG "v2.10.4"
137
- GIT_SHALLOW TRUE
138
- )
139
- FetchContent_MakeAvailable(pybind11)
140
- endif()
141
-
142
- # python-cmake-wheel (only needed when building wheels)
143
- if(ZSWAG_BUILD_WHEELS AND NOT TARGET wheel)
144
- check_fetchcontent_override(PYTHON_CMAKE_WHEEL)
145
- FetchContent_Declare(
146
- python-cmake-wheel
147
- GIT_REPOSITORY https://github.com/Klebert-Engineering/python-cmake-wheel.git
148
- GIT_TAG "v1.0.0"
149
- GIT_SHALLOW TRUE
150
- )
151
- FetchContent_MakeAvailable(python-cmake-wheel)
152
- endif()
153
-
154
- # keychain
155
- if(ZSWAG_KEYCHAIN_SUPPORT AND NOT TARGET keychain)
156
- check_fetchcontent_override(KEYCHAIN)
157
- FetchContent_Declare(
158
- keychain
159
- GIT_REPOSITORY https://github.com/hrantzsch/keychain
160
- GIT_TAG "v1.3.1"
161
- GIT_SHALLOW TRUE
162
- )
163
- FetchContent_MakeAvailable(keychain)
164
- endif()
165
-
166
- # Catch2 (for testing)
167
- if(ZSWAG_ENABLE_TESTING AND NOT TARGET Catch2::Catch2)
168
- check_fetchcontent_override(CATCH2)
169
- FetchContent_Declare(
170
- catch2
171
- GIT_REPOSITORY https://github.com/catchorg/Catch2.git
172
- GIT_TAG "v3.8.1"
173
- GIT_SHALLOW TRUE
174
- )
175
- set(CATCH_INSTALL_DOCS OFF CACHE BOOL "" FORCE)
176
- set(CATCH_INSTALL_EXTRAS OFF CACHE BOOL "" FORCE)
177
- FetchContent_MakeAvailable(catch2)
178
- endif()
179
-
180
- # zserio-cmake-helper
181
- if(NOT COMMAND add_zserio_cpp_runtime)
182
- check_fetchcontent_override(ZSERIO_CMAKE_HELPER)
183
- FetchContent_Declare(
184
- zserio-cmake-helper
185
- GIT_REPOSITORY https://github.com/Klebert-Engineering/zserio-cmake-helper.git
186
- GIT_TAG "v1.1.4"
187
- GIT_SHALLOW TRUE
188
- )
189
- set(ZSERIO_VERSION "2.16.1")
190
- FetchContent_MakeAvailable(zserio-cmake-helper)
191
-
192
- # Add zserio C++ runtime target
193
- if(NOT TARGET ZserioCppRuntime)
194
- add_zserio_cpp_runtime()
195
- endif()
196
- endif()
197
-
198
- # =============================================================================
199
- # Configure httplib with OpenSSL and zlib support
200
- # =============================================================================
201
-
202
- if(TARGET httplib)
203
- target_compile_definitions(httplib INTERFACE CPPHTTPLIB_OPENSSL_SUPPORT)
204
- target_link_libraries(httplib INTERFACE OpenSSL::SSL OpenSSL::Crypto ZLIB::ZLIB)
205
- # Ensure httplib depends on OpenSSL build to establish correct build order
206
- if(TARGET openssl_build)
207
- add_dependencies(httplib openssl_build)
208
- endif()
209
- endif()
210
-
211
- # =============================================================================
212
- # Configure python-cmake-wheel integration
213
- # =============================================================================
214
-
215
- if(ZSWAG_BUILD_WHEELS)
216
- set(CMAKE_MODULE_PATH "${python-cmake-wheel_SOURCE_DIR}" ${CMAKE_MODULE_PATH})
217
-
218
- if(NOT TARGET wheel)
219
- set(Python3_FIND_STRATEGY LOCATION)
220
- include(python-wheel)
221
- set(WHEEL_DEPLOY_DIRECTORY "${ZSWAG_DEPLOY_DIR}/wheel")
222
- endif()
223
- endif()
@@ -1,175 +0,0 @@
1
- # OpenSSL.cmake
2
- # Custom OpenSSL build configuration using ExternalProject
3
-
4
- include(ExternalProject)
5
- include(ProcessorCount)
6
-
7
- # Get number of processor cores for parallel builds
8
- ProcessorCount(N)
9
-
10
- # Set OpenSSL install directory
11
- set(OPENSSL_INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/_deps/openssl-install)
12
-
13
- # Use find_package so Perl executable can be set in cmake
14
- find_package(Perl REQUIRED)
15
-
16
- # Determine platform-specific OpenSSL configuration
17
- if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
18
- if(CMAKE_SIZEOF_VOID_P EQUAL 8)
19
- set(OPENSSL_CONFIGURE_COMMAND ${PERL_EXECUTABLE} ${OPENSSL_SOURCE_DIR}/Configure VC-WIN64A --prefix=${OPENSSL_INSTALL_DIR} --openssldir=${OPENSSL_INSTALL_DIR}/ssl no-shared no-tests)
20
- else()
21
- set(OPENSSL_CONFIGURE_COMMAND ${PERL_EXECUTABLE} ${OPENSSL_SOURCE_DIR}/Configure VC-WIN32 --prefix=${OPENSSL_INSTALL_DIR} --openssldir=${OPENSSL_INSTALL_DIR}/ssl no-shared no-tests)
22
- endif()
23
- set(OPENSSL_BUILD_COMMAND nmake)
24
- set(OPENSSL_INSTALL_COMMAND nmake install_sw)
25
- # On Windows, OpenSSL may generate libraries with lib prefix
26
- set(OPENSSL_LIB_PREFIX "lib")
27
- set(OPENSSL_LIB_SUFFIX ".lib")
28
- elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
29
- if(CMAKE_OSX_ARCHITECTURES MATCHES "arm64" OR CMAKE_SYSTEM_PROCESSOR MATCHES "arm64")
30
- set(OPENSSL_CONFIGURE_COMMAND ${OPENSSL_SOURCE_DIR}/Configure darwin64-arm64-cc --prefix=${OPENSSL_INSTALL_DIR} --openssldir=${OPENSSL_INSTALL_DIR}/ssl no-shared no-tests)
31
- else()
32
- set(OPENSSL_CONFIGURE_COMMAND ${OPENSSL_SOURCE_DIR}/Configure darwin64-x86_64-cc --prefix=${OPENSSL_INSTALL_DIR} --openssldir=${OPENSSL_INSTALL_DIR}/ssl no-shared no-tests)
33
- endif()
34
- if(NOT N EQUAL 0)
35
- set(OPENSSL_BUILD_COMMAND make -j${N})
36
- set(OPENSSL_INSTALL_COMMAND make -j${N} install_sw)
37
- else()
38
- set(OPENSSL_BUILD_COMMAND make)
39
- set(OPENSSL_INSTALL_COMMAND make install_sw)
40
- endif()
41
- set(OPENSSL_LIB_PREFIX "lib")
42
- set(OPENSSL_LIB_SUFFIX ".a")
43
- else() # Linux and other Unix-like systems
44
- # Detect architecture for Linux
45
- if(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64|ARM64")
46
- set(OPENSSL_CONFIGURE_COMMAND ${OPENSSL_SOURCE_DIR}/Configure linux-aarch64 --prefix=${OPENSSL_INSTALL_DIR} --openssldir=${OPENSSL_INSTALL_DIR}/ssl no-shared no-tests)
47
- elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
48
- set(OPENSSL_CONFIGURE_COMMAND ${OPENSSL_SOURCE_DIR}/Configure linux-x86_64 --prefix=${OPENSSL_INSTALL_DIR} --openssldir=${OPENSSL_INSTALL_DIR}/ssl no-shared no-tests)
49
- else()
50
- set(OPENSSL_CONFIGURE_COMMAND ${OPENSSL_SOURCE_DIR}/Configure linux-x86 --prefix=${OPENSSL_INSTALL_DIR} --openssldir=${OPENSSL_INSTALL_DIR}/ssl no-shared no-tests)
51
- endif()
52
- if(NOT N EQUAL 0)
53
- set(OPENSSL_BUILD_COMMAND make -j${N})
54
- set(OPENSSL_INSTALL_COMMAND make -j${N} install_sw)
55
- else()
56
- set(OPENSSL_BUILD_COMMAND make)
57
- set(OPENSSL_INSTALL_COMMAND make install_sw)
58
- endif()
59
- set(OPENSSL_LIB_PREFIX "lib")
60
- set(OPENSSL_LIB_SUFFIX ".a")
61
- endif()
62
-
63
- # Determine the library directory used by OpenSSL on Linux
64
- # x86_64 Linux uses lib64, but ARM64 uses lib
65
- if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64|ARM64")
66
- set(OPENSSL_LIBDIR "lib")
67
- elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
68
- set(OPENSSL_LIBDIR "lib64")
69
- else()
70
- set(OPENSSL_LIBDIR "lib")
71
- endif()
72
-
73
- # Build OpenSSL using ExternalProject
74
- ExternalProject_Add(openssl_build
75
- SOURCE_DIR ${OPENSSL_SOURCE_DIR}
76
- CONFIGURE_COMMAND ${OPENSSL_CONFIGURE_COMMAND}
77
- BUILD_COMMAND ${OPENSSL_BUILD_COMMAND}
78
- INSTALL_COMMAND ${OPENSSL_INSTALL_COMMAND}
79
- BUILD_IN_SOURCE 1
80
- BUILD_BYPRODUCTS
81
- $<$<STREQUAL:${CMAKE_SYSTEM_NAME},Windows>:${OPENSSL_INSTALL_DIR}/lib/${OPENSSL_LIB_PREFIX}ssl${OPENSSL_LIB_SUFFIX}>
82
- $<$<STREQUAL:${CMAKE_SYSTEM_NAME},Windows>:${OPENSSL_INSTALL_DIR}/lib/${OPENSSL_LIB_PREFIX}crypto${OPENSSL_LIB_SUFFIX}>
83
- $<$<STREQUAL:${CMAKE_SYSTEM_NAME},Windows>:${OPENSSL_INSTALL_DIR}/lib/ssl${OPENSSL_LIB_SUFFIX}>
84
- $<$<STREQUAL:${CMAKE_SYSTEM_NAME},Windows>:${OPENSSL_INSTALL_DIR}/lib/crypto${OPENSSL_LIB_SUFFIX}>
85
- $<$<STREQUAL:${CMAKE_SYSTEM_NAME},Linux>:${OPENSSL_INSTALL_DIR}/${OPENSSL_LIBDIR}/${OPENSSL_LIB_PREFIX}ssl${OPENSSL_LIB_SUFFIX}>
86
- $<$<STREQUAL:${CMAKE_SYSTEM_NAME},Linux>:${OPENSSL_INSTALL_DIR}/${OPENSSL_LIBDIR}/${OPENSSL_LIB_PREFIX}crypto${OPENSSL_LIB_SUFFIX}>
87
- $<$<AND:$<STREQUAL:${CMAKE_SYSTEM_NAME},Linux>,$<NOT:$<STREQUAL:${OPENSSL_LIBDIR},lib>>>:${OPENSSL_INSTALL_DIR}/lib/${OPENSSL_LIB_PREFIX}ssl${OPENSSL_LIB_SUFFIX}>
88
- $<$<AND:$<STREQUAL:${CMAKE_SYSTEM_NAME},Linux>,$<NOT:$<STREQUAL:${OPENSSL_LIBDIR},lib>>>:${OPENSSL_INSTALL_DIR}/lib/${OPENSSL_LIB_PREFIX}crypto${OPENSSL_LIB_SUFFIX}>
89
- $<$<STREQUAL:${CMAKE_SYSTEM_NAME},Darwin>:${OPENSSL_INSTALL_DIR}/lib/${OPENSSL_LIB_PREFIX}ssl${OPENSSL_LIB_SUFFIX}>
90
- $<$<STREQUAL:${CMAKE_SYSTEM_NAME},Darwin>:${OPENSSL_INSTALL_DIR}/lib/${OPENSSL_LIB_PREFIX}crypto${OPENSSL_LIB_SUFFIX}>
91
- LOG_CONFIGURE ON
92
- LOG_BUILD ON
93
- LOG_INSTALL ON
94
- LOG_OUTPUT_ON_FAILURE ON
95
- )
96
-
97
- # Create imported targets for OpenSSL::SSL and OpenSSL::Crypto
98
- add_library(OpenSSL::SSL STATIC IMPORTED GLOBAL)
99
- add_library(OpenSSL::Crypto STATIC IMPORTED GLOBAL)
100
-
101
- # Set target properties - use standard lib path
102
- # On Windows, try both naming conventions
103
- if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
104
- set_target_properties(OpenSSL::SSL PROPERTIES
105
- IMPORTED_LOCATION ${OPENSSL_INSTALL_DIR}/lib/ssl${OPENSSL_LIB_SUFFIX}
106
- INTERFACE_INCLUDE_DIRECTORIES ${OPENSSL_INSTALL_DIR}/include
107
- )
108
- set_target_properties(OpenSSL::Crypto PROPERTIES
109
- IMPORTED_LOCATION ${OPENSSL_INSTALL_DIR}/lib/crypto${OPENSSL_LIB_SUFFIX}
110
- INTERFACE_INCLUDE_DIRECTORIES ${OPENSSL_INSTALL_DIR}/include
111
- )
112
- else()
113
- set_target_properties(OpenSSL::SSL PROPERTIES
114
- IMPORTED_LOCATION ${OPENSSL_INSTALL_DIR}/lib/${OPENSSL_LIB_PREFIX}ssl${OPENSSL_LIB_SUFFIX}
115
- INTERFACE_INCLUDE_DIRECTORIES ${OPENSSL_INSTALL_DIR}/include
116
- )
117
- set_target_properties(OpenSSL::Crypto PROPERTIES
118
- IMPORTED_LOCATION ${OPENSSL_INSTALL_DIR}/lib/${OPENSSL_LIB_PREFIX}crypto${OPENSSL_LIB_SUFFIX}
119
- INTERFACE_INCLUDE_DIRECTORIES ${OPENSSL_INSTALL_DIR}/include
120
- )
121
- endif()
122
-
123
- # Add a post-build command to handle lib64 vs lib directory issue on Linux x86_64 systems only
124
- # This ensures libraries are available in the expected lib/ directory
125
- # macOS and ARM64 Linux install directly to lib/, so this is only needed for x86_64 Linux
126
- if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND NOT CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64|ARM64")
127
- add_custom_command(
128
- TARGET openssl_build POST_BUILD
129
- COMMAND ${CMAKE_COMMAND} -E make_directory ${OPENSSL_INSTALL_DIR}/lib
130
- COMMAND ${CMAKE_COMMAND} -E copy_if_different
131
- ${OPENSSL_INSTALL_DIR}/lib64/${OPENSSL_LIB_PREFIX}ssl${OPENSSL_LIB_SUFFIX}
132
- ${OPENSSL_INSTALL_DIR}/lib/${OPENSSL_LIB_PREFIX}ssl${OPENSSL_LIB_SUFFIX}
133
- COMMAND ${CMAKE_COMMAND} -E copy_if_different
134
- ${OPENSSL_INSTALL_DIR}/lib64/${OPENSSL_LIB_PREFIX}crypto${OPENSSL_LIB_SUFFIX}
135
- ${OPENSSL_INSTALL_DIR}/lib/${OPENSSL_LIB_PREFIX}crypto${OPENSSL_LIB_SUFFIX}
136
- COMMENT "Ensuring OpenSSL libraries are available in lib/ directory"
137
- VERBATIM
138
- )
139
- endif()
140
-
141
- # Add a post-build command to handle library naming issues on Windows
142
- # OpenSSL may generate libraries with different names, so we create fallback copies
143
- if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
144
- add_custom_command(
145
- TARGET openssl_build POST_BUILD
146
- COMMAND ${CMAKE_COMMAND} -E copy_if_different
147
- ${OPENSSL_INSTALL_DIR}/lib/${OPENSSL_LIB_PREFIX}ssl${OPENSSL_LIB_SUFFIX}
148
- ${OPENSSL_INSTALL_DIR}/lib/ssl${OPENSSL_LIB_SUFFIX}
149
- COMMAND ${CMAKE_COMMAND} -E copy_if_different
150
- ${OPENSSL_INSTALL_DIR}/lib/${OPENSSL_LIB_PREFIX}crypto${OPENSSL_LIB_SUFFIX}
151
- ${OPENSSL_INSTALL_DIR}/lib/crypto${OPENSSL_LIB_SUFFIX}
152
- COMMENT "Ensuring OpenSSL libraries are available with expected names"
153
- VERBATIM
154
- )
155
- endif()
156
-
157
- # Add dependencies
158
- add_dependencies(OpenSSL::SSL openssl_build)
159
- add_dependencies(OpenSSL::Crypto openssl_build)
160
-
161
- # Link SSL to Crypto
162
- set_target_properties(OpenSSL::SSL PROPERTIES
163
- INTERFACE_LINK_LIBRARIES OpenSSL::Crypto
164
- )
165
-
166
- # Platform-specific system libraries
167
- if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
168
- set_target_properties(OpenSSL::Crypto PROPERTIES
169
- INTERFACE_LINK_LIBRARIES "ws2_32;gdi32;advapi32;crypt32;user32"
170
- )
171
- elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
172
- set_target_properties(OpenSSL::Crypto PROPERTIES
173
- INTERFACE_LINK_LIBRARIES "dl;pthread"
174
- )
175
- endif()
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes