react-native-nitro-xlsx 0.1.4 → 0.2.6

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 (428) hide show
  1. package/NitroXlsx.podspec +27 -27
  2. package/Package.swift +35 -10
  3. package/README.md +220 -58
  4. package/android/CMakeLists.txt +24 -27
  5. package/android/cpp-adapter.cpp +12 -0
  6. package/android/src/main/java/com/margelo/nitro/xlsx/NitroXlsxPackage.kt +9 -0
  7. package/cpp/HybridNitroXlsx.cpp +25 -179
  8. package/cpp/HybridNitroXlsx.hpp +2 -2
  9. package/cpp/HybridXlsxConditionalFormat.cpp +252 -0
  10. package/cpp/HybridXlsxConditionalFormat.hpp +62 -0
  11. package/cpp/HybridXlsxConditionalFormats.cpp +46 -0
  12. package/cpp/HybridXlsxConditionalFormats.hpp +28 -0
  13. package/cpp/HybridXlsxWorkbook.cpp +159 -196
  14. package/cpp/HybridXlsxWorkbook.hpp +7 -2
  15. package/cpp/HybridXlsxWorksheet.cpp +433 -62
  16. package/cpp/HybridXlsxWorksheet.hpp +73 -26
  17. package/cpp/XlsxCacheDir.cpp +76 -0
  18. package/cpp/XlsxCacheDir.hpp +27 -0
  19. package/cpp/XlsxError.hpp +68 -0
  20. package/cpp/XlsxJson.cpp +185 -0
  21. package/cpp/XlsxJson.hpp +36 -0
  22. package/ios/XlsxCacheDir.mm +60 -0
  23. package/nitrogen/generated/android/NitroXlsx+autolinking.cmake +2 -0
  24. package/nitrogen/generated/shared/c++/HybridNitroXlsxSpec.hpp +5 -3
  25. package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatSpec.cpp +54 -0
  26. package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatSpec.hpp +95 -0
  27. package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatsSpec.cpp +24 -0
  28. package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatsSpec.hpp +68 -0
  29. package/nitrogen/generated/shared/c++/HybridXlsxWorkbookSpec.cpp +3 -0
  30. package/nitrogen/generated/shared/c++/HybridXlsxWorkbookSpec.hpp +6 -1
  31. package/nitrogen/generated/shared/c++/HybridXlsxWorksheetSpec.cpp +47 -19
  32. package/nitrogen/generated/shared/c++/HybridXlsxWorksheetSpec.hpp +52 -20
  33. package/package.json +3 -3
  34. package/scripts/run-cpp-tests.sh +14 -0
  35. package/src/__mocks__/react-native-nitro-modules.ts +1 -0
  36. package/src/__tests__/index.test.ts +76 -7
  37. package/src/index.ts +107 -18
  38. package/src/specs/NitroXlsx.nitro.ts +141 -44
  39. package/thirdparty/OpenXLSX/.clang-format +118 -0
  40. package/thirdparty/OpenXLSX/.clang-tidy +28 -0
  41. package/thirdparty/OpenXLSX/.gitignore +130 -0
  42. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_before_XMLNode_wrappers +46 -0
  43. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_and_stripping +49 -0
  44. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_char_support +49 -0
  45. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_support +49 -0
  46. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespaced_name_disabled +49 -0
  47. package/thirdparty/OpenXLSX/Benchmarks/2024-08-11-benchmarks_post-XLCellIterator-Rework +46 -0
  48. package/thirdparty/OpenXLSX/Benchmarks/2024-08-14-benchmarks_post-default-row-column-style-support +46 -0
  49. package/thirdparty/OpenXLSX/Benchmarks/2024-09-02-benchmarks +46 -0
  50. package/thirdparty/OpenXLSX/Benchmarks/2024-12-19-benchmarks +46 -0
  51. package/thirdparty/OpenXLSX/Benchmarks/2024-12-30-benchmarks-post-XLSharedStrings-by-ref +46 -0
  52. package/thirdparty/OpenXLSX/Benchmarks/2025-01-09-benchmarks-post-conditionalFormatsAndSheetProtection +46 -0
  53. package/thirdparty/OpenXLSX/Benchmarks/2025-01-10-benchmarks-post-XLCellValue-bugfix +46 -0
  54. package/thirdparty/OpenXLSX/Benchmarks/2025-01-31-benchmarks-post-XLComments-implementation +46 -0
  55. package/thirdparty/OpenXLSX/Benchmarks/2025-02-02-benchmarks-post-XLRowIterator-Rework +46 -0
  56. package/thirdparty/OpenXLSX/Benchmarks/2025-07-20-benchmarks-after-hiding-pugixml-internals +46 -0
  57. package/thirdparty/OpenXLSX/Benchmarks/2025-08-29-benchmarks-after-code-review-with-libzip +46 -0
  58. package/thirdparty/OpenXLSX/Benchmarks/Benchmark.cpp +249 -0
  59. package/thirdparty/OpenXLSX/Benchmarks/CMakeLists.txt +19 -0
  60. package/thirdparty/OpenXLSX/CMakeLists.txt +466 -0
  61. package/thirdparty/OpenXLSX/Documentation/CMakeLists.txt +31 -0
  62. package/thirdparty/OpenXLSX/Documentation/Doxyfile.in +2471 -0
  63. package/thirdparty/OpenXLSX/Documentation/DoxygenLayout.xml +194 -0
  64. package/thirdparty/OpenXLSX/Documentation/customdoxygen.css +1355 -0
  65. package/thirdparty/OpenXLSX/Examples/CMakeLists.txt +103 -0
  66. package/thirdparty/OpenXLSX/Examples/Demo1.cpp +279 -0
  67. package/thirdparty/OpenXLSX/Examples/Demo10.cpp +545 -0
  68. package/thirdparty/OpenXLSX/Examples/Demo1A.cpp +137 -0
  69. package/thirdparty/OpenXLSX/Examples/Demo2.cpp +65 -0
  70. package/thirdparty/OpenXLSX/Examples/Demo3.cpp +89 -0
  71. package/thirdparty/OpenXLSX/Examples/Demo4.cpp +86 -0
  72. package/thirdparty/OpenXLSX/Examples/Demo5.cpp +77 -0
  73. package/thirdparty/OpenXLSX/Examples/Demo6.cpp +103 -0
  74. package/thirdparty/OpenXLSX/Examples/Demo7.cpp +79 -0
  75. package/thirdparty/OpenXLSX/Examples/Demo8.cpp +117 -0
  76. package/thirdparty/OpenXLSX/Examples/Demo9.cpp +363 -0
  77. package/thirdparty/OpenXLSX/Examples/cmake/FindLIBZIP.cmake +61 -0
  78. package/thirdparty/OpenXLSX/Examples/external/CustomZip/CustomZip.hpp +256 -0
  79. package/thirdparty/OpenXLSX/LICENSE.md +29 -0
  80. package/thirdparty/OpenXLSX/Makefile.GNU +530 -0
  81. package/thirdparty/OpenXLSX/Notes/TBDs.txt +16 -0
  82. package/thirdparty/OpenXLSX/Notes/confirmed-TBCs.txt +8 -0
  83. package/thirdparty/OpenXLSX/Notes/styles-missing-support.xml +12 -0
  84. package/thirdparty/OpenXLSX/Notes/todo-list.txt +108 -0
  85. package/thirdparty/OpenXLSX/OpenXLSX/CMakeLists.txt +631 -0
  86. package/thirdparty/OpenXLSX/OpenXLSX/OpenXLSX.hpp +63 -0
  87. package/thirdparty/OpenXLSX/OpenXLSX/OpenXLSXConfig.cmake +11 -0
  88. package/thirdparty/OpenXLSX/OpenXLSX/cmake/bundle_static_library.cmake +198 -0
  89. package/thirdparty/OpenXLSX/OpenXLSX/cmake/patch_pkg_config.cmake +69 -0
  90. package/thirdparty/OpenXLSX/OpenXLSX/headers/IZipArchive.hpp +361 -0
  91. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX-Exports.hpp +12 -0
  92. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCell.hpp +367 -0
  93. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellIterator.hpp +252 -0
  94. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellRange.hpp +223 -0
  95. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellReference.hpp +317 -0
  96. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellValue.hpp +793 -0
  97. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLColor.hpp +232 -0
  98. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLColumn.hpp +159 -0
  99. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCommandQuery.hpp +228 -0
  100. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLComments.hpp +270 -0
  101. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLConstants.hpp +18 -0
  102. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLContentTypes.hpp +264 -0
  103. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDateTime.hpp +175 -0
  104. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDocument.hpp +505 -0
  105. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDrawing.hpp +452 -0
  106. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLException.hpp +161 -0
  107. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLFormula.hpp +375 -0
  108. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLIterator.hpp +40 -0
  109. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLMergeCells.hpp +216 -0
  110. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLProperties.hpp +348 -0
  111. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRelationships.hpp +348 -0
  112. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRow.hpp +721 -0
  113. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRowData.hpp +488 -0
  114. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLSharedStrings.hpp +204 -0
  115. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLSheet.hpp +1640 -0
  116. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLStyles.hpp +2390 -0
  117. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLTables.hpp +132 -0
  118. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLWorkbook.hpp +404 -0
  119. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlData.hpp +283 -0
  120. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlFile.hpp +194 -0
  121. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlParser.hpp +282 -0
  122. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlParserForwardDeclarations.hpp +85 -0
  123. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLZipArchive.hpp +232 -0
  124. package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/LibZip.hpp +447 -0
  125. package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/OpenXLSXFileSystemTools.hpp +207 -0
  126. package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/Zippy.hpp +1375 -0
  127. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCell.cpp +340 -0
  128. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellIterator.cpp +427 -0
  129. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellRange.cpp +221 -0
  130. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellReference.cpp +408 -0
  131. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellValue.cpp +519 -0
  132. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLColor.cpp +202 -0
  133. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLColumn.cpp +141 -0
  134. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLComments.cpp +637 -0
  135. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLContentTypes.cpp +329 -0
  136. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDateTime.cpp +269 -0
  137. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDocument.cpp +1678 -0
  138. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDrawing.cpp +784 -0
  139. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLFormula.cpp +201 -0
  140. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLMergeCells.cpp +357 -0
  141. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLProperties.cpp +810 -0
  142. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRelationships.cpp +529 -0
  143. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRow.cpp +918 -0
  144. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRowData.cpp +508 -0
  145. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLSharedStrings.cpp +220 -0
  146. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLSheet.cpp +1970 -0
  147. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLStyles.cpp +3014 -0
  148. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLTables.cpp +125 -0
  149. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLWorkbook.cpp +784 -0
  150. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlData.cpp +247 -0
  151. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlFile.cpp +160 -0
  152. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlParser.cpp +261 -0
  153. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLZipArchive.cpp +266 -0
  154. package/thirdparty/OpenXLSX/OpenXLSX/sources/utilities/XLUtilities.hpp +478 -0
  155. package/thirdparty/OpenXLSX/README.md +1279 -0
  156. package/thirdparty/OpenXLSX/Scripts/cmake-cleanup.sh +102 -0
  157. package/thirdparty/OpenXLSX/Scripts/compile.sh +23 -0
  158. package/thirdparty/OpenXLSX/Scripts/demos-cleanup.sh +25 -0
  159. package/thirdparty/OpenXLSX/Scripts/demos-run-all.sh +60 -0
  160. package/thirdparty/OpenXLSX/Scripts/guarded-xml-format.sh +47 -0
  161. package/thirdparty/OpenXLSX/Scripts/make-gnu.sh +11 -0
  162. package/thirdparty/OpenXLSX/Scripts/uninstall-manifest.sh +48 -0
  163. package/thirdparty/OpenXLSX/Scripts/xml-format-all.sh +19 -0
  164. package/thirdparty/OpenXLSX/Scripts/xml-format.sh +38 -0
  165. package/thirdparty/OpenXLSX/Tests/CMakeLists.txt +37 -0
  166. package/thirdparty/OpenXLSX/Tests/catch/catch.hpp +17799 -0
  167. package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_automake.hpp +68 -0
  168. package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_sonarqube.hpp +182 -0
  169. package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_tap.hpp +278 -0
  170. package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_teamcity.hpp +212 -0
  171. package/thirdparty/OpenXLSX/Tests/main.cpp +55 -0
  172. package/thirdparty/OpenXLSX/Tests/testXLCell.cpp +176 -0
  173. package/thirdparty/OpenXLSX/Tests/testXLCellRange.cpp +180 -0
  174. package/thirdparty/OpenXLSX/Tests/testXLCellReference.cpp +160 -0
  175. package/thirdparty/OpenXLSX/Tests/testXLCellValue.cpp +366 -0
  176. package/thirdparty/OpenXLSX/Tests/testXLCellValueProxy.cpp +255 -0
  177. package/thirdparty/OpenXLSX/Tests/testXLColor.cpp +75 -0
  178. package/thirdparty/OpenXLSX/Tests/testXLDateTime.cpp +229 -0
  179. package/thirdparty/OpenXLSX/Tests/testXLDocument.cpp +197 -0
  180. package/thirdparty/OpenXLSX/Tests/testXLFormula.cpp +131 -0
  181. package/thirdparty/OpenXLSX/Tests/testXLRow.cpp +597 -0
  182. package/thirdparty/OpenXLSX/Tests/testXLSheet.cpp +77 -0
  183. package/thirdparty/OpenXLSX/Tests/ziptest-with-libs.cpp +88 -0
  184. package/thirdparty/OpenXLSX/Tests/ziptest.cpp +735 -0
  185. package/thirdparty/OpenXLSX/cmake/get-git-HEAD-ID.cmake +45 -0
  186. package/thirdparty/OpenXLSX/cmake/libopenxlsxCPackOptions.cmake.in +20 -0
  187. package/thirdparty/OpenXLSX/cmake/manage_dependency.cmake +813 -0
  188. package/thirdparty/OpenXLSX/cmake/recursive_library_type_test.cmake +52 -0
  189. package/thirdparty/OpenXLSX/gnu-make-crutch/OpenXLSX-Exports-shared.hpp +42 -0
  190. package/thirdparty/OpenXLSX/gnu-make-crutch/OpenXLSX-Exports-static.hpp +42 -0
  191. package/thirdparty/OpenXLSX/vcpkg.json +24 -0
  192. package/thirdparty/README.md +42 -0
  193. package/thirdparty/miniz/.clang-format +47 -0
  194. package/thirdparty/miniz/.travis.yml +2 -0
  195. package/thirdparty/miniz/CMakeLists.txt +333 -0
  196. package/thirdparty/miniz/CMakePresets.json +31 -0
  197. package/thirdparty/miniz/ChangeLog.md +272 -0
  198. package/thirdparty/miniz/Config.cmake.in +1 -0
  199. package/thirdparty/miniz/LICENSE +22 -0
  200. package/thirdparty/miniz/amalgamate.sh +57 -0
  201. package/thirdparty/miniz/examples/example1.c +105 -0
  202. package/thirdparty/miniz/examples/example2.c +164 -0
  203. package/thirdparty/miniz/examples/example3.c +269 -0
  204. package/thirdparty/miniz/examples/example4.c +102 -0
  205. package/thirdparty/miniz/examples/example5.c +327 -0
  206. package/thirdparty/miniz/examples/example6.c +189 -0
  207. package/thirdparty/miniz/meson.build +21 -0
  208. package/thirdparty/miniz/miniz.c +646 -0
  209. package/thirdparty/miniz/miniz.h +615 -0
  210. package/thirdparty/miniz/miniz.pc.in +13 -0
  211. package/thirdparty/miniz/miniz_common.h +89 -0
  212. package/thirdparty/miniz/miniz_export.h +20 -0
  213. package/thirdparty/miniz/miniz_tdef.c +1602 -0
  214. package/thirdparty/miniz/miniz_tdef.h +199 -0
  215. package/thirdparty/miniz/miniz_tinfl.c +778 -0
  216. package/thirdparty/miniz/miniz_tinfl.h +150 -0
  217. package/thirdparty/miniz/miniz_zip.c +4895 -0
  218. package/thirdparty/miniz/miniz_zip.h +454 -0
  219. package/thirdparty/miniz/readme.md +46 -0
  220. package/thirdparty/miniz/test.sh +36 -0
  221. package/thirdparty/miniz/tests/add_in_place_fuzzer.c +87 -0
  222. package/thirdparty/miniz/tests/catch_amalgamated.cpp +10795 -0
  223. package/thirdparty/miniz/tests/catch_amalgamated.hpp +13143 -0
  224. package/thirdparty/miniz/tests/checksum_fuzzer.c +26 -0
  225. package/thirdparty/miniz/tests/compress_fuzzer.c +91 -0
  226. package/thirdparty/miniz/tests/flush_fuzzer.c +88 -0
  227. package/thirdparty/miniz/tests/fuzz_main.c +55 -0
  228. package/thirdparty/miniz/tests/large_fuzzer.c +133 -0
  229. package/thirdparty/miniz/tests/main.cpp +185 -0
  230. package/thirdparty/miniz/tests/miniz_tdefl_fuzzer.cc +115 -0
  231. package/thirdparty/miniz/tests/miniz_tester.cpp +1881 -0
  232. package/thirdparty/miniz/tests/miniz_zip_validate_fuzzer.cc +71 -0
  233. package/thirdparty/miniz/tests/miniz_zip_writer_fuzzer.cc +96 -0
  234. package/thirdparty/miniz/tests/ossfuzz.sh +48 -0
  235. package/thirdparty/miniz/tests/small_fuzzer.c +126 -0
  236. package/thirdparty/miniz/tests/timer.cpp +152 -0
  237. package/thirdparty/miniz/tests/timer.h +40 -0
  238. package/thirdparty/miniz/tests/uncompress2_fuzzer.c +21 -0
  239. package/thirdparty/miniz/tests/uncompress_fuzzer.c +30 -0
  240. package/thirdparty/miniz/tests/zip.dict +9 -0
  241. package/thirdparty/miniz/tests/zip_fuzzer.c +63 -0
  242. package/thirdparty/pugixml/.codecov.yml +7 -0
  243. package/thirdparty/pugixml/.gitattributes +1 -0
  244. package/thirdparty/pugixml/CMakeLists.txt +330 -0
  245. package/thirdparty/pugixml/LICENSE.md +24 -0
  246. package/thirdparty/pugixml/Makefile +98 -0
  247. package/thirdparty/pugixml/README.md +81 -0
  248. package/thirdparty/pugixml/SECURITY.md +9 -0
  249. package/thirdparty/pugixml/appveyor.yml +50 -0
  250. package/thirdparty/pugixml/docs/config.adoc +7 -0
  251. package/thirdparty/pugixml/docs/images/dom_tree.png +0 -0
  252. package/thirdparty/pugixml/docs/images/vs2005_link1.png +0 -0
  253. package/thirdparty/pugixml/docs/images/vs2005_link2.png +0 -0
  254. package/thirdparty/pugixml/docs/images/vs2005_pch1.png +0 -0
  255. package/thirdparty/pugixml/docs/images/vs2005_pch2.png +0 -0
  256. package/thirdparty/pugixml/docs/images/vs2005_pch3.png +0 -0
  257. package/thirdparty/pugixml/docs/images/vs2005_pch4.png +0 -0
  258. package/thirdparty/pugixml/docs/images/vs2010_link1.png +0 -0
  259. package/thirdparty/pugixml/docs/images/vs2010_link2.png +0 -0
  260. package/thirdparty/pugixml/docs/manual.adoc +3326 -0
  261. package/thirdparty/pugixml/docs/manual.html +6395 -0
  262. package/thirdparty/pugixml/docs/quickstart.adoc +287 -0
  263. package/thirdparty/pugixml/docs/quickstart.html +1107 -0
  264. package/thirdparty/pugixml/docs/samples/character.xml +8 -0
  265. package/thirdparty/pugixml/docs/samples/custom_memory_management.cpp +27 -0
  266. package/thirdparty/pugixml/docs/samples/include.cpp +64 -0
  267. package/thirdparty/pugixml/docs/samples/load_error_handling.cpp +33 -0
  268. package/thirdparty/pugixml/docs/samples/load_file.cpp +16 -0
  269. package/thirdparty/pugixml/docs/samples/load_memory.cpp +66 -0
  270. package/thirdparty/pugixml/docs/samples/load_options.cpp +30 -0
  271. package/thirdparty/pugixml/docs/samples/load_stream.cpp +97 -0
  272. package/thirdparty/pugixml/docs/samples/modify_add.cpp +29 -0
  273. package/thirdparty/pugixml/docs/samples/modify_base.cpp +43 -0
  274. package/thirdparty/pugixml/docs/samples/modify_remove.cpp +27 -0
  275. package/thirdparty/pugixml/docs/samples/save_custom_writer.cpp +116 -0
  276. package/thirdparty/pugixml/docs/samples/save_declaration.cpp +27 -0
  277. package/thirdparty/pugixml/docs/samples/save_file.cpp +17 -0
  278. package/thirdparty/pugixml/docs/samples/save_options.cpp +48 -0
  279. package/thirdparty/pugixml/docs/samples/save_stream.cpp +18 -0
  280. package/thirdparty/pugixml/docs/samples/save_subtree.cpp +26 -0
  281. package/thirdparty/pugixml/docs/samples/text.cpp +35 -0
  282. package/thirdparty/pugixml/docs/samples/transitions.xml +7 -0
  283. package/thirdparty/pugixml/docs/samples/traverse_base.cpp +51 -0
  284. package/thirdparty/pugixml/docs/samples/traverse_iter.cpp +27 -0
  285. package/thirdparty/pugixml/docs/samples/traverse_predicate.cpp +48 -0
  286. package/thirdparty/pugixml/docs/samples/traverse_rangefor.cpp +32 -0
  287. package/thirdparty/pugixml/docs/samples/traverse_walker.cpp +35 -0
  288. package/thirdparty/pugixml/docs/samples/tree.xml +12 -0
  289. package/thirdparty/pugixml/docs/samples/weekly-shift_jis.xml +78 -0
  290. package/thirdparty/pugixml/docs/samples/weekly-utf-16.xml +0 -0
  291. package/thirdparty/pugixml/docs/samples/weekly-utf-8.xml +78 -0
  292. package/thirdparty/pugixml/docs/samples/xgconsole.xml +12 -0
  293. package/thirdparty/pugixml/docs/samples/xpath_error.cpp +43 -0
  294. package/thirdparty/pugixml/docs/samples/xpath_query.cpp +36 -0
  295. package/thirdparty/pugixml/docs/samples/xpath_select.cpp +28 -0
  296. package/thirdparty/pugixml/docs/samples/xpath_variables.cpp +38 -0
  297. package/thirdparty/pugixml/readme.txt +50 -0
  298. package/thirdparty/pugixml/scripts/archive.py +54 -0
  299. package/thirdparty/pugixml/scripts/cocoapods_push.sh +4 -0
  300. package/thirdparty/pugixml/scripts/natvis/pugixml.natvis +77 -0
  301. package/thirdparty/pugixml/scripts/natvis/pugixml_compact.natvis +506 -0
  302. package/thirdparty/pugixml/scripts/nuget/build/native/pugixml-propertiesui.xml +17 -0
  303. package/thirdparty/pugixml/scripts/nuget/build/native/pugixml.targets +28 -0
  304. package/thirdparty/pugixml/scripts/nuget/pugixml.nuspec +20 -0
  305. package/thirdparty/pugixml/scripts/nuget_build.ps1 +60 -0
  306. package/thirdparty/pugixml/scripts/premake4.lua +92 -0
  307. package/thirdparty/pugixml/scripts/pugixml-config.cmake.in +12 -0
  308. package/thirdparty/pugixml/scripts/pugixml.pc.in +11 -0
  309. package/thirdparty/pugixml/scripts/pugixml.podspec +14 -0
  310. package/thirdparty/pugixml/scripts/pugixml.xcodeproj/project.pbxproj +212 -0
  311. package/thirdparty/pugixml/scripts/pugixml_airplay.mkf +13 -0
  312. package/thirdparty/pugixml/scripts/pugixml_codeblocks.cbp +44 -0
  313. package/thirdparty/pugixml/scripts/pugixml_codelite.project +56 -0
  314. package/thirdparty/pugixml/scripts/pugixml_dll.rc +45 -0
  315. package/thirdparty/pugixml/scripts/pugixml_vs2005.vcproj +343 -0
  316. package/thirdparty/pugixml/scripts/pugixml_vs2005_static.vcproj +343 -0
  317. package/thirdparty/pugixml/scripts/pugixml_vs2008.vcproj +339 -0
  318. package/thirdparty/pugixml/scripts/pugixml_vs2008_static.vcproj +339 -0
  319. package/thirdparty/pugixml/scripts/pugixml_vs2010.vcxproj +191 -0
  320. package/thirdparty/pugixml/scripts/pugixml_vs2010_static.vcxproj +191 -0
  321. package/thirdparty/pugixml/scripts/pugixml_vs2013.vcxproj +199 -0
  322. package/thirdparty/pugixml/scripts/pugixml_vs2013_static.vcxproj +199 -0
  323. package/thirdparty/pugixml/scripts/pugixml_vs2015.vcxproj +172 -0
  324. package/thirdparty/pugixml/scripts/pugixml_vs2015_static.vcxproj +176 -0
  325. package/thirdparty/pugixml/scripts/pugixml_vs2017.vcxproj +172 -0
  326. package/thirdparty/pugixml/scripts/pugixml_vs2017_static.vcxproj +176 -0
  327. package/thirdparty/pugixml/scripts/pugixml_vs2019.vcxproj +176 -0
  328. package/thirdparty/pugixml/scripts/pugixml_vs2019_static.vcxproj +180 -0
  329. package/thirdparty/pugixml/scripts/pugixml_vs2022.vcxproj +176 -0
  330. package/thirdparty/pugixml/scripts/pugixml_vs2022_static.vcxproj +180 -0
  331. package/thirdparty/pugixml/scripts/pugixml_vs2026.vcxproj +176 -0
  332. package/thirdparty/pugixml/scripts/pugixml_vs2026_static.vcxproj +180 -0
  333. package/thirdparty/pugixml/scripts/sbom.cdx.json +47 -0
  334. package/thirdparty/pugixml/src/pugiconfig.hpp +81 -0
  335. package/thirdparty/pugixml/src/pugixml.cpp +13776 -0
  336. package/thirdparty/pugixml/src/pugixml.hpp +1604 -0
  337. package/thirdparty/pugixml/tests/allocator.cpp +175 -0
  338. package/thirdparty/pugixml/tests/allocator.hpp +10 -0
  339. package/thirdparty/pugixml/tests/autotest-appveyor.ps1 +93 -0
  340. package/thirdparty/pugixml/tests/cmake-appveyor.ps1 +57 -0
  341. package/thirdparty/pugixml/tests/data/empty.xml +0 -0
  342. package/thirdparty/pugixml/tests/data/large.xml +1 -0
  343. package/thirdparty/pugixml/tests/data/latintest_latin1.xml +1 -0
  344. package/thirdparty/pugixml/tests/data/latintest_utf8.xml +1 -0
  345. package/thirdparty/pugixml/tests/data/multiline.xml +3 -0
  346. package/thirdparty/pugixml/tests/data/small.xml +1 -0
  347. package/thirdparty/pugixml/tests/data/truncation.xml +19 -0
  348. package/thirdparty/pugixml/tests/data/utftest_utf16_be.xml +0 -0
  349. package/thirdparty/pugixml/tests/data/utftest_utf16_be_bom.xml +0 -0
  350. package/thirdparty/pugixml/tests/data/utftest_utf16_be_clean.xml +0 -0
  351. package/thirdparty/pugixml/tests/data/utftest_utf16_be_nodecl.xml +0 -0
  352. package/thirdparty/pugixml/tests/data/utftest_utf16_le.xml +0 -0
  353. package/thirdparty/pugixml/tests/data/utftest_utf16_le_bom.xml +0 -0
  354. package/thirdparty/pugixml/tests/data/utftest_utf16_le_clean.xml +0 -0
  355. package/thirdparty/pugixml/tests/data/utftest_utf16_le_nodecl.xml +0 -0
  356. package/thirdparty/pugixml/tests/data/utftest_utf32_be.xml +0 -0
  357. package/thirdparty/pugixml/tests/data/utftest_utf32_be_bom.xml +0 -0
  358. package/thirdparty/pugixml/tests/data/utftest_utf32_be_clean.xml +0 -0
  359. package/thirdparty/pugixml/tests/data/utftest_utf32_be_nodecl.xml +0 -0
  360. package/thirdparty/pugixml/tests/data/utftest_utf32_le.xml +0 -0
  361. package/thirdparty/pugixml/tests/data/utftest_utf32_le_bom.xml +0 -0
  362. package/thirdparty/pugixml/tests/data/utftest_utf32_le_clean.xml +0 -0
  363. package/thirdparty/pugixml/tests/data/utftest_utf32_le_nodecl.xml +0 -0
  364. package/thirdparty/pugixml/tests/data/utftest_utf8.xml +87 -0
  365. package/thirdparty/pugixml/tests/data/utftest_utf8_bom.xml +87 -0
  366. package/thirdparty/pugixml/tests/data/utftest_utf8_clean.xml +84 -0
  367. package/thirdparty/pugixml/tests/data/utftest_utf8_nodecl.xml +86 -0
  368. package/thirdparty/pugixml/tests/data//321/202/320/265/321/201/321/202.xml +1 -0
  369. package/thirdparty/pugixml/tests/data_fuzz_parse/basic.xml +1 -0
  370. package/thirdparty/pugixml/tests/data_fuzz_parse/doctype.xml +1 -0
  371. package/thirdparty/pugixml/tests/data_fuzz_parse/refs.xml +1 -0
  372. package/thirdparty/pugixml/tests/data_fuzz_parse/types.xml +1 -0
  373. package/thirdparty/pugixml/tests/data_fuzz_parse/utf16.xml +0 -0
  374. package/thirdparty/pugixml/tests/data_fuzz_parse/utf32.xml +0 -0
  375. package/thirdparty/pugixml/tests/data_fuzz_xpath/basic.xpath +1 -0
  376. package/thirdparty/pugixml/tests/data_fuzz_xpath/functions.xpath +1 -0
  377. package/thirdparty/pugixml/tests/data_fuzz_xpath/math.xpath +1 -0
  378. package/thirdparty/pugixml/tests/data_fuzz_xpath/path.xpath +1 -0
  379. package/thirdparty/pugixml/tests/data_fuzz_xpath/predicate.xpath +1 -0
  380. package/thirdparty/pugixml/tests/fuzz_parse.cpp +14 -0
  381. package/thirdparty/pugixml/tests/fuzz_parse.dict +72 -0
  382. package/thirdparty/pugixml/tests/fuzz_setup.sh +11 -0
  383. package/thirdparty/pugixml/tests/fuzz_xpath.cpp +46 -0
  384. package/thirdparty/pugixml/tests/fuzz_xpath.dict +72 -0
  385. package/thirdparty/pugixml/tests/helpers.hpp +114 -0
  386. package/thirdparty/pugixml/tests/main.cpp +218 -0
  387. package/thirdparty/pugixml/tests/test.cpp +220 -0
  388. package/thirdparty/pugixml/tests/test.hpp +175 -0
  389. package/thirdparty/pugixml/tests/test_compact.cpp +150 -0
  390. package/thirdparty/pugixml/tests/test_deprecated.cpp +25 -0
  391. package/thirdparty/pugixml/tests/test_document.cpp +1910 -0
  392. package/thirdparty/pugixml/tests/test_dom_modify.cpp +2122 -0
  393. package/thirdparty/pugixml/tests/test_dom_text.cpp +601 -0
  394. package/thirdparty/pugixml/tests/test_dom_traverse.cpp +1481 -0
  395. package/thirdparty/pugixml/tests/test_header_guard.cpp +3 -0
  396. package/thirdparty/pugixml/tests/test_header_iosfwd_1.cpp +3 -0
  397. package/thirdparty/pugixml/tests/test_header_iosfwd_2.cpp +3 -0
  398. package/thirdparty/pugixml/tests/test_header_iostream_1.cpp +3 -0
  399. package/thirdparty/pugixml/tests/test_header_iostream_2.cpp +3 -0
  400. package/thirdparty/pugixml/tests/test_header_only_1.cpp +21 -0
  401. package/thirdparty/pugixml/tests/test_header_only_2.cpp +21 -0
  402. package/thirdparty/pugixml/tests/test_header_string_1.cpp +3 -0
  403. package/thirdparty/pugixml/tests/test_header_string_2.cpp +3 -0
  404. package/thirdparty/pugixml/tests/test_header_string_iostream.cpp +5 -0
  405. package/thirdparty/pugixml/tests/test_memory.cpp +303 -0
  406. package/thirdparty/pugixml/tests/test_parse.cpp +1463 -0
  407. package/thirdparty/pugixml/tests/test_parse_doctype.cpp +366 -0
  408. package/thirdparty/pugixml/tests/test_unicode.cpp +152 -0
  409. package/thirdparty/pugixml/tests/test_version.cpp +5 -0
  410. package/thirdparty/pugixml/tests/test_write.cpp +757 -0
  411. package/thirdparty/pugixml/tests/test_xpath.cpp +833 -0
  412. package/thirdparty/pugixml/tests/test_xpath_api.cpp +646 -0
  413. package/thirdparty/pugixml/tests/test_xpath_functions.cpp +844 -0
  414. package/thirdparty/pugixml/tests/test_xpath_operators.cpp +566 -0
  415. package/thirdparty/pugixml/tests/test_xpath_parse.cpp +428 -0
  416. package/thirdparty/pugixml/tests/test_xpath_paths.cpp +787 -0
  417. package/thirdparty/pugixml/tests/test_xpath_paths_abbrev_w3c.cpp +219 -0
  418. package/thirdparty/pugixml/tests/test_xpath_paths_w3c.cpp +312 -0
  419. package/thirdparty/pugixml/tests/test_xpath_variables.cpp +683 -0
  420. package/thirdparty/pugixml/tests/test_xpath_xalan_1.cpp +411 -0
  421. package/thirdparty/pugixml/tests/test_xpath_xalan_2.cpp +417 -0
  422. package/thirdparty/pugixml/tests/test_xpath_xalan_3.cpp +321 -0
  423. package/thirdparty/pugixml/tests/test_xpath_xalan_4.cpp +300 -0
  424. package/thirdparty/pugixml/tests/test_xpath_xalan_5.cpp +295 -0
  425. package/thirdparty/pugixml/tests/writer_string.cpp +79 -0
  426. package/thirdparty/pugixml/tests/writer_string.hpp +27 -0
  427. package/ios/dummy.swift +0 -2
  428. package/scripts/prepare-openxlsx.js +0 -109
@@ -0,0 +1,466 @@
1
+ #=======================================================================================================================
2
+ # Preamble
3
+ #=======================================================================================================================
4
+ cmake_minimum_required(VERSION 3.15 FATAL_ERROR)
5
+ set(OPENXLSX_MAJOR_VERSION 0)
6
+ set(OPENXLSX_MINOR_VERSION 5)
7
+ set(OPENXLSX_MICRO_VERSION 1)
8
+ project(OpenXLSX VERSION 0.5.1 LANGUAGES CXX)
9
+
10
+ set(CMAKE_CXX_VISIBILITY_PRESET hidden)
11
+ set(CMAKE_VISIBILITY_INLINES_HIDDEN YES)
12
+
13
+ #=======================================================================================================================
14
+ # Set C/C++ compiler version
15
+ #=======================================================================================================================
16
+ set(CMAKE_CXX_STANDARD 17)
17
+ set(CMAKE_CXX_STANDARD_REQUIRED ON)
18
+ set(CMAKE_CXX_EXTENSIONS OFF)
19
+ set(IGNORE_ME ${CMAKE_C_COMPILER}) # Suppress CMake warning message
20
+
21
+ # ============================================================================
22
+ # Policy Settings
23
+ # ============================================================================
24
+ set(CMAKE_POLICY_DEFAULT_CMP0077 NEW) # Respect BUILD_SHARED_LIBS / suppress warning in nowide - TBD if this is unproblematic
25
+ if(POLICY CMP0077)
26
+ cmake_policy(SET CMP0077 NEW) # Respect BUILD_SHARED_LIBS
27
+ endif()
28
+
29
+ set(CMAKE_POLICY_DEFAULT_CMP0167 NEW)
30
+ if(POLICY CMP0167)
31
+ cmake_policy(SET CMP0167 NEW) # find the upstream BoostConfig.cmake directly
32
+ endif()
33
+
34
+ #=======================================================================================================================
35
+ # Build options
36
+ #=======================================================================================================================
37
+ # 2026-04-19 working configurations:
38
+ # - static library build (BUILD_SHARED_LIBS OFF)
39
+ # - shared library build (BUILD_SHARED_LIBS ON)
40
+ # - either setting for OPENXLSX_LOCAL_PACKAGES_ONLY (OFF = automatically fetch dependencies, ON = error out if dependency is not available locally)
41
+ # - OpenXLSX and dependencies are installed into /usr/local/lib/OpenXLSX subfolder to avoid version conflicts for parallel installations of zip library, pugixml, nowide
42
+ # - pugixml, libzip & miniz package config (.pc) files are now part of the installation
43
+ # - dependency package config files installed by OpenXLSX will be installed as pugixml-OpenXLSX.pc, libzip-OpenXLSX.pc, miniz-OpenXLSX.pc respectively to avoid conflicts
44
+ # - dependency package config files should behave well with existing versions of the dependencies (OpenXLSX package config file gives precedence to the self-installed dependencies)
45
+ # - OpenXLSX package config file now provides the runtime path for an executable linked against OpenXLSX shared libraries in /usr/local/lib/OpenXLSX
46
+ # - vcpkg configuration / install via vcpkg
47
+ # - TBD: static/shared library build on Windows 11 with clang_cl, MSVC, gcc
48
+
49
+ # 2026-04-19 remaining issues:
50
+ # - TBD for OPENXLSX_MONOLITHIC_LIBRARY=ON, use target_link_interface instead of target_link_library for remaining dependencies (libzip/miniz, pugixml) and modify installation files
51
+ # NOTE: the workaround of target_link_interface is currently unable to link in subdependencies and accordingly fails for libzip::zip. Accordingly, use of
52
+ # target_link_interface (for anything but nowide) is descoped now. The only downside (which isn't a problem) is that dependencies are also install targets
53
+ #
54
+ option(OPENXLSX_CREATE_DOCS "Build library documentation (requires Doxygen and Graphviz/Dot to be installed)" ON)
55
+ option(OPENXLSX_BUILD_SAMPLES "Build sample programs" ON)
56
+ option(OPENXLSX_BUILD_TESTS "Build and run library tests - currently not functional" OFF)
57
+ option(OPENXLSX_BUILD_BENCHMARKS "Build and run library benchmarks - currently not functional" OFF)
58
+ option(OPENXLSX_ENABLE_LIBZIP "Enable using libzip" OFF) # when OFF, default zip library is miniz
59
+ option(OPENXLSX_ENABLE_LIBZIP_EXAMPLE "Build Demo1A example using libzip - requires libbz2-dev and liblzma-dev" OFF)
60
+ option(OPENXLSX_FORCE_NOWIDE "Force use of boost nowide, even on non-Windows systems (testing)" OFF)
61
+ option(OPENXLSX_NOWIDE_STANDALONE "use nowide standalone (default source: github)" ON)
62
+ # Generic library build settings
63
+ option( BUILD_SHARED_LIBS "Builds the shared library" OFF) # cmake option reserved for that purpose
64
+ option(OPENXLSX_MONOLITHIC_LIBRARY "(static library only) Link library dependencies into a bundled OpenXLSX library file" OFF)
65
+ option(OPENXLSX_LOCAL_PACKAGES_ONLY "only use dependencies already installed on the host OS, otherwise fail" OFF)
66
+ option(OPENXLSX_COMPACT_MODE "Build library in compact mode (slower, but uses less memory)" OFF)
67
+
68
+ #=======================================================================================================================
69
+ # Options for tool manage_dependency
70
+ #=======================================================================================================================
71
+ # These options should not be manipulated directly, but rather handled through OpenXLSX options
72
+ # # Default: all OFF
73
+ option(PREFER_STATIC "Prefer static linking over shared libraries" OFF) # Prefer static linking over shared libraries
74
+ option(USE_SYSTEM_LIBS "Use system-installed libraries when available" OFF) # Use system-installed libraries when available
75
+ option(FETCH_DEPS_AUTO "Automatically fetch missing dependencies" OFF) # Automatically fetch missing dependencies
76
+ # NOTE: with default settings, FETCH_DEPS_AUTO will get enabled because USE_SYSTEM_LIBS is OFF
77
+ option(FORCE_FETCH_ALL "Ignore system libraries and fetch all deps" OFF) # Ignore system libraries and fetch all deps
78
+
79
+ #=======================================================================================================================
80
+ # Manage configurations
81
+ #=======================================================================================================================
82
+ if(OPENXLSX_COMPACT_MODE)
83
+ message( WARNING "setting OPENXLSX_COMPACT_MODE is currently not communicated to dependencies (pugixml) - they will be built normally - this is on the TO-DO list" )
84
+ endif()
85
+
86
+ if( CMAKE_VERSION VERSION_GREATER_EQUAL "3.25" ) # getting the CMAKE log level is not supported until 3.25
87
+ cmake_language(GET_MESSAGE_LOG_LEVEL TestPackage_LOG_LEVEL)
88
+ else()
89
+ set(TestPackage_LOG_LEVEL "STATUS") # for lower versions of cmake, set desired log level for TestPackage subscript here
90
+ endif()
91
+
92
+ if(OPENXLSX_MONOLITHIC_LIBRARY)
93
+ # message( FATAL_ERROR "OPENXLSX_MONOLITHIC_LIBRARY is currently not supported - this is a TBD feature" )
94
+
95
+ set(PREFER_STATIC ON CACHE BOOL "" FORCE)
96
+ if(BUILD_SHARED_LIBS)
97
+ message( FATAL_ERROR "Can not use OPENXLSX_MONOLITHIC_LIBRARY together with BUILD_SHARED_LIBS" )
98
+ endif()
99
+ endif()
100
+
101
+ if(FORCE_FETCH_ALL)
102
+ if(OPENXLSX_LOCAL_PACKAGES_ONLY)
103
+ message( FATAL_ERROR "Can not use OPENXLSX_LOCAL_PACKAGES_ONLY together with FORCE_FETCH_ALL" )
104
+ endif()
105
+ set(USE_SYSTEM_LIBS OFF CACHE BOOL "" FORCE)
106
+ set(FETCH_DEPS_AUTO ON CACHE BOOL "" FORCE)
107
+ message(STATUS "FORCE_FETCH_ALL enabled: ignoring system libraries")
108
+ else()
109
+ if(OPENXLSX_LOCAL_PACKAGES_ONLY)
110
+ if(FETCH_DEPS_AUTO)
111
+ message( WARNING "Use of OPENXLSX_LOCAL_PACKAGES_ONLY will override FETCH_DEPS_AUTO" )
112
+ endif()
113
+ set(USE_SYSTEM_LIBS ON CACHE BOOL "" FORCE)
114
+ set(FETCH_DEPS_AUTO OFF CACHE BOOL "" FORCE)
115
+ set(FORCE_FETCH_ALL OFF CACHE BOOL "" FORCE)
116
+ else()
117
+ set(USE_SYSTEM_LIBS ON CACHE BOOL "" FORCE)
118
+ set(FETCH_DEPS_AUTO ON CACHE BOOL "" FORCE)
119
+ set(FORCE_FETCH_ALL OFF CACHE BOOL "" FORCE)
120
+ endif()
121
+ endif()
122
+
123
+ if(OPENXLSX_NOWIDE_STANDALONE AND NOT FETCH_DEPS_AUTO)
124
+ if(WIN32 OR ${OPENXLSX_FORCE_NOWIDE})
125
+ # message(FATAL_ERROR "OPENXLSX_NOWIDE_STANDALONE selected but FETCH_DEPS_AUTO is disabled - can not pull in standalone repository")
126
+ message(WARNING "OPENXLSX_NOWIDE_STANDALONE selected but FETCH_DEPS_AUTO is disabled - if the installed version of nowide is *not* the standalone version, this will result in errors")
127
+ else()
128
+ # suppress error if nowide is not going to be used
129
+ endif()
130
+ # TODO TBD: accept standalone local installation
131
+ endif()
132
+
133
+
134
+ # NOTE: when building an executable against the *shared object* OpenXLSX library, /usr/local/lib will not be in the (ldconfig) default libraries search path
135
+ # and needs to be configured, e.g. by LD_LIBRARY_PATH=/usr/local/lib ./a.out
136
+ if(${OPENXLSX_MONOLITHIC_LIBRARY} AND ${BUILD_SHARED_LIBS})
137
+ message( FATAL_ERROR "Can not use option OPENXLSX_MONOLITHIC_LIBRARY with shared library" )
138
+ endif()
139
+
140
+ if(${OPENXLSX_MONOLITHIC_LIBRARY} AND ${OPENXLSX_LOCAL_PACKAGES_ONLY})
141
+ message( WARNING "option OPENXLSX_MONOLITHIC_LIBRARY with OPENXLSX_LOCAL_PACKAGES_ONLY may fail when locally a installed dependency is not available as a static library" )
142
+ endif()
143
+
144
+ if(${OPENXLSX_LOCAL_PACKAGES_ONLY} AND NOT ${OPENXLSX_ENABLE_LIBZIP})
145
+ message( WARNING "option OPENXLSX_LOCAL_PACKAGES_ONLY without option OPENXLSX_ENABLE_LIBZIP may fail unless libminiz is preinstalled on the system" )
146
+ endif()
147
+
148
+ if(${OPENXLSX_MONOLITHIC_LIBRARY})
149
+ message( NOTICE "NOTE: bundled static library libOpenXLSX-bundled.a will NOT be installed to the target system by this build configuration" )
150
+ endif()
151
+
152
+
153
+ #=======================================================================================================================
154
+ # Configure a clean OPENXLSX library name available to the subfolder CMakeLists.txt
155
+ #=======================================================================================================================
156
+ set(OPENXLSX_LIBRARY_NAME ${PROJECT_NAME})
157
+
158
+ #=======================================================================================================================
159
+ # Attempt to locate the git executable
160
+ #=======================================================================================================================
161
+ include( FindGit )
162
+ if(NOT "${GIT_EXECUTABLE}" STREQUAL "")
163
+ message( DEBUG "GIT_EXECUTABLE is ${GIT_EXECUTABLE}" )
164
+ else()
165
+ message( WARNING "could not locate GIT_EXECUTABLE - will be unable to fetch missing dependencies" )
166
+ endif()
167
+
168
+ #=======================================================================================================================
169
+ # Include tools to manage dependencies
170
+ #=======================================================================================================================
171
+ include(${CMAKE_CURRENT_LIST_DIR}/cmake/manage_dependency.cmake)
172
+
173
+ #=======================================================================================================================
174
+ # Include tool to get git commit metadata
175
+ #=======================================================================================================================
176
+ include(${CMAKE_CURRENT_LIST_DIR}/cmake/get-git-HEAD-ID.cmake)
177
+
178
+ #=======================================================================================================================
179
+ # Output Directories.
180
+ #=======================================================================================================================
181
+ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/output)
182
+ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/output)
183
+ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/output)
184
+
185
+ #=======================================================================================================================
186
+ # Add project configurations (#ifdef / #ifndef testable)
187
+ #=======================================================================================================================
188
+ if(WIN32 OR ${OPENXLSX_FORCE_NOWIDE})
189
+ set(OPENXLSX_ENABLE_NOWIDE ON)
190
+ endif()
191
+
192
+ # Handle support for Boost::nowide
193
+ if(OPENXLSX_ENABLE_NOWIDE)
194
+
195
+ # If nowide is installed locally:
196
+ set( NOWIDE_TYPICAL_NAMES ) # to be used with find_library in determining whether a static library is installed locally
197
+ list( APPEND NOWIDE_TYPICAL_NAMES "boost_nowide" ) # CAUTION: NOWIDE_TYPICAL_NAMES *must* be a list (semicolon-separated)
198
+ list( APPEND NOWIDE_TYPICAL_NAMES "libboost_nowide" ) #
199
+ list( APPEND NOWIDE_TYPICAL_NAMES "nowide" ) #
200
+
201
+ if(OPENXLSX_NOWIDE_STANDALONE)
202
+ set( NOWIDE_PACKAGE_NAME "nowide" )
203
+ set( NOWIDE_COMPONENTS "" )
204
+ #
205
+ set( NOWIDE_ALIAS "nowide::nowide" )
206
+ set( NOWIDE_TARGET "nowide" )
207
+ set( NOWIDE_TARGET_SYSTEM "nowide::nowide" ) # this is the target expected from find_package
208
+ # set( NOWIDE_GIT_REPO_PARAM "https://codeberg.org/lars_uffmann/nowide_standalone.git" )
209
+ # set( NOWIDE_GIT_TAG_PARAM "v11.3.1-fixed" )
210
+ set( NOWIDE_URL_PARAM "https://github.com/boostorg/nowide/releases/download/v11.3.1/nowide_standalone_v11.3.1.tar.gz" )
211
+ set( NOWIDE_URL_HASH_PARAM "SHA256=eaec4d331e3961f5eeb10c46a11691d62047900a7a40765b0f23cdd3181e6ca6" )
212
+ else()
213
+ set( NOWIDE_PACKAGE_NAME "Boost" )
214
+ set( NOWIDE_COMPONENTS "COMPONENTS;nowide" )
215
+ #
216
+ set( NOWIDE_ALIAS "Boost::nowide" )
217
+ set( NOWIDE_TARGET "boost_nowide" )
218
+ set( NOWIDE_TARGET_SYSTEM "Boost::nowide" ) # this is the target expected from find_package
219
+ set( NOWIDE_GIT_REPO_PARAM "https://github.com/boostorg/nowide.git" )
220
+ set( NOWIDE_GIT_TAG_PARAM "v11.3.1" )
221
+ endif()
222
+
223
+ if(PREFER_STATIC) # for monolithic (static) OpenXLSX build
224
+ set(Boost_USE_STATIC_LIBS ON) # require static boost libraries
225
+ elseif(BUILD_SHARED_LIBS) # for shared OpenXLSX build
226
+ set(Boost_USE_STATIC_LIBS OFF) # require shared boost libraries
227
+ else() # for regular static build
228
+ # noop # keep the default
229
+ endif()
230
+
231
+ set(FIND_PACKAGE_VARIABLES_PARAM "") # init list
232
+ if(PREFER_STATIC OR BUILD_SHARED_LIBS)
233
+ list(APPEND FIND_PACKAGE_VARIABLES_PARAM "FIND_PACKAGE_VARIABLES")
234
+ list(APPEND FIND_PACKAGE_VARIABLES_PARAM Boost_USE_STATIC_LIBS ${Boost_USE_STATIC_LIBS})
235
+ endif()
236
+ # Turn off "FindBoost module is removed" warning:
237
+ list(APPEND FIND_PACKAGE_VARIABLES_PARAM "CMAKE_POLICY_DEFAULT_CMP0167" "NEW")
238
+
239
+
240
+ if(OPENXLSX_MONOLITHIC_LIBRARY)
241
+ set(Boost_NOWIDE_INSTALL OFF CACHE BOOL "") # this CACHE instruction appears to be the only way to set that option for the subproject
242
+ set( NOWIDE_INSTALL OFF CACHE BOOL "") # standalone version has a different option name
243
+ else()
244
+ set(Boost_NOWIDE_INSTALL ON CACHE BOOL "") #
245
+ set( NOWIDE_INSTALL ON CACHE BOOL "") #
246
+ endif()
247
+
248
+ manage_dependency(
249
+ LIB_NAME Nowide
250
+ PACKAGE_NAME ${NOWIDE_PACKAGE_NAME}
251
+ COMPONENTS ${NOWIDE_COMPONENTS}
252
+ TYPICAL_NAMES ${NOWIDE_TYPICAL_NAMES}
253
+
254
+ TARGET_NAME ${NOWIDE_TARGET}
255
+ TARGET_NAME_SYSTEM ${NOWIDE_TARGET_SYSTEM}
256
+
257
+ GIT_REPOSITORY ${NOWIDE_GIT_REPO_PARAM}
258
+ GIT_TAG ${NOWIDE_GIT_TAG_PARAM}
259
+
260
+ # a provided URL & URL_HASH takes precedence over GITHUB_REPO or GIT_REPOSITORY:
261
+ URL ${NOWIDE_URL_PARAM}
262
+ URL_HASH ${NOWIDE_URL_HASH_PARAM}
263
+
264
+ # FIND_PACKAGE_VARIABLES Boost_USE_STATIC_LIBS "${Boost_USE_STATIC_LIBS}"
265
+ ${FIND_PACKAGE_VARIABLES_PARAM} # replaced above line so that nothing can be submitted to keep Boost_USE_STATIC_LIBS as not-explicitly set
266
+ )
267
+ message( VERBOSE "manage_dependency reported Nowide_PROVIDED_TARGET as ${Nowide_PROVIDED_TARGET}, Nowide_INSTALL_TARGET as ${Nowide_INSTALL_TARGET}" )
268
+ set(NOWIDE_TARGET ${Nowide_PROVIDED_TARGET} CACHE STRING "" FORCE)
269
+ endif()
270
+
271
+ if (OPENXLSX_ENABLE_LIBZIP)
272
+ # NOTE: libzip 1.11.4 is the newest version as of 2025-08-16 and not available on most host systems, so a lower version tag should be used.
273
+ # However, 1.11.4 is the first version that allows building libzip separately from the (unneeded) components zipcmp zipmerge ziptool
274
+ # Maybe check for available version & if 1.11.4 is available, exclude unneeded components - or does this happen automatically?
275
+
276
+ set(ZIP_LIBRARY libzip) # becomes a dependency in package config
277
+ set(ZIP_LIBRARY_ALIAS "libzip::zip")
278
+ set(ZIP_LIBRARY_TARGET "libzip::zip")
279
+ set(ZIP_LIBRARY_TARGET_SYSTEM "libzip::zip")
280
+ manage_dependency(
281
+ LIB_NAME libzip
282
+ PACKAGE_NAME LibZip
283
+ # COMPONENTS zip # 2026-04-04: it appears libzip does not actually expose COMPONENTS for find_package
284
+ VERSION 1.11.3 # TBD what version is needed
285
+ TYPICAL_NAMES "libzip" # TBD what these can be
286
+
287
+ TARGET_NAME ${ZIP_LIBRARY_TARGET}
288
+ TARGET_NAME_SYSTEM ${ZIP_LIBRARY_TARGET_SYSTEM}
289
+
290
+ GIT_REPOSITORY https://github.com/nih-at/libzip.git
291
+ GIT_TAG v1.11.3
292
+ # OPTIONS "QUIET OPTIONAL_COMPONENTS zipcmp zipmerge ziptool" # "
293
+ # OPTIONS "BUILD_TOOLS OFF" # only relevant for CPMFindPackage (i.e. OPENXLSX_LOCAL_PACKAGES_ONLY=OFF)
294
+ # OPTIONS "BUILD_REGRESS OFF" # "
295
+ # OPTIONS "BUILD_OSSFUZZ OFF" # "
296
+ # OPTIONS "BUILD_EXAMPLES OFF" # "
297
+ # OPTIONS "BUILD_DOC OFF" # "
298
+ )
299
+ message( VERBOSE "manage_dependency reported libzip_PROVIDED_TARGET as ${libzip_PROVIDED_TARGET}, libzip_INSTALL_TARGET as ${libzip_INSTALL_TARGET}" )
300
+ set(ZIP_LIBRARY_PROVIDED_TARGET "${libzip_PROVIDED_TARGET}")
301
+ set(ZIP_LIBRARY_INSTALL_TARGET "${libzip_INSTALL_TARGET}")
302
+ else()
303
+ if(WIN32)
304
+ set(OPENXLSX_MINIZ_BUILD_MODE "OFF") # for miniz on windows, the shared library fails to build - so build the shared OpenXLSX library against the static miniz lib in that case
305
+ else()
306
+ set(OPENXLSX_MINIZ_BUILD_MODE "${BUILD_SHARED_LIBS}")
307
+ endif()
308
+
309
+ set(ZIP_LIBRARY miniz) # becomes a dependency in package config
310
+ set(ZIP_LIBRARY_ALIAS miniz::miniz)
311
+ set(ZIP_LIBRARY_TARGET miniz)
312
+ set(ZIP_LIBRARY_TARGET_SYSTEM miniz::miniz)
313
+ manage_dependency(
314
+ LIB_NAME miniz
315
+ PACKAGE_NAME miniz
316
+ VERSION 3.0.2
317
+ # VERSION 3.1.1
318
+ TYPICAL_NAMES "miniz"
319
+
320
+ TARGET_NAME ${ZIP_LIBRARY_TARGET}
321
+ TARGET_NAME_SYSTEM ${ZIP_LIBRARY_TARGET_SYSTEM}
322
+ GIT_REPOSITORY https://github.com/richgel999/miniz.git
323
+ GIT_TAG 3.0.2
324
+ # GIT_TAG 3.1.1
325
+ )
326
+ message( VERBOSE "manage_dependency reported miniz_PROVIDED_TARGET as ${miniz_PROVIDED_TARGET}, miniz_INSTALL_TARGET as ${miniz_INSTALL_TARGET}" )
327
+ set(ZIP_LIBRARY_PROVIDED_TARGET "${miniz_PROVIDED_TARGET}")
328
+ set(ZIP_LIBRARY_INSTALL_TARGET "${miniz_INSTALL_TARGET}")
329
+ endif ()
330
+
331
+
332
+ if(${BUILD_SHARED_LIBS})
333
+ set(PUGIXML_TARGET pugixml::shared) # actually, just pugixml seems to work fine for a target - but let's be explicit
334
+ else()
335
+ set(PUGIXML_TARGET pugixml::static) # see above
336
+ endif()
337
+
338
+ manage_dependency(
339
+ LIB_NAME pugixml
340
+ PACKAGE_NAME pugixml
341
+ VERSION 1.15
342
+ TYPICAL_NAMES "pugixml" # TBD what these can be
343
+
344
+ TARGET_NAME ${PUGIXML_TARGET}
345
+ TARGET_NAME_SYSTEM ${PUGIXML_TARGET}
346
+ GIT_REPOSITORY https://github.com/zeux/pugixml.git
347
+ GIT_TAG v1.15
348
+ # OPTIONS "PUGIXML_COMPACT ${OPENXLSX_COMPACT_MODE}" # TBD how to pass on PUGIXML options
349
+ )
350
+ message( VERBOSE "manage_dependency reported puxixml_PROVIDED_TARGET as ${pugixml_PROVIDED_TARGET}, pugixml_INSTALL_TARGET as ${pugixml_INSTALL_TARGET}" )
351
+ set(PUGIXML_INSTALL_TARGET "${pugixml_INSTALL_TARGET}")
352
+ if(pugixml_FETCHED)
353
+ set(PUGIXML_STATIC_LIBRARY "pugixml-static") # used for OPENXLSX_BUNDLED_STATIC_LIB at the moment
354
+ else()
355
+ # set(PUGIXML_STATIC_LIBRARY "pugixml") # used for OPENXLSX_BUNDLED_STATIC_LIB at the moment
356
+ # set(PUGIXML_TARGET "pugixml")
357
+
358
+ # 2026-04-23 next attempt to force a static library
359
+ set(PUGIXML_STATIC_LIBRARY {PUGIXML_TARGET}) # used for OPENXLSX_BUNDLED_STATIC_LIB at the moment
360
+ message( STATUS "pugixml was found locally, using PUGIXML_TARGET ${PUGIXML_TARGET}" )
361
+ endif()
362
+
363
+
364
+ #=======================================================================================================================
365
+ # Add project subdirectories
366
+ #=======================================================================================================================
367
+ add_subdirectory(OpenXLSX)
368
+
369
+ if(${OPENXLSX_CREATE_DOCS})
370
+ add_subdirectory(Documentation)
371
+ endif()
372
+
373
+ if(${OPENXLSX_BUILD_SAMPLES})
374
+ add_subdirectory(Examples)
375
+ endif()
376
+
377
+ if(${OPENXLSX_BUILD_TESTS})
378
+ add_subdirectory(Tests)
379
+ endif()
380
+
381
+ if(${OPENXLSX_BUILD_BENCHMARKS})
382
+ add_subdirectory(Benchmarks)
383
+ endif()
384
+
385
+
386
+ #=======================================================================================================================
387
+ # Summarize OpenXLSX configuration
388
+ #=======================================================================================================================
389
+ message( STATUS "OpenXLSX configuration:" )
390
+ message( STATUS " ++ git HEAD (short): ${GIT_COMMIT_ID}" )
391
+ message( STATUS " ++ git HEAD commit timestamp: ${GIT_COMMIT_ID_TIME}" )
392
+ message( STATUS " ++ Build library documentation: ${OPENXLSX_CREATE_DOCS}" )
393
+ message( STATUS " ++ Build sample programs: ${OPENXLSX_BUILD_SAMPLES}" )
394
+ message( STATUS " ++ Build and run library tests: ${OPENXLSX_BUILD_TESTS}" )
395
+ message( STATUS " ++ Build and run library benchmarks: ${OPENXLSX_BUILD_BENCHMARKS}" )
396
+ message( STATUS " ++ Enable using libzip: ${OPENXLSX_ENABLE_LIBZIP}" )
397
+ message( STATUS " ++ Build Demo1A example using libzip: ${OPENXLSX_ENABLE_LIBZIP_EXAMPLE}" )
398
+ if(OPENXLSX_ENABLE_LIBZIP_EXAMPLE AND NOT OPENXLSX_BUILD_SAMPLES)
399
+ message( WARNING "Demo1A will not be built because sample programs are disabled!" )
400
+ endif()
401
+ message( STATUS " ++ Force use of boost nowide: ${OPENXLSX_FORCE_NOWIDE}" )
402
+ message( STATUS " ++ Use nowide standalone library: ${OPENXLSX_NOWIDE_STANDALONE}" )
403
+ message( STATUS " ++ Build the shared library: ${BUILD_SHARED_LIBS}" )
404
+ message( STATUS " ++ Make a bundled static library file: ${OPENXLSX_MONOLITHIC_LIBRARY}" )
405
+ message( STATUS " ++ Only use installed packages: ${OPENXLSX_LOCAL_PACKAGES_ONLY}" )
406
+ message( STATUS " ++ Build library in compact mode: ${OPENXLSX_COMPACT_MODE}" )
407
+ message( STATUS " ++" )
408
+
409
+ if(BUILD_SHARED_LIBS)
410
+ message( STATUS " ++ Library type: shared" )
411
+ else()
412
+ message( STATUS " ++ Library type: static" )
413
+ endif()
414
+
415
+ if(OPENXLSX_ENABLE_NOWIDE)
416
+ message( STATUS " ++ Unicode support: Boost nowide" )
417
+ # if("${Boost_INCLUDE_DIR}" STREQUAL "")
418
+ # message( STATUS " ++ Boost_INCLUDE_DIR: (empty)" )
419
+ # else()
420
+ # message( STATUS " ++ Boost_INCLUDE_DIR: ${Boost_INCLUDE_DIR}" )
421
+ # endif()
422
+ if("${EXAMPLES_NOWIDE_INCLUDE}" STREQUAL "")
423
+ message( STATUS " ++ EXAMPLES_NOWIDE_INCLUDE: (empty)" )
424
+ else()
425
+ message( STATUS " ++ EXAMPLES_NOWIDE_INCLUDE: ${EXAMPLES_NOWIDE_INCLUDE}" )
426
+ endif()
427
+ else()
428
+ message( STATUS " ++ Unicode support: (OS) native" )
429
+ endif()
430
+
431
+ if (OPENXLSX_ENABLE_LIBZIP)
432
+ message( STATUS " ++ zip library: libzip" )
433
+ else()
434
+ message( STATUS " ++ zip library: miniz" )
435
+ endif()
436
+ message( STATUS " ++" )
437
+
438
+ message( VERBOSE " VERBOSE configuration information:" )
439
+ message( VERBOSE " >> ZIP_LIBRARY_INSTALL_TARGET: ${ZIP_LIBRARY_INSTALL_TARGET}" )
440
+ message( VERBOSE " >> PUGIXML_INSTALL_TARGET: ${PUGIXML_INSTALL_TARGET}" )
441
+ message( VERBOSE " >>" )
442
+
443
+ message( VERBOSE " >> manage_dependency configuration:" )
444
+ message( VERBOSE " >> Prefer static linking over shared libraries: ${PREFER_STATIC}" )
445
+ message( VERBOSE " >> Use system-installed libraries when available: ${USE_SYSTEM_LIBS}" )
446
+ message( VERBOSE " >> Automatically fetch missing dependencies: ${FETCH_DEPS_AUTO}" )
447
+ message( VERBOSE " >> Ignore system libraries and fetch all deps: ${FORCE_FETCH_ALL}" )
448
+ message( VERBOSE " >>" )
449
+
450
+ #=======================================================================================================================
451
+ # Configure CPack for debian package generation - thank you @ https://github.com/Jacob-Burckhardt for the suggestions
452
+ #=======================================================================================================================
453
+ configure_file ("${CMAKE_CURRENT_LIST_DIR}/cmake/libopenxlsxCPackOptions.cmake.in"
454
+ "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libopenxlsxCPackOptions.cmake"
455
+ @ONLY)
456
+
457
+ set (CPACK_PROJECT_CONFIG_FILE
458
+ "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libopenxlsxCPackOptions.cmake")
459
+
460
+ # must include the CPack project config file here or the settings won't be used
461
+ include ("${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libopenxlsxCPackOptions.cmake")
462
+
463
+ # include( CPack ) must always be invoked after all CPACK\_\* variables are defined
464
+ include( CPack )
465
+ message( STATUS " ++ CPACK_PACKAGE_VERSION: ${CPACK_PACKAGE_VERSION}" )
466
+ # TODO: how to trigger cpack -G DEB from cmake
@@ -0,0 +1,31 @@
1
+ #=======================================================================================================================
2
+ # Preamble
3
+ #=======================================================================================================================
4
+ cmake_minimum_required(VERSION 3.15 FATAL_ERROR)
5
+ project(OpenXLSX.Documentation)
6
+
7
+ #=======================================================================================================================
8
+ # Set up Doxygen API documentation
9
+ #=======================================================================================================================
10
+ # check if Doxygen is installed
11
+ find_package(Doxygen)
12
+ if (DOXYGEN_FOUND)
13
+ # set input and output files
14
+ set(DOXYGEN_IN ${CMAKE_CURRENT_LIST_DIR}/Doxyfile.in)
15
+ set(DOXYGEN_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
16
+ set(DOXYGEN_SOURCE ${CMAKE_CURRENT_LIST_DIR}/../OpenXLSX/headers)
17
+ set(DOXYGEN_QUIET YES)
18
+
19
+ # request to configure the file
20
+ configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT})# @ONLY)
21
+ message("Doxygen build started")
22
+
23
+ # note the option ALL which allows to build the docs together with the application
24
+ add_custom_target(Documentation
25
+ COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT}
26
+ WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
27
+ COMMENT "Generating API documentation with Doxygen"
28
+ VERBATIM)
29
+ else (DOXYGEN_FOUND)
30
+ message("Doxygen need to be installed to generate the doxygen documentation")
31
+ endif (DOXYGEN_FOUND)