react-native-nitro-xlsx 0.2.5 → 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 (395) hide show
  1. package/NitroXlsx.podspec +26 -27
  2. package/Package.swift +31 -10
  3. package/README.md +1 -1
  4. package/android/CMakeLists.txt +20 -27
  5. package/package.json +2 -2
  6. package/scripts/run-cpp-tests.sh +1 -1
  7. package/thirdparty/OpenXLSX/.clang-format +118 -0
  8. package/thirdparty/OpenXLSX/.clang-tidy +28 -0
  9. package/thirdparty/OpenXLSX/.gitignore +130 -0
  10. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_before_XMLNode_wrappers +46 -0
  11. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_and_stripping +49 -0
  12. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_char_support +49 -0
  13. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_support +49 -0
  14. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespaced_name_disabled +49 -0
  15. package/thirdparty/OpenXLSX/Benchmarks/2024-08-11-benchmarks_post-XLCellIterator-Rework +46 -0
  16. package/thirdparty/OpenXLSX/Benchmarks/2024-08-14-benchmarks_post-default-row-column-style-support +46 -0
  17. package/thirdparty/OpenXLSX/Benchmarks/2024-09-02-benchmarks +46 -0
  18. package/thirdparty/OpenXLSX/Benchmarks/2024-12-19-benchmarks +46 -0
  19. package/thirdparty/OpenXLSX/Benchmarks/2024-12-30-benchmarks-post-XLSharedStrings-by-ref +46 -0
  20. package/thirdparty/OpenXLSX/Benchmarks/2025-01-09-benchmarks-post-conditionalFormatsAndSheetProtection +46 -0
  21. package/thirdparty/OpenXLSX/Benchmarks/2025-01-10-benchmarks-post-XLCellValue-bugfix +46 -0
  22. package/thirdparty/OpenXLSX/Benchmarks/2025-01-31-benchmarks-post-XLComments-implementation +46 -0
  23. package/thirdparty/OpenXLSX/Benchmarks/2025-02-02-benchmarks-post-XLRowIterator-Rework +46 -0
  24. package/thirdparty/OpenXLSX/Benchmarks/2025-07-20-benchmarks-after-hiding-pugixml-internals +46 -0
  25. package/thirdparty/OpenXLSX/Benchmarks/2025-08-29-benchmarks-after-code-review-with-libzip +46 -0
  26. package/thirdparty/OpenXLSX/Benchmarks/Benchmark.cpp +249 -0
  27. package/thirdparty/OpenXLSX/Benchmarks/CMakeLists.txt +19 -0
  28. package/thirdparty/OpenXLSX/CMakeLists.txt +466 -0
  29. package/thirdparty/OpenXLSX/Documentation/CMakeLists.txt +31 -0
  30. package/thirdparty/OpenXLSX/Documentation/Doxyfile.in +2471 -0
  31. package/thirdparty/OpenXLSX/Documentation/DoxygenLayout.xml +194 -0
  32. package/thirdparty/OpenXLSX/Documentation/customdoxygen.css +1355 -0
  33. package/thirdparty/OpenXLSX/Examples/CMakeLists.txt +103 -0
  34. package/thirdparty/OpenXLSX/Examples/Demo1.cpp +279 -0
  35. package/thirdparty/OpenXLSX/Examples/Demo10.cpp +545 -0
  36. package/thirdparty/OpenXLSX/Examples/Demo1A.cpp +137 -0
  37. package/thirdparty/OpenXLSX/Examples/Demo2.cpp +65 -0
  38. package/thirdparty/OpenXLSX/Examples/Demo3.cpp +89 -0
  39. package/thirdparty/OpenXLSX/Examples/Demo4.cpp +86 -0
  40. package/thirdparty/OpenXLSX/Examples/Demo5.cpp +77 -0
  41. package/thirdparty/OpenXLSX/Examples/Demo6.cpp +103 -0
  42. package/thirdparty/OpenXLSX/Examples/Demo7.cpp +79 -0
  43. package/thirdparty/OpenXLSX/Examples/Demo8.cpp +117 -0
  44. package/thirdparty/OpenXLSX/Examples/Demo9.cpp +363 -0
  45. package/thirdparty/OpenXLSX/Examples/cmake/FindLIBZIP.cmake +61 -0
  46. package/thirdparty/OpenXLSX/Examples/external/CustomZip/CustomZip.hpp +256 -0
  47. package/thirdparty/OpenXLSX/LICENSE.md +29 -0
  48. package/thirdparty/OpenXLSX/Makefile.GNU +530 -0
  49. package/thirdparty/OpenXLSX/Notes/TBDs.txt +16 -0
  50. package/thirdparty/OpenXLSX/Notes/confirmed-TBCs.txt +8 -0
  51. package/thirdparty/OpenXLSX/Notes/styles-missing-support.xml +12 -0
  52. package/thirdparty/OpenXLSX/Notes/todo-list.txt +108 -0
  53. package/thirdparty/OpenXLSX/OpenXLSX/CMakeLists.txt +631 -0
  54. package/thirdparty/OpenXLSX/OpenXLSX/OpenXLSX.hpp +63 -0
  55. package/thirdparty/OpenXLSX/OpenXLSX/OpenXLSXConfig.cmake +11 -0
  56. package/thirdparty/OpenXLSX/OpenXLSX/cmake/bundle_static_library.cmake +198 -0
  57. package/thirdparty/OpenXLSX/OpenXLSX/cmake/patch_pkg_config.cmake +69 -0
  58. package/thirdparty/OpenXLSX/OpenXLSX/headers/IZipArchive.hpp +361 -0
  59. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX-Exports.hpp +12 -0
  60. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCell.hpp +367 -0
  61. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellIterator.hpp +252 -0
  62. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellRange.hpp +223 -0
  63. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellReference.hpp +317 -0
  64. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellValue.hpp +793 -0
  65. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLColor.hpp +232 -0
  66. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLColumn.hpp +159 -0
  67. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCommandQuery.hpp +228 -0
  68. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLComments.hpp +270 -0
  69. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLConstants.hpp +18 -0
  70. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLContentTypes.hpp +264 -0
  71. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDateTime.hpp +175 -0
  72. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDocument.hpp +505 -0
  73. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDrawing.hpp +452 -0
  74. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLException.hpp +161 -0
  75. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLFormula.hpp +375 -0
  76. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLIterator.hpp +40 -0
  77. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLMergeCells.hpp +216 -0
  78. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLProperties.hpp +348 -0
  79. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRelationships.hpp +348 -0
  80. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRow.hpp +721 -0
  81. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRowData.hpp +488 -0
  82. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLSharedStrings.hpp +204 -0
  83. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLSheet.hpp +1640 -0
  84. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLStyles.hpp +2390 -0
  85. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLTables.hpp +132 -0
  86. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLWorkbook.hpp +404 -0
  87. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlData.hpp +283 -0
  88. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlFile.hpp +194 -0
  89. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlParser.hpp +282 -0
  90. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlParserForwardDeclarations.hpp +85 -0
  91. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLZipArchive.hpp +232 -0
  92. package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/LibZip.hpp +447 -0
  93. package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/OpenXLSXFileSystemTools.hpp +207 -0
  94. package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/Zippy.hpp +1375 -0
  95. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCell.cpp +340 -0
  96. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellIterator.cpp +427 -0
  97. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellRange.cpp +221 -0
  98. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellReference.cpp +408 -0
  99. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellValue.cpp +519 -0
  100. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLColor.cpp +202 -0
  101. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLColumn.cpp +141 -0
  102. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLComments.cpp +637 -0
  103. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLContentTypes.cpp +329 -0
  104. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDateTime.cpp +269 -0
  105. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDocument.cpp +1678 -0
  106. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDrawing.cpp +784 -0
  107. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLFormula.cpp +201 -0
  108. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLMergeCells.cpp +357 -0
  109. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLProperties.cpp +810 -0
  110. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRelationships.cpp +529 -0
  111. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRow.cpp +918 -0
  112. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRowData.cpp +508 -0
  113. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLSharedStrings.cpp +220 -0
  114. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLSheet.cpp +1970 -0
  115. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLStyles.cpp +3014 -0
  116. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLTables.cpp +125 -0
  117. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLWorkbook.cpp +784 -0
  118. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlData.cpp +247 -0
  119. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlFile.cpp +160 -0
  120. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlParser.cpp +261 -0
  121. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLZipArchive.cpp +266 -0
  122. package/thirdparty/OpenXLSX/OpenXLSX/sources/utilities/XLUtilities.hpp +478 -0
  123. package/thirdparty/OpenXLSX/README.md +1279 -0
  124. package/thirdparty/OpenXLSX/Scripts/cmake-cleanup.sh +102 -0
  125. package/thirdparty/OpenXLSX/Scripts/compile.sh +23 -0
  126. package/thirdparty/OpenXLSX/Scripts/demos-cleanup.sh +25 -0
  127. package/thirdparty/OpenXLSX/Scripts/demos-run-all.sh +60 -0
  128. package/thirdparty/OpenXLSX/Scripts/guarded-xml-format.sh +47 -0
  129. package/thirdparty/OpenXLSX/Scripts/make-gnu.sh +11 -0
  130. package/thirdparty/OpenXLSX/Scripts/uninstall-manifest.sh +48 -0
  131. package/thirdparty/OpenXLSX/Scripts/xml-format-all.sh +19 -0
  132. package/thirdparty/OpenXLSX/Scripts/xml-format.sh +38 -0
  133. package/thirdparty/OpenXLSX/Tests/CMakeLists.txt +37 -0
  134. package/thirdparty/OpenXLSX/Tests/catch/catch.hpp +17799 -0
  135. package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_automake.hpp +68 -0
  136. package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_sonarqube.hpp +182 -0
  137. package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_tap.hpp +278 -0
  138. package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_teamcity.hpp +212 -0
  139. package/thirdparty/OpenXLSX/Tests/main.cpp +55 -0
  140. package/thirdparty/OpenXLSX/Tests/testXLCell.cpp +176 -0
  141. package/thirdparty/OpenXLSX/Tests/testXLCellRange.cpp +180 -0
  142. package/thirdparty/OpenXLSX/Tests/testXLCellReference.cpp +160 -0
  143. package/thirdparty/OpenXLSX/Tests/testXLCellValue.cpp +366 -0
  144. package/thirdparty/OpenXLSX/Tests/testXLCellValueProxy.cpp +255 -0
  145. package/thirdparty/OpenXLSX/Tests/testXLColor.cpp +75 -0
  146. package/thirdparty/OpenXLSX/Tests/testXLDateTime.cpp +229 -0
  147. package/thirdparty/OpenXLSX/Tests/testXLDocument.cpp +197 -0
  148. package/thirdparty/OpenXLSX/Tests/testXLFormula.cpp +131 -0
  149. package/thirdparty/OpenXLSX/Tests/testXLRow.cpp +597 -0
  150. package/thirdparty/OpenXLSX/Tests/testXLSheet.cpp +77 -0
  151. package/thirdparty/OpenXLSX/Tests/ziptest-with-libs.cpp +88 -0
  152. package/thirdparty/OpenXLSX/Tests/ziptest.cpp +735 -0
  153. package/thirdparty/OpenXLSX/cmake/get-git-HEAD-ID.cmake +45 -0
  154. package/thirdparty/OpenXLSX/cmake/libopenxlsxCPackOptions.cmake.in +20 -0
  155. package/thirdparty/OpenXLSX/cmake/manage_dependency.cmake +813 -0
  156. package/thirdparty/OpenXLSX/cmake/recursive_library_type_test.cmake +52 -0
  157. package/thirdparty/OpenXLSX/gnu-make-crutch/OpenXLSX-Exports-shared.hpp +42 -0
  158. package/thirdparty/OpenXLSX/gnu-make-crutch/OpenXLSX-Exports-static.hpp +42 -0
  159. package/thirdparty/OpenXLSX/vcpkg.json +24 -0
  160. package/thirdparty/README.md +42 -0
  161. package/thirdparty/miniz/.clang-format +47 -0
  162. package/thirdparty/miniz/.travis.yml +2 -0
  163. package/thirdparty/miniz/CMakeLists.txt +333 -0
  164. package/thirdparty/miniz/CMakePresets.json +31 -0
  165. package/thirdparty/miniz/ChangeLog.md +272 -0
  166. package/thirdparty/miniz/Config.cmake.in +1 -0
  167. package/thirdparty/miniz/LICENSE +22 -0
  168. package/thirdparty/miniz/amalgamate.sh +57 -0
  169. package/thirdparty/miniz/examples/example1.c +105 -0
  170. package/thirdparty/miniz/examples/example2.c +164 -0
  171. package/thirdparty/miniz/examples/example3.c +269 -0
  172. package/thirdparty/miniz/examples/example4.c +102 -0
  173. package/thirdparty/miniz/examples/example5.c +327 -0
  174. package/thirdparty/miniz/examples/example6.c +189 -0
  175. package/thirdparty/miniz/meson.build +21 -0
  176. package/thirdparty/miniz/miniz.c +646 -0
  177. package/thirdparty/miniz/miniz.h +615 -0
  178. package/thirdparty/miniz/miniz.pc.in +13 -0
  179. package/thirdparty/miniz/miniz_common.h +89 -0
  180. package/thirdparty/miniz/miniz_export.h +20 -0
  181. package/thirdparty/miniz/miniz_tdef.c +1602 -0
  182. package/thirdparty/miniz/miniz_tdef.h +199 -0
  183. package/thirdparty/miniz/miniz_tinfl.c +778 -0
  184. package/thirdparty/miniz/miniz_tinfl.h +150 -0
  185. package/thirdparty/miniz/miniz_zip.c +4895 -0
  186. package/thirdparty/miniz/miniz_zip.h +454 -0
  187. package/thirdparty/miniz/readme.md +46 -0
  188. package/thirdparty/miniz/test.sh +36 -0
  189. package/thirdparty/miniz/tests/add_in_place_fuzzer.c +87 -0
  190. package/thirdparty/miniz/tests/catch_amalgamated.cpp +10795 -0
  191. package/thirdparty/miniz/tests/catch_amalgamated.hpp +13143 -0
  192. package/thirdparty/miniz/tests/checksum_fuzzer.c +26 -0
  193. package/thirdparty/miniz/tests/compress_fuzzer.c +91 -0
  194. package/thirdparty/miniz/tests/flush_fuzzer.c +88 -0
  195. package/thirdparty/miniz/tests/fuzz_main.c +55 -0
  196. package/thirdparty/miniz/tests/large_fuzzer.c +133 -0
  197. package/thirdparty/miniz/tests/main.cpp +185 -0
  198. package/thirdparty/miniz/tests/miniz_tdefl_fuzzer.cc +115 -0
  199. package/thirdparty/miniz/tests/miniz_tester.cpp +1881 -0
  200. package/thirdparty/miniz/tests/miniz_zip_validate_fuzzer.cc +71 -0
  201. package/thirdparty/miniz/tests/miniz_zip_writer_fuzzer.cc +96 -0
  202. package/thirdparty/miniz/tests/ossfuzz.sh +48 -0
  203. package/thirdparty/miniz/tests/small_fuzzer.c +126 -0
  204. package/thirdparty/miniz/tests/timer.cpp +152 -0
  205. package/thirdparty/miniz/tests/timer.h +40 -0
  206. package/thirdparty/miniz/tests/uncompress2_fuzzer.c +21 -0
  207. package/thirdparty/miniz/tests/uncompress_fuzzer.c +30 -0
  208. package/thirdparty/miniz/tests/zip.dict +9 -0
  209. package/thirdparty/miniz/tests/zip_fuzzer.c +63 -0
  210. package/thirdparty/pugixml/.codecov.yml +7 -0
  211. package/thirdparty/pugixml/.gitattributes +1 -0
  212. package/thirdparty/pugixml/CMakeLists.txt +330 -0
  213. package/thirdparty/pugixml/LICENSE.md +24 -0
  214. package/thirdparty/pugixml/Makefile +98 -0
  215. package/thirdparty/pugixml/README.md +81 -0
  216. package/thirdparty/pugixml/SECURITY.md +9 -0
  217. package/thirdparty/pugixml/appveyor.yml +50 -0
  218. package/thirdparty/pugixml/docs/config.adoc +7 -0
  219. package/thirdparty/pugixml/docs/images/dom_tree.png +0 -0
  220. package/thirdparty/pugixml/docs/images/vs2005_link1.png +0 -0
  221. package/thirdparty/pugixml/docs/images/vs2005_link2.png +0 -0
  222. package/thirdparty/pugixml/docs/images/vs2005_pch1.png +0 -0
  223. package/thirdparty/pugixml/docs/images/vs2005_pch2.png +0 -0
  224. package/thirdparty/pugixml/docs/images/vs2005_pch3.png +0 -0
  225. package/thirdparty/pugixml/docs/images/vs2005_pch4.png +0 -0
  226. package/thirdparty/pugixml/docs/images/vs2010_link1.png +0 -0
  227. package/thirdparty/pugixml/docs/images/vs2010_link2.png +0 -0
  228. package/thirdparty/pugixml/docs/manual.adoc +3326 -0
  229. package/thirdparty/pugixml/docs/manual.html +6395 -0
  230. package/thirdparty/pugixml/docs/quickstart.adoc +287 -0
  231. package/thirdparty/pugixml/docs/quickstart.html +1107 -0
  232. package/thirdparty/pugixml/docs/samples/character.xml +8 -0
  233. package/thirdparty/pugixml/docs/samples/custom_memory_management.cpp +27 -0
  234. package/thirdparty/pugixml/docs/samples/include.cpp +64 -0
  235. package/thirdparty/pugixml/docs/samples/load_error_handling.cpp +33 -0
  236. package/thirdparty/pugixml/docs/samples/load_file.cpp +16 -0
  237. package/thirdparty/pugixml/docs/samples/load_memory.cpp +66 -0
  238. package/thirdparty/pugixml/docs/samples/load_options.cpp +30 -0
  239. package/thirdparty/pugixml/docs/samples/load_stream.cpp +97 -0
  240. package/thirdparty/pugixml/docs/samples/modify_add.cpp +29 -0
  241. package/thirdparty/pugixml/docs/samples/modify_base.cpp +43 -0
  242. package/thirdparty/pugixml/docs/samples/modify_remove.cpp +27 -0
  243. package/thirdparty/pugixml/docs/samples/save_custom_writer.cpp +116 -0
  244. package/thirdparty/pugixml/docs/samples/save_declaration.cpp +27 -0
  245. package/thirdparty/pugixml/docs/samples/save_file.cpp +17 -0
  246. package/thirdparty/pugixml/docs/samples/save_options.cpp +48 -0
  247. package/thirdparty/pugixml/docs/samples/save_stream.cpp +18 -0
  248. package/thirdparty/pugixml/docs/samples/save_subtree.cpp +26 -0
  249. package/thirdparty/pugixml/docs/samples/text.cpp +35 -0
  250. package/thirdparty/pugixml/docs/samples/transitions.xml +7 -0
  251. package/thirdparty/pugixml/docs/samples/traverse_base.cpp +51 -0
  252. package/thirdparty/pugixml/docs/samples/traverse_iter.cpp +27 -0
  253. package/thirdparty/pugixml/docs/samples/traverse_predicate.cpp +48 -0
  254. package/thirdparty/pugixml/docs/samples/traverse_rangefor.cpp +32 -0
  255. package/thirdparty/pugixml/docs/samples/traverse_walker.cpp +35 -0
  256. package/thirdparty/pugixml/docs/samples/tree.xml +12 -0
  257. package/thirdparty/pugixml/docs/samples/weekly-shift_jis.xml +78 -0
  258. package/thirdparty/pugixml/docs/samples/weekly-utf-16.xml +0 -0
  259. package/thirdparty/pugixml/docs/samples/weekly-utf-8.xml +78 -0
  260. package/thirdparty/pugixml/docs/samples/xgconsole.xml +12 -0
  261. package/thirdparty/pugixml/docs/samples/xpath_error.cpp +43 -0
  262. package/thirdparty/pugixml/docs/samples/xpath_query.cpp +36 -0
  263. package/thirdparty/pugixml/docs/samples/xpath_select.cpp +28 -0
  264. package/thirdparty/pugixml/docs/samples/xpath_variables.cpp +38 -0
  265. package/thirdparty/pugixml/readme.txt +50 -0
  266. package/thirdparty/pugixml/scripts/archive.py +54 -0
  267. package/thirdparty/pugixml/scripts/cocoapods_push.sh +4 -0
  268. package/thirdparty/pugixml/scripts/natvis/pugixml.natvis +77 -0
  269. package/thirdparty/pugixml/scripts/natvis/pugixml_compact.natvis +506 -0
  270. package/thirdparty/pugixml/scripts/nuget/build/native/pugixml-propertiesui.xml +17 -0
  271. package/thirdparty/pugixml/scripts/nuget/build/native/pugixml.targets +28 -0
  272. package/thirdparty/pugixml/scripts/nuget/pugixml.nuspec +20 -0
  273. package/thirdparty/pugixml/scripts/nuget_build.ps1 +60 -0
  274. package/thirdparty/pugixml/scripts/premake4.lua +92 -0
  275. package/thirdparty/pugixml/scripts/pugixml-config.cmake.in +12 -0
  276. package/thirdparty/pugixml/scripts/pugixml.pc.in +11 -0
  277. package/thirdparty/pugixml/scripts/pugixml.podspec +14 -0
  278. package/thirdparty/pugixml/scripts/pugixml.xcodeproj/project.pbxproj +212 -0
  279. package/thirdparty/pugixml/scripts/pugixml_airplay.mkf +13 -0
  280. package/thirdparty/pugixml/scripts/pugixml_codeblocks.cbp +44 -0
  281. package/thirdparty/pugixml/scripts/pugixml_codelite.project +56 -0
  282. package/thirdparty/pugixml/scripts/pugixml_dll.rc +45 -0
  283. package/thirdparty/pugixml/scripts/pugixml_vs2005.vcproj +343 -0
  284. package/thirdparty/pugixml/scripts/pugixml_vs2005_static.vcproj +343 -0
  285. package/thirdparty/pugixml/scripts/pugixml_vs2008.vcproj +339 -0
  286. package/thirdparty/pugixml/scripts/pugixml_vs2008_static.vcproj +339 -0
  287. package/thirdparty/pugixml/scripts/pugixml_vs2010.vcxproj +191 -0
  288. package/thirdparty/pugixml/scripts/pugixml_vs2010_static.vcxproj +191 -0
  289. package/thirdparty/pugixml/scripts/pugixml_vs2013.vcxproj +199 -0
  290. package/thirdparty/pugixml/scripts/pugixml_vs2013_static.vcxproj +199 -0
  291. package/thirdparty/pugixml/scripts/pugixml_vs2015.vcxproj +172 -0
  292. package/thirdparty/pugixml/scripts/pugixml_vs2015_static.vcxproj +176 -0
  293. package/thirdparty/pugixml/scripts/pugixml_vs2017.vcxproj +172 -0
  294. package/thirdparty/pugixml/scripts/pugixml_vs2017_static.vcxproj +176 -0
  295. package/thirdparty/pugixml/scripts/pugixml_vs2019.vcxproj +176 -0
  296. package/thirdparty/pugixml/scripts/pugixml_vs2019_static.vcxproj +180 -0
  297. package/thirdparty/pugixml/scripts/pugixml_vs2022.vcxproj +176 -0
  298. package/thirdparty/pugixml/scripts/pugixml_vs2022_static.vcxproj +180 -0
  299. package/thirdparty/pugixml/scripts/pugixml_vs2026.vcxproj +176 -0
  300. package/thirdparty/pugixml/scripts/pugixml_vs2026_static.vcxproj +180 -0
  301. package/thirdparty/pugixml/scripts/sbom.cdx.json +47 -0
  302. package/thirdparty/pugixml/src/pugiconfig.hpp +81 -0
  303. package/thirdparty/pugixml/src/pugixml.cpp +13776 -0
  304. package/thirdparty/pugixml/src/pugixml.hpp +1604 -0
  305. package/thirdparty/pugixml/tests/allocator.cpp +175 -0
  306. package/thirdparty/pugixml/tests/allocator.hpp +10 -0
  307. package/thirdparty/pugixml/tests/autotest-appveyor.ps1 +93 -0
  308. package/thirdparty/pugixml/tests/cmake-appveyor.ps1 +57 -0
  309. package/thirdparty/pugixml/tests/data/empty.xml +0 -0
  310. package/thirdparty/pugixml/tests/data/large.xml +1 -0
  311. package/thirdparty/pugixml/tests/data/latintest_latin1.xml +1 -0
  312. package/thirdparty/pugixml/tests/data/latintest_utf8.xml +1 -0
  313. package/thirdparty/pugixml/tests/data/multiline.xml +3 -0
  314. package/thirdparty/pugixml/tests/data/small.xml +1 -0
  315. package/thirdparty/pugixml/tests/data/truncation.xml +19 -0
  316. package/thirdparty/pugixml/tests/data/utftest_utf16_be.xml +0 -0
  317. package/thirdparty/pugixml/tests/data/utftest_utf16_be_bom.xml +0 -0
  318. package/thirdparty/pugixml/tests/data/utftest_utf16_be_clean.xml +0 -0
  319. package/thirdparty/pugixml/tests/data/utftest_utf16_be_nodecl.xml +0 -0
  320. package/thirdparty/pugixml/tests/data/utftest_utf16_le.xml +0 -0
  321. package/thirdparty/pugixml/tests/data/utftest_utf16_le_bom.xml +0 -0
  322. package/thirdparty/pugixml/tests/data/utftest_utf16_le_clean.xml +0 -0
  323. package/thirdparty/pugixml/tests/data/utftest_utf16_le_nodecl.xml +0 -0
  324. package/thirdparty/pugixml/tests/data/utftest_utf32_be.xml +0 -0
  325. package/thirdparty/pugixml/tests/data/utftest_utf32_be_bom.xml +0 -0
  326. package/thirdparty/pugixml/tests/data/utftest_utf32_be_clean.xml +0 -0
  327. package/thirdparty/pugixml/tests/data/utftest_utf32_be_nodecl.xml +0 -0
  328. package/thirdparty/pugixml/tests/data/utftest_utf32_le.xml +0 -0
  329. package/thirdparty/pugixml/tests/data/utftest_utf32_le_bom.xml +0 -0
  330. package/thirdparty/pugixml/tests/data/utftest_utf32_le_clean.xml +0 -0
  331. package/thirdparty/pugixml/tests/data/utftest_utf32_le_nodecl.xml +0 -0
  332. package/thirdparty/pugixml/tests/data/utftest_utf8.xml +87 -0
  333. package/thirdparty/pugixml/tests/data/utftest_utf8_bom.xml +87 -0
  334. package/thirdparty/pugixml/tests/data/utftest_utf8_clean.xml +84 -0
  335. package/thirdparty/pugixml/tests/data/utftest_utf8_nodecl.xml +86 -0
  336. package/thirdparty/pugixml/tests/data//321/202/320/265/321/201/321/202.xml +1 -0
  337. package/thirdparty/pugixml/tests/data_fuzz_parse/basic.xml +1 -0
  338. package/thirdparty/pugixml/tests/data_fuzz_parse/doctype.xml +1 -0
  339. package/thirdparty/pugixml/tests/data_fuzz_parse/refs.xml +1 -0
  340. package/thirdparty/pugixml/tests/data_fuzz_parse/types.xml +1 -0
  341. package/thirdparty/pugixml/tests/data_fuzz_parse/utf16.xml +0 -0
  342. package/thirdparty/pugixml/tests/data_fuzz_parse/utf32.xml +0 -0
  343. package/thirdparty/pugixml/tests/data_fuzz_xpath/basic.xpath +1 -0
  344. package/thirdparty/pugixml/tests/data_fuzz_xpath/functions.xpath +1 -0
  345. package/thirdparty/pugixml/tests/data_fuzz_xpath/math.xpath +1 -0
  346. package/thirdparty/pugixml/tests/data_fuzz_xpath/path.xpath +1 -0
  347. package/thirdparty/pugixml/tests/data_fuzz_xpath/predicate.xpath +1 -0
  348. package/thirdparty/pugixml/tests/fuzz_parse.cpp +14 -0
  349. package/thirdparty/pugixml/tests/fuzz_parse.dict +72 -0
  350. package/thirdparty/pugixml/tests/fuzz_setup.sh +11 -0
  351. package/thirdparty/pugixml/tests/fuzz_xpath.cpp +46 -0
  352. package/thirdparty/pugixml/tests/fuzz_xpath.dict +72 -0
  353. package/thirdparty/pugixml/tests/helpers.hpp +114 -0
  354. package/thirdparty/pugixml/tests/main.cpp +218 -0
  355. package/thirdparty/pugixml/tests/test.cpp +220 -0
  356. package/thirdparty/pugixml/tests/test.hpp +175 -0
  357. package/thirdparty/pugixml/tests/test_compact.cpp +150 -0
  358. package/thirdparty/pugixml/tests/test_deprecated.cpp +25 -0
  359. package/thirdparty/pugixml/tests/test_document.cpp +1910 -0
  360. package/thirdparty/pugixml/tests/test_dom_modify.cpp +2122 -0
  361. package/thirdparty/pugixml/tests/test_dom_text.cpp +601 -0
  362. package/thirdparty/pugixml/tests/test_dom_traverse.cpp +1481 -0
  363. package/thirdparty/pugixml/tests/test_header_guard.cpp +3 -0
  364. package/thirdparty/pugixml/tests/test_header_iosfwd_1.cpp +3 -0
  365. package/thirdparty/pugixml/tests/test_header_iosfwd_2.cpp +3 -0
  366. package/thirdparty/pugixml/tests/test_header_iostream_1.cpp +3 -0
  367. package/thirdparty/pugixml/tests/test_header_iostream_2.cpp +3 -0
  368. package/thirdparty/pugixml/tests/test_header_only_1.cpp +21 -0
  369. package/thirdparty/pugixml/tests/test_header_only_2.cpp +21 -0
  370. package/thirdparty/pugixml/tests/test_header_string_1.cpp +3 -0
  371. package/thirdparty/pugixml/tests/test_header_string_2.cpp +3 -0
  372. package/thirdparty/pugixml/tests/test_header_string_iostream.cpp +5 -0
  373. package/thirdparty/pugixml/tests/test_memory.cpp +303 -0
  374. package/thirdparty/pugixml/tests/test_parse.cpp +1463 -0
  375. package/thirdparty/pugixml/tests/test_parse_doctype.cpp +366 -0
  376. package/thirdparty/pugixml/tests/test_unicode.cpp +152 -0
  377. package/thirdparty/pugixml/tests/test_version.cpp +5 -0
  378. package/thirdparty/pugixml/tests/test_write.cpp +757 -0
  379. package/thirdparty/pugixml/tests/test_xpath.cpp +833 -0
  380. package/thirdparty/pugixml/tests/test_xpath_api.cpp +646 -0
  381. package/thirdparty/pugixml/tests/test_xpath_functions.cpp +844 -0
  382. package/thirdparty/pugixml/tests/test_xpath_operators.cpp +566 -0
  383. package/thirdparty/pugixml/tests/test_xpath_parse.cpp +428 -0
  384. package/thirdparty/pugixml/tests/test_xpath_paths.cpp +787 -0
  385. package/thirdparty/pugixml/tests/test_xpath_paths_abbrev_w3c.cpp +219 -0
  386. package/thirdparty/pugixml/tests/test_xpath_paths_w3c.cpp +312 -0
  387. package/thirdparty/pugixml/tests/test_xpath_variables.cpp +683 -0
  388. package/thirdparty/pugixml/tests/test_xpath_xalan_1.cpp +411 -0
  389. package/thirdparty/pugixml/tests/test_xpath_xalan_2.cpp +417 -0
  390. package/thirdparty/pugixml/tests/test_xpath_xalan_3.cpp +321 -0
  391. package/thirdparty/pugixml/tests/test_xpath_xalan_4.cpp +300 -0
  392. package/thirdparty/pugixml/tests/test_xpath_xalan_5.cpp +295 -0
  393. package/thirdparty/pugixml/tests/writer_string.cpp +79 -0
  394. package/thirdparty/pugixml/tests/writer_string.hpp +27 -0
  395. package/scripts/prepare-openxlsx.js +0 -126
@@ -0,0 +1,631 @@
1
+ #=======================================================================================================================
2
+ # Preamble
3
+ #=======================================================================================================================
4
+ cmake_minimum_required(VERSION 3.15 FATAL_ERROR)
5
+ project(OpenXLSX.Library VERSION 0.5.1 LANGUAGES CXX)
6
+ set(CMAKE_DEBUG_POSTFIX d)
7
+ set(CMAKE_CXX_VISIBILITY_PRESET hidden)
8
+ set(CMAKE_VISIBILITY_INLINES_HIDDEN YES)
9
+ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
10
+
11
+ # Include utility functions
12
+ include( ${CMAKE_CURRENT_LIST_DIR}/cmake/bundle_static_library.cmake )
13
+ include( ${CMAKE_CURRENT_LIST_DIR}/cmake/patch_pkg_config.cmake )
14
+
15
+ #=======================================================================================================================
16
+ # Set project metadata
17
+ #=======================================================================================================================
18
+ set(OPENXLSX_PROJECT_VENDOR "Kenneth Troldal Balslev")
19
+ set(OPENXLSX_PROJECT_CONTACT "kenneth.balslev@gmail.com")
20
+ set(OPENXLSX_PROJECT_URL "https://github.com/troldal/OpenXLSX")
21
+ set(PROJECT_DESCRIPTION "A C++17 library for reading, writing and modifying Excel spreadsheets")
22
+
23
+ #=======================================================================================================================
24
+ # Set C/C++ compiler version
25
+ #=======================================================================================================================
26
+ set(CMAKE_CXX_STANDARD 17)
27
+ set(CMAKE_CXX_STANDARD_REQUIRED ON)
28
+ set(CMAKE_CXX_EXTENSIONS OFF)
29
+ set(IGNORE_ME ${CMAKE_C_COMPILER}) # Suppress CMake warning message
30
+
31
+ #=======================================================================================================================
32
+ # Add build options
33
+ #=======================================================================================================================
34
+ option(OPENXLSX_ENABLE_LTO "Enables Link-Time Optimization (LTO)" ON)
35
+ if (BUILD_SHARED_LIBS)
36
+ set(OPENXLSX_LIBRARY_TYPE "SHARED" CACHE STRING "Set the library type to SHARED")
37
+ else()
38
+ set(OPENXLSX_LIBRARY_TYPE "STATIC" CACHE STRING "Set the library type to STATIC")
39
+ endif()
40
+
41
+ #if (${OPENXLSX_COMPACT_MODE})
42
+ # # NOTE: compact mode currently makes no sense if system library pugixml is used
43
+ # if (NOT OPENXLSX_ENABLE_LIBPUGIXML)
44
+ # target_compile_definitions(PugiXML INTERFACE PUGIXML_COMPACT)
45
+ # endif()
46
+ #endif ()
47
+
48
+ #=======================================================================================================================
49
+ # COMPILER FEATURES
50
+ # Some older C++17 compilers don't support the char_conv features. If the compiler doesn't support it,
51
+ # a less optimal work-around will be used.
52
+ #=======================================================================================================================
53
+ include(CheckCXXSourceCompiles)
54
+ check_cxx_source_compiles("
55
+ #include <array>
56
+ #include <string>
57
+ #include <charconv>
58
+
59
+ int main() {
60
+ std::array<char, 7> str {};
61
+ auto p = std::to_chars(str.data(), str.data() + str.size(), 12345).ptr;
62
+ auto strResult = std::string(str.data(), p - str.data());
63
+
64
+ unsigned long value = 0;
65
+ std::from_chars(strResult.data(), strResult.data() + strResult.size(), value);
66
+
67
+ return 0;
68
+ }" CHARCONV_RESULT)
69
+
70
+ if (CHARCONV_RESULT)
71
+ add_compile_definitions(CHARCONV_ENABLED)
72
+ endif ()
73
+
74
+ #=======================================================================================================================
75
+ # PROJECT FILES
76
+ # List of project source files
77
+ #=======================================================================================================================
78
+ set(OPENXLSX_SOURCES
79
+ ${CMAKE_CURRENT_LIST_DIR}/sources/XLCell.cpp
80
+ ${CMAKE_CURRENT_LIST_DIR}/sources/XLCellIterator.cpp
81
+ ${CMAKE_CURRENT_LIST_DIR}/sources/XLCellRange.cpp
82
+ ${CMAKE_CURRENT_LIST_DIR}/sources/XLCellReference.cpp
83
+ ${CMAKE_CURRENT_LIST_DIR}/sources/XLCellValue.cpp
84
+ ${CMAKE_CURRENT_LIST_DIR}/sources/XLColor.cpp
85
+ ${CMAKE_CURRENT_LIST_DIR}/sources/XLColumn.cpp
86
+ ${CMAKE_CURRENT_LIST_DIR}/sources/XLComments.cpp
87
+ ${CMAKE_CURRENT_LIST_DIR}/sources/XLContentTypes.cpp
88
+ ${CMAKE_CURRENT_LIST_DIR}/sources/XLDateTime.cpp
89
+ ${CMAKE_CURRENT_LIST_DIR}/sources/XLDocument.cpp
90
+ ${CMAKE_CURRENT_LIST_DIR}/sources/XLDrawing.cpp
91
+ ${CMAKE_CURRENT_LIST_DIR}/sources/XLFormula.cpp
92
+ ${CMAKE_CURRENT_LIST_DIR}/sources/XLMergeCells.cpp
93
+ ${CMAKE_CURRENT_LIST_DIR}/sources/XLProperties.cpp
94
+ ${CMAKE_CURRENT_LIST_DIR}/sources/XLRelationships.cpp
95
+ ${CMAKE_CURRENT_LIST_DIR}/sources/XLRow.cpp
96
+ ${CMAKE_CURRENT_LIST_DIR}/sources/XLRowData.cpp
97
+ ${CMAKE_CURRENT_LIST_DIR}/sources/XLSharedStrings.cpp
98
+ ${CMAKE_CURRENT_LIST_DIR}/sources/XLSheet.cpp
99
+ ${CMAKE_CURRENT_LIST_DIR}/sources/XLStyles.cpp
100
+ ${CMAKE_CURRENT_LIST_DIR}/sources/XLTables.cpp
101
+ ${CMAKE_CURRENT_LIST_DIR}/sources/XLWorkbook.cpp
102
+ ${CMAKE_CURRENT_LIST_DIR}/sources/XLXmlData.cpp
103
+ ${CMAKE_CURRENT_LIST_DIR}/sources/XLXmlFile.cpp
104
+ ${CMAKE_CURRENT_LIST_DIR}/sources/XLXmlParser.cpp
105
+ ${CMAKE_CURRENT_LIST_DIR}/sources/XLZipArchive.cpp
106
+ )
107
+
108
+
109
+ #=======================================================================================================================
110
+ # STATIC AND SHARED LIBRARY
111
+ # Check that the input is valid
112
+ #=======================================================================================================================
113
+ if(NOT "${OPENXLSX_LIBRARY_TYPE}" STREQUAL "STATIC" AND NOT "${OPENXLSX_LIBRARY_TYPE}" STREQUAL "SHARED")
114
+ message( FATAL_ERROR "Invalid library type. Must be SHARED or STATIC." )
115
+ endif()
116
+
117
+ #=======================================================================================================================
118
+ # STATIC LIBRARY
119
+ # Define the static library
120
+ #=======================================================================================================================
121
+ if ("${OPENXLSX_LIBRARY_TYPE}" STREQUAL "STATIC")
122
+ add_library(OpenXLSX STATIC "")
123
+ add_library(OpenXLSX::OpenXLSX ALIAS OpenXLSX)
124
+ target_sources(OpenXLSX PRIVATE ${OPENXLSX_SOURCES})
125
+
126
+ target_include_directories(OpenXLSX
127
+ PUBLIC
128
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}>
129
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/headers>
130
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>) # For export header
131
+ target_include_directories(OpenXLSX
132
+ INTERFACE
133
+ $<INSTALL_INTERFACE:include/OpenXLSX>) # get install-safe include directories
134
+
135
+ target_link_libraries(OpenXLSX
136
+ PRIVATE
137
+ ${PUGIXML_TARGET})
138
+
139
+ target_link_libraries(OpenXLSX
140
+ PRIVATE
141
+ ${ZIP_LIBRARY_PROVIDED_TARGET})
142
+
143
+ if (OPENXLSX_ENABLE_NOWIDE)
144
+ if(OPENXLSX_MONOLITHIC_LIBRARY)
145
+ # nominal way to link via target_link_libraries: triggers unwanted installation of dependencies
146
+ # accordingly, for monolithic library, use target_link_interface instead of target_link_libraries
147
+ # to link only the include directories and compile definitions
148
+ target_link_interface(
149
+ LIB_NAME OpenXLSX
150
+ PRIVATE
151
+ INTERFACE_NAME nowide_interface
152
+ DEPENDENCY_ALIAS ${NOWIDE_ALIAS}
153
+ DEPENDENCY_TARGET ${NOWIDE_TARGET}
154
+ )
155
+ set(NOWIDE_INSTALL_TARGET nowide_interface)
156
+ else()
157
+ target_link_libraries(OpenXLSX
158
+ PRIVATE
159
+ ${NOWIDE_ALIAS})
160
+ if(TARGET ${NOWIDE_TARGET})
161
+ # 2026-04-04 get_target_property now accesses NOWIDE_TARGET, was wrongly accessing NOWIDE_ALIAS
162
+ get_target_property(NOWIDE_IS_IMPORTED "${NOWIDE_TARGET}" IMPORTED)
163
+ if(NOT NOWIDE_IS_IMPORTED)
164
+ set(NOWIDE_INSTALL_TARGET ${NOWIDE_TARGET})
165
+ endif()
166
+ endif()
167
+ endif()
168
+ endif ()
169
+
170
+ target_compile_definitions(OpenXLSX PUBLIC OPENXLSX_STATIC_DEFINE)
171
+
172
+ # if static combined library shall be built:
173
+ if (OPENXLSX_MONOLITHIC_LIBRARY)
174
+ list(APPEND static_libs "$<TARGET_FILE:OpenXLSX>")
175
+ list(APPEND static_libs_system "")
176
+
177
+ if("${ZIP_LIBRARY}" STREQUAL "libzip")
178
+ message( WARNING "building a monolithic OpenXLSX library with libzip is not recommended - dependencies of libzip (-lbz2 -llzma -lzstd -lssl -lcrypto -lz) will not be included. Use miniz for a truly standalone OpenXLSX library" )
179
+ endif()
180
+
181
+ list(APPEND static_libs "${pugixml_TARGET_STATIC}")
182
+ list(APPEND static_libs "${${ZIP_LIBRARY}_TARGET_STATIC}")
183
+ if(OPENXLSX_ENABLE_NOWIDE)
184
+ # list(APPEND static_libs "${Nowide_TARGET_STATIC}") # TBD: this links to generator expression $<TARGET_FILE:nowide>, which can not be resolved - requires nowide::nowide (standalone) or Boost::nowide
185
+ list(APPEND static_libs "$<TARGET_FILE:${NOWIDE_ALIAS}>")
186
+ endif()
187
+
188
+ # # Output the status of the various library targets:
189
+ # foreach(lib IN LISTS static_libs)
190
+ # message( STATUS "OpenXLSX static_libs entry is ${lib}" )
191
+ # endforeach()
192
+ bundle_static_library_simplified( OpenXLSX OpenXLSX-bundled "${static_libs}" "${static_libs_system}" )
193
+
194
+ # target_link_libraries(OpenXLSX-bundled INTERFACE OpenXLSX) # NOTE: this might not be needed at all - the bundled library is just an extra build target
195
+ # # TBD: how to correctly define link and include directories associated with OpenXLSX-bundled? The below does not work :(
196
+ # set_target_properties(OpenXLSX-bundled
197
+ # PROPERTIES
198
+ # IMPORTED_LOCATION "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>/libOpenXLSX-bundled.a"
199
+ # # INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/headers"
200
+ # INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_LIST_DIR} ${CMAKE_CURRENT_LIST_DIR}/headers"
201
+ # # INTERFACE_INCLUDE_DIRECTORIES "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}> $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/headers>"
202
+ # )
203
+ # get_target_property( includeDirs OpenXLSX-bundled INTERFACE_INCLUDE_DIRECTORIES)
204
+ # message( STATUS "OpenXLSX-bundled INTERFACE_INCLUDE_DIRECTORIES is ${includeDirs}" )
205
+
206
+ endif ()
207
+ endif ()
208
+
209
+ #=======================================================================================================================
210
+ # SHARED LIBRARY
211
+ # Define the shared library
212
+ #=======================================================================================================================
213
+ if ("${OPENXLSX_LIBRARY_TYPE}" STREQUAL "SHARED")
214
+ add_library(OpenXLSX SHARED "")
215
+ add_library(OpenXLSX::OpenXLSX ALIAS OpenXLSX)
216
+ target_sources(OpenXLSX PRIVATE ${OPENXLSX_SOURCES})
217
+ target_include_directories(OpenXLSX
218
+ PUBLIC
219
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}>
220
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/headers>
221
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>) # For export header
222
+ target_include_directories(OpenXLSX
223
+ INTERFACE
224
+ $<INSTALL_INTERFACE:include/OpenXLSX>) # get install-safe include directories
225
+
226
+ target_link_libraries(OpenXLSX
227
+ PRIVATE
228
+ ${PUGIXML_TARGET})
229
+
230
+ target_link_libraries(OpenXLSX
231
+ PRIVATE
232
+ ${ZIP_LIBRARY_PROVIDED_TARGET})
233
+
234
+ if (OPENXLSX_ENABLE_NOWIDE)
235
+ target_link_libraries(OpenXLSX
236
+ PRIVATE
237
+ ${NOWIDE_ALIAS})
238
+
239
+ if(TARGET ${NOWIDE_TARGET})
240
+ # 2026-04-04 get_target_property now accesses NOWIDE_TARGET, was wrongly accessing NOWIDE_ALIAS
241
+ get_target_property(NOWIDE_IS_IMPORTED "${NOWIDE_TARGET}" IMPORTED)
242
+ if(NOT NOWIDE_IS_IMPORTED)
243
+ set(NOWIDE_INSTALL_TARGET ${NOWIDE_TARGET})
244
+ endif()
245
+ endif()
246
+
247
+ # # link to the built archive file so that OpenXLSX does not require NOWIDE_INSTALL_TARGET to be in the export set
248
+ # target_link_libraries(OpenXLSX PRIVATE $<TARGET_FILE:${NOWIDE_INSTALL_TARGET}>)
249
+
250
+ # ensure nowide is built before OpenXLSX (so that archive exists at link time)
251
+ add_dependencies(OpenXLSX ${NOWIDE_ALIAS})
252
+
253
+ endif ()
254
+
255
+ # Enable Link-Time Optimization (LTO)
256
+ if(${OPENXLSX_ENABLE_LTO})
257
+ include(CheckIPOSupported)
258
+ check_ipo_supported(RESULT result OUTPUT output)
259
+ if (result)
260
+ set_property(TARGET OpenXLSX PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
261
+ endif ()
262
+ endif()
263
+
264
+ endif()
265
+
266
+
267
+ if (OPENXLSX_ENABLE_NOWIDE)
268
+ target_compile_definitions(OpenXLSX PRIVATE ENABLE_NOWIDE)
269
+
270
+ # ### ensure transparent include paths for the source code
271
+ # 2026-04-04 get_target_property now accesses NOWIDE_TARGET, was wrongly accessing NOWIDE_ALIAS
272
+ get_target_property(NOWIDE_INCLUDES ${NOWIDE_TARGET} INTERFACE_INCLUDE_DIRECTORIES) # get nowide include paths
273
+ set(NOWIDE_EXTRA_INCLUDE) # empty initializer
274
+ if(USE_SYSTEM_LIBS OR NOT OPENXLSX_NOWIDE_STANDALONE) # no need to add NOWIDE_EXTRA_INCLUDE for standalone downloads
275
+ list( GET NOWIDE_INCLUDES 0 NOWIDE_INCLUDE ) # ensure that NOWIDE_INCLUDE only contains a single directory entry
276
+ set(NOWIDE_EXTRA_INCLUDE "${NOWIDE_INCLUDE}/boost") # and add NOWIDE_EXTRA_INCLUDE with an appended ./boost subdirectory
277
+ target_include_directories(OpenXLSX PRIVATE ${NOWIDE_EXTRA_INCLUDE}) # should be PRIVATE for include directories that users linking against OpenXLSX shall NOT need
278
+ message( VERBOSE "NOWIDE_EXTRA_INCLUDE is ${NOWIDE_EXTRA_INCLUDE}" )
279
+ endif()
280
+
281
+ # Make determined nowide include path (if any) available to OpenXLSX Examples as explicitly named variable
282
+ set(EXAMPLES_NOWIDE_INCLUDE ${NOWIDE_EXTRA_INCLUDE} CACHE STRING "" FORCE)
283
+ endif ()
284
+
285
+ if (OPENXLSX_ENABLE_LIBZIP)
286
+ target_compile_definitions(OpenXLSX PRIVATE USE_LIBZIP)
287
+ else()
288
+ # ### ensure transparent include paths for the source code
289
+ get_target_property(MINIZ_IS_IMPORTED ${ZIP_LIBRARY_PROVIDED_TARGET} IMPORTED)
290
+ if(MINIZ_IS_IMPORTED)
291
+ get_target_property(MINIZ_INCLUDES ${ZIP_LIBRARY_PROVIDED_TARGET} INTERFACE_INCLUDE_DIRECTORIES) # get miniz include paths
292
+ set(MINIZ_EXTRA_INCLUDE) # empty initializer
293
+ # list( GET MINIZ_INCLUDES 0 MINIZ_INCLUDE ) # ensure that MINIZ_INCLUDE only contains a single directory entry
294
+ # set(MINIZ_EXTRA_INCLUDE "${MINIZ_INCLUDE}/miniz") # and add MINIZ_EXTRA_INCLUDE with an appended ./miniz subdirectory
295
+ set(MINIZ_EXTRA_INCLUDE "${MINIZ_INCLUDES}")
296
+ target_include_directories(OpenXLSX PRIVATE ${MINIZ_EXTRA_INCLUDE}) # should be PRIVATE for include directories that users linking against OpenXLSX shall NOT need
297
+ message( STATUS "MINIZ_EXTRA_INCLUDE is ${MINIZ_EXTRA_INCLUDE}" )
298
+ endif()
299
+ endif ()
300
+
301
+ # Generate export header
302
+ include(GenerateExportHeader)
303
+ generate_export_header(OpenXLSX
304
+ BASE_NAME openxlsx
305
+ EXPORT_FILE_NAME OpenXLSX-Exports.hpp
306
+ EXPORT_MACRO_NAME OPENXLSX_EXPORT
307
+ NO_EXPORT_MACRO_NAME OPENXLSX_HIDDEN)
308
+
309
+ #=======================================================================================================================
310
+ # COMPILER FLAGS
311
+ # Set compiler debug flags for GCC, Clang and MSVC.
312
+ #=======================================================================================================================
313
+ list(APPEND OPENXLSX_DEBUG_FLAGS_GNU
314
+ "-Wmisleading-indentation"
315
+ "-Wduplicated-cond"
316
+ "-Wduplicated-branches"
317
+ "-Wlogical-op"
318
+ "-Wnull-dereference")
319
+ list(APPEND OPENXLSX_DEBUG_FLAGS_GNUCLANG
320
+ "-Wall"
321
+ "-Wextra"
322
+ "-Wshadow"
323
+ "-Wnon-virtual-dtor"
324
+ "-Wold-style-cast"
325
+ "-Wcast-align"
326
+ "-Wunused"
327
+ "-Woverloaded-virtual"
328
+ "-Wpedantic"
329
+ "-Wconversion"
330
+ "-Wdouble-promotion"
331
+ "-Wformat=2"
332
+ "-Weffc++"
333
+ "-Wno-unknown-pragmas")
334
+ list(APPEND OPENXLSX_DEBUG_FLAGS_MSVC
335
+ "/permissive-"
336
+ "/W4"
337
+ "/w14242"
338
+ "/w14254"
339
+ "/w14263"
340
+ "/w14265"
341
+ "/w14287"
342
+ "/we4289"
343
+ "/w14296"
344
+ "/w14311"
345
+ "/w14545"
346
+ "/w14546"
347
+ "/w14547"
348
+ "/w14549"
349
+ "/w14555"
350
+ "/w14619"
351
+ "/w14640"
352
+ "/w14826"
353
+ "/w14905"
354
+ "/w14906"
355
+ "/w14928"
356
+ "/wd4251"
357
+ "/wd4275")
358
+ list(APPEND OPENXLSX_RELEASE_FLAGS_MSVC
359
+ "/permissive-"
360
+ "/wd4251"
361
+ "/wd4275")
362
+
363
+ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
364
+ target_compile_options(OpenXLSX PRIVATE $<$<CONFIG:Debug>:${OPENXLSX_DEBUG_FLAGS_GNU}>)
365
+
366
+ elseif (("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") OR
367
+ ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang") OR
368
+ ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU"))
369
+ target_compile_options(OpenXLSX PRIVATE $<$<CONFIG:Debug>:${OPENXLSX_DEBUG_FLAGS_GNUCLANG}>)
370
+
371
+ elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
372
+ string(REGEX REPLACE "/W[3|4]" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
373
+ target_compile_options(OpenXLSX PRIVATE $<$<CONFIG:Debug>:${OPENXLSX_DEBUG_FLAGS_MSVC}>)
374
+ target_compile_options(OpenXLSX PRIVATE $<$<CONFIG:Release>:${OPENXLSX_RELEASE_FLAGS_MSVC}>)
375
+ endif ()
376
+
377
+ #=======================================================================================================================
378
+ # Install
379
+ #=======================================================================================================================
380
+ # Some basic stuff we'll need in this section
381
+ include(GNUInstallDirs)
382
+ include(CMakePackageConfigHelpers)
383
+ set(ConfigPackageLocation ${CMAKE_INSTALL_LIBDIR}/cmake/OpenXLSX)
384
+
385
+ # Install interface headers
386
+ install(
387
+ FILES ${OPENXLSX_CXX_INTERFACE_HEADERS}
388
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/OpenXLSX/${dir}
389
+ )
390
+
391
+ # Install export header
392
+ install(
393
+ FILES ${CMAKE_CURRENT_BINARY_DIR}/OpenXLSX-Exports.hpp
394
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/OpenXLSX/headers
395
+ )
396
+
397
+ # Install OpenXLSX header files
398
+ install(DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/headers/
399
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/OpenXLSX/headers
400
+ FILES_MATCHING
401
+ PATTERN "headers/*.hpp"
402
+ PATTERN "headers/detail" EXCLUDE
403
+ )
404
+
405
+ install(
406
+ FILES ${CMAKE_CURRENT_LIST_DIR}/OpenXLSX.hpp
407
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/OpenXLSX
408
+ )
409
+
410
+
411
+ # Determine OpenXLSX dependency targets, if any
412
+ set(CMAKE_INSTALL_TARGETS_DEPS "")
413
+ if(NOT "${PUGIXML_INSTALL_TARGET}" STREQUAL "")
414
+ set(CMAKE_INSTALL_TARGETS_DEPS ${CMAKE_INSTALL_TARGETS_DEPS} ${PUGIXML_INSTALL_TARGET})
415
+ endif()
416
+ if(NOT "${ZIP_LIBRARY_INSTALL_TARGET}" STREQUAL "")
417
+ set(CMAKE_INSTALL_TARGETS_DEPS ${CMAKE_INSTALL_TARGETS_DEPS} ${ZIP_LIBRARY_INSTALL_TARGET})
418
+ endif()
419
+ if(OPENXLSX_ENABLE_NOWIDE AND NOT "${NOWIDE_INSTALL_TARGET}" STREQUAL "")
420
+ set(CMAKE_INSTALL_TARGETS_DEPS ${CMAKE_INSTALL_TARGETS_DEPS} ${NOWIDE_INSTALL_TARGET})
421
+ endif()
422
+ string(STRIP "${CMAKE_INSTALL_TARGETS_DEPS}" CMAKE_INSTALL_TARGETS_DEPS)
423
+
424
+ # Install OpenXLSX dependencies, if any
425
+ if(NOT "${CMAKE_INSTALL_TARGETS_DEPS}" STREQUAL "") # TODO: test when all dependencies are available locally
426
+ install(
427
+ TARGETS ${CMAKE_INSTALL_TARGETS_DEPS}
428
+ EXPORT OpenXLSXTargets
429
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/OpenXLSX # shared objects
430
+ COMPONENT lib
431
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/OpenXLSX # static libs
432
+ COMPONENT lib
433
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}/OpenXLSX # executables, if any
434
+ COMPONENT bin
435
+ # INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/OpenXLSX # not needed due to use of target_include_directories with BUILD_INTERFACE for dependencies
436
+ )
437
+ endif()
438
+
439
+ # OpenXLSX install targets
440
+ install(
441
+ TARGETS OpenXLSX
442
+ EXPORT OpenXLSXTargets
443
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} # shared objects
444
+ COMPONENT lib
445
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} # static libs
446
+ COMPONENT lib
447
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} # executables, if any
448
+ COMPONENT bin
449
+ # INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} # not needed due to use of target_include_directories with BUILD_INTERFACE and INSTALL_INTERFACE
450
+ )
451
+
452
+ set_target_properties(OpenXLSX PROPERTIES FOLDER libs VERSION ${OPENXLSX_MAJOR_VERSION}.${OPENXLSX_MINOR_VERSION}.${OPENXLSX_MICRO_VERSION} SOVERSION ${OPENXLSX_MAJOR_VERSION})
453
+ # Ensure that an installed version of OpenXLSX refers to a relative runpath
454
+ set_target_properties(OpenXLSX PROPERTIES
455
+ INSTALL_RPATH "\$ORIGIN:\$ORIGIN/OpenXLSX"
456
+ BUILD_RPATH "\$ORIGIN"
457
+ INSTALL_RPATH_USE_LINK_PATH TRUE
458
+ )
459
+
460
+ # Package version
461
+ write_basic_package_version_file(
462
+ "${CMAKE_CURRENT_BINARY_DIR}/OpenXLSX/OpenXLSXConfigVersion.cmake"
463
+ VERSION ${OpenXLSX_VERSION}
464
+ COMPATIBILITY AnyNewerVersion
465
+ )
466
+ install(
467
+ FILES
468
+ OpenXLSXConfig.cmake
469
+ "${CMAKE_CURRENT_BINARY_DIR}/OpenXLSX/OpenXLSXConfigVersion.cmake"
470
+ DESTINATION ${ConfigPackageLocation}
471
+ )
472
+
473
+ # Package configuration
474
+ configure_file(OpenXLSXConfig.cmake
475
+ "${CMAKE_CURRENT_BINARY_DIR}/OpenXLSX/OpenXLSXConfig.cmake"
476
+ COPYONLY
477
+ )
478
+
479
+ # Package export targets
480
+ export(
481
+ EXPORT OpenXLSXTargets
482
+ FILE "${CMAKE_CURRENT_BINARY_DIR}/OpenXLSX/OpenXLSXTargets.cmake"
483
+ NAMESPACE OpenXLSX::
484
+ )
485
+ install(
486
+ EXPORT OpenXLSXTargets
487
+ FILE OpenXLSXTargets.cmake
488
+ NAMESPACE OpenXLSX::
489
+ DESTINATION ${ConfigPackageLocation}
490
+ )
491
+
492
+
493
+ #=======================================================================================================================
494
+ # PkgConfig: Establish a pkg-config file for the library
495
+ #=======================================================================================================================
496
+ # message( STATUS "CMAKE_CURRENT_SOURCE_DIR is ${CMAKE_CURRENT_SOURCE_DIR}" )
497
+ # message( STATUS "CMAKE_LIBRARY_OUTPUT_DIRECTORY is ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}" )
498
+
499
+ # message( STATUS "PROJECT_NAME is ${PROJECT_NAME}" )
500
+ # message( STATUS "CMAKE_PROJECT_NAME is ${CMAKE_PROJECT_NAME}" )
501
+ # message( STATUS "CMAKE_CURRENT_BINARY_DIR is ${CMAKE_CURRENT_BINARY_DIR}" )
502
+ #
503
+ # message( STATUS "CMAKE_INSTALL_PREFIX is ${CMAKE_INSTALL_PREFIX}" )
504
+ # message( STATUS "CMAKE_INSTALL_INCLUDEDIR is ${CMAKE_INSTALL_INCLUDEDIR}" )
505
+ # message( STATUS "PROJECT_DESCRIPTION is ${PROJECT_DESCRIPTION}" )
506
+ # message( STATUS "PROJECT_HOMEPAGE_URL is ${PROJECT_HOMEPAGE_URL}" )
507
+ # message( STATUS "PROJECT_VERSION is ${PROJECT_VERSION}" )
508
+ # message( STATUS "CMAKE_INSTALL_DATAROOTDIR is ${CMAKE_INSTALL_DATAROOTDIR}" )
509
+ #
510
+ # message( STATUS "CMAKE_INSTALL_LIBDIR is ${CMAKE_INSTALL_LIBDIR}" )
511
+ # message( STATUS "CMAKE_INSTALL_BINDIR is ${CMAKE_INSTALL_BINDIR}" )
512
+
513
+ # message( STATUS ">> CMAKE_CURRENT_LIST_DIR is ${CMAKE_CURRENT_LIST_DIR}" )
514
+
515
+ # Write the template for the package config file
516
+ set(PUGIXML_PKGCONFIG_FILE "pugixml")
517
+ if(TARGET ${PUGIXML_INSTALL_TARGET})
518
+ # pugixml is installed by OpenXLSX
519
+ set(PUGIXML_PKGCONFIG_FILE "pugixml-OpenXLSX")
520
+ endif()
521
+ set(ZIP_LIBRARY_PKGCONFIG_FILE "${ZIP_LIBRARY}")
522
+ if(TARGET ${ZIP_LIBRARY_INSTALL_TARGET})
523
+ set(ZIP_LIBRARY_PKGCONFIG_FILE "${ZIP_LIBRARY}-OpenXLSX")
524
+ endif()
525
+
526
+ file(WRITE ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${OPENXLSX_LIBRARY_NAME}.pc.in.in
527
+ "prefix=@DEFERRED@CMAKE_INSTALL_PREFIX@DEFERRED@\n"
528
+ "exec_prefix=\${prefix}\n"
529
+ "includedir=\${prefix}/@CMAKE_INSTALL_INCLUDEDIR@/@OPENXLSX_LIBRARY_NAME@\n" # includedir=${prefix}/include
530
+ "libdir=\${exec_prefix}/lib\n"
531
+ "\n"
532
+ "Name: @OPENXLSX_LIBRARY_NAME@\n"
533
+ "Description: @PROJECT_DESCRIPTION@\n"
534
+ "URL: @PROJECT_HOMEPAGE_URL@\n"
535
+ "Version: @PROJECT_VERSION@\n"
536
+ "Cflags: -I\"\${includedir}\"\n" # Cflags: -I${includedir}
537
+ "Requires.private: ${PUGIXML_PKGCONFIG_FILE} >= 1.15 ${ZIP_LIBRARY_PKGCONFIG_FILE}\n"
538
+ "Libs: -L\${libdir} -Wl,-rpath,\${libdir} -lOpenXLSX\n"
539
+ "Libs.private: \n")
540
+
541
+ if(NOT OPENXLSX_ENABLE_LIBZIP)
542
+ file(WRITE ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/miniz.pc.in.in
543
+ "prefix=@DEFERRED@CMAKE_INSTALL_PREFIX@DEFERRED@\n"
544
+ "exec_prefix=\${prefix}\n"
545
+ "includedir=\${prefix}/include\n"
546
+ "libdir=\${exec_prefix}/lib/@OPENXLSX_LIBRARY_NAME@\n"
547
+ "\n"
548
+ "Name: miniz\n"
549
+ "Description: zip implementation\n"
550
+ "URL: https://github.com/richgel999/miniz\n"
551
+ "Version: 3.0.2\n" # TBD how to determine actual version
552
+ "Cflags: -I\${includedir}\n"
553
+ "Libs: -L\${libdir} -lminiz\n")
554
+ endif()
555
+
556
+ # Let CMake fill in the variables in the package config template
557
+ set( DEFERRED "@" )
558
+ configure_file(
559
+ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${OPENXLSX_LIBRARY_NAME}.pc.in.in
560
+ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${OPENXLSX_LIBRARY_NAME}.pc.in
561
+ @ONLY
562
+ )
563
+ if(NOT OPENXLSX_ENABLE_LIBZIP)
564
+ configure_file(
565
+ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/miniz.pc.in.in
566
+ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/miniz.pc.in
567
+ @ONLY
568
+ )
569
+ endif()
570
+
571
+ # Fix @DEFERRED@ variables that are not known until install time (CMAKE_INSTALL_PREFIX)
572
+ install(
573
+ CODE "configure_file(\"${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${OPENXLSX_LIBRARY_NAME}.pc.in\" \"${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${OPENXLSX_LIBRARY_NAME}.pc\" @ONLY)"
574
+ )
575
+ set(ZIP_LIBRARY_PKGCONFIG_SHOULD_EXIST FALSE)
576
+ if(NOT OPENXLSX_ENABLE_LIBZIP)
577
+ install(
578
+ CODE "configure_file(\"${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/miniz.pc.in\" \"${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/miniz.pc\" @ONLY)"
579
+ )
580
+ set(ZIP_LIBRARY_PKGCONFIG_SHOULD_EXIST TRUE) # For a file generated at build time, EXISTS can not be trivially verified, so use this boolean as a crutch
581
+ endif()
582
+
583
+
584
+ # Finally: install the package config files
585
+ set(PKGCONFIG_SUBDIR "pkgconfig")
586
+
587
+ install(
588
+ FILES "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${OPENXLSX_LIBRARY_NAME}.pc"
589
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/${PKGCONFIG_SUBDIR}"
590
+ )
591
+
592
+
593
+ # Install the pugixml package config file
594
+ if(TARGET ${PUGIXML_INSTALL_TARGET})
595
+ message( DEBUG "${PUGIXML_TARGET} is pulled in from an external source" )
596
+ # get_target_property(PUGIXML_IS_IMPORTED "${PUGIXML_INSTALL_TARGET}" IMPORTED)
597
+ message( DEBUG "pugixml_BINARY_DIR is ${pugixml_BINARY_DIR}" )
598
+ set(LIBPUGIXML_PC "${pugixml_BINARY_DIR}/pugixml.pc")
599
+ if(EXISTS "${LIBPUGIXML_PC}")
600
+ install(CODE "message(STATUS \"Installing package config file for ${PUGIXML_INSTALL_TARGET}...\")")
601
+ set(PUGIXML_PKGCONFIG_PATCHED "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/pugixml-patched.pc")
602
+ pkg_config_add_library_subdir("${LIBPUGIXML_PC}" "${PUGIXML_PKGCONFIG_PATCHED}" OpenXLSX) # prefix "Libs:" config with add -L{exec_prefix}/lib/OpenXLSX
603
+ install(
604
+ FILES "${PUGIXML_PKGCONFIG_PATCHED}"
605
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/${PKGCONFIG_SUBDIR}"
606
+ RENAME "${PUGIXML_PKGCONFIG_FILE}.pc"
607
+ )
608
+ endif()
609
+ endif()
610
+
611
+ # Install the zip library package config file, if any
612
+ if(TARGET ${ZIP_LIBRARY_INSTALL_TARGET})
613
+ message( DEBUG "${ZIP_LIBRARY} is pulled in from an external source" )
614
+ if(OPENXLSX_ENABLE_LIBZIP)
615
+ message( DEBUG "libzip_BINARY_DIR is ${libzip_BINARY_DIR}" )
616
+ set(ZIP_LIBRARY_PKGCONFIG_SOURCE "${libzip_BINARY_DIR}/libzip.pc")
617
+ set(ZIP_LIBRARY_PKGCONFIG_PATCHED "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libzip-patched.pc")
618
+ pkg_config_add_library_subdir("${ZIP_LIBRARY_PKGCONFIG_SOURCE}" "${ZIP_LIBRARY_PKGCONFIG_PATCHED}" OpenXLSX) # prefix "Libs:" config with add -L{exec_prefix}/lib/OpenXLSX
619
+ else()
620
+ set(ZIP_LIBRARY_PKGCONFIG_PATCHED "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/miniz.pc")
621
+ endif()
622
+
623
+ if(ZIP_LIBRARY_PKGCONFIG_SHOULD_EXIST OR EXISTS "${ZIP_LIBRARY_PKGCONFIG_SOURCE}")
624
+ install(CODE "message(STATUS \"Installing package config file for ${ZIP_LIBRARY_INSTALL_TARGET}...\")")
625
+ install(
626
+ FILES "${ZIP_LIBRARY_PKGCONFIG_PATCHED}"
627
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/${PKGCONFIG_SUBDIR}"
628
+ RENAME "${ZIP_LIBRARY_PKGCONFIG_FILE}.pc"
629
+ )
630
+ endif()
631
+ endif()