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.
- package/NitroXlsx.podspec +27 -27
- package/Package.swift +35 -10
- package/README.md +220 -58
- package/android/CMakeLists.txt +24 -27
- package/android/cpp-adapter.cpp +12 -0
- package/android/src/main/java/com/margelo/nitro/xlsx/NitroXlsxPackage.kt +9 -0
- package/cpp/HybridNitroXlsx.cpp +25 -179
- package/cpp/HybridNitroXlsx.hpp +2 -2
- package/cpp/HybridXlsxConditionalFormat.cpp +252 -0
- package/cpp/HybridXlsxConditionalFormat.hpp +62 -0
- package/cpp/HybridXlsxConditionalFormats.cpp +46 -0
- package/cpp/HybridXlsxConditionalFormats.hpp +28 -0
- package/cpp/HybridXlsxWorkbook.cpp +159 -196
- package/cpp/HybridXlsxWorkbook.hpp +7 -2
- package/cpp/HybridXlsxWorksheet.cpp +433 -62
- package/cpp/HybridXlsxWorksheet.hpp +73 -26
- package/cpp/XlsxCacheDir.cpp +76 -0
- package/cpp/XlsxCacheDir.hpp +27 -0
- package/cpp/XlsxError.hpp +68 -0
- package/cpp/XlsxJson.cpp +185 -0
- package/cpp/XlsxJson.hpp +36 -0
- package/ios/XlsxCacheDir.mm +60 -0
- package/nitrogen/generated/android/NitroXlsx+autolinking.cmake +2 -0
- package/nitrogen/generated/shared/c++/HybridNitroXlsxSpec.hpp +5 -3
- package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatSpec.cpp +54 -0
- package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatSpec.hpp +95 -0
- package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatsSpec.cpp +24 -0
- package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatsSpec.hpp +68 -0
- package/nitrogen/generated/shared/c++/HybridXlsxWorkbookSpec.cpp +3 -0
- package/nitrogen/generated/shared/c++/HybridXlsxWorkbookSpec.hpp +6 -1
- package/nitrogen/generated/shared/c++/HybridXlsxWorksheetSpec.cpp +47 -19
- package/nitrogen/generated/shared/c++/HybridXlsxWorksheetSpec.hpp +52 -20
- package/package.json +3 -3
- package/scripts/run-cpp-tests.sh +14 -0
- package/src/__mocks__/react-native-nitro-modules.ts +1 -0
- package/src/__tests__/index.test.ts +76 -7
- package/src/index.ts +107 -18
- package/src/specs/NitroXlsx.nitro.ts +141 -44
- package/thirdparty/OpenXLSX/.clang-format +118 -0
- package/thirdparty/OpenXLSX/.clang-tidy +28 -0
- package/thirdparty/OpenXLSX/.gitignore +130 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_before_XMLNode_wrappers +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_and_stripping +49 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_char_support +49 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_support +49 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespaced_name_disabled +49 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-08-11-benchmarks_post-XLCellIterator-Rework +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-08-14-benchmarks_post-default-row-column-style-support +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-09-02-benchmarks +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-12-19-benchmarks +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-12-30-benchmarks-post-XLSharedStrings-by-ref +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-01-09-benchmarks-post-conditionalFormatsAndSheetProtection +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-01-10-benchmarks-post-XLCellValue-bugfix +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-01-31-benchmarks-post-XLComments-implementation +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-02-02-benchmarks-post-XLRowIterator-Rework +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-07-20-benchmarks-after-hiding-pugixml-internals +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-08-29-benchmarks-after-code-review-with-libzip +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/Benchmark.cpp +249 -0
- package/thirdparty/OpenXLSX/Benchmarks/CMakeLists.txt +19 -0
- package/thirdparty/OpenXLSX/CMakeLists.txt +466 -0
- package/thirdparty/OpenXLSX/Documentation/CMakeLists.txt +31 -0
- package/thirdparty/OpenXLSX/Documentation/Doxyfile.in +2471 -0
- package/thirdparty/OpenXLSX/Documentation/DoxygenLayout.xml +194 -0
- package/thirdparty/OpenXLSX/Documentation/customdoxygen.css +1355 -0
- package/thirdparty/OpenXLSX/Examples/CMakeLists.txt +103 -0
- package/thirdparty/OpenXLSX/Examples/Demo1.cpp +279 -0
- package/thirdparty/OpenXLSX/Examples/Demo10.cpp +545 -0
- package/thirdparty/OpenXLSX/Examples/Demo1A.cpp +137 -0
- package/thirdparty/OpenXLSX/Examples/Demo2.cpp +65 -0
- package/thirdparty/OpenXLSX/Examples/Demo3.cpp +89 -0
- package/thirdparty/OpenXLSX/Examples/Demo4.cpp +86 -0
- package/thirdparty/OpenXLSX/Examples/Demo5.cpp +77 -0
- package/thirdparty/OpenXLSX/Examples/Demo6.cpp +103 -0
- package/thirdparty/OpenXLSX/Examples/Demo7.cpp +79 -0
- package/thirdparty/OpenXLSX/Examples/Demo8.cpp +117 -0
- package/thirdparty/OpenXLSX/Examples/Demo9.cpp +363 -0
- package/thirdparty/OpenXLSX/Examples/cmake/FindLIBZIP.cmake +61 -0
- package/thirdparty/OpenXLSX/Examples/external/CustomZip/CustomZip.hpp +256 -0
- package/thirdparty/OpenXLSX/LICENSE.md +29 -0
- package/thirdparty/OpenXLSX/Makefile.GNU +530 -0
- package/thirdparty/OpenXLSX/Notes/TBDs.txt +16 -0
- package/thirdparty/OpenXLSX/Notes/confirmed-TBCs.txt +8 -0
- package/thirdparty/OpenXLSX/Notes/styles-missing-support.xml +12 -0
- package/thirdparty/OpenXLSX/Notes/todo-list.txt +108 -0
- package/thirdparty/OpenXLSX/OpenXLSX/CMakeLists.txt +631 -0
- package/thirdparty/OpenXLSX/OpenXLSX/OpenXLSX.hpp +63 -0
- package/thirdparty/OpenXLSX/OpenXLSX/OpenXLSXConfig.cmake +11 -0
- package/thirdparty/OpenXLSX/OpenXLSX/cmake/bundle_static_library.cmake +198 -0
- package/thirdparty/OpenXLSX/OpenXLSX/cmake/patch_pkg_config.cmake +69 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/IZipArchive.hpp +361 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX-Exports.hpp +12 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCell.hpp +367 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellIterator.hpp +252 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellRange.hpp +223 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellReference.hpp +317 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellValue.hpp +793 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLColor.hpp +232 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLColumn.hpp +159 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCommandQuery.hpp +228 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLComments.hpp +270 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLConstants.hpp +18 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLContentTypes.hpp +264 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDateTime.hpp +175 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDocument.hpp +505 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDrawing.hpp +452 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLException.hpp +161 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLFormula.hpp +375 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLIterator.hpp +40 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLMergeCells.hpp +216 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLProperties.hpp +348 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRelationships.hpp +348 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRow.hpp +721 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRowData.hpp +488 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLSharedStrings.hpp +204 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLSheet.hpp +1640 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLStyles.hpp +2390 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLTables.hpp +132 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLWorkbook.hpp +404 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlData.hpp +283 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlFile.hpp +194 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlParser.hpp +282 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlParserForwardDeclarations.hpp +85 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLZipArchive.hpp +232 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/LibZip.hpp +447 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/OpenXLSXFileSystemTools.hpp +207 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/Zippy.hpp +1375 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCell.cpp +340 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellIterator.cpp +427 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellRange.cpp +221 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellReference.cpp +408 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellValue.cpp +519 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLColor.cpp +202 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLColumn.cpp +141 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLComments.cpp +637 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLContentTypes.cpp +329 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDateTime.cpp +269 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDocument.cpp +1678 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDrawing.cpp +784 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLFormula.cpp +201 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLMergeCells.cpp +357 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLProperties.cpp +810 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRelationships.cpp +529 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRow.cpp +918 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRowData.cpp +508 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLSharedStrings.cpp +220 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLSheet.cpp +1970 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLStyles.cpp +3014 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLTables.cpp +125 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLWorkbook.cpp +784 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlData.cpp +247 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlFile.cpp +160 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlParser.cpp +261 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLZipArchive.cpp +266 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/utilities/XLUtilities.hpp +478 -0
- package/thirdparty/OpenXLSX/README.md +1279 -0
- package/thirdparty/OpenXLSX/Scripts/cmake-cleanup.sh +102 -0
- package/thirdparty/OpenXLSX/Scripts/compile.sh +23 -0
- package/thirdparty/OpenXLSX/Scripts/demos-cleanup.sh +25 -0
- package/thirdparty/OpenXLSX/Scripts/demos-run-all.sh +60 -0
- package/thirdparty/OpenXLSX/Scripts/guarded-xml-format.sh +47 -0
- package/thirdparty/OpenXLSX/Scripts/make-gnu.sh +11 -0
- package/thirdparty/OpenXLSX/Scripts/uninstall-manifest.sh +48 -0
- package/thirdparty/OpenXLSX/Scripts/xml-format-all.sh +19 -0
- package/thirdparty/OpenXLSX/Scripts/xml-format.sh +38 -0
- package/thirdparty/OpenXLSX/Tests/CMakeLists.txt +37 -0
- package/thirdparty/OpenXLSX/Tests/catch/catch.hpp +17799 -0
- package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_automake.hpp +68 -0
- package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_sonarqube.hpp +182 -0
- package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_tap.hpp +278 -0
- package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_teamcity.hpp +212 -0
- package/thirdparty/OpenXLSX/Tests/main.cpp +55 -0
- package/thirdparty/OpenXLSX/Tests/testXLCell.cpp +176 -0
- package/thirdparty/OpenXLSX/Tests/testXLCellRange.cpp +180 -0
- package/thirdparty/OpenXLSX/Tests/testXLCellReference.cpp +160 -0
- package/thirdparty/OpenXLSX/Tests/testXLCellValue.cpp +366 -0
- package/thirdparty/OpenXLSX/Tests/testXLCellValueProxy.cpp +255 -0
- package/thirdparty/OpenXLSX/Tests/testXLColor.cpp +75 -0
- package/thirdparty/OpenXLSX/Tests/testXLDateTime.cpp +229 -0
- package/thirdparty/OpenXLSX/Tests/testXLDocument.cpp +197 -0
- package/thirdparty/OpenXLSX/Tests/testXLFormula.cpp +131 -0
- package/thirdparty/OpenXLSX/Tests/testXLRow.cpp +597 -0
- package/thirdparty/OpenXLSX/Tests/testXLSheet.cpp +77 -0
- package/thirdparty/OpenXLSX/Tests/ziptest-with-libs.cpp +88 -0
- package/thirdparty/OpenXLSX/Tests/ziptest.cpp +735 -0
- package/thirdparty/OpenXLSX/cmake/get-git-HEAD-ID.cmake +45 -0
- package/thirdparty/OpenXLSX/cmake/libopenxlsxCPackOptions.cmake.in +20 -0
- package/thirdparty/OpenXLSX/cmake/manage_dependency.cmake +813 -0
- package/thirdparty/OpenXLSX/cmake/recursive_library_type_test.cmake +52 -0
- package/thirdparty/OpenXLSX/gnu-make-crutch/OpenXLSX-Exports-shared.hpp +42 -0
- package/thirdparty/OpenXLSX/gnu-make-crutch/OpenXLSX-Exports-static.hpp +42 -0
- package/thirdparty/OpenXLSX/vcpkg.json +24 -0
- package/thirdparty/README.md +42 -0
- package/thirdparty/miniz/.clang-format +47 -0
- package/thirdparty/miniz/.travis.yml +2 -0
- package/thirdparty/miniz/CMakeLists.txt +333 -0
- package/thirdparty/miniz/CMakePresets.json +31 -0
- package/thirdparty/miniz/ChangeLog.md +272 -0
- package/thirdparty/miniz/Config.cmake.in +1 -0
- package/thirdparty/miniz/LICENSE +22 -0
- package/thirdparty/miniz/amalgamate.sh +57 -0
- package/thirdparty/miniz/examples/example1.c +105 -0
- package/thirdparty/miniz/examples/example2.c +164 -0
- package/thirdparty/miniz/examples/example3.c +269 -0
- package/thirdparty/miniz/examples/example4.c +102 -0
- package/thirdparty/miniz/examples/example5.c +327 -0
- package/thirdparty/miniz/examples/example6.c +189 -0
- package/thirdparty/miniz/meson.build +21 -0
- package/thirdparty/miniz/miniz.c +646 -0
- package/thirdparty/miniz/miniz.h +615 -0
- package/thirdparty/miniz/miniz.pc.in +13 -0
- package/thirdparty/miniz/miniz_common.h +89 -0
- package/thirdparty/miniz/miniz_export.h +20 -0
- package/thirdparty/miniz/miniz_tdef.c +1602 -0
- package/thirdparty/miniz/miniz_tdef.h +199 -0
- package/thirdparty/miniz/miniz_tinfl.c +778 -0
- package/thirdparty/miniz/miniz_tinfl.h +150 -0
- package/thirdparty/miniz/miniz_zip.c +4895 -0
- package/thirdparty/miniz/miniz_zip.h +454 -0
- package/thirdparty/miniz/readme.md +46 -0
- package/thirdparty/miniz/test.sh +36 -0
- package/thirdparty/miniz/tests/add_in_place_fuzzer.c +87 -0
- package/thirdparty/miniz/tests/catch_amalgamated.cpp +10795 -0
- package/thirdparty/miniz/tests/catch_amalgamated.hpp +13143 -0
- package/thirdparty/miniz/tests/checksum_fuzzer.c +26 -0
- package/thirdparty/miniz/tests/compress_fuzzer.c +91 -0
- package/thirdparty/miniz/tests/flush_fuzzer.c +88 -0
- package/thirdparty/miniz/tests/fuzz_main.c +55 -0
- package/thirdparty/miniz/tests/large_fuzzer.c +133 -0
- package/thirdparty/miniz/tests/main.cpp +185 -0
- package/thirdparty/miniz/tests/miniz_tdefl_fuzzer.cc +115 -0
- package/thirdparty/miniz/tests/miniz_tester.cpp +1881 -0
- package/thirdparty/miniz/tests/miniz_zip_validate_fuzzer.cc +71 -0
- package/thirdparty/miniz/tests/miniz_zip_writer_fuzzer.cc +96 -0
- package/thirdparty/miniz/tests/ossfuzz.sh +48 -0
- package/thirdparty/miniz/tests/small_fuzzer.c +126 -0
- package/thirdparty/miniz/tests/timer.cpp +152 -0
- package/thirdparty/miniz/tests/timer.h +40 -0
- package/thirdparty/miniz/tests/uncompress2_fuzzer.c +21 -0
- package/thirdparty/miniz/tests/uncompress_fuzzer.c +30 -0
- package/thirdparty/miniz/tests/zip.dict +9 -0
- package/thirdparty/miniz/tests/zip_fuzzer.c +63 -0
- package/thirdparty/pugixml/.codecov.yml +7 -0
- package/thirdparty/pugixml/.gitattributes +1 -0
- package/thirdparty/pugixml/CMakeLists.txt +330 -0
- package/thirdparty/pugixml/LICENSE.md +24 -0
- package/thirdparty/pugixml/Makefile +98 -0
- package/thirdparty/pugixml/README.md +81 -0
- package/thirdparty/pugixml/SECURITY.md +9 -0
- package/thirdparty/pugixml/appveyor.yml +50 -0
- package/thirdparty/pugixml/docs/config.adoc +7 -0
- package/thirdparty/pugixml/docs/images/dom_tree.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_link1.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_link2.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_pch1.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_pch2.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_pch3.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_pch4.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2010_link1.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2010_link2.png +0 -0
- package/thirdparty/pugixml/docs/manual.adoc +3326 -0
- package/thirdparty/pugixml/docs/manual.html +6395 -0
- package/thirdparty/pugixml/docs/quickstart.adoc +287 -0
- package/thirdparty/pugixml/docs/quickstart.html +1107 -0
- package/thirdparty/pugixml/docs/samples/character.xml +8 -0
- package/thirdparty/pugixml/docs/samples/custom_memory_management.cpp +27 -0
- package/thirdparty/pugixml/docs/samples/include.cpp +64 -0
- package/thirdparty/pugixml/docs/samples/load_error_handling.cpp +33 -0
- package/thirdparty/pugixml/docs/samples/load_file.cpp +16 -0
- package/thirdparty/pugixml/docs/samples/load_memory.cpp +66 -0
- package/thirdparty/pugixml/docs/samples/load_options.cpp +30 -0
- package/thirdparty/pugixml/docs/samples/load_stream.cpp +97 -0
- package/thirdparty/pugixml/docs/samples/modify_add.cpp +29 -0
- package/thirdparty/pugixml/docs/samples/modify_base.cpp +43 -0
- package/thirdparty/pugixml/docs/samples/modify_remove.cpp +27 -0
- package/thirdparty/pugixml/docs/samples/save_custom_writer.cpp +116 -0
- package/thirdparty/pugixml/docs/samples/save_declaration.cpp +27 -0
- package/thirdparty/pugixml/docs/samples/save_file.cpp +17 -0
- package/thirdparty/pugixml/docs/samples/save_options.cpp +48 -0
- package/thirdparty/pugixml/docs/samples/save_stream.cpp +18 -0
- package/thirdparty/pugixml/docs/samples/save_subtree.cpp +26 -0
- package/thirdparty/pugixml/docs/samples/text.cpp +35 -0
- package/thirdparty/pugixml/docs/samples/transitions.xml +7 -0
- package/thirdparty/pugixml/docs/samples/traverse_base.cpp +51 -0
- package/thirdparty/pugixml/docs/samples/traverse_iter.cpp +27 -0
- package/thirdparty/pugixml/docs/samples/traverse_predicate.cpp +48 -0
- package/thirdparty/pugixml/docs/samples/traverse_rangefor.cpp +32 -0
- package/thirdparty/pugixml/docs/samples/traverse_walker.cpp +35 -0
- package/thirdparty/pugixml/docs/samples/tree.xml +12 -0
- package/thirdparty/pugixml/docs/samples/weekly-shift_jis.xml +78 -0
- package/thirdparty/pugixml/docs/samples/weekly-utf-16.xml +0 -0
- package/thirdparty/pugixml/docs/samples/weekly-utf-8.xml +78 -0
- package/thirdparty/pugixml/docs/samples/xgconsole.xml +12 -0
- package/thirdparty/pugixml/docs/samples/xpath_error.cpp +43 -0
- package/thirdparty/pugixml/docs/samples/xpath_query.cpp +36 -0
- package/thirdparty/pugixml/docs/samples/xpath_select.cpp +28 -0
- package/thirdparty/pugixml/docs/samples/xpath_variables.cpp +38 -0
- package/thirdparty/pugixml/readme.txt +50 -0
- package/thirdparty/pugixml/scripts/archive.py +54 -0
- package/thirdparty/pugixml/scripts/cocoapods_push.sh +4 -0
- package/thirdparty/pugixml/scripts/natvis/pugixml.natvis +77 -0
- package/thirdparty/pugixml/scripts/natvis/pugixml_compact.natvis +506 -0
- package/thirdparty/pugixml/scripts/nuget/build/native/pugixml-propertiesui.xml +17 -0
- package/thirdparty/pugixml/scripts/nuget/build/native/pugixml.targets +28 -0
- package/thirdparty/pugixml/scripts/nuget/pugixml.nuspec +20 -0
- package/thirdparty/pugixml/scripts/nuget_build.ps1 +60 -0
- package/thirdparty/pugixml/scripts/premake4.lua +92 -0
- package/thirdparty/pugixml/scripts/pugixml-config.cmake.in +12 -0
- package/thirdparty/pugixml/scripts/pugixml.pc.in +11 -0
- package/thirdparty/pugixml/scripts/pugixml.podspec +14 -0
- package/thirdparty/pugixml/scripts/pugixml.xcodeproj/project.pbxproj +212 -0
- package/thirdparty/pugixml/scripts/pugixml_airplay.mkf +13 -0
- package/thirdparty/pugixml/scripts/pugixml_codeblocks.cbp +44 -0
- package/thirdparty/pugixml/scripts/pugixml_codelite.project +56 -0
- package/thirdparty/pugixml/scripts/pugixml_dll.rc +45 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2005.vcproj +343 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2005_static.vcproj +343 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2008.vcproj +339 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2008_static.vcproj +339 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2010.vcxproj +191 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2010_static.vcxproj +191 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2013.vcxproj +199 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2013_static.vcxproj +199 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2015.vcxproj +172 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2015_static.vcxproj +176 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2017.vcxproj +172 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2017_static.vcxproj +176 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2019.vcxproj +176 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2019_static.vcxproj +180 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2022.vcxproj +176 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2022_static.vcxproj +180 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2026.vcxproj +176 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2026_static.vcxproj +180 -0
- package/thirdparty/pugixml/scripts/sbom.cdx.json +47 -0
- package/thirdparty/pugixml/src/pugiconfig.hpp +81 -0
- package/thirdparty/pugixml/src/pugixml.cpp +13776 -0
- package/thirdparty/pugixml/src/pugixml.hpp +1604 -0
- package/thirdparty/pugixml/tests/allocator.cpp +175 -0
- package/thirdparty/pugixml/tests/allocator.hpp +10 -0
- package/thirdparty/pugixml/tests/autotest-appveyor.ps1 +93 -0
- package/thirdparty/pugixml/tests/cmake-appveyor.ps1 +57 -0
- package/thirdparty/pugixml/tests/data/empty.xml +0 -0
- package/thirdparty/pugixml/tests/data/large.xml +1 -0
- package/thirdparty/pugixml/tests/data/latintest_latin1.xml +1 -0
- package/thirdparty/pugixml/tests/data/latintest_utf8.xml +1 -0
- package/thirdparty/pugixml/tests/data/multiline.xml +3 -0
- package/thirdparty/pugixml/tests/data/small.xml +1 -0
- package/thirdparty/pugixml/tests/data/truncation.xml +19 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_be.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_be_bom.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_be_clean.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_be_nodecl.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_le.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_le_bom.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_le_clean.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_le_nodecl.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_be.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_be_bom.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_be_clean.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_be_nodecl.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_le.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_le_bom.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_le_clean.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_le_nodecl.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf8.xml +87 -0
- package/thirdparty/pugixml/tests/data/utftest_utf8_bom.xml +87 -0
- package/thirdparty/pugixml/tests/data/utftest_utf8_clean.xml +84 -0
- package/thirdparty/pugixml/tests/data/utftest_utf8_nodecl.xml +86 -0
- package/thirdparty/pugixml/tests/data//321/202/320/265/321/201/321/202.xml +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/basic.xml +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/doctype.xml +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/refs.xml +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/types.xml +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/utf16.xml +0 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/utf32.xml +0 -0
- package/thirdparty/pugixml/tests/data_fuzz_xpath/basic.xpath +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_xpath/functions.xpath +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_xpath/math.xpath +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_xpath/path.xpath +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_xpath/predicate.xpath +1 -0
- package/thirdparty/pugixml/tests/fuzz_parse.cpp +14 -0
- package/thirdparty/pugixml/tests/fuzz_parse.dict +72 -0
- package/thirdparty/pugixml/tests/fuzz_setup.sh +11 -0
- package/thirdparty/pugixml/tests/fuzz_xpath.cpp +46 -0
- package/thirdparty/pugixml/tests/fuzz_xpath.dict +72 -0
- package/thirdparty/pugixml/tests/helpers.hpp +114 -0
- package/thirdparty/pugixml/tests/main.cpp +218 -0
- package/thirdparty/pugixml/tests/test.cpp +220 -0
- package/thirdparty/pugixml/tests/test.hpp +175 -0
- package/thirdparty/pugixml/tests/test_compact.cpp +150 -0
- package/thirdparty/pugixml/tests/test_deprecated.cpp +25 -0
- package/thirdparty/pugixml/tests/test_document.cpp +1910 -0
- package/thirdparty/pugixml/tests/test_dom_modify.cpp +2122 -0
- package/thirdparty/pugixml/tests/test_dom_text.cpp +601 -0
- package/thirdparty/pugixml/tests/test_dom_traverse.cpp +1481 -0
- package/thirdparty/pugixml/tests/test_header_guard.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_iosfwd_1.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_iosfwd_2.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_iostream_1.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_iostream_2.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_only_1.cpp +21 -0
- package/thirdparty/pugixml/tests/test_header_only_2.cpp +21 -0
- package/thirdparty/pugixml/tests/test_header_string_1.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_string_2.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_string_iostream.cpp +5 -0
- package/thirdparty/pugixml/tests/test_memory.cpp +303 -0
- package/thirdparty/pugixml/tests/test_parse.cpp +1463 -0
- package/thirdparty/pugixml/tests/test_parse_doctype.cpp +366 -0
- package/thirdparty/pugixml/tests/test_unicode.cpp +152 -0
- package/thirdparty/pugixml/tests/test_version.cpp +5 -0
- package/thirdparty/pugixml/tests/test_write.cpp +757 -0
- package/thirdparty/pugixml/tests/test_xpath.cpp +833 -0
- package/thirdparty/pugixml/tests/test_xpath_api.cpp +646 -0
- package/thirdparty/pugixml/tests/test_xpath_functions.cpp +844 -0
- package/thirdparty/pugixml/tests/test_xpath_operators.cpp +566 -0
- package/thirdparty/pugixml/tests/test_xpath_parse.cpp +428 -0
- package/thirdparty/pugixml/tests/test_xpath_paths.cpp +787 -0
- package/thirdparty/pugixml/tests/test_xpath_paths_abbrev_w3c.cpp +219 -0
- package/thirdparty/pugixml/tests/test_xpath_paths_w3c.cpp +312 -0
- package/thirdparty/pugixml/tests/test_xpath_variables.cpp +683 -0
- package/thirdparty/pugixml/tests/test_xpath_xalan_1.cpp +411 -0
- package/thirdparty/pugixml/tests/test_xpath_xalan_2.cpp +417 -0
- package/thirdparty/pugixml/tests/test_xpath_xalan_3.cpp +321 -0
- package/thirdparty/pugixml/tests/test_xpath_xalan_4.cpp +300 -0
- package/thirdparty/pugixml/tests/test_xpath_xalan_5.cpp +295 -0
- package/thirdparty/pugixml/tests/writer_string.cpp +79 -0
- package/thirdparty/pugixml/tests/writer_string.hpp +27 -0
- package/ios/dummy.swift +0 -2
- 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)
|