rice 4.7.1 → 4.9.0

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 (160) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +37 -1
  3. data/CMakeLists.txt +14 -22
  4. data/CMakePresets.json +203 -75
  5. data/FindRuby.cmake +358 -123
  6. data/bin/rice-doc.rb +58 -141
  7. data/include/rice/api.hpp +261 -0
  8. data/include/rice/rice.hpp +2459 -1693
  9. data/include/rice/stl.hpp +450 -546
  10. data/lib/rice/doc/config.rb +70 -0
  11. data/lib/rice/doc/cpp_reference.rb +1 -4
  12. data/lib/rice/doc/mkdocs.rb +58 -20
  13. data/lib/rice/doc/rice.rb +21 -0
  14. data/lib/rice/doc.rb +1 -0
  15. data/lib/rice/make_rice_headers.rb +7 -0
  16. data/lib/rice/native_registry.rb +5 -10
  17. data/lib/rice/rbs.rb +6 -6
  18. data/lib/rice/version.rb +1 -1
  19. data/lib/rubygems_plugin.rb +12 -9
  20. data/rice/Arg.hpp +12 -6
  21. data/rice/Arg.ipp +14 -7
  22. data/rice/Buffer.ipp +44 -40
  23. data/rice/Callback.hpp +1 -1
  24. data/rice/Callback.ipp +2 -7
  25. data/rice/Constructor.hpp +1 -1
  26. data/rice/Constructor.ipp +11 -11
  27. data/rice/Data_Object.ipp +15 -15
  28. data/rice/Data_Type.hpp +9 -10
  29. data/rice/Data_Type.ipp +33 -31
  30. data/rice/Director.hpp +1 -0
  31. data/rice/Enum.ipp +58 -39
  32. data/rice/Exception.hpp +4 -4
  33. data/rice/Exception.ipp +7 -7
  34. data/rice/NoGVL.hpp +13 -0
  35. data/rice/Reference.hpp +56 -0
  36. data/rice/Reference.ipp +96 -0
  37. data/rice/Return.hpp +4 -1
  38. data/rice/Return.ipp +0 -6
  39. data/rice/cpp_api/Array.hpp +41 -4
  40. data/rice/cpp_api/Array.ipp +105 -9
  41. data/rice/cpp_api/Class.hpp +7 -2
  42. data/rice/cpp_api/Class.ipp +9 -4
  43. data/rice/cpp_api/Hash.ipp +7 -4
  44. data/rice/cpp_api/Module.hpp +4 -4
  45. data/rice/cpp_api/Module.ipp +12 -10
  46. data/rice/cpp_api/Object.hpp +10 -4
  47. data/rice/cpp_api/Object.ipp +20 -12
  48. data/rice/cpp_api/String.hpp +2 -2
  49. data/rice/cpp_api/String.ipp +11 -8
  50. data/rice/cpp_api/Symbol.ipp +7 -7
  51. data/rice/cpp_api/shared_methods.hpp +5 -9
  52. data/rice/detail/Forwards.hpp +18 -0
  53. data/rice/detail/Forwards.ipp +60 -0
  54. data/rice/detail/InstanceRegistry.hpp +0 -2
  55. data/rice/detail/Native.hpp +31 -21
  56. data/rice/detail/Native.ipp +282 -130
  57. data/rice/detail/NativeAttributeGet.hpp +5 -7
  58. data/rice/detail/NativeAttributeGet.ipp +26 -26
  59. data/rice/detail/NativeAttributeSet.hpp +2 -4
  60. data/rice/detail/NativeAttributeSet.ipp +20 -16
  61. data/rice/detail/NativeCallback.hpp +77 -0
  62. data/rice/detail/NativeCallback.ipp +280 -0
  63. data/rice/detail/NativeFunction.hpp +11 -21
  64. data/rice/detail/NativeFunction.ipp +58 -119
  65. data/rice/detail/NativeInvoker.hpp +4 -4
  66. data/rice/detail/NativeInvoker.ipp +7 -7
  67. data/rice/detail/NativeIterator.hpp +2 -4
  68. data/rice/detail/NativeIterator.ipp +18 -14
  69. data/rice/detail/NativeMethod.hpp +10 -20
  70. data/rice/detail/NativeMethod.ipp +54 -114
  71. data/rice/detail/NativeProc.hpp +5 -7
  72. data/rice/detail/NativeProc.ipp +39 -28
  73. data/rice/detail/NativeRegistry.hpp +1 -1
  74. data/rice/detail/NativeRegistry.ipp +29 -0
  75. data/rice/detail/Parameter.hpp +15 -8
  76. data/rice/detail/Parameter.ipp +102 -43
  77. data/rice/detail/Proc.ipp +14 -28
  78. data/rice/detail/RubyType.ipp +2 -53
  79. data/rice/detail/Type.hpp +23 -7
  80. data/rice/detail/Type.ipp +77 -93
  81. data/rice/detail/TypeRegistry.ipp +5 -4
  82. data/rice/detail/Wrapper.hpp +13 -12
  83. data/rice/detail/Wrapper.ipp +97 -44
  84. data/rice/detail/from_ruby.hpp +8 -6
  85. data/rice/detail/from_ruby.ipp +306 -173
  86. data/rice/detail/ruby.hpp +23 -0
  87. data/rice/libc/file.hpp +4 -4
  88. data/rice/rice.hpp +9 -8
  89. data/rice/rice_api/Native.ipp +5 -1
  90. data/rice/rice_api/NativeRegistry.ipp +14 -1
  91. data/rice/rice_api/Parameter.ipp +1 -1
  92. data/rice/ruby_mark.hpp +2 -1
  93. data/rice/stl/complex.ipp +12 -8
  94. data/rice/stl/map.ipp +27 -22
  95. data/rice/stl/monostate.ipp +16 -12
  96. data/rice/stl/multimap.hpp +0 -2
  97. data/rice/stl/multimap.ipp +27 -22
  98. data/rice/stl/optional.ipp +27 -11
  99. data/rice/stl/pair.ipp +5 -5
  100. data/rice/stl/reference_wrapper.ipp +5 -4
  101. data/rice/stl/set.ipp +16 -16
  102. data/rice/stl/shared_ptr.hpp +9 -9
  103. data/rice/stl/shared_ptr.ipp +52 -185
  104. data/rice/stl/string.ipp +18 -18
  105. data/rice/stl/string_view.ipp +1 -1
  106. data/rice/stl/tuple.ipp +15 -36
  107. data/rice/stl/unique_ptr.hpp +9 -3
  108. data/rice/stl/unique_ptr.ipp +86 -120
  109. data/rice/stl/unordered_map.ipp +20 -15
  110. data/rice/stl/variant.ipp +37 -21
  111. data/rice/stl/vector.ipp +41 -36
  112. data/rice/traits/function_traits.hpp +19 -19
  113. data/rice/traits/method_traits.hpp +4 -4
  114. data/rice/traits/rice_traits.hpp +162 -39
  115. data/rice.gemspec +1 -3
  116. data/test/test_Array.cpp +261 -3
  117. data/test/test_Attribute.cpp +6 -3
  118. data/test/test_Buffer.cpp +6 -42
  119. data/test/test_Callback.cpp +77 -23
  120. data/test/test_Data_Object.cpp +1 -1
  121. data/test/test_Data_Type.cpp +21 -22
  122. data/test/test_Director.cpp +2 -4
  123. data/test/test_Enum.cpp +34 -5
  124. data/test/test_File.cpp +9 -5
  125. data/test/test_From_Ruby.cpp +4 -3
  126. data/test/test_GVL.cpp +3 -3
  127. data/test/test_Hash.cpp +1 -1
  128. data/test/test_Inheritance.cpp +14 -14
  129. data/test/test_Iterator.cpp +54 -22
  130. data/test/test_Keep_Alive.cpp +1 -1
  131. data/test/test_Keep_Alive_No_Wrapper.cpp +7 -3
  132. data/test/test_Module.cpp +5 -5
  133. data/test/test_Overloads.cpp +345 -48
  134. data/test/test_Proc.cpp +54 -0
  135. data/test/test_Reference.cpp +181 -0
  136. data/test/test_Self.cpp +2 -2
  137. data/test/test_Stl_Set.cpp +6 -6
  138. data/test/test_Stl_SharedPtr.cpp +172 -33
  139. data/test/test_Stl_String_View.cpp +4 -2
  140. data/test/test_Stl_Tuple.cpp +1 -1
  141. data/test/test_Stl_UniquePtr.cpp +48 -3
  142. data/test/test_Stl_Variant.cpp +6 -14
  143. data/test/test_Stl_Vector.cpp +61 -30
  144. data/test/test_String.cpp +4 -2
  145. data/test/test_Struct.cpp +1 -1
  146. data/test/test_Symbol.cpp +1 -1
  147. data/test/test_To_Ruby.cpp +1 -0
  148. data/test/test_Type.cpp +36 -35
  149. data/test/test_global_functions.cpp +1 -1
  150. data/test/unittest.cpp +1 -1
  151. data/test/unittest.hpp +5 -5
  152. metadata +12 -10
  153. data/rice/Function.hpp +0 -17
  154. data/rice/Function.ipp +0 -13
  155. data/rice/detail/MethodInfo.hpp +0 -48
  156. data/rice/detail/MethodInfo.ipp +0 -99
  157. data/rice/detail/NativeCallbackFFI.hpp +0 -55
  158. data/rice/detail/NativeCallbackFFI.ipp +0 -152
  159. data/rice/detail/NativeCallbackSimple.hpp +0 -30
  160. data/rice/detail/NativeCallbackSimple.ipp +0 -29
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c8d106501ff928ca481358d579bffe110efebbd4a98f3de141b8a4e6a853b17a
4
- data.tar.gz: 900e679ee80f32d547487133911dfa1ccdd087a41414fb44a1c8b144fec15278
3
+ metadata.gz: 60ee7533ef1a2e8fae4a992ef2d1dc2f3dd1cd4ab260217058e9de77ead8f80b
4
+ data.tar.gz: 83393a7a4238d817da51eccc5392d318bb2dab00e57d9ce688867a748a50f7a5
5
5
  SHA512:
6
- metadata.gz: 33837b467af9b734848a7ef09b552ed2ab25f7f86c6fdedbc8f6c85dc42137d2ca46e9fd812198b99baa4af94f1f659d15530f9ecf36a2e147d3ddfb5f3c02ff
7
- data.tar.gz: 11bccd16adcb9a117a5ce80c91b219b1102a1fde56086542528a4684cedc84631261c6afb583dbebb0c25c3a2b1908c2196197f36c79cfc7db7322ab104d0388
6
+ metadata.gz: 26c796a5fcac6d816f9cddda0944be07a16cc93a0264221a351f4612061ed3b0e61dd4ab99eae0470ebc62e483f762820116024f6814f9f0023adccc466d66cf
7
+ data.tar.gz: aacb86cb9d086100650839ac2cf2cf49d60dcf4604f3539be24e0922c3f3ca3a8f06dfb0511e1e1b3281e9f475cf621218ac165b4c155e5d6e4e2083b3444823
data/CHANGELOG.md CHANGED
@@ -1,3 +1,39 @@
1
+ # Changelog
2
+
3
+ ## 4.9.0 (2026-01-01)
4
+ This release revamps smart pointer support for `std::shared_ptr` and `std::unique_ptr`.
5
+
6
+ Rice now always creates wrapper classes for smart pointers under the `Std` module (e.g., `Std::SharedPtr≺MyClass≻`, `Std::UniquePtr≺MyClass≻`). These wrapper classes expose methods like `empty?`, `get`, `swap`, and for shared_ptr, `use_count`. Methods defined on the managed type are automatically forwarded to the wrapper class using Ruby's `Forwardable` module.
7
+
8
+ This change is backwards compatible for Ruby code but not C++ code. If you have implemented your own Smart Pointer wrapper then please read the Smart Pointer documentation for more information on how to update it.
9
+
10
+ ## 4.8.0 (2025-12-29)
11
+ This release focuses on making Rice easier to use:
12
+
13
+ * Compilation times are approximately 2x faster than version 4.7
14
+ * Compiled library sizes are about 30% smaller
15
+ * Improved keyword argument support
16
+ * Improved method override support
17
+ * Improved CMake support
18
+ * Improved rbs generation support
19
+ * Improved api documentation generation support
20
+ * Expanded and improved documentation
21
+ * Enum values can now be compared against their underlying type (e.g., `Season::Red == 0`)
22
+ * STL containers now support `==` and `eql?` for equality comparison
23
+ * Automatic creation of `std::shared_ptr<T>` Ruby classes
24
+ * Support for C++ references in callbacks
25
+ * Array class now supports random iterators
26
+ * Fixed Ruby detection for Homebrew installations on macOS
27
+ * Added support for references to fundamental types
28
+
29
+ However, these changes did require some breaking changes, which include:
30
+
31
+ * `Return().isBuffer()` is replaced by `ReturnBuffer()`
32
+ * `Arg("").isBuffer()` is replaced by `ArgBuffer("")`
33
+ * `Function().noGVL()` is replaced by `NoGvL()`
34
+ * `is_convertible` methods must now return a `double` instead of a `Convertible` enum
35
+ * All function/method parameter default values are verified. You may see errors like "ArgumentError: Type is not registered with Rice" or "Invalid AnyCast". In either case, make sure to check that specified default values are correct.
36
+
1
37
  ## 4.7.1 (2025-10-28)
2
38
  Updates:
3
39
  * Update overload resolution to take into account function arguments that are tagged as buffers via Arg("").setBuffer().
@@ -217,7 +253,7 @@ There are a ton of changes, but some of the most important ones:
217
253
  Ruby RArray type to the system. This is not something that we should support going forward
218
254
  as these internals are going to change.
219
255
 
220
- # 2.0.0 (2015-11-27)
256
+ ## 2.0.0 (2015-11-27)
221
257
 
222
258
  * Deprecated all versions of Ruby < 2.0
223
259
  * Removed Rice::VM.
data/CMakeLists.txt CHANGED
@@ -1,27 +1,19 @@
1
- cmake_minimum_required (VERSION 3.26)
1
+ cmake_minimum_required(VERSION 3.26)
2
2
 
3
- project(Rice)
3
+ project(rice LANGUAGES CXX)
4
4
 
5
- set(CMAKE_CXX_STANDARD 17)
6
- set(CMAKE_CXX_STANDARD_REQUIRED ON)
5
+ # Put actual target definitions in a separate file so the root stays tiny.
6
+ include(${CMAKE_CURRENT_SOURCE_DIR}/Rice.cmake)
7
7
 
8
- # For older versions of CMake can use include("./FindRuby.cmake")
9
- find_package("Ruby")
10
-
11
- if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
12
- set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<IF:$<AND:$<C_COMPILER_ID:MSVC>,$<CXX_COMPILER_ID:MSVC>>,$<$<CONFIG:Debug,RelWithDebInfo>:EditAndContinue>,$<$<CONFIG:Debug,RelWithDebInfo>:ProgramDatabase>>")
13
- add_compile_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)
14
- add_compile_options(/bigobj /utf-8)
15
- # The default of /EHsc crashes Ruby when calling longjmp with optimizations on (/O2)
16
- string(REGEX REPLACE "/EHsc" "/EHs" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
17
- elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
18
- add_compile_definitions(-D_CRT_SECURE_NO_WARNINGS)
19
- elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
20
- add_compile_options(-ftemplate-backtrace-limit=0)
21
- # https://github.com/doxygen/doxygen/issues/9269#issuecomment-1094975328
22
- #add_compile_options(unittest PRIVATE -Wa,-mbig-obj)
23
- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Og")
8
+ # Default behavior:
9
+ # - If you're working on Rice directly (top-level), build tests by default (good for Visual Studio).
10
+ # - If Rice is consumed via FetchContent/add_subdirectory, do NOT build tests by default.
11
+ if (PROJECT_IS_TOP_LEVEL)
12
+ option(RICE_BUILD_TESTS "Build Rice tests" ON)
13
+ else ()
14
+ option(RICE_BUILD_TESTS "Build Rice tests" OFF)
24
15
  endif ()
25
16
 
26
- # Include sub-projects.
27
- add_subdirectory ("test")
17
+ if (RICE_BUILD_TESTS AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test/CMakeLists.txt")
18
+ add_subdirectory(test)
19
+ endif ()
data/CMakePresets.json CHANGED
@@ -1,75 +1,203 @@
1
- {
2
- "version": 3,
3
- "configurePresets": [
4
- {
5
- "name": "windows-base",
6
- "hidden": true,
7
- "generator": "Ninja",
8
- "binaryDir": "${sourceDir}/out/build/${presetName}",
9
- "installDir": "${sourceDir}/out/install/${presetName}",
10
- "cacheVariables": {
11
- "CMAKE_C_COMPILER": "cl.exe",
12
- "CMAKE_CXX_COMPILER": "cl.exe"
13
- },
14
- "condition": {
15
- "type": "equals",
16
- "lhs": "${hostSystemName}",
17
- "rhs": "Windows"
18
- }
19
- },
20
- {
21
- "name": "x64-debug",
22
- "displayName": "MSVC++ Debug",
23
- "inherits": "windows-base",
24
- "architecture": {
25
- "value": "x64",
26
- "strategy": "external"
27
- },
28
- "cacheVariables": {
29
- "CMAKE_BUILD_TYPE": "Debug"
30
- }
31
- },
32
- {
33
- "name": "x64-release",
34
- "displayName": "x64 Release",
35
- "inherits": "x64-debug",
36
- "cacheVariables": {
37
- "CMAKE_BUILD_TYPE": "Release"
38
- }
39
- },
40
- {
41
- "name": "linux-default",
42
- "displayName": "Linux Debug",
43
- "description": "Sets Ninja generator, compilers, build and install directory, debug build type",
44
- "generator": "Ninja",
45
- "binaryDir": "${sourceDir}/out/build/${presetName}",
46
- "cacheVariables": {
47
- "CMAKE_BUILD_TYPE": "Debug",
48
- "CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}"
49
- },
50
- "vendor": {
51
- "microsoft.com/VisualStudioSettings/CMake/1.0": {
52
- "hostOS": [ "Linux" ]
53
- },
54
- "microsoft.com/VisualStudioRemoteSettings/CMake/1.0": {
55
- "sourceDir": "$env{HOME}/.vs/$ms{projectDirName}"
56
- }
57
- }
58
- },
59
- {
60
- "name": "x64_debug_clang",
61
- "displayName": "Clang Debug",
62
- "description": "Target Windows (64-bit) with the Visual Studio development environment. (Debug)",
63
- "inherits": "windows-base",
64
- "architecture": {
65
- "value": "x64",
66
- "strategy": "external"
67
- },
68
- "cacheVariables": {
69
- "CMAKE_BUILD_TYPE": "Debug",
70
- "CMAKE_C_COMPILER": "clang.exe",
71
- "CMAKE_CXX_COMPILER": "clang.exe"
72
- }
73
- }
74
- ]
75
- }
1
+ {
2
+ "version": 6,
3
+ "configurePresets": [
4
+ {
5
+ "name": "base",
6
+ "hidden": true,
7
+ "generator": "Ninja",
8
+ "binaryDir": "${sourceDir}/build/${presetName}",
9
+ "installDir": "${sourceDir}/install/${presetName}"
10
+ },
11
+ {
12
+ "name": "linux-debug",
13
+ "inherits": "base",
14
+ "displayName": "Linux Debug",
15
+ "cacheVariables": {
16
+ "CMAKE_BUILD_TYPE": "Debug",
17
+ "CMAKE_CXX_FLAGS": "-Wall -ftemplate-backtrace-limit=0 -Og"
18
+ },
19
+ "condition": {
20
+ "type": "equals",
21
+ "lhs": "${hostSystemName}",
22
+ "rhs": "Linux"
23
+ }
24
+ },
25
+ {
26
+ "name": "linux-release",
27
+ "inherits": "base",
28
+ "displayName": "Linux Release",
29
+ "cacheVariables": {
30
+ "CMAKE_BUILD_TYPE": "Release",
31
+ "CMAKE_CXX_FLAGS": "-Wall -ftemplate-backtrace-limit=0 -O3 -DNDEBUG"
32
+ },
33
+ "condition": {
34
+ "type": "equals",
35
+ "lhs": "${hostSystemName}",
36
+ "rhs": "Linux"
37
+ }
38
+ },
39
+ {
40
+ "name": "macos-debug",
41
+ "inherits": "base",
42
+ "displayName": "macOS Debug",
43
+ "cacheVariables": {
44
+ "CMAKE_BUILD_TYPE": "Debug",
45
+ "CMAKE_CXX_FLAGS": "-Wall -Wno-unused-private-field -ftemplate-backtrace-limit=0 -Og"
46
+ },
47
+ "condition": {
48
+ "type": "equals",
49
+ "lhs": "${hostSystemName}",
50
+ "rhs": "Darwin"
51
+ }
52
+ },
53
+ {
54
+ "name": "macos-release",
55
+ "inherits": "base",
56
+ "displayName": "macOS Release",
57
+ "cacheVariables": {
58
+ "CMAKE_BUILD_TYPE": "Release",
59
+ "CMAKE_CXX_FLAGS": "-Wall -Wno-unused-private-field -ftemplate-backtrace-limit=0 -O3 -DNDEBUG"
60
+ },
61
+ "condition": {
62
+ "type": "equals",
63
+ "lhs": "${hostSystemName}",
64
+ "rhs": "Darwin"
65
+ }
66
+ },
67
+ {
68
+ "name": "windows",
69
+ "hidden": true,
70
+ "inherits": "base",
71
+ "condition": {
72
+ "type": "equals",
73
+ "lhs": "${hostSystemName}",
74
+ "rhs": "Windows"
75
+ },
76
+ "toolchainFile": "$env{VCPKG_ROOT}\\scripts\\buildsystems\\vcpkg.cmake"
77
+ },
78
+ {
79
+ "name": "msvc-debug",
80
+ "inherits": "windows",
81
+ "displayName": "MSVC x64 Debug",
82
+ "cacheVariables": {
83
+ "CMAKE_BUILD_TYPE": "Debug",
84
+ "CMAKE_CXX_COMPILER": "cl.exe",
85
+ "CMAKE_CXX_FLAGS": "/EHs /W4 /bigobj /utf-8 /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE",
86
+ "CMAKE_MSVC_DEBUG_INFORMATION_FORMAT": "EditAndContinue"
87
+ }
88
+ },
89
+ {
90
+ "name": "msvc-release",
91
+ "inherits": "windows",
92
+ "displayName": "MSVC x64 Release",
93
+ "cacheVariables": {
94
+ "CMAKE_BUILD_TYPE": "Release",
95
+ "CMAKE_CXX_COMPILER": "cl.exe",
96
+ "CMAKE_CXX_FLAGS": "/EHs /W4 /bigobj /utf-8 /O2 /DNDEBUG /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE",
97
+ "CMAKE_MSVC_DEBUG_INFORMATION_FORMAT": "ProgramDatabase"
98
+ }
99
+ },
100
+ {
101
+ "name": "clang-windows-debug",
102
+ "inherits": "windows",
103
+ "displayName": "Clang Windows Debug",
104
+ "cacheVariables": {
105
+ "CMAKE_BUILD_TYPE": "Debug",
106
+ "CMAKE_CXX_COMPILER": "clang-cl.exe",
107
+ "CMAKE_CXX_FLAGS": "/EHs /W4 /bigobj /utf-8 /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE /clang:-Wno-unused-private-field"
108
+ }
109
+ },
110
+ {
111
+ "name": "clang-windows-release",
112
+ "inherits": "windows",
113
+ "displayName": "Clang Windows Release",
114
+ "cacheVariables": {
115
+ "CMAKE_BUILD_TYPE": "Release",
116
+ "CMAKE_CXX_COMPILER": "clang-cl.exe",
117
+ "CMAKE_CXX_FLAGS": "/EHs /W4 /bigobj /utf-8 /O2 /DNDEBUG /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE /clang:-Wno-unused-private-field"
118
+ }
119
+ },
120
+ {
121
+ "name": "mingw-debug",
122
+ "inherits": "base",
123
+ "displayName": "Mingw x64 Debug",
124
+ "cacheVariables": {
125
+ "CMAKE_BUILD_TYPE": "Debug",
126
+ "CMAKE_CXX_COMPILER": "g++.exe",
127
+ "CMAKE_CXX_FLAGS": "-Wall -ftemplate-backtrace-limit=0 -Wa,-mbig-obj -Og"
128
+ },
129
+ "condition": {
130
+ "type": "equals",
131
+ "lhs": "${hostSystemName}",
132
+ "rhs": "Windows"
133
+ }
134
+ },
135
+ {
136
+ "name": "mingw-release",
137
+ "inherits": "base",
138
+ "displayName": "Mingw x64 Release",
139
+ "cacheVariables": {
140
+ "CMAKE_BUILD_TYPE": "Release",
141
+ "CMAKE_CXX_COMPILER": "g++.exe",
142
+ "CMAKE_CXX_FLAGS": "-Wall -ftemplate-backtrace-limit=0 -Wa,-mbig-obj -O3 -DNDEBUG"
143
+ },
144
+ "condition": {
145
+ "type": "equals",
146
+ "lhs": "${hostSystemName}",
147
+ "rhs": "Windows"
148
+ }
149
+ }
150
+ ],
151
+ "buildPresets": [
152
+ {
153
+ "name": "linux-debug",
154
+ "displayName": "Build Linux Debug",
155
+ "configurePreset": "linux-debug"
156
+ },
157
+ {
158
+ "name": "linux-release",
159
+ "displayName": "Build Linux Release",
160
+ "configurePreset": "linux-release"
161
+ },
162
+ {
163
+ "name": "macos-debug",
164
+ "displayName": "Build macOS Debug",
165
+ "configurePreset": "macos-debug"
166
+ },
167
+ {
168
+ "name": "macos-release",
169
+ "displayName": "Build macOS Release",
170
+ "configurePreset": "macos-release"
171
+ },
172
+ {
173
+ "name": "msvc-debug",
174
+ "displayName": "Build MSVC x64 Debug",
175
+ "configurePreset": "msvc-debug"
176
+ },
177
+ {
178
+ "name": "msvc-release",
179
+ "displayName": "Build MSVC x64 Release",
180
+ "configurePreset": "msvc-release"
181
+ },
182
+ {
183
+ "name": "clang-windows-debug",
184
+ "displayName": "Build Clang Windows Debug",
185
+ "configurePreset": "clang-windows-debug"
186
+ },
187
+ {
188
+ "name": "clang-windows-release",
189
+ "displayName": "Build Clang Windows Release",
190
+ "configurePreset": "clang-windows-release"
191
+ },
192
+ {
193
+ "name": "mingw-debug",
194
+ "displayName": "Build Mingw x64 Debug",
195
+ "configurePreset": "mingw-debug"
196
+ },
197
+ {
198
+ "name": "mingw-release",
199
+ "displayName": "Build Mingw x64 Release",
200
+ "configurePreset": "mingw-release"
201
+ }
202
+ ]
203
+ }