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,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()
|