From 38df508dd3c85ac4115ea56a1018d41215658589 Mon Sep 17 00:00:00 2001 From: Ryan Pavlik Date: Thu, 12 May 2022 16:57:12 -0500 Subject: [PATCH] New upstream version 3.1~rc1+ds1 --- .github/ISSUE_TEMPLATE.md | 17 + .github/scripts/build-macos.sh | 52 + .github/scripts/build-snap.sh | 3 + .github/scripts/build-ubuntu.sh | 11 + .github/scripts/build-windows.sh | 36 + .github/scripts/install-macos.sh | 16 + .github/scripts/install-snap.sh | 6 + .github/scripts/install-ubuntu.sh | 10 + .github/scripts/install-windows.sh | 3 + .github/scripts/sign-macos.sh | 91 + .github/workflows/cd.yml | 190 ++ .github/workflows/source-tarball.yml | 51 + .github/workflows/test.yml | 44 + CHANGELOG.md | 510 ++-- CMakeLists.txt | 80 +- CONTRIBUTING.md | 4 +- README.md | 270 +- cmake/FindSpaceWare.cmake | 2 +- cmake/MacOSXBundleInfo.plist.in | 6 +- cmake/libpng-macos-arm64.patch | 117 + developer_docs/IdLists_Entities_and_Remap.txt | 49 + developer_docs/Solver_Transforms.txt | 4 +- extlib/mimalloc/.gitattributes | 10 - extlib/mimalloc/.gitignore | 8 - extlib/mimalloc/CMakeLists.txt | 218 +- extlib/mimalloc/LICENSE | 2 +- extlib/mimalloc/azure-pipelines.yml | 76 +- extlib/mimalloc/bin/mimalloc-redirect.dll | Bin 0 -> 56832 bytes extlib/mimalloc/bin/mimalloc-redirect.lib | Bin 0 -> 2874 bytes extlib/mimalloc/bin/mimalloc-redirect32.dll | Bin 0 -> 40448 bytes extlib/mimalloc/bin/mimalloc-redirect32.lib | Bin 0 -> 2928 bytes extlib/mimalloc/bin/minject.exe | Bin 0 -> 20992 bytes extlib/mimalloc/bin/minject32.exe | Bin 0 -> 18432 bytes .../cmake/mimalloc-config-version.cmake | 21 +- extlib/mimalloc/cmake/mimalloc-config.cmake | 14 +- .../bench-c5-18xlarge-2020-01-20-a.svg | 887 ++++++ .../bench-c5-18xlarge-2020-01-20-b.svg | 1185 ++++++++ .../bench-c5-18xlarge-2020-01-20-rss-a.svg | 757 +++++ .../bench-c5-18xlarge-2020-01-20-rss-b.svg | 1028 +++++++ .../mimalloc/doc/bench-2020/bench-r5a-1.svg | 769 +++++ .../bench-r5a-12xlarge-2020-01-16-a.svg | 868 ++++++ .../bench-r5a-12xlarge-2020-01-16-b.svg | 1157 +++++++ .../mimalloc/doc/bench-2020/bench-r5a-2.svg | 983 ++++++ .../doc/bench-2020/bench-r5a-rss-1.svg | 683 +++++ .../doc/bench-2020/bench-r5a-rss-2.svg | 854 ++++++ .../doc/bench-2020/bench-spec-rss.svg | 713 +++++ extlib/mimalloc/doc/bench-2020/bench-spec.svg | 713 +++++ extlib/mimalloc/doc/bench-2020/bench-z4-1.svg | 890 ++++++ extlib/mimalloc/doc/bench-2020/bench-z4-2.svg | 1146 +++++++ .../doc/bench-2020/bench-z4-rss-1.svg | 796 +++++ .../doc/bench-2020/bench-z4-rss-2.svg | 974 ++++++ .../bench-amd5950x-2021-01-30-a.svg | 952 ++++++ .../bench-amd5950x-2021-01-30-b.svg | 1255 ++++++++ .../bench-c5-18xlarge-2021-01-30-a.svg | 955 ++++++ .../bench-c5-18xlarge-2021-01-30-b.svg | 1269 ++++++++ .../bench-c5-18xlarge-2021-01-30-rss-a.svg | 836 ++++++ .../bench-c5-18xlarge-2021-01-30-rss-b.svg | 1131 +++++++ .../bench-2021/bench-macmini-2021-01-30.svg | 766 +++++ extlib/mimalloc/doc/doxyfile | 2659 +++++++++++++++++ extlib/mimalloc/doc/ds-logo.jpg | Bin 0 -> 181497 bytes extlib/mimalloc/doc/ds-logo.png | Bin 0 -> 121150 bytes extlib/mimalloc/doc/mimalloc-doc.h | 1281 ++++++++ extlib/mimalloc/doc/mimalloc-doxygen.css | 49 + extlib/mimalloc/doc/mimalloc-logo-100.png | Bin 0 -> 3532 bytes extlib/mimalloc/doc/mimalloc-logo.png | Bin 0 -> 73097 bytes extlib/mimalloc/doc/mimalloc-logo.svg | 161 + extlib/mimalloc/doc/spades-logo.png | Bin 0 -> 34583 bytes extlib/mimalloc/doc/unreal-logo.svg | 43 + extlib/mimalloc/docs/annotated.html | 116 + extlib/mimalloc/docs/annotated_dup.js | 5 + extlib/mimalloc/docs/bc_s.png | Bin 0 -> 657 bytes extlib/mimalloc/docs/bdwn.png | Bin 0 -> 142 bytes extlib/mimalloc/docs/bench.html | 114 + extlib/mimalloc/docs/build.html | 137 + extlib/mimalloc/docs/classes.html | 116 + extlib/mimalloc/docs/closed.png | Bin 0 -> 133 bytes extlib/mimalloc/docs/doc.png | Bin 0 -> 858 bytes extlib/mimalloc/docs/doxygen.css | 1793 +++++++++++ extlib/mimalloc/docs/doxygen.png | Bin 0 -> 3777 bytes extlib/mimalloc/docs/dynsections.js | 121 + extlib/mimalloc/docs/environment.html | 122 + extlib/mimalloc/docs/folderclosed.png | Bin 0 -> 617 bytes extlib/mimalloc/docs/folderopen.png | Bin 0 -> 687 bytes extlib/mimalloc/docs/functions.html | 123 + extlib/mimalloc/docs/functions_vars.html | 123 + extlib/mimalloc/docs/group__aligned.html | 465 +++ extlib/mimalloc/docs/group__aligned.js | 12 + extlib/mimalloc/docs/group__analysis.html | 379 +++ extlib/mimalloc/docs/group__analysis.js | 15 + ...group__analysis_structmi__heap__area__t.js | 8 + extlib/mimalloc/docs/group__cpp.html | 393 +++ extlib/mimalloc/docs/group__cpp.js | 11 + extlib/mimalloc/docs/group__extended.html | 1078 +++++++ extlib/mimalloc/docs/group__extended.js | 29 + extlib/mimalloc/docs/group__heap.html | 1074 +++++++ extlib/mimalloc/docs/group__heap.js | 30 + extlib/mimalloc/docs/group__malloc.html | 638 ++++ extlib/mimalloc/docs/group__malloc.js | 16 + extlib/mimalloc/docs/group__options.html | 404 +++ extlib/mimalloc/docs/group__options.js | 30 + extlib/mimalloc/docs/group__posix.html | 532 ++++ extlib/mimalloc/docs/group__posix.js | 17 + extlib/mimalloc/docs/group__typed.html | 518 ++++ extlib/mimalloc/docs/group__typed.js | 14 + extlib/mimalloc/docs/group__zeroinit.html | 591 ++++ extlib/mimalloc/docs/group__zeroinit.js | 14 + extlib/mimalloc/docs/index.html | 142 + extlib/mimalloc/docs/jquery.js | 35 + .../mimalloc/docs/mimalloc-doc_8h_source.html | 561 ++++ extlib/mimalloc/docs/mimalloc-doxygen.css | 49 + extlib/mimalloc/docs/mimalloc-logo.svg | 161 + extlib/mimalloc/docs/modules.html | 124 + extlib/mimalloc/docs/modules.js | 13 + extlib/mimalloc/docs/nav_f.png | Bin 0 -> 170 bytes extlib/mimalloc/docs/nav_g.png | Bin 0 -> 95 bytes extlib/mimalloc/docs/nav_h.png | Bin 0 -> 98 bytes extlib/mimalloc/docs/navtree.css | 146 + extlib/mimalloc/docs/navtree.js | 546 ++++ extlib/mimalloc/docs/navtreedata.js | 51 + extlib/mimalloc/docs/navtreeindex0.js | 181 ++ extlib/mimalloc/docs/open.png | Bin 0 -> 117 bytes extlib/mimalloc/docs/overrides.html | 198 ++ extlib/mimalloc/docs/pages.html | 119 + extlib/mimalloc/docs/resize.js | 140 + extlib/mimalloc/docs/search/all_0.html | 37 + extlib/mimalloc/docs/search/all_0.js | 4 + extlib/mimalloc/docs/search/all_1.html | 37 + extlib/mimalloc/docs/search/all_1.js | 4 + extlib/mimalloc/docs/search/all_2.html | 37 + extlib/mimalloc/docs/search/all_2.js | 7 + extlib/mimalloc/docs/search/all_3.html | 37 + extlib/mimalloc/docs/search/all_3.js | 5 + extlib/mimalloc/docs/search/all_4.html | 37 + extlib/mimalloc/docs/search/all_4.js | 5 + extlib/mimalloc/docs/search/all_5.html | 37 + extlib/mimalloc/docs/search/all_5.js | 5 + extlib/mimalloc/docs/search/all_6.html | 37 + extlib/mimalloc/docs/search/all_6.js | 153 + extlib/mimalloc/docs/search/all_7.html | 37 + extlib/mimalloc/docs/search/all_7.js | 4 + extlib/mimalloc/docs/search/all_8.html | 37 + extlib/mimalloc/docs/search/all_8.js | 5 + extlib/mimalloc/docs/search/all_9.html | 37 + extlib/mimalloc/docs/search/all_9.js | 5 + extlib/mimalloc/docs/search/all_a.html | 37 + extlib/mimalloc/docs/search/all_a.js | 4 + extlib/mimalloc/docs/search/all_b.html | 37 + extlib/mimalloc/docs/search/all_b.js | 5 + extlib/mimalloc/docs/search/all_c.html | 37 + extlib/mimalloc/docs/search/all_c.js | 4 + extlib/mimalloc/docs/search/all_d.html | 30 + extlib/mimalloc/docs/search/all_d.js | 4 + extlib/mimalloc/docs/search/classes_0.html | 37 + extlib/mimalloc/docs/search/classes_0.js | 5 + extlib/mimalloc/docs/search/close.png | Bin 0 -> 273 bytes extlib/mimalloc/docs/search/enums_0.html | 37 + extlib/mimalloc/docs/search/enums_0.js | 4 + extlib/mimalloc/docs/search/enumvalues_0.html | 37 + extlib/mimalloc/docs/search/enumvalues_0.js | 4 + extlib/mimalloc/docs/search/enumvalues_1.html | 37 + extlib/mimalloc/docs/search/enumvalues_1.js | 19 + extlib/mimalloc/docs/search/functions_0.html | 37 + extlib/mimalloc/docs/search/functions_0.js | 116 + extlib/mimalloc/docs/search/functions_1.html | 30 + extlib/mimalloc/docs/search/functions_1.js | 4 + extlib/mimalloc/docs/search/groups_0.html | 37 + extlib/mimalloc/docs/search/groups_0.js | 4 + extlib/mimalloc/docs/search/groups_1.html | 37 + extlib/mimalloc/docs/search/groups_1.js | 4 + extlib/mimalloc/docs/search/groups_2.html | 37 + extlib/mimalloc/docs/search/groups_2.js | 4 + extlib/mimalloc/docs/search/groups_3.html | 37 + extlib/mimalloc/docs/search/groups_3.js | 4 + extlib/mimalloc/docs/search/groups_4.html | 37 + extlib/mimalloc/docs/search/groups_4.js | 5 + extlib/mimalloc/docs/search/groups_5.html | 37 + extlib/mimalloc/docs/search/groups_5.js | 4 + extlib/mimalloc/docs/search/groups_6.html | 37 + extlib/mimalloc/docs/search/groups_6.js | 4 + extlib/mimalloc/docs/search/groups_7.html | 37 + extlib/mimalloc/docs/search/groups_7.js | 4 + extlib/mimalloc/docs/search/groups_8.html | 37 + extlib/mimalloc/docs/search/groups_8.js | 4 + extlib/mimalloc/docs/search/mag_sel.png | Bin 0 -> 465 bytes extlib/mimalloc/docs/search/nomatches.html | 13 + extlib/mimalloc/docs/search/pages_0.html | 37 + extlib/mimalloc/docs/search/pages_0.js | 4 + extlib/mimalloc/docs/search/pages_1.html | 37 + extlib/mimalloc/docs/search/pages_1.js | 4 + extlib/mimalloc/docs/search/pages_2.html | 37 + extlib/mimalloc/docs/search/pages_2.js | 4 + extlib/mimalloc/docs/search/pages_3.html | 37 + extlib/mimalloc/docs/search/pages_3.js | 4 + extlib/mimalloc/docs/search/pages_4.html | 37 + extlib/mimalloc/docs/search/pages_4.js | 4 + extlib/mimalloc/docs/search/search.css | 273 ++ extlib/mimalloc/docs/search/search.js | 816 +++++ extlib/mimalloc/docs/search/search_l.png | Bin 0 -> 567 bytes extlib/mimalloc/docs/search/search_m.png | Bin 0 -> 158 bytes extlib/mimalloc/docs/search/search_r.png | Bin 0 -> 553 bytes extlib/mimalloc/docs/search/searchdata.js | 39 + extlib/mimalloc/docs/search/typedefs_0.html | 37 + extlib/mimalloc/docs/search/typedefs_0.js | 8 + extlib/mimalloc/docs/search/typedefs_1.html | 30 + extlib/mimalloc/docs/search/typedefs_1.js | 4 + extlib/mimalloc/docs/search/typedefs_2.html | 30 + extlib/mimalloc/docs/search/typedefs_2.js | 5 + extlib/mimalloc/docs/search/variables_0.html | 37 + extlib/mimalloc/docs/search/variables_0.js | 5 + extlib/mimalloc/docs/search/variables_1.html | 37 + extlib/mimalloc/docs/search/variables_1.js | 4 + extlib/mimalloc/docs/search/variables_2.html | 37 + extlib/mimalloc/docs/search/variables_2.js | 4 + extlib/mimalloc/docs/search/variables_3.html | 37 + extlib/mimalloc/docs/search/variables_3.js | 4 + extlib/mimalloc/docs/splitbar.png | Bin 0 -> 304 bytes extlib/mimalloc/docs/sync_off.png | Bin 0 -> 851 bytes extlib/mimalloc/docs/sync_on.png | Bin 0 -> 836 bytes extlib/mimalloc/docs/tab_a.png | Bin 0 -> 120 bytes extlib/mimalloc/docs/tab_b.png | Bin 0 -> 180 bytes extlib/mimalloc/docs/tab_h.png | Bin 0 -> 174 bytes extlib/mimalloc/docs/tab_s.png | Bin 0 -> 178 bytes extlib/mimalloc/docs/tabs.css | 61 + extlib/mimalloc/docs/using.html | 155 + .../ide/vs2017/mimalloc-override.vcxproj | 6 +- .../vs2017/mimalloc-override.vcxproj.filters | 14 +- extlib/mimalloc/ide/vs2017/mimalloc.vcxproj | 14 +- .../ide/vs2017/mimalloc.vcxproj.filters | 15 +- .../ide/vs2019/mimalloc-override.vcxproj | 7 +- .../vs2019/mimalloc-override.vcxproj.filters | 15 +- .../ide/vs2019/mimalloc-test-stress.vcxproj | 4 +- extlib/mimalloc/ide/vs2019/mimalloc.vcxproj | 13 +- .../ide/vs2019/mimalloc.vcxproj.filters | 15 +- extlib/mimalloc/include/mimalloc-atomic.h | 454 +-- extlib/mimalloc/include/mimalloc-internal.h | 551 +++- extlib/mimalloc/include/mimalloc-new-delete.h | 13 +- extlib/mimalloc/include/mimalloc-override.h | 7 +- extlib/mimalloc/include/mimalloc-types.h | 302 +- extlib/mimalloc/include/mimalloc.h | 65 +- extlib/mimalloc/readme.md | 306 +- extlib/mimalloc/src/alloc-aligned.c | 118 +- extlib/mimalloc/src/alloc-override-osx.c | 360 ++- extlib/mimalloc/src/alloc-override.c | 235 +- extlib/mimalloc/src/alloc-posix.c | 80 +- extlib/mimalloc/src/alloc.c | 247 +- extlib/mimalloc/src/arena.c | 337 ++- extlib/mimalloc/src/bitmap.c | 395 +++ extlib/mimalloc/src/bitmap.h | 107 + extlib/mimalloc/src/bitmap.inc.c | 240 -- extlib/mimalloc/src/heap.c | 127 +- extlib/mimalloc/src/init.c | 307 +- extlib/mimalloc/src/options.c | 263 +- extlib/mimalloc/src/os.c | 825 +++-- extlib/mimalloc/src/page-queue.c | 91 +- extlib/mimalloc/src/page.c | 162 +- extlib/mimalloc/src/random.c | 81 +- extlib/mimalloc/src/region.c | 161 +- extlib/mimalloc/src/segment-cache.c | 360 +++ extlib/mimalloc/src/segment.c | 1865 ++++++------ extlib/mimalloc/src/static.c | 5 +- extlib/mimalloc/src/stats.c | 234 +- extlib/mimalloc/test/CMakeLists.txt | 11 +- extlib/mimalloc/test/main-override-static.c | 278 +- extlib/mimalloc/test/main-override.c | 8 +- extlib/mimalloc/test/main-override.cpp | 148 +- extlib/mimalloc/test/test-api-fill.c | 332 ++ extlib/mimalloc/test/test-api.c | 82 +- extlib/mimalloc/test/test-stress.c | 52 +- extlib/mimalloc/test/testhelper.h | 49 + include/slvs.h | 4 + pkg/flatpak/.gitignore | 4 - pkg/flatpak/com.solvespace.SolveSpace.json | 57 +- pkg/snap/.gitignore | 3 - pkg/snap/snap/snapcraft.yaml | 37 +- res/CMakeLists.txt | 29 +- res/fonts/unicode.lff.gz | Bin 475974 -> 482559 bytes res/fonts/unifont.hex.gz | Bin 0 -> 959159 bytes .../com.solvespace.SolveSpace.metainfo.xml.in | 87 + res/freedesktop/solvespace-16x16.xpm | 27 - res/freedesktop/solvespace-24x24.xpm | 35 - res/freedesktop/solvespace-32x32.xpm | 43 - res/freedesktop/solvespace-48x48.xpm | 59 - res/freedesktop/solvespace-flatpak.desktop.in | 2 +- res/freedesktop/solvespace-snap.desktop | 2 +- res/freedesktop/solvespace.desktop.in | 2 +- res/icons/graphics-window/angle.png | Bin 819 -> 258 bytes res/icons/graphics-window/arc.png | Bin 686 -> 218 bytes res/icons/graphics-window/assemble.png | Bin 454 -> 214 bytes res/icons/graphics-window/bezier.png | Bin 710 -> 202 bytes res/icons/graphics-window/circle.png | Bin 801 -> 190 bytes res/icons/graphics-window/construction.png | Bin 739 -> 203 bytes res/icons/graphics-window/equal.png | Bin 920 -> 249 bytes res/icons/graphics-window/extrude.png | Bin 620 -> 216 bytes res/icons/graphics-window/helix.png | Bin 664 -> 243 bytes res/icons/graphics-window/horiz.png | Bin 418 -> 161 bytes res/icons/graphics-window/image.png | Bin 1025 -> 227 bytes res/icons/graphics-window/in3d.png | Bin 512 -> 229 bytes res/icons/graphics-window/lathe.png | Bin 401 -> 260 bytes res/icons/graphics-window/length.png | Bin 480 -> 223 bytes res/icons/graphics-window/line.png | Bin 511 -> 153 bytes res/icons/graphics-window/ontoworkplane.png | Bin 412 -> 160 bytes res/icons/graphics-window/other-supp.png | Bin 916 -> 235 bytes res/icons/graphics-window/parallel.png | Bin 531 -> 165 bytes res/icons/graphics-window/perpendicular.png | Bin 427 -> 214 bytes res/icons/graphics-window/point.png | Bin 394 -> 132 bytes res/icons/graphics-window/pointonx.png | Bin 596 -> 267 bytes res/icons/graphics-window/rectangle.png | Bin 418 -> 159 bytes res/icons/graphics-window/ref.png | Bin 413 -> 178 bytes res/icons/graphics-window/revolve.png | Bin 680 -> 264 bytes .../graphics-window/same-orientation.png | Bin 673 -> 202 bytes res/icons/graphics-window/sketch-in-3d.png | Bin 597 -> 196 bytes res/icons/graphics-window/sketch-in-plane.png | Bin 507 -> 214 bytes res/icons/graphics-window/step-rotate.png | Bin 871 -> 207 bytes res/icons/graphics-window/step-translate.png | Bin 411 -> 171 bytes res/icons/graphics-window/symmetric.png | Bin 515 -> 149 bytes res/icons/graphics-window/tangent-arc.png | Bin 666 -> 232 bytes res/icons/graphics-window/text.png | Bin 784 -> 217 bytes res/icons/graphics-window/trim.png | Bin 575 -> 224 bytes res/icons/graphics-window/vert.png | Bin 515 -> 177 bytes res/icons/text-window/constraint.png | Bin 557 -> 199 bytes res/icons/text-window/construction.png | Bin 739 -> 203 bytes res/icons/text-window/edges.png | Bin 703 -> 285 bytes res/icons/text-window/faces.png | Bin 683 -> 352 bytes res/icons/text-window/mesh.png | Bin 1169 -> 335 bytes res/icons/text-window/normal.png | Bin 639 -> 177 bytes res/icons/text-window/occluded-invisible.png | Bin 345 -> 196 bytes res/icons/text-window/occluded-stippled.png | Bin 539 -> 218 bytes res/icons/text-window/occluded-visible.png | Bin 365 -> 208 bytes res/icons/text-window/outlines.png | Bin 733 -> 289 bytes res/icons/text-window/point.png | Bin 394 -> 132 bytes res/icons/text-window/workplane.png | Bin 462 -> 193 bytes res/locales.txt | 2 + res/locales/de_DE.po | 748 +++-- res/locales/en_US.po | 714 +++-- res/locales/es_AR.po | 2284 ++++++++++++++ res/locales/fr_FR.po | 718 +++-- res/locales/ru_RU.po | 932 +++--- res/locales/tr_TR.po | 2302 ++++++++++++++ res/locales/uk_UA.po | 1085 ++++--- res/locales/zh_CN.po | 716 +++-- res/messages.pot | 653 ++-- res/threejs/SolveSpaceControls.js | 8 +- res/threejs/three-r111.min.js.gz | Bin 0 -> 150121 bytes res/win32/versioninfo.rc.in | 10 +- src/CMakeLists.txt | 284 +- src/clipboard.cpp | 21 +- src/config.h.in | 3 +- src/confscreen.cpp | 69 +- src/constraint.cpp | 96 +- src/constrainteq.cpp | 220 +- src/describescreen.cpp | 78 +- src/draw.cpp | 17 +- src/drawconstraint.cpp | 170 +- src/drawentity.cpp | 75 +- src/dsc.h | 260 +- src/export.cpp | 52 +- src/exportstep.cpp | 11 +- src/exportvector.cpp | 89 +- src/expr.cpp | 28 +- src/expr.h | 3 +- src/file.cpp | 44 +- src/generate.cpp | 7 +- src/graphicswin.cpp | 146 +- src/group.cpp | 43 +- src/groupmesh.cpp | 20 +- src/importidf.cpp | 54 +- src/importmesh.cpp | 256 ++ src/lib.cpp | 4 + src/modify.cpp | 48 +- src/mouse.cpp | 168 +- src/platform/entrycli.cpp | 8 +- src/platform/gui.cpp | 2 + src/platform/gui.h | 2 + src/platform/guigtk.cpp | 111 +- src/platform/guimac.mm | 212 +- src/platform/guiwin.cpp | 40 +- src/platform/platform.h | 4 +- src/render/render2d.cpp | 4 +- src/resource.cpp | 10 +- src/resource.h | 13 + src/sketch.h | 37 +- src/solvespace.cpp | 70 +- src/solvespace.h | 61 +- src/srf/boolean.cpp | 69 +- src/srf/curve.cpp | 2 +- src/srf/merge.cpp | 7 +- src/srf/raycast.cpp | 34 +- src/srf/shell.cpp | 614 ++++ src/srf/surface.cpp | 610 ---- src/srf/surfinter.cpp | 34 +- src/srf/triangulate.cpp | 8 +- src/style.cpp | 134 +- src/system.cpp | 434 +-- src/textscreens.cpp | 71 +- src/textwin.cpp | 7 +- src/toolbar.cpp | 13 +- src/ttf.cpp | 2 +- src/ui.h | 31 +- src/view.cpp | 59 +- test/constraint/equal_angle/normal.png | Bin 5267 -> 5271 bytes test/constraint/equal_angle/normal.slvs | 20 +- .../equal_angle/normal_old_version.slvs | 463 +++ test/constraint/equal_angle/test.cpp | 4 +- test/request/image/linked.png | Bin 0 -> 4309 bytes test/request/image/normal.png | Bin 0 -> 4292 bytes test/request/image/test.cpp | 5 +- 406 files changed, 59939 insertions(+), 7934 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE.md create mode 100755 .github/scripts/build-macos.sh create mode 100755 .github/scripts/build-snap.sh create mode 100755 .github/scripts/build-ubuntu.sh create mode 100755 .github/scripts/build-windows.sh create mode 100755 .github/scripts/install-macos.sh create mode 100755 .github/scripts/install-snap.sh create mode 100755 .github/scripts/install-ubuntu.sh create mode 100755 .github/scripts/install-windows.sh create mode 100755 .github/scripts/sign-macos.sh create mode 100644 .github/workflows/cd.yml create mode 100644 .github/workflows/source-tarball.yml create mode 100644 .github/workflows/test.yml create mode 100644 cmake/libpng-macos-arm64.patch create mode 100644 developer_docs/IdLists_Entities_and_Remap.txt delete mode 100644 extlib/mimalloc/.gitattributes delete mode 100644 extlib/mimalloc/.gitignore create mode 100644 extlib/mimalloc/bin/mimalloc-redirect.dll create mode 100644 extlib/mimalloc/bin/mimalloc-redirect.lib create mode 100644 extlib/mimalloc/bin/mimalloc-redirect32.dll create mode 100644 extlib/mimalloc/bin/mimalloc-redirect32.lib create mode 100644 extlib/mimalloc/bin/minject.exe create mode 100644 extlib/mimalloc/bin/minject32.exe create mode 100644 extlib/mimalloc/doc/bench-2020/bench-c5-18xlarge-2020-01-20-a.svg create mode 100644 extlib/mimalloc/doc/bench-2020/bench-c5-18xlarge-2020-01-20-b.svg create mode 100644 extlib/mimalloc/doc/bench-2020/bench-c5-18xlarge-2020-01-20-rss-a.svg create mode 100644 extlib/mimalloc/doc/bench-2020/bench-c5-18xlarge-2020-01-20-rss-b.svg create mode 100644 extlib/mimalloc/doc/bench-2020/bench-r5a-1.svg create mode 100644 extlib/mimalloc/doc/bench-2020/bench-r5a-12xlarge-2020-01-16-a.svg create mode 100644 extlib/mimalloc/doc/bench-2020/bench-r5a-12xlarge-2020-01-16-b.svg create mode 100644 extlib/mimalloc/doc/bench-2020/bench-r5a-2.svg create mode 100644 extlib/mimalloc/doc/bench-2020/bench-r5a-rss-1.svg create mode 100644 extlib/mimalloc/doc/bench-2020/bench-r5a-rss-2.svg create mode 100644 extlib/mimalloc/doc/bench-2020/bench-spec-rss.svg create mode 100644 extlib/mimalloc/doc/bench-2020/bench-spec.svg create mode 100644 extlib/mimalloc/doc/bench-2020/bench-z4-1.svg create mode 100644 extlib/mimalloc/doc/bench-2020/bench-z4-2.svg create mode 100644 extlib/mimalloc/doc/bench-2020/bench-z4-rss-1.svg create mode 100644 extlib/mimalloc/doc/bench-2020/bench-z4-rss-2.svg create mode 100644 extlib/mimalloc/doc/bench-2021/bench-amd5950x-2021-01-30-a.svg create mode 100644 extlib/mimalloc/doc/bench-2021/bench-amd5950x-2021-01-30-b.svg create mode 100644 extlib/mimalloc/doc/bench-2021/bench-c5-18xlarge-2021-01-30-a.svg create mode 100644 extlib/mimalloc/doc/bench-2021/bench-c5-18xlarge-2021-01-30-b.svg create mode 100644 extlib/mimalloc/doc/bench-2021/bench-c5-18xlarge-2021-01-30-rss-a.svg create mode 100644 extlib/mimalloc/doc/bench-2021/bench-c5-18xlarge-2021-01-30-rss-b.svg create mode 100644 extlib/mimalloc/doc/bench-2021/bench-macmini-2021-01-30.svg create mode 100644 extlib/mimalloc/doc/doxyfile create mode 100644 extlib/mimalloc/doc/ds-logo.jpg create mode 100644 extlib/mimalloc/doc/ds-logo.png create mode 100644 extlib/mimalloc/doc/mimalloc-doc.h create mode 100644 extlib/mimalloc/doc/mimalloc-doxygen.css create mode 100644 extlib/mimalloc/doc/mimalloc-logo-100.png create mode 100644 extlib/mimalloc/doc/mimalloc-logo.png create mode 100644 extlib/mimalloc/doc/mimalloc-logo.svg create mode 100644 extlib/mimalloc/doc/spades-logo.png create mode 100644 extlib/mimalloc/doc/unreal-logo.svg create mode 100644 extlib/mimalloc/docs/annotated.html create mode 100644 extlib/mimalloc/docs/annotated_dup.js create mode 100644 extlib/mimalloc/docs/bc_s.png create mode 100644 extlib/mimalloc/docs/bdwn.png create mode 100644 extlib/mimalloc/docs/bench.html create mode 100644 extlib/mimalloc/docs/build.html create mode 100644 extlib/mimalloc/docs/classes.html create mode 100644 extlib/mimalloc/docs/closed.png create mode 100644 extlib/mimalloc/docs/doc.png create mode 100644 extlib/mimalloc/docs/doxygen.css create mode 100644 extlib/mimalloc/docs/doxygen.png create mode 100644 extlib/mimalloc/docs/dynsections.js create mode 100644 extlib/mimalloc/docs/environment.html create mode 100644 extlib/mimalloc/docs/folderclosed.png create mode 100644 extlib/mimalloc/docs/folderopen.png create mode 100644 extlib/mimalloc/docs/functions.html create mode 100644 extlib/mimalloc/docs/functions_vars.html create mode 100644 extlib/mimalloc/docs/group__aligned.html create mode 100644 extlib/mimalloc/docs/group__aligned.js create mode 100644 extlib/mimalloc/docs/group__analysis.html create mode 100644 extlib/mimalloc/docs/group__analysis.js create mode 100644 extlib/mimalloc/docs/group__analysis_structmi__heap__area__t.js create mode 100644 extlib/mimalloc/docs/group__cpp.html create mode 100644 extlib/mimalloc/docs/group__cpp.js create mode 100644 extlib/mimalloc/docs/group__extended.html create mode 100644 extlib/mimalloc/docs/group__extended.js create mode 100644 extlib/mimalloc/docs/group__heap.html create mode 100644 extlib/mimalloc/docs/group__heap.js create mode 100644 extlib/mimalloc/docs/group__malloc.html create mode 100644 extlib/mimalloc/docs/group__malloc.js create mode 100644 extlib/mimalloc/docs/group__options.html create mode 100644 extlib/mimalloc/docs/group__options.js create mode 100644 extlib/mimalloc/docs/group__posix.html create mode 100644 extlib/mimalloc/docs/group__posix.js create mode 100644 extlib/mimalloc/docs/group__typed.html create mode 100644 extlib/mimalloc/docs/group__typed.js create mode 100644 extlib/mimalloc/docs/group__zeroinit.html create mode 100644 extlib/mimalloc/docs/group__zeroinit.js create mode 100644 extlib/mimalloc/docs/index.html create mode 100644 extlib/mimalloc/docs/jquery.js create mode 100644 extlib/mimalloc/docs/mimalloc-doc_8h_source.html create mode 100644 extlib/mimalloc/docs/mimalloc-doxygen.css create mode 100644 extlib/mimalloc/docs/mimalloc-logo.svg create mode 100644 extlib/mimalloc/docs/modules.html create mode 100644 extlib/mimalloc/docs/modules.js create mode 100644 extlib/mimalloc/docs/nav_f.png create mode 100644 extlib/mimalloc/docs/nav_g.png create mode 100644 extlib/mimalloc/docs/nav_h.png create mode 100644 extlib/mimalloc/docs/navtree.css create mode 100644 extlib/mimalloc/docs/navtree.js create mode 100644 extlib/mimalloc/docs/navtreedata.js create mode 100644 extlib/mimalloc/docs/navtreeindex0.js create mode 100644 extlib/mimalloc/docs/open.png create mode 100644 extlib/mimalloc/docs/overrides.html create mode 100644 extlib/mimalloc/docs/pages.html create mode 100644 extlib/mimalloc/docs/resize.js create mode 100644 extlib/mimalloc/docs/search/all_0.html create mode 100644 extlib/mimalloc/docs/search/all_0.js create mode 100644 extlib/mimalloc/docs/search/all_1.html create mode 100644 extlib/mimalloc/docs/search/all_1.js create mode 100644 extlib/mimalloc/docs/search/all_2.html create mode 100644 extlib/mimalloc/docs/search/all_2.js create mode 100644 extlib/mimalloc/docs/search/all_3.html create mode 100644 extlib/mimalloc/docs/search/all_3.js create mode 100644 extlib/mimalloc/docs/search/all_4.html create mode 100644 extlib/mimalloc/docs/search/all_4.js create mode 100644 extlib/mimalloc/docs/search/all_5.html create mode 100644 extlib/mimalloc/docs/search/all_5.js create mode 100644 extlib/mimalloc/docs/search/all_6.html create mode 100644 extlib/mimalloc/docs/search/all_6.js create mode 100644 extlib/mimalloc/docs/search/all_7.html create mode 100644 extlib/mimalloc/docs/search/all_7.js create mode 100644 extlib/mimalloc/docs/search/all_8.html create mode 100644 extlib/mimalloc/docs/search/all_8.js create mode 100644 extlib/mimalloc/docs/search/all_9.html create mode 100644 extlib/mimalloc/docs/search/all_9.js create mode 100644 extlib/mimalloc/docs/search/all_a.html create mode 100644 extlib/mimalloc/docs/search/all_a.js create mode 100644 extlib/mimalloc/docs/search/all_b.html create mode 100644 extlib/mimalloc/docs/search/all_b.js create mode 100644 extlib/mimalloc/docs/search/all_c.html create mode 100644 extlib/mimalloc/docs/search/all_c.js create mode 100644 extlib/mimalloc/docs/search/all_d.html create mode 100644 extlib/mimalloc/docs/search/all_d.js create mode 100644 extlib/mimalloc/docs/search/classes_0.html create mode 100644 extlib/mimalloc/docs/search/classes_0.js create mode 100644 extlib/mimalloc/docs/search/close.png create mode 100644 extlib/mimalloc/docs/search/enums_0.html create mode 100644 extlib/mimalloc/docs/search/enums_0.js create mode 100644 extlib/mimalloc/docs/search/enumvalues_0.html create mode 100644 extlib/mimalloc/docs/search/enumvalues_0.js create mode 100644 extlib/mimalloc/docs/search/enumvalues_1.html create mode 100644 extlib/mimalloc/docs/search/enumvalues_1.js create mode 100644 extlib/mimalloc/docs/search/functions_0.html create mode 100644 extlib/mimalloc/docs/search/functions_0.js create mode 100644 extlib/mimalloc/docs/search/functions_1.html create mode 100644 extlib/mimalloc/docs/search/functions_1.js create mode 100644 extlib/mimalloc/docs/search/groups_0.html create mode 100644 extlib/mimalloc/docs/search/groups_0.js create mode 100644 extlib/mimalloc/docs/search/groups_1.html create mode 100644 extlib/mimalloc/docs/search/groups_1.js create mode 100644 extlib/mimalloc/docs/search/groups_2.html create mode 100644 extlib/mimalloc/docs/search/groups_2.js create mode 100644 extlib/mimalloc/docs/search/groups_3.html create mode 100644 extlib/mimalloc/docs/search/groups_3.js create mode 100644 extlib/mimalloc/docs/search/groups_4.html create mode 100644 extlib/mimalloc/docs/search/groups_4.js create mode 100644 extlib/mimalloc/docs/search/groups_5.html create mode 100644 extlib/mimalloc/docs/search/groups_5.js create mode 100644 extlib/mimalloc/docs/search/groups_6.html create mode 100644 extlib/mimalloc/docs/search/groups_6.js create mode 100644 extlib/mimalloc/docs/search/groups_7.html create mode 100644 extlib/mimalloc/docs/search/groups_7.js create mode 100644 extlib/mimalloc/docs/search/groups_8.html create mode 100644 extlib/mimalloc/docs/search/groups_8.js create mode 100644 extlib/mimalloc/docs/search/mag_sel.png create mode 100644 extlib/mimalloc/docs/search/nomatches.html create mode 100644 extlib/mimalloc/docs/search/pages_0.html create mode 100644 extlib/mimalloc/docs/search/pages_0.js create mode 100644 extlib/mimalloc/docs/search/pages_1.html create mode 100644 extlib/mimalloc/docs/search/pages_1.js create mode 100644 extlib/mimalloc/docs/search/pages_2.html create mode 100644 extlib/mimalloc/docs/search/pages_2.js create mode 100644 extlib/mimalloc/docs/search/pages_3.html create mode 100644 extlib/mimalloc/docs/search/pages_3.js create mode 100644 extlib/mimalloc/docs/search/pages_4.html create mode 100644 extlib/mimalloc/docs/search/pages_4.js create mode 100644 extlib/mimalloc/docs/search/search.css create mode 100644 extlib/mimalloc/docs/search/search.js create mode 100644 extlib/mimalloc/docs/search/search_l.png create mode 100644 extlib/mimalloc/docs/search/search_m.png create mode 100644 extlib/mimalloc/docs/search/search_r.png create mode 100644 extlib/mimalloc/docs/search/searchdata.js create mode 100644 extlib/mimalloc/docs/search/typedefs_0.html create mode 100644 extlib/mimalloc/docs/search/typedefs_0.js create mode 100644 extlib/mimalloc/docs/search/typedefs_1.html create mode 100644 extlib/mimalloc/docs/search/typedefs_1.js create mode 100644 extlib/mimalloc/docs/search/typedefs_2.html create mode 100644 extlib/mimalloc/docs/search/typedefs_2.js create mode 100644 extlib/mimalloc/docs/search/variables_0.html create mode 100644 extlib/mimalloc/docs/search/variables_0.js create mode 100644 extlib/mimalloc/docs/search/variables_1.html create mode 100644 extlib/mimalloc/docs/search/variables_1.js create mode 100644 extlib/mimalloc/docs/search/variables_2.html create mode 100644 extlib/mimalloc/docs/search/variables_2.js create mode 100644 extlib/mimalloc/docs/search/variables_3.html create mode 100644 extlib/mimalloc/docs/search/variables_3.js create mode 100644 extlib/mimalloc/docs/splitbar.png create mode 100644 extlib/mimalloc/docs/sync_off.png create mode 100644 extlib/mimalloc/docs/sync_on.png create mode 100644 extlib/mimalloc/docs/tab_a.png create mode 100644 extlib/mimalloc/docs/tab_b.png create mode 100644 extlib/mimalloc/docs/tab_h.png create mode 100644 extlib/mimalloc/docs/tab_s.png create mode 100644 extlib/mimalloc/docs/tabs.css create mode 100644 extlib/mimalloc/docs/using.html create mode 100644 extlib/mimalloc/src/bitmap.c create mode 100644 extlib/mimalloc/src/bitmap.h delete mode 100644 extlib/mimalloc/src/bitmap.inc.c create mode 100644 extlib/mimalloc/src/segment-cache.c create mode 100644 extlib/mimalloc/test/test-api-fill.c create mode 100644 extlib/mimalloc/test/testhelper.h delete mode 100644 pkg/flatpak/.gitignore delete mode 100644 pkg/snap/.gitignore create mode 100644 res/fonts/unifont.hex.gz create mode 100644 res/freedesktop/com.solvespace.SolveSpace.metainfo.xml.in delete mode 100644 res/freedesktop/solvespace-16x16.xpm delete mode 100644 res/freedesktop/solvespace-24x24.xpm delete mode 100644 res/freedesktop/solvespace-32x32.xpm delete mode 100644 res/freedesktop/solvespace-48x48.xpm create mode 100644 res/locales/es_AR.po create mode 100644 res/locales/tr_TR.po create mode 100644 res/threejs/three-r111.min.js.gz create mode 100644 src/importmesh.cpp create mode 100644 src/srf/shell.cpp create mode 100644 test/constraint/equal_angle/normal_old_version.slvs create mode 100644 test/request/image/linked.png create mode 100644 test/request/image/normal.png diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..e9d7df9 --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,17 @@ +### System information + +- **SolveSpace version:** +- **Operating system:** + +### Expected behavior + + + +### Actual behavior + + + +### Additional information + + diff --git a/.github/scripts/build-macos.sh b/.github/scripts/build-macos.sh new file mode 100755 index 0000000..3394a8a --- /dev/null +++ b/.github/scripts/build-macos.sh @@ -0,0 +1,52 @@ +#!/bin/sh -xe + +ENABLE_SANITIZERS="OFF" +if [ "$1" = "release" ]; then + BUILD_TYPE="RelWithDebInfo" + ENABLE_LTO="ON" +else + BUILD_TYPE="Debug" + ENABLE_LTO="OFF" +fi + +# this is an option for our Github CI only, since it doesn't have a macos arm64 image yet +CMAKE_GENERATOR="Unix Makefiles" +CMAKE_PREFIX_PATH="" +if [ "$2" = "arm64" ]; then + OSX_ARCHITECTURE="arm64" + CMAKE_PREFIX_PATH=$(find /tmp/libomp-arm64/libomp -depth 1) + git apply cmake/libpng-macos-arm64.patch || echo "Could not apply patch, probably already patched..." + mkdir build-arm64 || true + cd build-arm64 +elif [ "$2" = "x86_64" ]; then + OSX_ARCHITECTURE="x86_64" + CMAKE_PREFIX_PATH=$(find /tmp/libomp-x86_64/libomp -depth 1) + mkdir build || true + cd build +else + mkdir build || true + cd build +fi + +if [ "$3" = "xcode" ]; then + CMAKE_GENERATOR="Xcode" +fi + +cmake \ + -G "${CMAKE_GENERATOR}" \ + -D CMAKE_PREFIX_PATH="${CMAKE_PREFIX_PATH}" \ + -D CMAKE_OSX_ARCHITECTURES="${OSX_ARCHITECTURE}" \ + -D CMAKE_BUILD_TYPE="${BUILD_TYPE}" \ + -D ENABLE_OPENMP="ON" \ + -D ENABLE_SANITIZERS="${ENABLE_SANITIZERS}" \ + -D ENABLE_LTO="${ENABLE_LTO}" \ + .. + +if [ "$3" = "xcode" ]; then + open solvespace.xcodeproj +else + cmake --build . --config "${BUILD_TYPE}" -j$(sysctl -n hw.logicalcpu) + if [ $(uname -m) = "$2" ]; then + make -j$(sysctl -n hw.logicalcpu) test_solvespace + fi +fi \ No newline at end of file diff --git a/.github/scripts/build-snap.sh b/.github/scripts/build-snap.sh new file mode 100755 index 0000000..665e561 --- /dev/null +++ b/.github/scripts/build-snap.sh @@ -0,0 +1,3 @@ +#!/bin/sh -xe + +./pkg/snap/build.sh --use-lxd diff --git a/.github/scripts/build-ubuntu.sh b/.github/scripts/build-ubuntu.sh new file mode 100755 index 0000000..4c8f4ea --- /dev/null +++ b/.github/scripts/build-ubuntu.sh @@ -0,0 +1,11 @@ +#!/bin/sh -xe + +mkdir build +cd build +cmake \ + -DCMAKE_BUILD_TYPE="Debug" \ + -DENABLE_OPENMP="ON" \ + -DENABLE_SANITIZERS="ON" \ + .. +make -j$(nproc) VERBOSE=1 +make test_solvespace diff --git a/.github/scripts/build-windows.sh b/.github/scripts/build-windows.sh new file mode 100755 index 0000000..e81fb2a --- /dev/null +++ b/.github/scripts/build-windows.sh @@ -0,0 +1,36 @@ +#!/bin/sh -xe + +mkdir build +cd build + +if [ "$1" = "release" ]; then + if [ "$2" = "openmp" ]; then + ENABLE_OPENMP="ON" + else + ENABLE_OPENMP="OFF" + fi + BUILD_TYPE=RelWithDebInfo + cmake \ + -G "Visual Studio 16 2019" \ + -DCMAKE_BUILD_TYPE="${BUILD_TYPE}" \ + -DENABLE_OPENMP="${ENABLE_OPENMP}" \ + -DENABLE_LTO=ON \ + -DCMAKE_GENERATOR_PLATFORM="Win32" \ + .. +else + BUILD_TYPE=Debug + cmake \ + -G "Visual Studio 16 2019" \ + -DCMAKE_BUILD_TYPE="${BUILD_TYPE}" \ + -DENABLE_OPENMP="ON" \ + -DCMAKE_GENERATOR_PLATFORM="Win32" \ + .. +fi + +cmake --build . --config "${BUILD_TYPE}" -- -maxcpucount + +bin/$BUILD_TYPE/solvespace-testsuite.exe + +if [ "$2" = "openmp" ]; then + mv bin/$BUILD_TYPE/solvespace.exe bin/$BUILD_TYPE/solvespace-openmp.exe +fi diff --git a/.github/scripts/install-macos.sh b/.github/scripts/install-macos.sh new file mode 100755 index 0000000..bb39bcd --- /dev/null +++ b/.github/scripts/install-macos.sh @@ -0,0 +1,16 @@ +#!/bin/sh -xe + +if [ "$1" = "ci" ]; then + armloc=$(brew fetch --bottle-tag=arm64_big_sur libomp | grep -i downloaded | grep tar.gz | cut -f2 -d:) + x64loc=$(brew fetch --bottle-tag=big_sur libomp | grep -i downloaded | grep tar.gz | cut -f2 -d:) + cp $armloc /tmp/libomp-arm64.tar.gz + mkdir /tmp/libomp-arm64 || true + tar -xzvf /tmp/libomp-arm64.tar.gz -C /tmp/libomp-arm64 + cp $x64loc /tmp/libomp-x86_64.tar.gz + mkdir /tmp/libomp-x86_64 || true + tar -xzvf /tmp/libomp-x86_64.tar.gz -C /tmp/libomp-x86_64 +else + brew install libomp +fi + +git submodule update --init extlib/cairo extlib/freetype extlib/libdxfrw extlib/libpng extlib/mimalloc extlib/pixman extlib/zlib extlib/eigen diff --git a/.github/scripts/install-snap.sh b/.github/scripts/install-snap.sh new file mode 100755 index 0000000..e10a91d --- /dev/null +++ b/.github/scripts/install-snap.sh @@ -0,0 +1,6 @@ +#!/bin/sh -xe + +sudo /snap/bin/lxd waitready +sudo /snap/bin/lxd init --auto +sudo chgrp travis /var/snap/lxd/common/lxd/unix.socket +mkdir -p "$TRAVIS_BUILD_DIR/snaps-cache" diff --git a/.github/scripts/install-ubuntu.sh b/.github/scripts/install-ubuntu.sh new file mode 100755 index 0000000..6033f73 --- /dev/null +++ b/.github/scripts/install-ubuntu.sh @@ -0,0 +1,10 @@ +#!/bin/sh -xe + +sudo apt-get update -qq + +sudo apt-get install -q -y \ + zlib1g-dev libpng-dev libcairo2-dev libfreetype6-dev libjson-c-dev \ + libfontconfig1-dev libgtkmm-3.0-dev libpangomm-1.4-dev libgl-dev \ + libgl-dev libglu-dev libspnav-dev + +git submodule update --init extlib/libdxfrw extlib/mimalloc extlib/eigen diff --git a/.github/scripts/install-windows.sh b/.github/scripts/install-windows.sh new file mode 100755 index 0000000..738d67d --- /dev/null +++ b/.github/scripts/install-windows.sh @@ -0,0 +1,3 @@ +#!/bin/sh -xe + +git submodule update --init diff --git a/.github/scripts/sign-macos.sh b/.github/scripts/sign-macos.sh new file mode 100755 index 0000000..8e944d3 --- /dev/null +++ b/.github/scripts/sign-macos.sh @@ -0,0 +1,91 @@ +#!/bin/bash -xe + +lipo \ + -create \ + build/bin/SolveSpace.app/Contents/Resources/libomp.dylib \ + build-arm64/bin/SolveSpace.app/Contents/Resources/libomp.dylib \ + -output \ + build/bin/SolveSpace.app/Contents/Resources/libomp.dylib + +lipo \ + -create \ + build/bin/SolveSpace.app/Contents/MacOS/SolveSpace \ + build-arm64/bin/SolveSpace.app/Contents/MacOS/SolveSpace \ + -output \ + build/bin/SolveSpace.app/Contents/MacOS/SolveSpace + +lipo \ + -create \ + build/bin/SolveSpace.app/Contents/MacOS/solvespace-cli \ + build-arm64/bin/SolveSpace.app/Contents/MacOS/solvespace-cli \ + -output \ + build/bin/SolveSpace.app/Contents/MacOS/solvespace-cli + +cd build + +openmp="bin/SolveSpace.app/Contents/Resources/libomp.dylib" +app="bin/SolveSpace.app" +dmg="bin/SolveSpace.dmg" +bundle_id="com.solvespace.solvespace" + +if [ "$CI" = "true" ]; then + # get the signing certificate (this is the Developer ID:Application: Your Name, exported to a p12 file, then converted to base64, e.g.: cat ~/Desktop/certificate.p12 | base64 | pbcopy) + echo $MACOS_CERTIFICATE_P12 | base64 --decode > certificate.p12 + + # create a keychain + security create-keychain -p secret build.keychain + security default-keychain -s build.keychain + security unlock-keychain -p secret build.keychain + + # import the key + security import certificate.p12 -k build.keychain -P "${MACOS_CERTIFICATE_PASSWORD}" -T /usr/bin/codesign + + security set-key-partition-list -S apple-tool:,apple: -s -k secret build.keychain + + # check if all is good + security find-identity -v +fi + +# sign openmp +codesign -s "${MACOS_DEVELOPER_ID}" --timestamp --options runtime -f --deep "${openmp}" + +# sign the .app +codesign -s "${MACOS_DEVELOPER_ID}" --timestamp --options runtime -f --deep "${app}" + +# create the .dmg from the signed .app +hdiutil create -srcfolder "${app}" "${dmg}" + +# sign the .dmg +codesign -s "${MACOS_DEVELOPER_ID}" --timestamp --options runtime -f --deep "${dmg}" + +# notarize and store request uuid in variable +notarize_uuid=$(xcrun altool --notarize-app --primary-bundle-id "${bundle_id}" --username "${MACOS_APPSTORE_USERNAME}" --password "${MACOS_APPSTORE_APP_PASSWORD}" --file "${dmg}" 2>&1 | grep RequestUUID | awk '{print $3'}) + +echo $notarize_uuid + +# wait a bit so we don't get errors during checking +sleep 10 + +success=0 +for (( ; ; )) +do + echo "Checking progress..." + progress=$(xcrun altool --notarization-info "${notarize_uuid}" -u "${MACOS_APPSTORE_USERNAME}" -p "${MACOS_APPSTORE_APP_PASSWORD}" 2>&1) + # echo "${progress}" + + if [ $? -ne 0 ] || [[ "${progress}" =~ "Invalid" ]] ; then + echo "Error with notarization. Exiting" + break + fi + + if [[ "${progress}" =~ "success" ]]; then + success=1 + break + else + echo "Not completed yet. Sleeping for 10 seconds" + fi + sleep 10 +done + +# staple +xcrun stapler staple "${dmg}" \ No newline at end of file diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml new file mode 100644 index 0000000..a14afc5 --- /dev/null +++ b/.github/workflows/cd.yml @@ -0,0 +1,190 @@ +name: CD + +on: + push: + branches: + - master + release: + types: + - created + +jobs: + cancel_previous_runs: + runs-on: ubuntu-latest + name: Cancel Previous Runs + steps: + - uses: styfle/cancel-workflow-action@0.8.0 + with: + access_token: ${{ github.token }} + + test_ubuntu: + needs: [cancel_previous_runs] + runs-on: ubuntu-18.04 + name: Test Ubuntu + steps: + - uses: actions/checkout@v2 + - name: Install Dependencies + run: .github/scripts/install-ubuntu.sh + - name: Build & Test + run: .github/scripts/build-ubuntu.sh + + test_windows: + needs: [cancel_previous_runs] + runs-on: windows-2019 + name: Test Windows + steps: + - uses: actions/checkout@v2 + - name: Install Dependencies + run: .github/scripts/install-windows.sh + shell: bash + - name: Build & Test + run: .github/scripts/build-windows.sh + shell: bash + + test_macos: + needs: [cancel_previous_runs] + runs-on: macos-10.15 + name: Test macOS + steps: + - uses: actions/checkout@v2 + - name: Install Dependencies + run: .github/scripts/install-macos.sh ci + - name: Build & Test + run: .github/scripts/build-macos.sh debug arm64 && .github/scripts/build-macos.sh debug x86_64 + + build_release_windows: + needs: [test_ubuntu, test_windows, test_macos] + name: Build Release Windows + runs-on: windows-2019 + steps: + - uses: actions/checkout@v2 + - name: Install Dependencies + run: .github/scripts/install-windows.sh + shell: bash + - name: Build & Test + run: .github/scripts/build-windows.sh release + shell: bash + - name: Upload artifact + uses: actions/upload-artifact@v2 + with: + name: windows + path: build/bin/RelWithDebInfo/solvespace.exe + + build_release_windows_openmp: + needs: [test_ubuntu, test_windows, test_macos] + name: Build Release Windows (OpenMP) + runs-on: windows-2019 + steps: + - uses: actions/checkout@v2 + - name: Install Dependencies + run: .github/scripts/install-windows.sh + shell: bash + - name: Build & Test + run: .github/scripts/build-windows.sh release openmp + shell: bash + - name: Upload artifact + uses: actions/upload-artifact@v2 + with: + name: windows-openmp + path: build/bin/RelWithDebInfo/solvespace-openmp.exe + + build_release_macos: + needs: [test_ubuntu, test_windows, test_macos] + name: Build Release macOS + runs-on: macos-10.15 + steps: + - uses: actions/checkout@v2 + - name: Install Dependencies + run: .github/scripts/install-macos.sh ci + - name: Build & Test + run: .github/scripts/build-macos.sh release arm64 && .github/scripts/build-macos.sh release x86_64 + - name: Sign Build + run: .github/scripts/sign-macos.sh + env: + MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }} + MACOS_CERTIFICATE_P12: ${{ secrets.MACOS_CERTIFICATE_P12 }} + MACOS_APPSTORE_APP_PASSWORD: ${{ secrets.MACOS_APPSTORE_APP_PASSWORD }} + MACOS_APPSTORE_USERNAME: ${{ secrets.MACOS_APPSTORE_USERNAME }} + MACOS_DEVELOPER_ID: ${{ secrets.MACOS_DEVELOPER_ID }} + - name: Upload artifact + uses: actions/upload-artifact@v2 + with: + name: macos + path: build/bin/SolveSpace.dmg + + deploy_snap_amd64: + needs: [test_ubuntu, test_windows, test_macos] + name: Deploy AMD64 Snap + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Fetch Tags + run: git fetch --force --tags + - name: Set Up Source + run: rsync --filter=":- .gitignore" -r ./ pkg/snap/solvespace-snap-src + - name: Build Snap + uses: snapcore/action-build@v1 + id: build + with: + path: pkg/snap + - name: Upload & Release to Edge + if: github.event_name == 'push' + uses: snapcore/action-publish@v1 + with: + store_login: ${{ secrets.SNAPSTORE_LOGIN }} + snap: ${{ steps.build.outputs.snap }} + release: edge + - name: Upload & Release to Beta + Edge + if: github.event_name == 'release' + uses: snapcore/action-publish@v1 + with: + store_login: ${{ secrets.SNAPSTORE_LOGIN }} + snap: ${{ steps.build.outputs.snap }} + release: edge,beta + + upload_release_assets: + name: Upload Release Assets + needs: [build_release_windows, build_release_windows_openmp, build_release_macos] + if: "!cancelled() && github.event_name == 'release'" + runs-on: ubuntu-latest + steps: + - name: Download All Workflow Artifacts + uses: actions/download-artifact@v2 + - name: Get Release Upload URL + id: get_upload_url + env: + event: ${{ toJson(github.event) }} + run: | + upload_url=$(echo "$event" | jq -r ".release.upload_url") + echo "::set-output name=upload_url::$upload_url" + echo "Upload URL: $upload_url" + - name: Upload solvespace.exe + uses: actions/upload-release-asset@v1 + continue-on-error: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.get_upload_url.outputs.upload_url }} + asset_path: windows/solvespace.exe + asset_name: solvespace.exe + asset_content_type: binary/octet-stream + - name: Upload solvespace-openmp.exe + uses: actions/upload-release-asset@v1 + continue-on-error: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.get_upload_url.outputs.upload_url }} + asset_path: windows-openmp/solvespace-openmp.exe + asset_name: solvespace-openmp.exe + asset_content_type: binary/octet-stream + - name: Upload SolveSpace.dmg + uses: actions/upload-release-asset@v1 + continue-on-error: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.get_upload_url.outputs.upload_url }} + asset_path: macos/SolveSpace.dmg + asset_name: SolveSpace.dmg + asset_content_type: binary/octet-stream diff --git a/.github/workflows/source-tarball.yml b/.github/workflows/source-tarball.yml new file mode 100644 index 0000000..8bc0622 --- /dev/null +++ b/.github/workflows/source-tarball.yml @@ -0,0 +1,51 @@ +name: Source Tarball + +on: + release: + types: + - created + +jobs: + create_tarball: + name: Create & Upload Tarball + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + submodules: true + fetch-depth: 0 + - name: Pack Tarball + id: pack_tarball + run: | + version="${GITHUB_REF#refs/tags/v}" + dir_name="solvespace-${version}" + archive_name="${dir_name}.tar.xz" + archive_path="${HOME}/${archive_name}" + + echo "::set-output name=archive_name::${archive_name}" + echo "::set-output name=archive_path::${archive_path}" + + cd .. + tar \ + --exclude-vcs \ + --transform "s:^solvespace:${dir_name}:" \ + -cvaf \ + ${archive_path} \ + solvespace + - name: Get Release Upload URL + id: get_upload_url + env: + event: ${{ toJson(github.event) }} + run: | + upload_url=$(echo "$event" | jq -r ".release.upload_url") + echo "::set-output name=upload_url::$upload_url" + echo "Upload URL: $upload_url" + - name: Upload Tarball + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.get_upload_url.outputs.upload_url }} + asset_path: ${{ steps.pack_tarball.outputs.archive_path }} + asset_name: ${{ steps.pack_tarball.outputs.archive_name }} + asset_content_type: binary/octet-stream diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..1ca64b3 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,44 @@ +name: Test + +on: + pull_request: + branches: + - master + push: + branches-ignore: + - master + tags-ignore: + - v* + +jobs: + test_ubuntu: + runs-on: ubuntu-18.04 + name: Test Ubuntu + steps: + - uses: actions/checkout@v2 + - name: Install Dependencies + run: .github/scripts/install-ubuntu.sh + - name: Build & Test + run: .github/scripts/build-ubuntu.sh + + test_windows: + runs-on: windows-2019 + name: Test Windows + steps: + - uses: actions/checkout@v2 + - name: Install Dependencies + run: .github/scripts/install-windows.sh + shell: bash + - name: Build & Test + run: .github/scripts/build-windows.sh + shell: bash + + test_macos: + runs-on: macos-10.15 + name: Test macOS + steps: + - uses: actions/checkout@v2 + - name: Install Dependencies + run: .github/scripts/install-macos.sh ci + - name: Build & Test + run: .github/scripts/build-macos.sh debug arm64 && .github/scripts/build-macos.sh debug x86_64 diff --git a/CHANGELOG.md b/CHANGELOG.md index 8447d0e..7f6a4af 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,273 +1,345 @@ Changelog ========= +3.x - since the 3.0 release, only available in edge builds +--- + +Constraints: + +* Arcs length ratio and difference. +* Arc & Line length ratio and difference. +* Allow comments to be associated with point entities. + +Sketching: + +* Support for pan, zoom and rotate trackpad gestures on macOS +* Add "exploded view" to sketches via "\\" key. Shows sketch elements separated + by a configurable distance perpendicular to the sketch plane. +* Added Feet-Inches as a unit of measure. Inputs are still in inches. + But the display shows feet, inches, and fraction of an inch. +* Added an optional "pitch" parameter to helix extrusions (in the text window) +* Allow use of Point & Normal to define "sketch-in-new-workplane". +* Update "Property Browser" live while dragging the sketch. + +MISC: + +* Add a link to the GitHub commit from which SolveSpace was built in the Help + menu. +* Make all points, vectors and normals shown in the Property Browser into + active links. This makes them explorable and selectable. +* Load 16bit PNG images correctly by re-scaling to 8bit. +* Fixed hang when trying to display characters missing from the embedded font. +* The main window vertical size can be as small as the toolbar. +* Configurable "SafeHeight" parameter instead of the fixed 5mm for G-code export. +* Add Spanish / Argentina translation. +* Move "perspective factor", "lighting direction" and "explode distance" from + the "configuration" screen to the "view" screen. +* Add a "∆" suffix to groups which have "force to triangle mesh" ticked +* Gray the group name in the text window for groups with suppressed solid model. +* Added the ability to Link STL files. +* When linking circuit boards (IDF .emn files) show keepout regions as construction entities. + +Performance: + +* Speed up sketches with many constraints by roughly 8x by using the Eigen + library in the solver. The maximum unknowns increased from 1024 to 2048. +* Add a "suppress dof calculation" setting to groups - increases performance for + complex sketches. +* More changes to the ID list implementation. + 3.0 --- New sketch features: - * New intersection boolean operation for solid models. - * New groups, revolution and helical extrusion. - * Extrude, lathe, translate and rotate groups can use the "assembly" - boolean operation, to increase performance. - * The solid model of extrude and lathe groups can be suppressed, - for splitting a single model in multiple parts to export, - or if only the generated entities are desired, without the mesh. - * Translate and rotate groups can create n-dimensional arrays using - the "difference" and "assembly" boolean operations. - * A new sketch in workplane group can be created based on existing workplane. - * TTF text request has two additional points on the right side, which allow - constraining the width of text. - * Image requests can now be created, similar to TTF text requests. - This replaces the "style → background image" feature. - * Irrelevant points (e.g. arc center point) are not counted when estimating - the bounding box used to compute chord tolerance. - * When adding a constraint which has a label and is redundant with another - constraint, the constraint is added as a reference, avoiding an error. - * Datum points can be copied and pasted. - * "Split Curves at Intersection" can now split curves at point lying on curve, - not just at intersection of two curves. - * Property browser now shows amount of degrees of freedom in group list. - It also shows a yellow "err" if the sketch has problems (e.g. self - intersecting) that would propagate in subsequent groups. + +* New intersection boolean operation for solid models. +* New groups, revolution and helical extrusion. +* Extrude, lathe, translate and rotate groups can use the "assembly" + boolean operation, to increase performance. +* The solid model of extrude and lathe groups can be suppressed, + for splitting a single model in multiple parts to export, + or if only the generated entities are desired, without the mesh. +* Translate and rotate groups can create n-dimensional arrays using + the "difference" and "assembly" boolean operations. +* A new sketch in workplane group can be created based on existing workplane. +* TTF text request has two additional points on the right side, which allow + constraining the width of text. +* Image requests can now be created, similar to TTF text requests. + This replaces the "style → background image" feature. +* Irrelevant points (e.g. arc center point) are not counted when estimating + the bounding box used to compute chord tolerance. +* When adding a constraint which has a label and is redundant with another + constraint, the constraint is added as a reference, avoiding an error. +* Datum points can be copied and pasted. +* "Split Curves at Intersection" can now split curves at point lying on curve, + not just at intersection of two curves. +* Property browser now shows amount of degrees of freedom in group list. + It also shows a yellow "err" if the sketch has problems (e.g. self + intersecting) that would propagate in subsequent groups. +* It is now possible to press "g" to toggle construction on new objects while + they are still being drawn. +* Allow right click to end sketching of all entities. New constraint features: - * When dragging an arc or rectangle point, it will be automatically - constrained to other points with a click. - * When selecting a constraint, the requests it constraints can be selected - in the text window. - * When selecting an entity, the constraints applied to it can be selected - in the text window. - * Distance constraint labels can now be formatted to use SI prefixes. - Values are edited in the configured unit regardless of label format. - * When creating a constraint, if an exactly identical constraint already - exists, it is now selected instead of adding a redundant constraint. - * It is now possible to turn off automatic creation of horizontal/vertical - constraints on line segments. - * Automatic creation of constraints no longer happens if the constraint - would have been redundant with other ones. - * New option to open the constraint editor for newly created constraints - with a value. + +* When dragging an arc or rectangle point, it will be automatically + constrained to other points with a click. +* When selecting a constraint, the requests it constraints can be selected + in the text window. +* When selecting an entity, the constraints applied to it can be selected + in the text window. +* Distance constraint labels can now be formatted to use SI prefixes. + Values are edited in the configured unit regardless of label format. +* When creating a constraint, if an exactly identical constraint already + exists, it is now selected instead of adding a redundant constraint. +* It is now possible to turn off automatic creation of horizontal/vertical + constraints on line segments. +* Automatic creation of constraints no longer happens if the constraint + would have been redundant with other ones. +* New option to open the constraint editor for newly created constraints + with a value. +* New "redundant constraint timeout (in ms)" option to prevent UI freeze + when looking for redundant constraints. +* Swap vertical and horizontal constraints when pasting rotated by 90/270 + degrees. New export/import features: - * Link IDF circuit boards in an assembly (.emn files) - * Three.js: allow configuring projection for exported model, and initially - use the current viewport projection. - * Wavefront OBJ: a material file is exported alongside the model, containing - mesh color information. - * DXF/DWG: 3D DXF files are imported as construction entities, in 3d. - * [ADDED 2019-02-25](https://github.com/solvespace/solvespace/pull/384) and [REMOVED 2020-11-13](https://github.com/solvespace/solvespace/issues/795): - Q3D: [Q3D](https://github.com/q3k/q3d/) triangle meshes can now be - exported. This format allows to easily hack on triangle mesh data created - in SolveSpace, supports colour information and is more space efficient than - most other formats. - * VRML (WRL) triangle meshes can now be exported, useful for e.g. [KiCAD](http://kicad.org). - * Export 2d section: custom styled entities that lie in the same - plane as the exported section are included. + +* Link IDF circuit boards in an assembly (.emn files) +* Three.js: allow configuring projection for exported model, and initially + use the current viewport projection. +* Wavefront OBJ: a material file is exported alongside the model, containing + mesh color information. +* DXF/DWG: 3D DXF files are imported as construction entities, in 3d. +* VRML (WRL) triangle meshes can now be exported, useful for e.g. [KiCAD](http://kicad.org). +* Export 2d section: custom styled entities that lie in the same + plane as the exported section are included. +* Added ExportBackgroundColor in configuration for EPS, PDF, and SVG files. +* STEP export includes object colors and transparency. +* Default "line styles" have a new "export these objects" option. New rendering features: - * The "Show/hide hidden lines" button is now a tri-state button that allows - showing all lines (on top of shaded mesh), stippling occluded lines - or not drawing them at all. - * The "Show/hide outlines" button is now independent from "Show/hide edges". + +* The "Show/hide hidden lines" button is now a tri-state button that allows + showing all lines (on top of shaded mesh), stippling occluded lines + or not drawing them at all. +* The "Show/hide outlines" button is now independent from "Show/hide edges". +* "View | Darken Inactive Solids" added. When turned off and a "sketch in plane" + group is active solids form previous groups will not be "darkened" (have the + s000d-#def-dim-solid style applied to them). New measurement/analysis features: - * New choice for base unit, meters. - * New command for measuring total length of selected entities, - "Analyze → Measure Perimeter". - * New command for measuring center of mass, with live updates as the sketch - changes, "Analyze → Center of Mass". - * New option for displaying areas of closed contours. - * When calculating volume of the mesh, volume of the solid from the current - group is now shown alongside total volume of all solids. - * When calculating area, and faces are selected, calculate area of those faces - instead of the closed contour in the sketch. - * When selecting a point and a line, projected distance to current - workplane is displayed. + +* New choice for base unit, meters. +* New command for measuring total length of selected entities, + "Analyze → Measure Perimeter". +* New command for measuring center of mass, with live updates as the sketch + changes, "Analyze → Center of Mass". +* New option for displaying areas of closed contours. +* When calculating volume of the mesh, volume of the solid from the current + group is now shown alongside total volume of all solids. +* When calculating area, and faces are selected, calculate area of those faces + instead of the closed contour in the sketch. +* When selecting a point and a line, projected distance to current + workplane is displayed. Other new features: - * Added ExportBackgroundColor in configuration for EPS, PDF, and SVG files. - * Improvements to the text window for selected entities and constraints. - * Ambient light source added in text window to allow flat shaded renderings. - * New command-line interface, for batch exporting and more. - * The graphical interface now supports HiDPI screens on every OS. - * New option to lock Z axis to be always vertical, like in SketchUp. - * New button to hide all construction entities. - * New link to match the on-screen size of the sketch with its actual size, - "view → set to full scale". - * When zooming to fit, constraints are also considered. - * Ctrl-clicking entities now deselects them, as the inverse of clicking. - * When clicking on an entity that shares a place with other entities, - the entity from the current group is selected. - * When dragging an entity that shares a place with other entities, - the entity from a request is selected. For example, dragging a point on - a face of an extrusion coincident with the source sketch plane will - drag the point from the source sketch. - * The default font for TTF text is now Bitstream Vera Sans, which is - included in the resources such that it is available on any OS. - * In expressions, numbers can contain the digit group separator, "_". - * The "=" key is bound to "Zoom In", like "+" key. - * The numpad decimal separator key is bound to "." regardless of locale. - * On Windows, full-screen mode is implemented. - * On Linux, native file chooser dialog can be used. - * New edit menu items "Line Styles", "View Projection" and "Configuration" - that are shortcuts to the respective configuration screens. - * New cmake build options using -DENABLE_OPENMP=yes and -DENABLE_LTO=yes - to enable support for multi-threading and link-time optimization. - * "Shift+Scroll" for ten times finer zoom. + +* Improvements to the text window for selected entities and constraints. +* Ambient light source added in text window to allow flat shaded renderings. +* New command-line interface, for batch exporting and more. +* The graphical interface now supports HiDPI screens on every OS. +* New option to lock Z axis to be always vertical when rotating the view, + a.k.a. "turntable navigation". +* New button to hide all construction entities. +* New link to match the on-screen size of the sketch with its actual size, + "view → set to full scale". +* When zooming to fit, constraints are also considered. +* Ctrl-clicking entities now deselects them, as the inverse of clicking. +* When clicking on an entity that shares a place with other entities, + the entity from the current group is selected. +* When dragging an entity that shares a place with other entities, + the entity from a request is selected. For example, dragging a point on + a face of an extrusion coincident with the source sketch plane will + drag the point from the source sketch. +* The default font for TTF text is now Bitstream Vera Sans, which is + included in the resources such that it is available on any OS. +* In expressions, numbers can contain the digit group separator, "_". +* The "=" key is bound to "Zoom In", like "+" key. +* The numpad decimal separator key is bound to "." regardless of locale. +* On Windows, full-screen mode is implemented. +* On Linux, native file chooser dialog can be used. +* New edit menu items "Line Styles", "View Projection" and "Configuration" + that are shortcuts to the respective configuration screens. +* New cmake build options using -DENABLE_OPENMP=yes and -DENABLE_LTO=yes + to enable support for multi-threading and link-time optimization. +* "Shift+Scroll" for ten times finer zoom. +* Translations: Chinese, French, German, Russian, Turkish, Ukrainian. Bugs fixed: - * Fixed broken --view options for command line thumbnail image creation. - * Some errors in Triangulation of surfaces. - * Some NURNS boolean operations that failed particularly on surfaces - created with Lathe, Revolve, or Helix. - * Segfault in Remove Spline Point context menu. - * A point in 3d constrained to any line whose length is free no longer - causes the line length to collapse. - * Curve-line constraints (in 3d), parallel constraints (in 3d), and - same orientation constraints are more robust. - * Adding some constraints (vertical, midpoint, etc) twice errors out - immediately, instead of later and in a confusing way. - * Constraining a newly placed point to a hovered entity does not cause - spurious changes in the sketch. - * Points highlighted with "Analyze → Show Degrees of Freedom" are drawn - on top of all other geometry. - * A step rotate/translate group using a group forced to triangle mesh - as a source group also gets forced to triangle mesh. - * Paste Transformed with a negative scale does not invert arcs. - * The tangent arc now modifies the original entities instead of deleting - them, such that their constraints are retained. - * When linking a sketch file, missing custom styles are now imported from - the linked file. - * 3Dconnexion SpaceMouse should now work (on Windows and macOS X). - * Improved NURBS boolean operations on curved surfaces in some cases. - * Show only usable fonts in the font selector. + +* Fixed broken --view options for command line thumbnail image creation. +* Some errors in Triangulation of surfaces. +* Some NURNS boolean operations that failed particularly on surfaces + created with Lathe, Revolve, or Helix. +* Segfault in Remove Spline Point context menu. +* A point in 3d constrained to any line whose length is free no longer + causes the line length to collapse. +* Curve-line constraints (in 3d), parallel constraints (in 3d), and + same orientation constraints are more robust. +* Adding some constraints (vertical, midpoint, etc) twice errors out + immediately, instead of later and in a confusing way. +* Constraining a newly placed point to a hovered entity does not cause + spurious changes in the sketch. +* Points highlighted with "Analyze → Show Degrees of Freedom" are drawn + on top of all other geometry. +* A step rotate/translate group using a group forced to triangle mesh + as a source group also gets forced to triangle mesh. +* Paste Transformed with a negative scale does not invert arcs. +* The tangent arc now modifies the original entities instead of deleting + them, such that their constraints are retained. +* When linking a sketch file, missing custom styles are now imported from + the linked file. +* 3Dconnexion SpaceMouse should now work (on Windows and macOS X). +* Improved NURBS boolean operations on curved surfaces in some cases. +* Show only usable fonts in the font selector. 2.x --- Bug fixes: - * Do not crash when changing an unconstrained lathe group between - union and difference modes. + +* Do not crash when changing an unconstrained lathe group between + union and difference modes. 2.3 --- Bug fixes: - * Do not crash when applying a symmetry constraint to two points. - * Fix TTF font metrics again (properly this time). - * Fix the "draw back faces in red" option. - * Fix export of wireframe as 3D DXF. - * Various minor crashes. + +* Do not crash when applying a symmetry constraint to two points. +* Fix TTF font metrics again (properly this time). +* Fix the "draw back faces in red" option. +* Fix export of wireframe as 3D DXF. +* Various minor crashes. 2.2 --- Other new features: - * OS X: support 3Dconnexion devices (SpaceMouse, SpaceNavigator, etc). - * GTK: files with uppercase extensions can be opened. + +* OS X: support 3Dconnexion devices (SpaceMouse, SpaceNavigator, etc). +* GTK: files with uppercase extensions can be opened. Bug fixes: - * Do not remove autosaves after successfully opening a file, preventing - data loss in case of two abnormal terminations in a row. - * Do not crash when changing autosave interval. - * Unbreak the "Show degrees of freedom" command. - * Three.js: correctly respond to controls when browser zoom is used. - * OS X: do not completely hide main window when defocused. - * GTK: unbreak 3Dconnexion support. - * When pasting transformed entities, multiply constraint values by scale. - * Fix TTF font metrics (restore the behavior from version 2.0). - * Forcibly show the current group once we start a drawing operation. - * DXF export: always declare layers before using them. - * Do not truncate operations on selections to first 32 selected entities. - * Translate and rotate groups inherit the "suppress solid model" setting. - * DXF: files with paths containing non-ASCII or spaces can be exported - or imported. - * Significantly improved performance when dragging an entity. - * Various crashes and minor glitches. + +* Do not remove autosaves after successfully opening a file, preventing + data loss in case of two abnormal terminations in a row. +* Do not crash when changing autosave interval. +* Unbreak the "Show degrees of freedom" command. +* Three.js: correctly respond to controls when browser zoom is used. +* OS X: do not completely hide main window when defocused. +* GTK: unbreak 3Dconnexion support. +* When pasting transformed entities, multiply constraint values by scale. +* Fix TTF font metrics (restore the behavior from version 2.0). +* Forcibly show the current group once we start a drawing operation. +* DXF export: always declare layers before using them. +* Do not truncate operations on selections to first 32 selected entities. +* Translate and rotate groups inherit the "suppress solid model" setting. +* DXF: files with paths containing non-ASCII or spaces can be exported + or imported. +* Significantly improved performance when dragging an entity. +* Various crashes and minor glitches. 2.1 --- New sketch features: - * Lathe groups create circle and face entities. - * New toolbar button for creating lathe groups. - * Chord tolerance is separated into two: display chord tolerance (specified - in percents, relative to model bounding box), and export chord tolerance - (specified in millimeters as absolute value). - * Bezier spline points can be added and removed after the spline is created. - * When an unconstrained extrusion is switched between "union" and - "difference", its normal is flipped. - * Groups can be added in the middle of the stack. Note that this results - in files incompatible with version 2.0. - * Active group can be removed. - * Removing an imported group does not cause all subsequent groups to also - be removed. - * When a new group with a solid is created, the color is taken from - a previous group with a solid, if any. - * Entities in a newly active group do not become visible. - * When entities are selected, "Zoom to fit" zooms to fit only these - entities and not the entire sketch. - * Zero-length edges are reported with a "zero-length error", not - "points not all coplanar". + +* Lathe groups create circle and face entities. +* New toolbar button for creating lathe groups. +* Chord tolerance is separated into two: display chord tolerance (specified + in percents, relative to model bounding box), and export chord tolerance + (specified in millimeters as absolute value). +* Bezier spline points can be added and removed after the spline is created. +* When an unconstrained extrusion is switched between "union" and + "difference", its normal is flipped. +* Groups can be added in the middle of the stack. Note that this results + in files incompatible with version 2.0. +* Active group can be removed. +* Removing an imported group does not cause all subsequent groups to also + be removed. +* When a new group with a solid is created, the color is taken from + a previous group with a solid, if any. +* Entities in a newly active group do not become visible. +* When entities are selected, "Zoom to fit" zooms to fit only these + entities and not the entire sketch. +* Zero-length edges are reported with a "zero-length error", not + "points not all coplanar". New constraint features: - * Height of the font used for drawing constraint labels can be changed. - * New constraint, length difference, placed with J. - (Patch by Peter Ruevski) - * Horizontal/vertical constraints are automatically added if a line segment - is close enough to being horizontal/vertical. This can be disabled by - holding Ctrl. - * Reference dimensions and angles can be placed with Shift+D and Shift+N. - * Copying and pasting entities duplicates any constraints that only involve - entities in the clipboard, as well as selected comments. - * Diameter constraints can be shown as radius. - * The "pi" identifier can be used in expressions. - * Constraint labels can be snapped to grid. - * Integer angles are displayed without trailing zeroes. - * Angle constraints have proper reference lines and arrowheads. - * Extension lines are drawn for point-line distance constraints. + +* Height of the font used for drawing constraint labels can be changed. +* New constraint, length difference, placed with J. + (Patch by Peter Ruevski) +* Horizontal/vertical constraints are automatically added if a line segment + is close enough to being horizontal/vertical. This can be disabled by + holding Ctrl. +* Reference dimensions and angles can be placed with Shift+D and Shift+N. +* Copying and pasting entities duplicates any constraints that only involve + entities in the clipboard, as well as selected comments. +* Diameter constraints can be shown as radius. +* The "pi" identifier can be used in expressions. +* Constraint labels can be snapped to grid. +* Integer angles are displayed without trailing zeroes. +* Angle constraints have proper reference lines and arrowheads. +* Extension lines are drawn for point-line distance constraints. New solver features: - * Sketches with redundant and unsolvable constraints are distinguished. - * New group setting, "allow redundant constraints". Note that it makes - the solver less stable. + +* Sketches with redundant and unsolvable constraints are distinguished. +* New group setting, "allow redundant constraints". Note that it makes + the solver less stable. New rendering and styling features: - * New line style parameter: stippling, based on ISO 128. - * Outlines of solids can be drawn in a particular style (by default, thick - lines) controlled by the "Show outline of solid model" button. - * Occluded edges can be drawn in a particular style (by default, stippled - with short dashes) controlled by the "Show hidden lines" button. - * Solids can be made transparent. + +* New line style parameter: stippling, based on ISO 128. +* Outlines of solids can be drawn in a particular style (by default, thick + lines) controlled by the "Show outline of solid model" button. +* Occluded edges can be drawn in a particular style (by default, stippled + with short dashes) controlled by the "Show hidden lines" button. +* Solids can be made transparent. New export/import features: - * The old "import" command (for .slvs files) is renamed to "link". - * If a linked .slvs file is not found, first the relative path recorded - in the .slvs file is checked and then the absolute path; this is - an inversion of the previously used order. If it is still not found, - a dialog appears offering to locate it. - * DXF and DWG files can be imported, with point-coincident, horizontal and - vertical constraints automatically inferred from geometry, and distance - and angle constraints created when a dimension placed against geometry - exists. - * Triangle mesh can be exported for viewing in the browser through WebGL. - * Export dialogs remember the last file format used, and preselect it. - * Exported DXF files have exact circles, arcs and splines instead of - a piecewise linear approximation (unless hidden line removal was needed). - * Exported DXF files preserve color and line thickness. - * In exported DXF files, constraints are represented as DXF dimensions, - instead of piecewise linear geometry. - * When exporting 2d views, overlapping lines are removed. + +* The old "import" command (for .slvs files) is renamed to "link". +* If a linked .slvs file is not found, first the relative path recorded + in the .slvs file is checked and then the absolute path; this is + an inversion of the previously used order. If it is still not found, + a dialog appears offering to locate it. +* DXF and DWG files can be imported, with point-coincident, horizontal and + vertical constraints automatically inferred from geometry, and distance + and angle constraints created when a dimension placed against geometry + exists. +* Triangle mesh can be exported for viewing in the browser through WebGL. +* Export dialogs remember the last file format used, and preselect it. +* Exported DXF files have exact circles, arcs and splines instead of + a piecewise linear approximation (unless hidden line removal was needed). +* Exported DXF files preserve color and line thickness. +* In exported DXF files, constraints are represented as DXF dimensions, + instead of piecewise linear geometry. +* When exporting 2d views, overlapping lines are removed. Other new features: - * Native Linux (GTK 2 and GTK 3) and Mac OS X ports. - * Automatically save and then restore sketches if SolveSpace crashes. - (Patch by Marc Britten) - * Unicode is supported everywhere (filenames, group names, TTF text, - comments), although RTL scripts and scripts making heavy use of ligatures - are not rendered correctly. - * The vector font is grid-fitted when rendered on screen to make it easier - to read regardless of its size. + +* Native Linux (GTK 2 and GTK 3) and Mac OS X ports. +* Automatically save and then restore sketches if SolveSpace crashes. + (Patch by Marc Britten) +* Unicode is supported everywhere (filenames, group names, TTF text, + comments), although RTL scripts and scripts making heavy use of ligatures + are not rendered correctly. +* The vector font is grid-fitted when rendered on screen to make it easier + to read regardless of its size. 2.0 --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 1294878..7f08e95 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,5 @@ # cmake configuration +cmake_minimum_required(VERSION 3.9...3.19) if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR) message(FATAL_ERROR @@ -7,17 +8,9 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR) " mkdir build && cd build && cmake ..") endif() -cmake_minimum_required(VERSION 3.7.2 FATAL_ERROR) -if(NOT CMAKE_VERSION VERSION_LESS 3.11.0) - cmake_policy(VERSION 3.11.0) -endif() -if(NOT CMAKE_VERSION VERSION_LESS 3.9) - # LTO/IPO with non-Intel compilers on Linux requires policy CMP0069 to be set to NEW. - # Set it explicitly until cmake_minimum_required is raised to >= 3.9. - cmake_policy(SET CMP0069 NEW) -endif() -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} +list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/") + set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED YES) @@ -27,10 +20,15 @@ set(CMAKE_USER_MAKE_RULES_OVERRIDE set(CMAKE_USER_MAKE_RULES_OVERRIDE_CXX "${CMAKE_SOURCE_DIR}/cmake/cxx_flag_overrides.cmake") -if(APPLE OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") +if(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") endif() +if (APPLE) + # Docs say this must be set before the first project() call + set(CMAKE_OSX_DEPLOYMENT_TARGET "10.12" CACHE STRING "macOS minimum supported version") +endif() + # project # NOTE TO PACKAGERS: The embedded git commit hash is critical for rapid bug triage when the builds @@ -40,10 +38,10 @@ include(GetGitCommitHash) # and instead uncomment the following, adding the complete git hash of the checkout you are using: # set(GIT_COMMIT_HASH 0000000000000000000000000000000000000000) -project(solvespace) -set(solvespace_VERSION_MAJOR 3) -set(solvespace_VERSION_MINOR 0) string(SUBSTRING "${GIT_COMMIT_HASH}" 0 8 solvespace_GIT_HASH) +project(solvespace + VERSION 3.1 + LANGUAGES C CXX ASM) set(ENABLE_GUI ON CACHE BOOL "Whether the graphical interface is enabled") @@ -57,8 +55,11 @@ set(ENABLE_SANITIZERS OFF CACHE BOOL "Whether to enable Clang's AddressSanitizer and UndefinedBehaviorSanitizer") set(ENABLE_OPENMP OFF CACHE BOOL "Whether geometric operations will be parallelized using OpenMP") -set(ENABLE_LTO OFF CACHE BOOL +set(ENABLE_LTO OFF CACHE BOOL "Whether interprocedural (global) optimizations are enabled") +option(FORCE_VENDORED_Eigen3 + "Whether we should use our bundled Eigen even in the presence of a system copy" + OFF) set(OPENGL 3 CACHE STRING "OpenGL version to use (one of: 1 3)") @@ -68,10 +69,6 @@ if("${CMAKE_GENERATOR}" STREQUAL "Xcode") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY $<1:${CMAKE_BINARY_DIR}/bin>) endif() -if(NOT CMAKE_C_COMPILER_ID STREQUAL CMAKE_CXX_COMPILER_ID) - message(FATAL_ERROR "C and C++ compilers should be supplied by the same vendor") -endif() - if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0) # GCC 4.8/4.9 ship with broken but present . meh. @@ -82,11 +79,13 @@ endif() # common compiler flags include(CheckCXXCompilerFlag) -set(FILE_PREFIX_MAP "-ffile-prefix-map=${CMAKE_CURRENT_SOURCE_DIR}=.") -check_cxx_compiler_flag("${FILE_PREFIX_MAP}" HAS_FILE_PREFIX_MAP) -if(HAS_FILE_PREFIX_MAP) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FILE_PREFIX_MAP}") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FILE_PREFIX_MAP}") +if (NOT APPLE) + set(FILE_PREFIX_MAP "-ffile-prefix-map=${CMAKE_CURRENT_SOURCE_DIR}=.") + check_cxx_compiler_flag("${FILE_PREFIX_MAP}" HAS_FILE_PREFIX_MAP) + if(HAS_FILE_PREFIX_MAP) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FILE_PREFIX_MAP}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FILE_PREFIX_MAP}") + endif() endif() if(MINGW) @@ -117,7 +116,12 @@ endif() if(ENABLE_OPENMP) find_package( OpenMP REQUIRED ) if(OPENMP_FOUND) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") + add_library(slvs_openmp INTERFACE) + target_compile_options(slvs_openmp INTERFACE ${OpenMP_CXX_FLAGS}) + target_link_libraries(slvs_openmp INTERFACE + ${OpenMP_CXX_LIBRARIES}) + target_include_directories(slvs_openmp INTERFACE SYSTEM + ${OpenMP_CXX_INCLUDE_DIRS}) message(STATUS "found OpenMP, compiling with flags: " ${OpenMP_CXX_FLAGS} ) endif() endif() @@ -181,6 +185,9 @@ endif() message(STATUS "Using in-tree libdxfrw") add_subdirectory(extlib/libdxfrw) +message(STATUS "Using in-tree eigen") +include_directories(extlib/eigen) + message(STATUS "Using in-tree mimalloc") set(MI_OVERRIDE OFF CACHE BOOL "") set(MI_BUILD_SHARED OFF CACHE BOOL "") @@ -189,6 +196,18 @@ set(MI_BUILD_TESTS OFF CACHE BOOL "") add_subdirectory(extlib/mimalloc EXCLUDE_FROM_ALL) set(MIMALLOC_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/extlib/mimalloc/include) +if(NOT FORCE_VENDORED_Eigen3) + find_package(Eigen3 CONFIG) +endif() +if(FORCE_VENDORED_Eigen3 OR NOT EIGEN3_FOUND) + message(STATUS "Using in-tree Eigen") + set(EIGEN3_FOUND YES) + set(EIGEN3_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extlib/eigen) +else() + message(STATUS "Using system Eigen: ${EIGEN3_INCLUDE_DIRS}") +endif() + + if(WIN32 OR APPLE) # On Win32 and macOS we use vendored packages, since there is little to no benefit # to trying to find system versions. In particular, trying to link to libraries from @@ -210,6 +229,12 @@ if(WIN32 OR APPLE) find_vendored_package(PNG libpng SKIP_INSTALL_ALL ON PNG_LIBRARY png_static + PNG_ARM_NEON "off" + PNG_SHARED OFF + PNG_STATIC ON + PNG_EXECUTABLES OFF + PNG_TESTS OFF + PNG_FRAMEWORK OFF PNG_PNG_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/extlib/libpng) list(APPEND PNG_PNG_INCLUDE_DIR ${CMAKE_BINARY_DIR}/extlib/libpng) @@ -222,11 +247,14 @@ if(WIN32 OR APPLE) FREETYPE_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extlib/freetype/include) message(STATUS "Using in-tree pixman") - add_vendored_subdirectory(extlib/pixman) set(PIXMAN_FOUND YES) set(PIXMAN_LIBRARY pixman) + set(PIXMAN_BUILD_TESTS OFF CACHE BOOL "") + set(PIXMAN_BUILD_DEMOS OFF CACHE BOOL "") + set(PIXMAN_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extlib/pixman/pixman) list(APPEND PIXMAN_INCLUDE_DIRS ${CMAKE_BINARY_DIR}/extlib/pixman/pixman) + add_vendored_subdirectory(extlib/pixman) message(STATUS "Using in-tree cairo") add_vendored_subdirectory(extlib/cairo) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index aee8bb5..5636b39 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -17,8 +17,8 @@ so any savefiles should first be archived. Licensing --------------- -SolveSpace is licensed under the GPLv3 and any contributions must be made available -under the terms of that license. +SolveSpace is licensed under the GPLv3 or later and any contributions +must be made available under the terms of that license. Contributing translations ------------------------- diff --git a/README.md b/README.md index 6e575a5..55fe72d 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ +# SolveSpace + SolveSpace Logo -SolveSpace -========== [![Build Status](https://github.com/solvespace/solvespace/workflows/CD/badge.svg)](https://github.com/solvespace/solvespace/actions) [![solvespace](https://snapcraft.io/solvespace/badge.svg)](https://snapcraft.io/solvespace) [![solvespace](https://snapcraft.io/solvespace/trending.svg?name=0)](https://snapcraft.io/solvespace) @@ -9,159 +9,196 @@ SolveSpace This repository contains the source code of [SolveSpace][], a parametric 2d/3d CAD. -[solvespace]: http://solvespace.com +[solvespace]: https://solvespace.com -Community ---------- +## Community The official SolveSpace [website][sswebsite] has [tutorials][sstutorial], [reference manual][ssref] and a [forum][ssforum]; there is also an official -IRC channel [#solvespace at irc.freenode.net][ssirc]. +IRC channel [#solvespace at web.libera.chat][ssirc]. [sswebsite]: http://solvespace.com/ [ssref]: http://solvespace.com/ref.pl [sstutorial]: http://solvespace.com/tutorial.pl [ssforum]: http://solvespace.com/forum.pl -[ssirc]: https://webchat.freenode.net/?channels=solvespace +[ssirc]: https://web.libera.chat/#solvespace -Installation ------------- +## Installation -### Via official binary packages +### Via Official Packages -_Official_ release binary packages for macOS (>=10.6 64-bit) and Windows (>=Vista 32-bit) are -available via [GitHub releases][rel]. These packages are automatically built by -the SolveSpace maintainers for each stable release. +_Official_ release packages for macOS (>=10.6 64-bit) and Windows +(>=Vista 32-bit) are available via [GitHub releases][rel]. These packages are +automatically built by the SolveSpace maintainers for each stable release. [rel]: https://github.com/solvespace/solvespace/releases ### Via Snap Store -Builds from master are automatically released to the `edge` channel in the Snap Store. Those packages contain the latest improvements, but receive less testing than release builds. +Official releases can be installed from the `stable` channel. -Future official releases will appear in the `stable` channel. +Builds from master are automatically released to the `edge` channel in the Snap +Store. Those packages contain the latest improvements, but receive less testing +than release builds. [![Get it from the Snap Store](https://snapcraft.io/static/images/badges/en/snap-store-black.svg)](https://snapcraft.io/solvespace) Or install from a terminal: +```sh +# for the latest stable release: +snap install solvespace + +# for the bleeding edge builds from master: +snap install solvespace --edge ``` -snap install --edge solvespace -``` -### Via third-party binary packages +### Via automated edge builds + +> :warning: **Edge builds might be unstable or contain severe bugs!** +> They are intended for experienced users to test new features or verify bugfixes. -_Third-party_ nightly binary packages for Debian and Ubuntu are available -via [notesalexp.org][notesalexp]. These packages are automatically built from non-released -source code. The SolveSpace maintainers do not control the contents of these packages -and cannot guarantee their functionality. +Cutting edge builds from the latest master commit are available as zip archives +from the following links: -[notesalexp]: https://notesalexp.org/packages/en/source/solvespace/ +- [macOS](https://nightly.link/solvespace/solvespace/workflows/cd/master/macos.zip) +- [Windows](https://nightly.link/solvespace/solvespace/workflows/cd/master/windows.zip) +- [Windows with OpenMP enabled](https://nightly.link/solvespace/solvespace/workflows/cd/master/windows-openmp.zip) + +Extract the downloaded archive and install or execute the contained file as is +appropriate for your platform. ### Via source code See below. -Building on Linux ------------------ +## Building on Linux ### Building for Linux -You will need the usual build tools, CMake, zlib, libpng, cairo, freetype. -To build the GUI, you will need fontconfig, gtkmm 3.0 (version 3.16 or later), pangomm 1.4, -OpenGL and OpenGL GLU, and optionally, the Space Navigator client library. -On a Debian derivative (e.g. Ubuntu) these can be installed with: +You will need the usual build tools, CMake, zlib, libpng, cairo, freetype. To +build the GUI, you will need fontconfig, gtkmm 3.0 (version 3.16 or later), +pangomm 1.4, OpenGL and OpenGL GLU, and optionally, the Space Navigator client +library. On a Debian derivative (e.g. Ubuntu) these can be installed with: - sudo apt install git build-essential cmake zlib1g-dev libpng-dev \ - libcairo2-dev libfreetype6-dev libjson-c-dev \ - libfontconfig1-dev libgtkmm-3.0-dev libpangomm-1.4-dev \ - libgl-dev libglu-dev libspnav-dev +```sh +sudo apt install git build-essential cmake zlib1g-dev libpng-dev \ + libcairo2-dev libfreetype6-dev libjson-c-dev \ + libfontconfig1-dev libgtkmm-3.0-dev libpangomm-1.4-dev \ + libgl-dev libglu-dev libspnav-dev +``` -On a Redhat derivative (e.g. Fedora) the dependencies can be installed with: +On a RedHat derivative (e.g. Fedora) the dependencies can be installed with: - sudo dnf install git gcc-c++ cmake zlib-devel libpng-devel \ - cairo-devel freetype-devel json-c-devel \ - fontconfig-devel gtkmm30-devel pangomm-devel \ - mesa-libGL-devel mesa-libGLU-devel libspnav-devel +```sh +sudo dnf install git gcc-c++ cmake zlib-devel libpng-devel \ + cairo-devel freetype-devel json-c-devel \ + fontconfig-devel gtkmm30-devel pangomm-devel \ + mesa-libGL-devel mesa-libGLU-devel libspnav-devel +``` Before building, check out the project and the necessary submodules: - git clone https://github.com/solvespace/solvespace - cd solvespace - git submodule update --init extlib/libdxfrw extlib/mimalloc +```sh +git clone https://github.com/solvespace/solvespace +cd solvespace +git submodule update --init extlib/libdxfrw extlib/mimalloc extlib/eigen +``` After that, build SolveSpace as following: - mkdir build - cd build - cmake .. -DCMAKE_BUILD_TYPE=Release - make - sudo make install +```sh +mkdir build +cd build +cmake .. -DCMAKE_BUILD_TYPE=Release -DENABLE_OPENMP=ON +make -The graphical interface is built as `build/bin/solvespace`, and the command-line interface -is built as `build/bin/solvespace-cli`. It is possible to build only the command-line interface -by passing the `-DENABLE_GUI=OFF` flag to the cmake invocation. +# Optionally +sudo make install +``` + +Link Time Optimization is supported by adding `-DENABLE_LTO=ON` to cmake at the +expense of longer build time. + +The graphical interface is built as `build/bin/solvespace`, and the command-line +interface is built as `build/bin/solvespace-cli`. It is possible to build only +the command-line interface by passing the `-DENABLE_GUI=OFF` flag to the cmake +invocation. ### Building for Windows -Ubuntu will require 20.04 or above. Cross-compiling with WSL is also confirmed to work. +Ubuntu will require 20.04 or above. Cross-compiling with WSL is also confirmed +to work. -You will need the usual build tools, CMake, a Windows cross-compiler, and flatc. On a Debian derivative (e.g. Ubuntu) these can be installed with: +You will need the usual build tools, CMake, and a Windows cross-compiler. On a +Debian derivative (e.g. Ubuntu) these can be installed with: - apt-get install git build-essential cmake mingw-w64 +```sh +apt-get install git build-essential cmake mingw-w64 +``` Before building, check out the project and the necessary submodules: - git clone https://github.com/solvespace/solvespace - cd solvespace - git submodule update --init +```sh +git clone https://github.com/solvespace/solvespace +cd solvespace +git submodule update --init +``` Build 64-bit SolveSpace with the following: - mkdir build - cd build - cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-mingw64.cmake \ - -DCMAKE_BUILD_TYPE=Release \ - -DFLATC=$(which flatc) - make +```sh +mkdir build +cd build +cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-mingw64.cmake \ + -DCMAKE_BUILD_TYPE=Release +make +``` -The graphical interface is built as `build/bin/solvespace.exe`, and the command-line interface -is built as `build/bin/solvespace-cli.exe`. +The graphical interface is built as `build/bin/solvespace.exe`, and the +command-line interface is built as `build/bin/solvespace-cli.exe`. Space Navigator support will not be available. -If using Ubuntu to cross-compile, Ubuntu 17.10 or newer (or, alternatively, MinGW from the Ubuntu -17.10 repositories) is required. +## Building on macOS -Building on macOS ------------------ - -You will need git, XCode tools and CMake. Git and CMake can be installed +You will need git, XCode tools, CMake and libomp. Git, CMake and libomp can be installed via [Homebrew][]: - brew install git cmake +```sh +brew install git cmake libomp +``` XCode has to be installed via AppStore or [the Apple website][appledeveloper]; it requires a free Apple ID. Before building, check out the project and the necessary submodules: - git clone https://github.com/solvespace/solvespace - cd solvespace - git submodule update --init +```sh +git clone https://github.com/solvespace/solvespace +cd solvespace +git submodule update --init +``` After that, build SolveSpace as following: - mkdir build - cd build - cmake .. -DCMAKE_BUILD_TYPE=Release - make +```sh +mkdir build +cd build +cmake .. -DCMAKE_BUILD_TYPE=Release -DENABLE_OPENMP=ON +make +``` + +Link Time Optimization is supported by adding `-DENABLE_LTO=ON` to cmake at the +expense of longer build time. Alternatively, generate an XCode project, open it, and build the "Release" scheme: - mkdir build - cd build - cmake .. -G Xcode +```sh +mkdir build +cd build +cmake .. -G Xcode +``` The application is built in `build/bin/SolveSpace.app`, the graphical interface executable is `build/bin/SolveSpace.app/Contents/MacOS/SolveSpace`, and the command-line interface executable @@ -170,26 +207,32 @@ is `build/bin/SolveSpace.app/Contents/MacOS/solvespace-cli`. [homebrew]: https://brew.sh/ [appledeveloper]: https://developer.apple.com/download/ -Building on OpenBSD -------------------- +## Building on OpenBSD You will need git, cmake, libexecinfo, libpng, gtk3mm and pangomm. These can be installed from the ports tree: - pkg_add -U git cmake libexecinfo png json-c gtk3mm pangomm +```sh +pkg_add -U git cmake libexecinfo png json-c gtk3mm pangomm +``` Before building, check out the project and the necessary submodules: - git clone https://github.com/solvespace/solvespace - cd solvespace - git submodule update --init extlib/libdxfrw extlib/mimalloc +```sh +git clone https://github.com/solvespace/solvespace +cd solvespace +git submodule update --init extlib/libdxfrw extlib/mimalloc extlib/eigen +``` After that, build SolveSpace as following: - mkdir build - cd build - cmake .. -DCMAKE_BUILD_TYPE=Release - make +```sh +mkdir build +cd build +cmake .. -DCMAKE_BUILD_TYPE=Release +make +sudo make install +``` Unfortunately, on OpenBSD, the produced executables are not filesystem location independent and must be installed before use. By default, the graphical interface is installed to @@ -197,12 +240,13 @@ and must be installed before use. By default, the graphical interface is install `/usr/local/bin/solvespace-cli`. It is possible to build only the command-line interface by passing the `-DENABLE_GUI=OFF` flag to the cmake invocation. -Building on Windows -------------------- +## Building on Windows You will need [git][gitwin], [cmake][cmakewin] and a C++ compiler (either Visual C++ or MinGW). If using Visual C++, Visual Studio 2015 or later is required. +If gawk is in your path be sure it is a proper Windows port that can handle CL LF line endings. +If not CMake may fail in libpng due to some awk scripts - issue #1228. ### Building with Visual Studio IDE @@ -213,17 +257,19 @@ Visual C++ and build it. ### Building with Visual Studio in a command prompt -First, ensure that git and cl (the Visual C++ compiler driver) are in your +First, ensure that `git` and `cl` (the Visual C++ compiler driver) are in your `%PATH%`; the latter is usually done by invoking `vcvarsall.bat` from your Visual Studio install. Then, run the following in cmd or PowerShell: - git clone https://github.com/solvespace/solvespace - cd solvespace - git submodule update --init - mkdir build - cd build - cmake .. -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release - nmake +```bat +git clone https://github.com/solvespace/solvespace +cd solvespace +git submodule update --init +mkdir build +cd build +cmake .. -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release +nmake +``` ### Building with MinGW @@ -233,25 +279,25 @@ Space Navigator support will be disabled. First, ensure that git and gcc are in your `$PATH`. Then, run the following in bash: - git clone https://github.com/solvespace/solvespace - cd solvespace - git submodule update --init - mkdir build - cd build - cmake .. -DCMAKE_BUILD_TYPE=Release - make +```sh +git clone https://github.com/solvespace/solvespace +cd solvespace +git submodule update --init +mkdir build +cd build +cmake .. -DCMAKE_BUILD_TYPE=Release +make +``` [gitwin]: https://git-scm.com/download/win [cmakewin]: http://www.cmake.org/download/#latest [mingw]: http://www.mingw.org/ -Contributing ------------- +## Contributing See the [guide for contributors](CONTRIBUTING.md) for the best way to file issues, contribute code, and debug SolveSpace. -License -------- +## License -SolveSpace is distributed under the terms of the [GPL v3 license](COPYING.txt). +SolveSpace is distributed under the terms of the [GPL v3](COPYING.txt) or later. diff --git a/cmake/FindSpaceWare.cmake b/cmake/FindSpaceWare.cmake index fb6073c..451063c 100644 --- a/cmake/FindSpaceWare.cmake +++ b/cmake/FindSpaceWare.cmake @@ -16,7 +16,7 @@ if(UNIX) # Support the REQUIRED and QUIET arguments, and set SPACEWARE_FOUND if found. include(FindPackageHandleStandardArgs) - FIND_PACKAGE_HANDLE_STANDARD_ARGS(SPACEWARE DEFAULT_MSG + find_package_handle_standard_args(SpaceWare DEFAULT_MSG SPACEWARE_LIBRARY SPACEWARE_INCLUDE_DIR) if(SPACEWARE_FOUND) diff --git a/cmake/MacOSXBundleInfo.plist.in b/cmake/MacOSXBundleInfo.plist.in index 668d1f7..b39a9e2 100644 --- a/cmake/MacOSXBundleInfo.plist.in +++ b/cmake/MacOSXBundleInfo.plist.in @@ -15,11 +15,11 @@ CFBundlePackageType APPL CFBundleVersion - ${solvespace_VERSION_MAJOR}.${solvespace_VERSION_MINOR}~${solvespace_GIT_HASH} + ${PROJECT_VERSION}~${solvespace_GIT_HASH} CFBundleShortVersionString - ${solvespace_VERSION_MAJOR}.${solvespace_VERSION_MINOR} + ${PROJECT_VERSION} NSHumanReadableCopyright - © 2008-2016 Jonathan Westhues and other authors + © 2008-2022 Jonathan Westhues and other authors NSPrincipalClass NSApplication NSMainNibFile diff --git a/cmake/libpng-macos-arm64.patch b/cmake/libpng-macos-arm64.patch new file mode 100644 index 0000000..2d0e15c --- /dev/null +++ b/cmake/libpng-macos-arm64.patch @@ -0,0 +1,117 @@ +diff --git a/extlib/libpng/CMakeLists.txt b/extlib/libpng/CMakeLists.txt +index 42ff0f9025..6834ea332e 100644 +--- a/extlib/libpng/CMakeLists.txt ++++ b/extlib/libpng/CMakeLists.txt +@@ -65,11 +65,22 @@ option(PNG_HARDWARE_OPTIMIZATIONS "Enable hardware optimizations" ON) + set(PNG_PREFIX "" CACHE STRING "Prefix to add to the API function names") + set(DFA_XTRA "" CACHE FILEPATH "File containing extra configuration settings") + ++# CMake currently sets CMAKE_SYSTEM_PROCESSOR to one of x86_64 or arm64 on macOS, ++# based upon the OS architecture, not the target architecture. As such, we need ++# to check CMAKE_OSX_ARCHITECTURES to identify which hardware-specific flags to ++# enable. Note that this will fail if you attempt to build a universal binary in ++# a single cmake invocation. ++if (APPLE AND CMAKE_OSX_ARCHITECTURES) ++ set(TARGET_ARCH ${CMAKE_OSX_ARCHITECTURES}) ++else() ++ set(TARGET_ARCH ${CMAKE_SYSTEM_PROCESSOR}) ++endif() ++ + if(PNG_HARDWARE_OPTIMIZATIONS) + + # Set definitions and sources for ARM. +-if(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm" OR +- CMAKE_SYSTEM_PROCESSOR MATCHES "^aarch64") ++if(TARGET_ARCH MATCHES "^arm" OR ++ TARGET_ARCH MATCHES "^aarch64") + set(PNG_ARM_NEON_POSSIBLE_VALUES check on off) + set(PNG_ARM_NEON "check" + CACHE STRING "Enable ARM NEON optimizations: check|on|off; check is default") +@@ -95,8 +106,8 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm" OR + endif() + + # Set definitions and sources for PowerPC. +-if(CMAKE_SYSTEM_PROCESSOR MATCHES "^powerpc*" OR +- CMAKE_SYSTEM_PROCESSOR MATCHES "^ppc64*") ++if(TARGET_ARCH MATCHES "^powerpc*" OR ++ TARGET_ARCH MATCHES "^ppc64*") + set(PNG_POWERPC_VSX_POSSIBLE_VALUES on off) + set(PNG_POWERPC_VSX "on" + CACHE STRING "Enable POWERPC VSX optimizations: on|off; on is default") +@@ -118,8 +129,8 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "^powerpc*" OR + endif() + + # Set definitions and sources for Intel. +-if(CMAKE_SYSTEM_PROCESSOR MATCHES "^i?86" OR +- CMAKE_SYSTEM_PROCESSOR MATCHES "^x86_64*") ++if(TARGET_ARCH MATCHES "^i?86" OR ++ TARGET_ARCH MATCHES "^x86_64*") + set(PNG_INTEL_SSE_POSSIBLE_VALUES on off) + set(PNG_INTEL_SSE "on" + CACHE STRING "Enable INTEL_SSE optimizations: on|off; on is default") +@@ -141,8 +152,8 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "^i?86" OR + endif() + + # Set definitions and sources for MIPS. +-if(CMAKE_SYSTEM_PROCESSOR MATCHES "mipsel*" OR +- CMAKE_SYSTEM_PROCESSOR MATCHES "mips64el*") ++if(TARGET_ARCH MATCHES "mipsel*" OR ++ TARGET_ARCH MATCHES "mips64el*") + set(PNG_MIPS_MSA_POSSIBLE_VALUES on off) + set(PNG_MIPS_MSA "on" + CACHE STRING "Enable MIPS_MSA optimizations: on|off; on is default") +@@ -166,26 +177,26 @@ endif() + else(PNG_HARDWARE_OPTIMIZATIONS) + + # Set definitions and sources for ARM. +-if(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm" OR +- CMAKE_SYSTEM_PROCESSOR MATCHES "^aarch64") ++if(TARGET_ARCH MATCHES "^arm" OR ++ TARGET_ARCH MATCHES "^aarch64") + add_definitions(-DPNG_ARM_NEON_OPT=0) + endif() + + # Set definitions and sources for PowerPC. +-if(CMAKE_SYSTEM_PROCESSOR MATCHES "^powerpc*" OR +- CMAKE_SYSTEM_PROCESSOR MATCHES "^ppc64*") ++if(TARGET_ARCH MATCHES "^powerpc*" OR ++ TARGET_ARCH MATCHES "^ppc64*") + add_definitions(-DPNG_POWERPC_VSX_OPT=0) + endif() + + # Set definitions and sources for Intel. +-if(CMAKE_SYSTEM_PROCESSOR MATCHES "^i?86" OR +- CMAKE_SYSTEM_PROCESSOR MATCHES "^x86_64*") ++if(TARGET_ARCH MATCHES "^i?86" OR ++ TARGET_ARCH MATCHES "^x86_64*") + add_definitions(-DPNG_INTEL_SSE_OPT=0) + endif() + + # Set definitions and sources for MIPS. +-if(CMAKE_SYSTEM_PROCESSOR MATCHES "mipsel*" OR +- CMAKE_SYSTEM_PROCESSOR MATCHES "mips64el*") ++if(TARGET_ARCH MATCHES "mipsel*" OR ++ TARGET_ARCH MATCHES "mips64el*") + add_definitions(-DPNG_MIPS_MSA_OPT=0) + endif() + +@@ -412,19 +412,11 @@ else() + DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/scripts/checksym.awk" + "${CMAKE_CURRENT_SOURCE_DIR}/scripts/symbols.def") + +- add_custom_target(symbol-check +- DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.chk") +- + generate_copy("${CMAKE_CURRENT_BINARY_DIR}/scripts/sym.out" + "${CMAKE_CURRENT_BINARY_DIR}/libpng.sym") + generate_copy("${CMAKE_CURRENT_BINARY_DIR}/scripts/vers.out" + "${CMAKE_CURRENT_BINARY_DIR}/libpng.vers") + +- add_custom_target(genvers +- DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libpng.vers") +- add_custom_target(gensym +- DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libpng.sym") +- + add_custom_target("genprebuilt" + COMMAND "${CMAKE_COMMAND}" + "-DOUTPUT=scripts/pnglibconf.h.prebuilt" diff --git a/developer_docs/IdLists_Entities_and_Remap.txt b/developer_docs/IdLists_Entities_and_Remap.txt new file mode 100644 index 0000000..5fe1791 --- /dev/null +++ b/developer_docs/IdLists_Entities_and_Remap.txt @@ -0,0 +1,49 @@ +Some notes about Entities, Entity IDs and the IdList structure +============================================================== +Sketch entities in SolveSpace are all of the same type without use of language +support for polymorphism. The entity class is defined in sketch.h. That class +contains an enum for each entity to define its type (line, arc, etc...) and some +other members that can be used to store different things depending on the entity +type. This means all entities are the same size, so some data may be reference +by pointers from the entity (font, extra points, etc...) + +Entities in a sketch are kept in a global array (IdList) referenced by a unique +Id (handle) and can be looked up by Id in log(n) time via binary search. In +order to use binary search the array must be kept in order sorted by Id. One +problem is that insertion takes O(n) time because half the list (on average) +must be shifted to make room for a new item. + +The IdList class is a template and is used for more than entities. + +EntityMap: +========== +Another important structure is the EntityMap and EntityKey defined in sketch.h +This is what allows SovleSpace to update groups when earlier groups in the +sketch are changed. If a rectangle is extruded to a box and items are +constrained to entities on that box, the user can go back to the sketch and +modify it. Entities can be added, modified an even deleted. So long as the +entities that are later used to build upon are kept the later extrude group will +pick up the changes from the 2D sketch and anything build on it will remain. + +The way this works is that each group has a member called remap, which is one of +these maps. This is where my understanding is fuzzy. At the end of Group.cpp is +a function called Group::CopyEntity() which is used to make new sketch entities +when a group is created. These are generally copies of entities in the previous +group, but there are exceptions. A point will be used to generate a line when +extruding a 2D sketch. A point will also be "copied" to a circle for a Lathe +group. For this reason, the entity key is derived by combining its previous key +with something often called the CopyNumber or just remap (unfortunate). + +When a group is regenerated (the first time, or after a previous one is +modified) entities are copied from the old group to the new one. For Step +Translating and Rotating there may be many copies, and the copy number is +literally N for the Nth copy except for the last one which gets an enum - it is +common to constrain the last item, so it gets a large unique number so that +constraints still refer to it if the number of copies changes. When an entity is +copied like this a new handle is created unless there is already an entity in +Remap that was created the same way. This is how constructions are preserved +across underlying changes. + +There are some hard limits used in the hash table for the remap mechanism which +limit the number of entities in a group (but not the global sketch). + diff --git a/developer_docs/Solver_Transforms.txt b/developer_docs/Solver_Transforms.txt index 1ea3ae5..98300f8 100644 --- a/developer_docs/Solver_Transforms.txt +++ b/developer_docs/Solver_Transforms.txt @@ -46,7 +46,7 @@ POINT_N_ROT_TRANS: Rotates a point via quaternion param[3],param[4],param[5],par POINT_N_COPY: A non-transformed copy of a point - numeric copy? -POINT_N_ROT_AA: A point rotated arount point param[0],param[1],param[2] Where the +POINT_N_ROT_AA: A point rotated around point param[0],param[1],param[2] Where the angle is given by param[3]*timesApplied (times 2?) and the axis of rotation defined by param[4],param[5],param[6] @@ -130,7 +130,7 @@ the entity itself. The ForceTo() functions are shortcuts for using the solver. They are passed the desired location of a point (or orientation of a normal...) and have the opportunity to back-calculate what the group parameters should be to place it there. This is -used for mouse dragging of copied entites. It is notable that the constraints will +used for mouse dragging of copied entities. It is notable that the constraints will still be applied afterward, but this is a good shortcut. When creating a new entity transformation, the first thing to do is define the diff --git a/extlib/mimalloc/.gitattributes b/extlib/mimalloc/.gitattributes deleted file mode 100644 index acdbdbf..0000000 --- a/extlib/mimalloc/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -# default behavior is to always use unix style line endings -* text eol=lf -*.png binary -*.pdn binary -*.sln binary -*.suo binary -*.vcproj binary -*.patch binary -*.dll binary -*.lib binary diff --git a/extlib/mimalloc/.gitignore b/extlib/mimalloc/.gitignore deleted file mode 100644 index 3639d32..0000000 --- a/extlib/mimalloc/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -ide/vs20??/*.db -ide/vs20??/*.opendb -ide/vs20??/*.user -ide/vs20??/*.vcxproj.filters -ide/vs20??/.vs -out/ -docs/ -*.zip diff --git a/extlib/mimalloc/CMakeLists.txt b/extlib/mimalloc/CMakeLists.txt index 37616eb..8127e09 100644 --- a/extlib/mimalloc/CMakeLists.txt +++ b/extlib/mimalloc/CMakeLists.txt @@ -12,8 +12,8 @@ option(MI_XMALLOC "Enable abort() call on memory allocation failure by option(MI_SHOW_ERRORS "Show error and warning messages by default (only enabled by default in DEBUG mode)" OFF) option(MI_USE_CXX "Use the C++ compiler to compile the library (instead of the C compiler)" OFF) option(MI_SEE_ASM "Generate assembly files" OFF) -option(MI_INTERPOSE "Use interpose to override standard malloc on macOS" ON) -option(MI_OSX_ZONE "Use malloc zone to override standard malloc on macOS" OFF) # enables interpose as well +option(MI_OSX_INTERPOSE "Use interpose to override standard malloc on macOS" ON) +option(MI_OSX_ZONE "Use malloc zone to override standard malloc on macOS" ON) option(MI_LOCAL_DYNAMIC_TLS "Use slightly slower, dlopen-compatible TLS mechanism (Unix)" OFF) option(MI_BUILD_SHARED "Build shared library" ON) option(MI_BUILD_STATIC "Build static library" ON) @@ -21,16 +21,23 @@ option(MI_BUILD_OBJECT "Build object library" ON) option(MI_BUILD_TESTS "Build test executables" ON) option(MI_DEBUG_TSAN "Build with thread sanitizer (needs clang)" OFF) option(MI_DEBUG_UBSAN "Build with undefined-behavior sanitizer (needs clang++)" OFF) +option(MI_SKIP_COLLECT_ON_EXIT, "Skip collecting memory on program exit" OFF) + +# deprecated options option(MI_CHECK_FULL "Use full internal invariant checking in DEBUG mode (deprecated, use MI_DEBUG_FULL instead)" OFF) +option(MI_INSTALL_TOPLEVEL "Install directly into $CMAKE_INSTALL_PREFIX instead of PREFIX/lib/mimalloc-version (deprecated)" OFF) +option(MI_USE_LIBATOMIC "Explicitly link with -latomic (on older systems) (deprecated and detected automatically)" OFF) +include(GNUInstallDirs) include("cmake/mimalloc-config-version.cmake") set(mi_sources src/stats.c src/random.c src/os.c + src/bitmap.c src/arena.c - src/region.c + src/segment-cache.c src/segment.c src/page.c src/alloc.c @@ -40,12 +47,14 @@ set(mi_sources src/options.c src/init.c) + # ----------------------------------------------------------------------------- -# Converience: set default build type depending on the build directory +# Convenience: set default build type depending on the build directory # ----------------------------------------------------------------------------- +message(STATUS "") if (NOT CMAKE_BUILD_TYPE) - if ("${CMAKE_BINARY_DIR}" MATCHES ".*(D|d)ebug$" OR MI_DEBUG_FULL MATCHES "ON") + if ("${CMAKE_BINARY_DIR}" MATCHES ".*(D|d)ebug$" OR MI_DEBUG_FULL) message(STATUS "No build type selected, default to: Debug") set(CMAKE_BUILD_TYPE "Debug") else() @@ -59,6 +68,7 @@ if("${CMAKE_BINARY_DIR}" MATCHES ".*(S|s)ecure$") set(MI_SECURE "ON") endif() + # ----------------------------------------------------------------------------- # Process options # ----------------------------------------------------------------------------- @@ -67,65 +77,76 @@ if(CMAKE_C_COMPILER_ID MATCHES "MSVC|Intel") set(MI_USE_CXX "ON") endif() -if(MI_OVERRIDE MATCHES "ON") +if(MI_OVERRIDE) message(STATUS "Override standard malloc (MI_OVERRIDE=ON)") if(APPLE) - if(MI_OSX_ZONE MATCHES "ON") + if(MI_OSX_ZONE) # use zone's on macOS message(STATUS " Use malloc zone to override malloc (MI_OSX_ZONE=ON)") list(APPEND mi_sources src/alloc-override-osx.c) - list(APPEND mi_defines MI_OSX_ZONE=1) - if(NOT MI_INTERPOSE MATCHES "ON") - message(STATUS " (enabling INTERPOSE as well since zone's require this)") - set(MI_INTERPOSE "ON") + list(APPEND mi_defines MI_OSX_ZONE=1) + if (NOT MI_OSX_INTERPOSE) + message(STATUS " WARNING: zone overriding usually also needs interpose (use -DMI_OSX_INTERPOSE=ON)") endif() endif() - if(MI_INTERPOSE MATCHES "ON") + if(MI_OSX_INTERPOSE) # use interpose on macOS - message(STATUS " Use interpose to override malloc (MI_INTERPOSE=ON)") - list(APPEND mi_defines MI_INTERPOSE) + message(STATUS " Use interpose to override malloc (MI_OSX_INTERPOSE=ON)") + list(APPEND mi_defines MI_OSX_INTERPOSE=1) + if (NOT MI_OSX_ZONE) + message(STATUS " WARNING: interpose usually also needs zone overriding (use -DMI_OSX_INTERPOSE=ON)") + endif() + endif() + if(MI_USE_CXX AND MI_OSX_INTERPOSE) + message(STATUS " WARNING: if dynamically overriding malloc/free, it is more reliable to build mimalloc as C code (use -DMI_USE_CXX=OFF)") endif() endif() endif() -if(MI_SECURE MATCHES "ON") +if(MI_SECURE) message(STATUS "Set full secure build (MI_SECURE=ON)") list(APPEND mi_defines MI_SECURE=4) endif() -if(MI_SEE_ASM MATCHES "ON") +if(MI_SEE_ASM) message(STATUS "Generate assembly listings (MI_SEE_ASM=ON)") list(APPEND mi_cflags -save-temps) endif() -if(MI_CHECK_FULL MATCHES "ON") +if(MI_CHECK_FULL) message(STATUS "The MI_CHECK_FULL option is deprecated, use MI_DEBUG_FULL instead") set(MI_DEBUG_FULL "ON") endif() -if(MI_DEBUG_FULL MATCHES "ON") +if (MI_SKIP_COLLECT_ON_EXIT) + message(STATUS "Skip collecting memory on program exit (MI_SKIP_COLLECT_ON_EXIT=ON)") + list(APPEND mi_defines MI_SKIP_COLLECT_ON_EXIT=1) +endif() + +if(MI_DEBUG_FULL) message(STATUS "Set debug level to full internal invariant checking (MI_DEBUG_FULL=ON)") list(APPEND mi_defines MI_DEBUG=3) # full invariant checking endif() -if(MI_PADDING MATCHES "OFF") +if(NOT MI_PADDING) message(STATUS "Disable padding of heap blocks in debug mode (MI_PADDING=OFF)") list(APPEND mi_defines MI_PADDING=0) endif() -if(MI_XMALLOC MATCHES "ON") +if(MI_XMALLOC) message(STATUS "Enable abort() calls on memory allocation failure (MI_XMALLOC=ON)") list(APPEND mi_defines MI_XMALLOC=1) endif() -if(MI_SHOW_ERRORS MATCHES "ON") +if(MI_SHOW_ERRORS) message(STATUS "Enable printing of error and warning messages by default (MI_SHOW_ERRORS=ON)") list(APPEND mi_defines MI_SHOW_ERRORS=1) endif() -if(MI_DEBUG_TSAN MATCHES "ON") +if(MI_DEBUG_TSAN) if(CMAKE_C_COMPILER_ID MATCHES "Clang") message(STATUS "Build with thread sanitizer (MI_DEBUG_TSAN=ON)") + list(APPEND mi_defines MI_TSAN=1) list(APPEND mi_cflags -fsanitize=thread -g -O1) list(APPEND CMAKE_EXE_LINKER_FLAGS -fsanitize=thread) else() @@ -133,13 +154,13 @@ if(MI_DEBUG_TSAN MATCHES "ON") endif() endif() -if(MI_DEBUG_UBSAN MATCHES "ON") +if(MI_DEBUG_UBSAN) if(CMAKE_BUILD_TYPE MATCHES "Debug") if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") message(STATUS "Build with undefined-behavior sanitizer (MI_DEBUG_UBSAN=ON)") - list(APPEND mi_cflags -fsanitize=undefined -g) + list(APPEND mi_cflags -fsanitize=undefined -g -fno-sanitize-recover=undefined) list(APPEND CMAKE_EXE_LINKER_FLAGS -fsanitize=undefined) - if (MI_USE_CXX MATCHES "OFF") + if (NOT MI_USE_CXX) message(STATUS "(switch to use C++ due to MI_DEBUG_UBSAN)") set(MI_USE_CXX "ON") endif() @@ -151,10 +172,10 @@ if(MI_DEBUG_UBSAN MATCHES "ON") endif() endif() -if(MI_USE_CXX MATCHES "ON") +if(MI_USE_CXX) message(STATUS "Use the C++ compiler to compile (MI_USE_CXX=ON)") set_source_files_properties(${mi_sources} PROPERTIES LANGUAGE CXX ) - set_source_files_properties(src/static.c test/test-api.c test/test-stress PROPERTIES LANGUAGE CXX ) + set_source_files_properties(src/static.c test/test-api.c test/test-api-fill test/test-stress PROPERTIES LANGUAGE CXX ) if(CMAKE_CXX_COMPILER_ID MATCHES "AppleClang|Clang") list(APPEND mi_cflags -Wno-deprecated) endif() @@ -166,8 +187,11 @@ endif() # Compiler flags if(CMAKE_C_COMPILER_ID MATCHES "AppleClang|Clang|GNU") list(APPEND mi_cflags -Wall -Wextra -Wno-unknown-pragmas -fvisibility=hidden) - if(CMAKE_C_COMPILER_ID MATCHES "GNU") - list(APPEND mi_cflags -Wno-invalid-memory-model) + if(NOT MI_USE_CXX) + list(APPEND mi_cflags -Wstrict-prototypes) + endif() + if(CMAKE_C_COMPILER_ID MATCHES "AppleClang|Clang") + list(APPEND mi_cflags -Wpedantic -Wno-static-in-inline) endif() endif() @@ -176,28 +200,35 @@ if(CMAKE_C_COMPILER_ID MATCHES "Intel") endif() if(CMAKE_C_COMPILER_ID MATCHES "AppleClang|Clang|GNU|Intel" AND NOT CMAKE_SYSTEM_NAME MATCHES "Haiku") - if(MI_LOCAL_DYNAMIC_TLS MATCHES "ON") + if(MI_LOCAL_DYNAMIC_TLS) list(APPEND mi_cflags -ftls-model=local-dynamic) else() list(APPEND mi_cflags -ftls-model=initial-exec) endif() + if(MI_OVERRIDE) + list(APPEND mi_cflags -fno-builtin-malloc) + endif() endif() -# Architecture flags -if(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "arm") - list(APPEND mi_cflags -march=native) +if (MSVC AND MSVC_VERSION GREATER_EQUAL 1914) + list(APPEND mi_cflags /Zc:__cplusplus) endif() # extra needed libraries if(WIN32) - list(APPEND mi_libraries psapi shell32 user32 bcrypt) + list(APPEND mi_libraries psapi shell32 user32 advapi32 bcrypt) else() - if(NOT ${CMAKE_C_COMPILER} MATCHES "android") - list(APPEND mi_libraries pthread) - find_library(LIBRT rt) - if(LIBRT) - list(APPEND mi_libraries ${LIBRT}) - endif() + find_library(MI_LIBPTHREAD pthread) + if (MI_LIBPTHREAD) + list(APPEND mi_libraries ${MI_LIBPTHREAD}) + endif() + find_library(MI_LIBRT rt) + if(MI_LIBRT) + list(APPEND mi_libraries ${MI_LIBRT}) + endif() + find_library(MI_LIBATOMIC atomic) + if (MI_LIBATOMIC OR MI_USE_LIBATOMIC) + list(APPEND mi_libraries atomic) endif() endif() @@ -205,14 +236,29 @@ endif() # Install and output names # ----------------------------------------------------------------------------- -set(mi_install_dir "${CMAKE_INSTALL_PREFIX}/lib/mimalloc-${mi_version}") -if(MI_SECURE MATCHES "ON") +# dynamic/shared library and symlinks always go to /usr/local/lib equivalent +set(mi_install_libdir "${CMAKE_INSTALL_LIBDIR}") + +# static libraries and object files, includes, and cmake config files +# are either installed at top level, or use versioned directories for side-by-side installation (default) +if (MI_INSTALL_TOPLEVEL) + set(mi_install_objdir "${CMAKE_INSTALL_LIBDIR}") + set(mi_install_incdir "${CMAKE_INSTALL_INCLUDEDIR}") + set(mi_install_cmakedir "${CMAKE_INSTALL_LIBDIR}/cmake/mimalloc") +else() + set(mi_install_objdir "${CMAKE_INSTALL_LIBDIR}/mimalloc-${mi_version}") # for static library and object files + set(mi_install_incdir "${CMAKE_INSTALL_INCLUDEDIR}/mimalloc-${mi_version}") # for includes + set(mi_install_cmakedir "${CMAKE_INSTALL_LIBDIR}/cmake/mimalloc-${mi_version}") # for cmake package info +endif() + +if(MI_SECURE) set(mi_basename "mimalloc-secure") else() set(mi_basename "mimalloc") endif() + string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_LC) -if(NOT(CMAKE_BUILD_TYPE_LC MATCHES "^(release|relwithdebinfo|minsizerel)$")) +if(NOT(CMAKE_BUILD_TYPE_LC MATCHES "^(release|relwithdebinfo|minsizerel|none)$")) set(mi_basename "${mi_basename}-${CMAKE_BUILD_TYPE_LC}") #append build type (e.g. -debug) if not a release version endif() if(MI_BUILD_SHARED) @@ -227,10 +273,19 @@ endif() if(MI_BUILD_TESTS) list(APPEND mi_build_targets "tests") endif() + message(STATUS "") message(STATUS "Library base name: ${mi_basename}") +message(STATUS "Version : ${mi_version}") message(STATUS "Build type : ${CMAKE_BUILD_TYPE_LC}") -message(STATUS "Install directory: ${mi_install_dir}") +if(MI_USE_CXX) + message(STATUS "C++ Compiler : ${CMAKE_CXX_COMPILER}") +else() + message(STATUS "C Compiler : ${CMAKE_C_COMPILER}") +endif() +message(STATUS "Compiler flags : ${mi_cflags}") +message(STATUS "Compiler defines : ${mi_defines}") +message(STATUS "Link libraries : ${mi_libraries}") message(STATUS "Build targets : ${mi_build_targets}") message(STATUS "") @@ -241,24 +296,31 @@ message(STATUS "") # shared library if(MI_BUILD_SHARED) add_library(mimalloc SHARED ${mi_sources}) - set_target_properties(mimalloc PROPERTIES VERSION ${mi_version} OUTPUT_NAME ${mi_basename} ) + set_target_properties(mimalloc PROPERTIES VERSION ${mi_version} SOVERSION ${mi_version_major} OUTPUT_NAME ${mi_basename} ) target_compile_definitions(mimalloc PRIVATE ${mi_defines} MI_SHARED_LIB MI_SHARED_LIB_EXPORT) target_compile_options(mimalloc PRIVATE ${mi_cflags}) target_link_libraries(mimalloc PUBLIC ${mi_libraries}) target_include_directories(mimalloc PUBLIC $ - $ + $ ) if(WIN32) # On windows copy the mimalloc redirection dll too. - target_link_libraries(mimalloc PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/bin/mimalloc-redirect.lib) + if(CMAKE_SIZEOF_VOID_P EQUAL 4) + set(MIMALLOC_REDIRECT_SUFFIX "32") + else() + set(MIMALLOC_REDIRECT_SUFFIX "") + endif() + + target_link_libraries(mimalloc PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/bin/mimalloc-redirect${MIMALLOC_REDIRECT_SUFFIX}.lib) add_custom_command(TARGET mimalloc POST_BUILD - COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_CURRENT_SOURCE_DIR}/bin/mimalloc-redirect.dll" $ - COMMENT "Copy mimalloc-redirect.dll to output directory") + COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_CURRENT_SOURCE_DIR}/bin/mimalloc-redirect${MIMALLOC_REDIRECT_SUFFIX}.dll" $ + COMMENT "Copy mimalloc-redirect${MIMALLOC_REDIRECT_SUFFIX}.dll to output directory") + install(FILES "$/mimalloc-redirect${MIMALLOC_REDIRECT_SUFFIX}.dll" DESTINATION ${mi_install_libdir}) endif() - install(TARGETS mimalloc EXPORT mimalloc DESTINATION ${mi_install_dir} LIBRARY) - install(EXPORT mimalloc DESTINATION ${mi_install_dir}/cmake) + install(TARGETS mimalloc EXPORT mimalloc DESTINATION ${mi_install_libdir} LIBRARY) + install(EXPORT mimalloc DESTINATION ${mi_install_cmakedir}) endif() # static library @@ -270,7 +332,7 @@ if (MI_BUILD_STATIC) target_link_libraries(mimalloc-static PUBLIC ${mi_libraries}) target_include_directories(mimalloc-static PUBLIC $ - $ + $ ) if(WIN32) # When building both static and shared libraries on Windows, a static library should use a @@ -281,23 +343,17 @@ if (MI_BUILD_STATIC) set_target_properties(mimalloc-static PROPERTIES OUTPUT_NAME ${mi_basename}) endif() - install(TARGETS mimalloc-static EXPORT mimalloc DESTINATION ${mi_install_dir}) + install(TARGETS mimalloc-static EXPORT mimalloc DESTINATION ${mi_install_objdir} LIBRARY) + install(EXPORT mimalloc DESTINATION ${mi_install_cmakedir}) endif() # install include files -install(FILES include/mimalloc.h DESTINATION ${mi_install_dir}/include) -install(FILES include/mimalloc-override.h DESTINATION ${mi_install_dir}/include) -install(FILES include/mimalloc-new-delete.h DESTINATION ${mi_install_dir}/include) -install(FILES cmake/mimalloc-config.cmake DESTINATION ${mi_install_dir}/cmake) -install(FILES cmake/mimalloc-config-version.cmake DESTINATION ${mi_install_dir}/cmake) +install(FILES include/mimalloc.h DESTINATION ${mi_install_incdir}) +install(FILES include/mimalloc-override.h DESTINATION ${mi_install_incdir}) +install(FILES include/mimalloc-new-delete.h DESTINATION ${mi_install_incdir}) +install(FILES cmake/mimalloc-config.cmake DESTINATION ${mi_install_cmakedir}) +install(FILES cmake/mimalloc-config-version.cmake DESTINATION ${mi_install_cmakedir}) -if(NOT WIN32 AND MI_BUILD_SHARED) - # install a symlink in the /usr/local/lib to the versioned library - set(mi_symlink "${CMAKE_SHARED_MODULE_PREFIX}${mi_basename}${CMAKE_SHARED_LIBRARY_SUFFIX}") - set(mi_soname "mimalloc-${mi_version}/${mi_symlink}.${mi_version}") - install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${mi_soname} ${mi_symlink} WORKING_DIRECTORY ${mi_install_dir}/..)") - install(CODE "MESSAGE(\"-- Symbolic link: ${CMAKE_INSTALL_PREFIX}/lib/${mi_symlink} -> ${mi_soname}\")") -endif() # single object file for more predictable static overriding if (MI_BUILD_OBJECT) @@ -307,16 +363,16 @@ if (MI_BUILD_OBJECT) target_compile_options(mimalloc-obj PRIVATE ${mi_cflags}) target_include_directories(mimalloc-obj PUBLIC $ - $ + $ ) # the following seems to lead to cmake warnings/errors on some systems, disable for now :-( - # install(TARGETS mimalloc-obj EXPORT mimalloc DESTINATION ${mi_install_dir}) + # install(TARGETS mimalloc-obj EXPORT mimalloc DESTINATION ${mi_install_objdir}) # the FILES expression can also be: $ # but that fails cmake versions less than 3.10 so we leave it as is for now install(FILES ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/mimalloc-obj.dir/src/static.c${CMAKE_C_OUTPUT_EXTENSION} - DESTINATION ${mi_install_dir} + DESTINATION ${mi_install_objdir} RENAME ${mi_basename}${CMAKE_C_OUTPUT_EXTENSION} ) endif() @@ -324,28 +380,24 @@ endif() # API surface testing # ----------------------------------------------------------------------------- -if (MI_BUILD_TESTS MATCHES "ON") - add_executable(mimalloc-test-api test/test-api.c) - target_compile_definitions(mimalloc-test-api PRIVATE ${mi_defines}) - target_compile_options(mimalloc-test-api PRIVATE ${mi_cflags}) - target_include_directories(mimalloc-test-api PRIVATE include) - target_link_libraries(mimalloc-test-api PRIVATE mimalloc-static ${mi_libraries}) +if (MI_BUILD_TESTS) + enable_testing() - add_executable(mimalloc-test-stress test/test-stress.c) - target_compile_definitions(mimalloc-test-stress PRIVATE ${mi_defines}) - target_compile_options(mimalloc-test-stress PRIVATE ${mi_cflags}) - target_include_directories(mimalloc-test-stress PRIVATE include) - target_link_libraries(mimalloc-test-stress PRIVATE mimalloc ${mi_libraries}) + foreach(TEST_NAME api api-fill stress) + add_executable(mimalloc-test-${TEST_NAME} test/test-${TEST_NAME}.c) + target_compile_definitions(mimalloc-test-${TEST_NAME} PRIVATE ${mi_defines}) + target_compile_options(mimalloc-test-${TEST_NAME} PRIVATE ${mi_cflags}) + target_include_directories(mimalloc-test-${TEST_NAME} PRIVATE include) + target_link_libraries(mimalloc-test-${TEST_NAME} PRIVATE mimalloc ${mi_libraries}) - enable_testing() - add_test(test_api, mimalloc-test-api) - add_test(test_stress, mimalloc-test-stress) + add_test(NAME test-${TEST_NAME} COMMAND mimalloc-test-${TEST_NAME}) + endforeach() endif() # ----------------------------------------------------------------------------- # Set override properties # ----------------------------------------------------------------------------- -if (MI_OVERRIDE MATCHES "ON") +if (MI_OVERRIDE) if (MI_BUILD_SHARED) target_compile_definitions(mimalloc PRIVATE MI_MALLOC_OVERRIDE) endif() diff --git a/extlib/mimalloc/LICENSE b/extlib/mimalloc/LICENSE index 4151dbe..670b668 100644 --- a/extlib/mimalloc/LICENSE +++ b/extlib/mimalloc/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2019 Microsoft Corporation, Daan Leijen +Copyright (c) 2018-2021 Microsoft Corporation, Daan Leijen Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/extlib/mimalloc/azure-pipelines.yml b/extlib/mimalloc/azure-pipelines.yml index c81e31b..c6efc87 100644 --- a/extlib/mimalloc/azure-pipelines.yml +++ b/extlib/mimalloc/azure-pipelines.yml @@ -4,15 +4,21 @@ # https://aka.ms/yaml trigger: -- master -- dev + branches: + include: + - master + - dev + - dev-slice + tags: + include: + - v* -jobs: +jobs: - job: displayName: Windows pool: vmImage: - windows-2019 + windows-2019 strategy: matrix: Debug: @@ -36,18 +42,20 @@ jobs: inputs: solution: $(BuildType)/libmimalloc.sln configuration: '$(MSBuildConfiguration)' - - script: | - cd $(BuildType) - ctest + msbuildArguments: -m + - script: ctest --verbose --timeout 120 -C $(MSBuildConfiguration) + workingDirectory: $(BuildType) displayName: CTest -# - upload: $(Build.SourcesDirectory)/$(BuildType) -# artifact: mimalloc-windows-$(BuildType) + #- script: $(BuildType)\$(BuildType)\mimalloc-test-stress + # displayName: TestStress + #- upload: $(Build.SourcesDirectory)/$(BuildType) + # artifact: mimalloc-windows-$(BuildType) - job: displayName: Linux pool: vmImage: - ubuntu-16.04 + ubuntu-18.04 strategy: matrix: Debug: @@ -97,7 +105,8 @@ jobs: cmakeArgs: .. $(cmakeExtraArgs) - script: make -j$(nproc) -C $(BuildType) displayName: Make - - script: make test -C $(BuildType) + - script: ctest --verbose --timeout 120 + workingDirectory: $(BuildType) displayName: CTest # - upload: $(Build.SourcesDirectory)/$(BuildType) # artifact: mimalloc-ubuntu-$(BuildType) @@ -106,7 +115,7 @@ jobs: displayName: macOS pool: vmImage: - macOS-10.14 + macOS-latest strategy: matrix: Debug: @@ -125,7 +134,48 @@ jobs: cmakeArgs: .. $(cmakeExtraArgs) - script: make -j$(sysctl -n hw.ncpu) -C $(BuildType) displayName: Make - - script: make test -C $(BuildType) + # - script: MIMALLOC_VERBOSE=1 ./mimalloc-test-api + # workingDirectory: $(BuildType) + # displayName: TestAPI + # - script: MIMALLOC_VERBOSE=1 ./mimalloc-test-stress + # workingDirectory: $(BuildType) + # displayName: TestStress + - script: ctest --verbose --timeout 120 + workingDirectory: $(BuildType) displayName: CTest + # - upload: $(Build.SourcesDirectory)/$(BuildType) # artifact: mimalloc-macos-$(BuildType) + +# - job: +# displayName: Windows-2017 +# pool: +# vmImage: +# vs2017-win2016 +# strategy: +# matrix: +# Debug: +# BuildType: debug +# cmakeExtraArgs: -A x64 -DCMAKE_BUILD_TYPE=Debug -DMI_DEBUG_FULL=ON +# MSBuildConfiguration: Debug +# Release: +# BuildType: release +# cmakeExtraArgs: -A x64 -DCMAKE_BUILD_TYPE=Release +# MSBuildConfiguration: Release +# Secure: +# BuildType: secure +# cmakeExtraArgs: -A x64 -DCMAKE_BUILD_TYPE=Release -DMI_SECURE=ON +# MSBuildConfiguration: Release +# steps: +# - task: CMake@1 +# inputs: +# workingDirectory: $(BuildType) +# cmakeArgs: .. $(cmakeExtraArgs) +# - task: MSBuild@1 +# inputs: +# solution: $(BuildType)/libmimalloc.sln +# configuration: '$(MSBuildConfiguration)' +# - script: | +# cd $(BuildType) +# ctest --verbose --timeout 120 +# displayName: CTest diff --git a/extlib/mimalloc/bin/mimalloc-redirect.dll b/extlib/mimalloc/bin/mimalloc-redirect.dll new file mode 100644 index 0000000000000000000000000000000000000000..83b6bd4f379ba4d9c0fcdf6b846c3b60867a31d1 GIT binary patch literal 56832 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 SFZCxw#7*v()4(Nb;Qs?c9K0F; literal 0 HcmV?d00001 diff --git a/extlib/mimalloc/bin/mimalloc-redirect.lib b/extlib/mimalloc/bin/mimalloc-redirect.lib new file mode 100644 index 0000000000000000000000000000000000000000..059fb8702a71277ea4eb9995e0826eb53f88f6e5 GIT binary patch literal 2874 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 Y*ez9-cGkvuOQ!{h(x0>j(i)KdKc*F0egFUf literal 0 HcmV?d00001 diff --git a/extlib/mimalloc/bin/mimalloc-redirect32.lib b/extlib/mimalloc/bin/mimalloc-redirect32.lib new file mode 100644 index 0000000000000000000000000000000000000000..7dadab3d657e82efecf90d288b13df7d1ffab7a2 GIT binary patch literal 2928 zcmcIm&rcIU6#ljgrK~?f)TkFsjU-AGDE*Z{j429RZqcVZJsySJ65rA1`I*)aj}G6s^`P z>nd%miY--5-zcnxQNwd z#UnmOwQ?C_B8+X-V(!5?YsvFfOweX$Xa5z1inX{%_zvpSl3wZ+&;kh?J-(IulgNRhI zT3M$%>}*QX(UE}W)m-?{0SHs10P`BFLSkN;F=Zi%vknQ+&`CHFmfz!#U3hn3#vXAK zz%%-uI5ayVtI{pAqRD6@kEEpll0V=4cxN7(kM7MZ&75*RP0Wf3DKqP>7}zZ{>&zL` ziSGyLK)y+>TMNb_%@&mL>eue4?*w2G!P|oWiOqyC8q<|yv$-_IW?aZw@0%Fd?U`A+ z6YCDsAvz*!x0X)EoR<~gz)nl?slT7^nzs(MrEW7F`@Ild$B7sAhmTjkFt$YRF#pQ5 z<)_obPPp$qo}8?Y5H|k_Ft#fZo*sHrJ`+}dQJs9xkDlC)Zf9IS@UA^R;lBBEBUm3N O>>h7yE3^9@K=}s|h@4RX literal 0 HcmV?d00001 diff --git a/extlib/mimalloc/bin/minject.exe b/extlib/mimalloc/bin/minject.exe new file mode 100644 index 0000000000000000000000000000000000000000..625816f1f7774c1f57b70033ea4fbb5e7a14e270 GIT binary patch literal 20992 zcmeHv4SZD9weOxJ6NZp55i=M?UsaQ&zXFw z?R|ak-uHg@dElJ2_gZVOz4qE`ul;e(q~iMRESWKuf?LxV+YLyUgFpYu!^GJ1IeVwG zho>H$yW8YBI=8mP7Z!q{Ky#>}P4G7O{eg(ESr$T3zu@x=uC+BnTcAWO-q_Sn~{=V*0H}?0GP?s4m4X& zCoz`FQDczp0D_E(E17NDnkZzH1y&c50K{itD9IjP$Jihxx)>Xxih}r$dPcA9j4eYZ zeJv-Aq9-T1KriBo8Waa(9pmLpDv%$MJ0ie6I1dj}h}v$n11Ww9jBUyfH8w;V7~3`n zC)n( zLW1N~;vRQ7IG@}a03+Fm!B(8FiZWxDgRzxkx&OaYV%&TX<{3C*Tw-ja-6F;!_RRHS z_ge*$a#B=26qR?>6Pl*E3l9=q@F)jFYYDUO-(@1hY93y}^*4hc^1`lEoauAqf}q4 z)n4#xQjq$*$b*L?Ub8~8ZOjL%w=XhNjEknd#bD3|G+VijjlL;*5AU^5DXm|#Z6~bq zyTY>`Wkj>R$#ofw*A5OsmWE`A6_deHG)eyWu4<- zE@gGPyZF$SY07GgGx?ws$?1}Yg8OnSiU)4D55K6a&T=n&%Bk!Vll#TwWJ6>;<7Ko$ z{n00yc0`P4JVBZ5l$msK*XB-MQ@3utv({PXT<4_z+u$zLMCEyp@{T8Vo4v@byzN=O z!rHR}6Og1mQMtV2&FJ}x-m})8TwqiiT#^iUX}rop`~rGWv%Rs1F^@8I=0WtFQ+Wxl zmA?Fn$R(n(zsWkM2T1B=G49B6Eia0`FM5adK8BA7V!Q$Z{!tgud-{$>Nzuq2l2V@O zRGxDwS5znmtdDL;Dn4P2t7gV3luBWhQfq>>PHf32Q#>Zv>yWef@D_`&YPnTlpAB)-nvG|kQej+OO*&l#XtK;cs$=ftr9w`v}jeQq# zBBBZc)B%FIgrv0#H^F?=PtH-$v|Ut|4TuK@U=FD3LLqIyRaA0C^t_~$*d^s{u~&;+ z)6_KDem-uW<8HSEo&ytRSszK6)6-||`8N!cl6-5=qkxif+glbCy9IcfVP)tzSqUf6Sxw zi3^{#J~Dk<`cg68Zt6K0eHX(|a}{-(#JFUNo>R;tkS{4CF_ZNXvx@XKX9|Vlc*ZNp zsP}&a*~&e-c@FeZRZ?u(v!b?7j2T$14>hMo&wG>}ZZJ5nC%MlP({rK%TPDmd!mr7; zQt=bkJAZ}9<53>A?;y+f9=G=NVcAIRf)o!m zQ;1>LX=48yNn$b@{Q3nkdB2GIsAtK2tdCaFIQuX>PgIV&lzqyz=~D4i?P)GWLP$8{ zNi5Uge}f|f<`)b)3OJ#y_d(K!`-`oO*|#n6HhNxZp`w)nYl{+P@+6;pXFJ22nr=1 z^u)f!?G7C)ln+3xSojessjS1K;ITWTyYw4goMRV(2^%!rX5nWQI zdz9nDbtJ^49CA^Ba`&FL_LTE6yiVBeQdS~D?K9%}AjR_;POYEfxx4tVH9i}R!_PyG zd*Ly}beB>MJNA2$kC7MNkVPYcVv#5LR7LU&6}{)IJwGMyfsM(%UGen%g-=S|`!bbN zB08RM3tx~ZlF-%Fv^}1(*d1Fv;*72QSkedV%6Q6DXDo?^7N+y`V;G<-yGl$9qyIT6 z`GoZm9t*Z5iScR^Ldx5sQj0YS7G%13jCEzdGxD;|&89$`gntKf|`isXV2gJ%=gEg}8+I3n=vk z$|GZgZ>qT0WjqdoE~N;aQrJobft%daFGbGm7%QW~=@Z z>;>-@MCF3099FLfC*?)*dJMbXL$DOoY#}wdiXO~c$|ug{`H>8)0?>5KSj%&x=S1&$ zW5S9ch{Y>0VZA@!5Z*H|WB1Z?9<+Xw)O`&q zIqTY{JCL1wZ=865(zJpo}6BLo19Hj2({Nz$T@hGo}?+BJ_pDYff1_!;)B4y|e6lKp*_9`0rdohh@r8(Wbe4MQ%v(?Z29aoy zj{ukh4nz_&g5U6Cytz*8fGaWM#&0)ODk*PN6u-9ROOo<5yh9_0nDM@*0asyle^Q~m z?Sc(xem?ULcu2}K`+NAffiGvgL)@>vN8uPQzgk)JhNOHzqtb;a5-OcwGsiQT9^OVSWk$$ucJ$W#2f_0FFo+`BQ)TSX-k>TV`=zrxi;xc)6w zMA7g8f)qGP26?YI#CXaeZw2p3Ywt>kaakWR;)SC3vb*P8WI2R>g@g|Mi6Zv7$g;xI zqy6nsQm{_rbZW+Li3Mx4;uk}&4X1;!hzkA_upR|Y<+MJsf5K1!$MqNj>U?nUm8N5K z2Zm+xQy`xvaudjVDJaEP=V-RRd6>*jd*bG`Gj^zwjQK51%T3naBgE!) zmLOnv6;=u*RYc$JZeA+&Y&UF;q0W&dFHRQZ%~~Fya=K zXJGa3VnnG0?@+2){?6BU)FuZ4dcTi|z*_Qit*`GNwlfw(R9s`k?=f28aUSO%Nx5WO%05cxenN zFS599zQ6+|JvPxJXuYV%-i0!nZTA&?gHumI$Wdh81xe9r+5p8f>PUw2oErZl zY=IH^0vfQ_fl?F(s<2VfZ2N$+K7xq4=(-19id@!J>en^NXrQuI_lvOTnfG}`mym_x zwpK3m@B!ec`cA^aZnU(18<+}ZmBphBN{W?-BF$C>2B~V3@6s*>sJMru)eStF3tMyes@u|NB6SXG;#V57rU07qRJyT(XZ74BZ zXqXZmy=^wP*Hqr?3NpMuF+XlWy8D6_iJ;I=xH`|OHK@rGzt66F+6{uF+>$FPVQg4m z;R_j@rZCh-KG~zij%5(h~&sv>lx54uO=h+V>UQh6x zP!|%<*kzpWjg5!I3B%U61Vpy(4@@5KA3VyNPV4;#3USnQuJEkX{jtgVZ3@_r;l{Ap z_&)0@&WmPtecjX^P3!u45)3{75}k*kVp_zV$RJZ$dmaRuc+uH!aSGdx&=nS#@155Pme)Iei#!P3n7-birY-e-^m5rwFH(NOI`f-9=4Z&aH zf;U6(*nWPp{3#@V0OwhzGnW`5s2#pUJKjYLq1}9=9n*| zq5g9SM4w&%bhHokJ0CTj`61*vcPHtU9YG1c&N^^8cd%43eoNBu*PXkk>hxU+`akJ( zC_J^)+Pe<=d*b1=;cK0{r|6tdCOB^&<(vY}<=})&%Ww`A(tTiasufDNZ3C`ikw|n=S60Xa(!0E`P`|s30B9POdBv&s)biV<^@s=VC zONTKm`8J3Gpl2>x`}P@{h2k0Cq|D1a13B@Gw<&*oEdMCw_ZiGL=OFX1l+n)``EFh< zN&~jpjKMspZlv^DN}p7_kmek*Y;_R+(9;(QtG`BfqM8u^)tiFHm-K=f90EJ2YMxhb z1QM%qS_LK{sh$Q^6(}`}9)CnZRCX~{mI?$Uo7Dm0d74CiC)Mz^ZaVVZLk^@a1{>|+ zy5GuGUjY+85X~Ln`Co%y{Q;MWWk&9qen=wTiSG;a#{SAg)meM40(2}r=h%kRYIQR* zcb`-;4t|oH+?pMn#-FTN!zV~cIK4M@X@85;Z*?D z1cn3VC`!X}Y}n#>#Kh~m`>?tL7a^Vv#E_yQ}Y_7T941)}zjNRTAQbg4wx? zWL-Iq7u$(Jb-&IFFPf$fTEG#<1CzY^a}KlB9|H0>Atw}z`coVyp*x+rq3awy=b~n{ z7aWDhe`!*$f;P&)@TK6GqjMB@Vdcia(+nO=xj4vijC+Nm_s5Tu@eWH*-h(9K>TBqy z?SL1f)OOx4H$XJ+kPybI(Rbei7d&IGEGjAU3&?JYXc;z(#ej5U2wF1_cRo0TJFq_)_NB1vp(v~664oq zi^<23L}X6y!lBtAF_vY=A!Q^RuLC^A{h>5vr3J@A#eE?Q9UTq7gzXMqDR4V=W94x> zrP5&MR6zaMC3`@(_uZ$|H=u0carD@HJUp?3+TpVrgy3PI2JP~I(|SfofR3Oi>OWU9blun5mDW2KYw2V#K-o7($Mk zL2(CJtcSrYDnC-eCdR*elEIk)G|)R#fy7IEmVH01JH^ zqB&qKnOL*Ed=V{ru~ngC7_d0RxO>EU4=jSSJF4^)7-&*Vh`=?o0eOm1)^8Pc7D(pt8>T3>dfvv zJy2_Udq(%33rMg?%IEJ2X6oBq zjMhw?xg50abSeGr!qYD0uygB(KO(m}x4yGV_D5aHab=|Npfg@(a!(ty?sRT_*XNh< zV%6@Rb_hP5qI>}7vET$bJ&JRMj92i&Qky?=jb<(FOEs}bZt12}tmWsH1_@kd-u1!9 zTK5HEi(SMLfc`;6>reW_SuVv~g(=9{J!o>p%x)xyrvO)i1Yfnf;^IfeBe!AgZrzF6 zUCL>yJyExH?<-ToY3^zLC_5EJ4w%6qC6vLH@7M(5%JKPj9yuwo#(UNI+uyL-@b!2Aw&^)yan=C_e@o*NJ% zMcsqK0rN>@;iVuvi_~s#9dliI(p7vi3J-AE1^ZCRP&A`E<55r@vDps+P_O2~UFbz5 zIyaNQlBbxm8$|1O5v*`&^JiGevMKy|ZaSq^{(O^T?%_{Ae{SH<|Hhv^{CN|9ZsO0) z{P}zS{4;+B`7^|y5&mrF&kp|lkk|4mf9~g)F8;ieKXv(c>3Ghwl0TPal7~;e#`Zhf z&}16r$I<7{fCNXKKApTNDmdVK3hSpCh>KXzP#8Y~szQ{)gIkMW^FHf6{YpRZF#i|V z|6vP!=_Xy^eFofRz(WRn(SYw7u+@Om>-BODBfrSVuQT#@8BjFv3AH0e{=#)SW&5+t zCk=YJ0YirTmV|x={DHy$Wh1}S$Ukhr#|-$Q0TcDTZsZ3IIAXvoL(UZjTy4M}gMP=P z{(El`b5Iyhz^bKsJ~#;`>b2+U^h7=ZH|FU0tk0n*_&yIJ>`b`iP$&>uA+R=ITSF_p zB+LuRjlPiVjpR4Bwn9j8f`D`$ZlAxsq1D$Yv^UJqLZ`j-_3z2{j2+Dq;$=52c5ax%|1bTpFes~2(3UXU8(z!?oguojRS{p*mGD#r% zn2eCz&?rP&WW9(tfQjB82@@YteEw!3XMQ+`~DxfLo#^jiiTw&r_JZT879jSnxJ+_-V*XfNQc6ud7FI^s+OB3 zoDYTYJ#Z8%ka_~X9d2kPg*(9z41^+bBdN>`(^C@mCds4CVY-pS!1)4xXmhJ9;6ql~ z-x$V+$DILxqmZESj>s+OnBNg?723o3f}S+==E6xn@3eMbC=zXG{ojz+DmS#tLPJCd z2Eu4Pbeq34x?)W4wgAZJ{V{Ukcrt@o10lmM4X{gC@COX5goU<-h_^*IPFhF~gc@ad zDScW^rqoRrUcpVrg!zR&?pQ_x(+n`=lV(C5_cTYQlg?!10^i%~7y z9c{`NoG?LWAS#66VAlvYbXFQsko;26RSz!`$kquTCrkObXEC+~V{L4V@Ns5TNq%W) zu?R!X81&SdF@B=+E=r6|Qg#wI>IenEHNGXEY6b6z@$LRwTK#!#9Md->`y1K}kAY+9 zBg!uXTN}Lcr_?s|9@FHrwMM_@p~E%@!aV4pBlGfLJFg7b>I+9G@ALC2IITr)4FVS+ zJUlzn{oyu&E2oPfLr2F$0k*R||$- z!VS9F!#4^gsO0LjG$T)3c`X7SdDMwW@GIN`<3#9J9fT#GcHl>yg7e@99)^z)y_M6+ z#+-;pz~9=*jsB^aLi|3?Z#WSz5~ZI6VC2C-P!Ubb;|?a|wl&-$^H4xELZIw={Hyg~aHSd9VpY5tc&%Ost3+D95jf&Pmf4IVpwSQO7iT zZG2xQN*h89Am=yd3nXGpC}|M#HS&N0C%Z+DdI?c^2{KJ}X=#|GWdv|RSdY+1+UAT7 zvmAH>OhS_&e46(m*`ZnX8*V-tO~Vuocu2r(NZ}Dal7ldvlMlge?n^XNf5tM0&&1%S z9^g`%0<8$gWDG(j%8)O^$>ffPwqUES@0g$I@j+#^xgq3jStPg`U?7j|yIJ<9 zp~70xE!3yUy%S6a_u9Q4d?R7M!%ca^%l3TvET5t+g&gxpJtj^=C7OLv1tJc=Ip@Iv7 zE2YZvYSiPda97smqh8 zp`CN3$E{a}rj>b|QUy%qtZ=R(4XcH;jcIb`&SeFGNit2#72p^xBl zJ3Wwwj;b^on&?XSojxV_WeV;3I+i=gQ4R+vpSmXeM(b15za5dg z>9hAs9V>PGHUoaD2HKSUXI|HSww_&ve%lRruK{;`PP_hAm9wc}7yeDUs%u;|J0E(< z-u}S>=MUJiA6^%|B|ztYWh*w;h2>CqV)Skb{$OWxySqh~x53PQX=hc|#L%oKKyAtL1znz`;yLJ8C%}qlz%762D1gG**d+ z|3=Z?9%zlUH6l-AcqC~Qf9tKcHg1M#n5EXRO(^2EOHN)-<^kyc#U92Yx$gFIa*k+th{nOrtoi6XE~bWwNF+YvWXA zU1nj{>S;mK%oH}WdPeY~O_>FzSt)E*^(DcXn`{N9OOx28O98W!Sav8YI2Z4?G8$7^ z%CadecoAdw;NAc`%|(Ud^QN>EmbPpvOIw;6oST)(vR*|!jZ>JpHkA#bjD~xgQEq(R zgx3$LOOpyrmrZ4t?VLH1H8kT`X5aK+#-{YDX$5#yaM2WY(Y}n4X+u+kmQ7QtQh}Rm zPGaV#(^=JJcuj->IYe?TNzC$i7SI13aPJv)5q*4qd>NA^g;}aog2|hb3g&)fVIRGh z!v6GlI+I>CL+><3-*v6J0zVq6qxNDHg3dr=;9;Ml!vQ{pgWpb&VU(Z5XPPyQ&1%eM zvuZD4vzE-ntiHaiK8*7iUz5*UkCVa1Rv8?#fcHj2IADs@%N<^sAKb9ZKMPyW&z|v@ z1g>Una$8uAFt)C&x~{TTs&Fq^R-m8c)-k!m2TF`J;e~W7i<1U^Z$qR$%r0SGe(uiL z?W~E8>|loa`UY<(Qtu0Fu5ZGLCEJ4UD_f)C7DR8>bJ!A{7y2B+S1zRK7) zSyNb+Z(-kK5u65XL1PxMdQ{dJ4dOL#J(7*S0Ca9^3;65Xn}Q)6%`~y^BxK>Q2oSg5 z=WPqJTUk@Hj6-z?q|;6VXP`uFh+MVISBNP0ZM_sY?`BQ>@Q|W@J+}RRoQK_^w+7mE zvnD#@W{t$pPaYY&lI(V6Z;Y8I;*n(p!#TcN4-n zFb+b{L)nZB-{fn?0a3lb0q-!j)MIngj!!&Tz0Z#WXdL+8I!coLIN%QW>5z?9i}h$% zf-6yaJj+$O3_90kUmZ)=%j`kF8IxFXtNiJCl$C&k8 z36owc?^@CcJvq(}0Y4YYPuMU&kE`FHke|`8eytZ)O z7MxFkBM*P$B;sq6^IDhWEy>dzeG&(Ew!cV+`!$bem|RDT+z|XrbULXHcfyWse~F8{ z<}cB8i%#IEO1U;FhdQg|5Dsl{4CZCOuc!EeHwSc?T_Ha8v6rL*6A;9>ip;y)OcsI6n4p*qs`57s0wGNh`DsG!bSL3nEZ{-c1sxo{Q8?a&4Z9=|`MecO>4*arYl@HO1K zkRActdNJ1INN)$MybR|ENRQuNjo*9G9;|0JqCfUh1Yg2^Ino5*!o3LT@p~oOcRe!) zA7KGc@M{A0-bfSNihCQ<1n;98X@dK4KZrEJ6S#?=;E;hQNWZLk9QYAHe0#u#kR~_- z`y^@$zC&R6RsqW%9hMqt2O#|oDGTrfpTtc(#{j2duSDr|z&hL{X9M6XM*3C2+pvcc z!9#EdZsH+$&`2KvOkJeoEr4@ylS~2d2<{-#^ufX``e*@Z2cVJr4Z<&t!N0h<+m@%q4%@CCOI5gH@-HA5`>aSC>oAP{-%H-ZQfszRydEBLrHu- z62+GQokkv*ko>hMYLOeOLcVsaV4CIdC~-X5&0pf8*&exFZpBv$c$Vfgge8A_;1)TQ zBSd{pFD;l#bDA1j!*Y(WcvMcw;?J+8Wbp)@N*0ec4#i6rC+vpI#7_L|oP+i;h}%26 yc5d6bedoP9AK2Nqb8zR$UyS_X!Y@Fm(%*G-?YMWxjvWu|*tG+=FRuSG7WkjF)XIDS literal 0 HcmV?d00001 diff --git a/extlib/mimalloc/bin/minject32.exe b/extlib/mimalloc/bin/minject32.exe new file mode 100644 index 0000000000000000000000000000000000000000..6857ad0ce1ccd014ed02c99d2c13feb5783fddb9 GIT binary patch literal 18432 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 literal 0 HcmV?d00001 diff --git a/extlib/mimalloc/cmake/mimalloc-config-version.cmake b/extlib/mimalloc/cmake/mimalloc-config-version.cmake index 6454d91..8063afe 100644 --- a/extlib/mimalloc/cmake/mimalloc-config-version.cmake +++ b/extlib/mimalloc/cmake/mimalloc-config-version.cmake @@ -1,16 +1,19 @@ -set(mi_version_major 1) -set(mi_version_minor 6) +set(mi_version_major 2) +set(mi_version_minor 0) +set(mi_version_patch 6) set(mi_version ${mi_version_major}.${mi_version_minor}) set(PACKAGE_VERSION ${mi_version}) -if("${PACKAGE_FIND_VERSION_MAJOR}" EQUAL "${mi_version_major}") - if ("${PACKAGE_FIND_VERSION_MINOR}" EQUAL "${mi_version_minor}") - set(PACKAGE_VERSION_EXACT TRUE) - elseif("${PACKAGE_FIND_VERSION_MINOR}" LESS "${mi_version_minor}") - set(PACKAGE_VERSION_COMPATIBLE TRUE) +if(PACKAGE_FIND_VERSION_MAJOR) + if("${PACKAGE_FIND_VERSION_MAJOR}" EQUAL "${mi_version_major}") + if ("${PACKAGE_FIND_VERSION_MINOR}" EQUAL "${mi_version_minor}") + set(PACKAGE_VERSION_EXACT TRUE) + elseif("${PACKAGE_FIND_VERSION_MINOR}" LESS "${mi_version_minor}") + set(PACKAGE_VERSION_COMPATIBLE TRUE) + else() + set(PACKAGE_VERSION_UNSUITABLE TRUE) + endif() else() set(PACKAGE_VERSION_UNSUITABLE TRUE) endif() -else() - set(PACKAGE_VERSION_UNSUITABLE TRUE) endif() diff --git a/extlib/mimalloc/cmake/mimalloc-config.cmake b/extlib/mimalloc/cmake/mimalloc-config.cmake index 12da076..8a28e37 100644 --- a/extlib/mimalloc/cmake/mimalloc-config.cmake +++ b/extlib/mimalloc/cmake/mimalloc-config.cmake @@ -1,2 +1,14 @@ include(${CMAKE_CURRENT_LIST_DIR}/mimalloc.cmake) -get_filename_component(MIMALLOC_TARGET_DIR "${CMAKE_CURRENT_LIST_DIR}" PATH) +get_filename_component(MIMALLOC_CMAKE_DIR "${CMAKE_CURRENT_LIST_DIR}" PATH) # one up from the cmake dir, e.g. /usr/local/lib/cmake/mimalloc-2.0 +get_filename_component(MIMALLOC_VERSION_DIR "${CMAKE_CURRENT_LIST_DIR}" NAME) +string(REPLACE "/lib/cmake" "/lib" MIMALLOC_LIBRARY_DIR "${MIMALLOC_CMAKE_DIR}") +if("${MIMALLOC_VERSION_DIR}" EQUAL "mimalloc") + # top level install + string(REPLACE "/lib/cmake" "/include" MIMALLOC_INCLUDE_DIR "${MIMALLOC_CMAKE_DIR}") + set(MIMALLOC_OBJECT_DIR "${MIMALLOC_LIBRARY_DIR}") +else() + # versioned + string(REPLACE "/lib/cmake/" "/include/" MIMALLOC_INCLUDE_DIR "${CMAKE_CURRENT_LIST_DIR}") + string(REPLACE "/lib/cmake/" "/lib/" MIMALLOC_OBJECT_DIR "${CMAKE_CURRENT_LIST_DIR}") +endif() +set(MIMALLOC_TARGET_DIR "${MIMALLOC_LIBRARY_DIR}") # legacy diff --git a/extlib/mimalloc/doc/bench-2020/bench-c5-18xlarge-2020-01-20-a.svg b/extlib/mimalloc/doc/bench-2020/bench-c5-18xlarge-2020-01-20-a.svg new file mode 100644 index 0000000..9005097 --- /dev/null +++ b/extlib/mimalloc/doc/bench-2020/bench-c5-18xlarge-2020-01-20-a.svg @@ -0,0 +1,887 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extlib/mimalloc/doc/bench-2020/bench-c5-18xlarge-2020-01-20-b.svg b/extlib/mimalloc/doc/bench-2020/bench-c5-18xlarge-2020-01-20-b.svg new file mode 100644 index 0000000..2d853ed --- /dev/null +++ b/extlib/mimalloc/doc/bench-2020/bench-c5-18xlarge-2020-01-20-b.svg @@ -0,0 +1,1185 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extlib/mimalloc/doc/bench-2020/bench-c5-18xlarge-2020-01-20-rss-a.svg b/extlib/mimalloc/doc/bench-2020/bench-c5-18xlarge-2020-01-20-rss-a.svg new file mode 100644 index 0000000..393bfad --- /dev/null +++ b/extlib/mimalloc/doc/bench-2020/bench-c5-18xlarge-2020-01-20-rss-a.svg @@ -0,0 +1,757 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extlib/mimalloc/doc/bench-2020/bench-c5-18xlarge-2020-01-20-rss-b.svg b/extlib/mimalloc/doc/bench-2020/bench-c5-18xlarge-2020-01-20-rss-b.svg new file mode 100644 index 0000000..419dc25 --- /dev/null +++ b/extlib/mimalloc/doc/bench-2020/bench-c5-18xlarge-2020-01-20-rss-b.svg @@ -0,0 +1,1028 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extlib/mimalloc/doc/bench-2020/bench-r5a-1.svg b/extlib/mimalloc/doc/bench-2020/bench-r5a-1.svg new file mode 100644 index 0000000..c296a04 --- /dev/null +++ b/extlib/mimalloc/doc/bench-2020/bench-r5a-1.svg @@ -0,0 +1,769 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extlib/mimalloc/doc/bench-2020/bench-r5a-12xlarge-2020-01-16-a.svg b/extlib/mimalloc/doc/bench-2020/bench-r5a-12xlarge-2020-01-16-a.svg new file mode 100644 index 0000000..b8a2f20 --- /dev/null +++ b/extlib/mimalloc/doc/bench-2020/bench-r5a-12xlarge-2020-01-16-a.svg @@ -0,0 +1,868 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extlib/mimalloc/doc/bench-2020/bench-r5a-12xlarge-2020-01-16-b.svg b/extlib/mimalloc/doc/bench-2020/bench-r5a-12xlarge-2020-01-16-b.svg new file mode 100644 index 0000000..4a7e21e --- /dev/null +++ b/extlib/mimalloc/doc/bench-2020/bench-r5a-12xlarge-2020-01-16-b.svg @@ -0,0 +1,1157 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extlib/mimalloc/doc/bench-2020/bench-r5a-2.svg b/extlib/mimalloc/doc/bench-2020/bench-r5a-2.svg new file mode 100644 index 0000000..917ea57 --- /dev/null +++ b/extlib/mimalloc/doc/bench-2020/bench-r5a-2.svg @@ -0,0 +1,983 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extlib/mimalloc/doc/bench-2020/bench-r5a-rss-1.svg b/extlib/mimalloc/doc/bench-2020/bench-r5a-rss-1.svg new file mode 100644 index 0000000..375ebd2 --- /dev/null +++ b/extlib/mimalloc/doc/bench-2020/bench-r5a-rss-1.svg @@ -0,0 +1,683 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extlib/mimalloc/doc/bench-2020/bench-r5a-rss-2.svg b/extlib/mimalloc/doc/bench-2020/bench-r5a-rss-2.svg new file mode 100644 index 0000000..cb2bbc8 --- /dev/null +++ b/extlib/mimalloc/doc/bench-2020/bench-r5a-rss-2.svg @@ -0,0 +1,854 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extlib/mimalloc/doc/bench-2020/bench-spec-rss.svg b/extlib/mimalloc/doc/bench-2020/bench-spec-rss.svg new file mode 100644 index 0000000..2c93616 --- /dev/null +++ b/extlib/mimalloc/doc/bench-2020/bench-spec-rss.svg @@ -0,0 +1,713 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extlib/mimalloc/doc/bench-2020/bench-spec.svg b/extlib/mimalloc/doc/bench-2020/bench-spec.svg new file mode 100644 index 0000000..af2b41b --- /dev/null +++ b/extlib/mimalloc/doc/bench-2020/bench-spec.svg @@ -0,0 +1,713 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extlib/mimalloc/doc/bench-2020/bench-z4-1.svg b/extlib/mimalloc/doc/bench-2020/bench-z4-1.svg new file mode 100644 index 0000000..dacd8ab --- /dev/null +++ b/extlib/mimalloc/doc/bench-2020/bench-z4-1.svg @@ -0,0 +1,890 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extlib/mimalloc/doc/bench-2020/bench-z4-2.svg b/extlib/mimalloc/doc/bench-2020/bench-z4-2.svg new file mode 100644 index 0000000..9990cdc --- /dev/null +++ b/extlib/mimalloc/doc/bench-2020/bench-z4-2.svg @@ -0,0 +1,1146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extlib/mimalloc/doc/bench-2020/bench-z4-rss-1.svg b/extlib/mimalloc/doc/bench-2020/bench-z4-rss-1.svg new file mode 100644 index 0000000..891f7d6 --- /dev/null +++ b/extlib/mimalloc/doc/bench-2020/bench-z4-rss-1.svg @@ -0,0 +1,796 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extlib/mimalloc/doc/bench-2020/bench-z4-rss-2.svg b/extlib/mimalloc/doc/bench-2020/bench-z4-rss-2.svg new file mode 100644 index 0000000..f426537 --- /dev/null +++ b/extlib/mimalloc/doc/bench-2020/bench-z4-rss-2.svg @@ -0,0 +1,974 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extlib/mimalloc/doc/bench-2021/bench-amd5950x-2021-01-30-a.svg b/extlib/mimalloc/doc/bench-2021/bench-amd5950x-2021-01-30-a.svg new file mode 100644 index 0000000..86a97bf --- /dev/null +++ b/extlib/mimalloc/doc/bench-2021/bench-amd5950x-2021-01-30-a.svg @@ -0,0 +1,952 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extlib/mimalloc/doc/bench-2021/bench-amd5950x-2021-01-30-b.svg b/extlib/mimalloc/doc/bench-2021/bench-amd5950x-2021-01-30-b.svg new file mode 100644 index 0000000..c748877 --- /dev/null +++ b/extlib/mimalloc/doc/bench-2021/bench-amd5950x-2021-01-30-b.svg @@ -0,0 +1,1255 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extlib/mimalloc/doc/bench-2021/bench-c5-18xlarge-2021-01-30-a.svg b/extlib/mimalloc/doc/bench-2021/bench-c5-18xlarge-2021-01-30-a.svg new file mode 100644 index 0000000..bc91c21 --- /dev/null +++ b/extlib/mimalloc/doc/bench-2021/bench-c5-18xlarge-2021-01-30-a.svg @@ -0,0 +1,955 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extlib/mimalloc/doc/bench-2021/bench-c5-18xlarge-2021-01-30-b.svg b/extlib/mimalloc/doc/bench-2021/bench-c5-18xlarge-2021-01-30-b.svg new file mode 100644 index 0000000..e8b04a0 --- /dev/null +++ b/extlib/mimalloc/doc/bench-2021/bench-c5-18xlarge-2021-01-30-b.svg @@ -0,0 +1,1269 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extlib/mimalloc/doc/bench-2021/bench-c5-18xlarge-2021-01-30-rss-a.svg b/extlib/mimalloc/doc/bench-2021/bench-c5-18xlarge-2021-01-30-rss-a.svg new file mode 100644 index 0000000..6cd36aa --- /dev/null +++ b/extlib/mimalloc/doc/bench-2021/bench-c5-18xlarge-2021-01-30-rss-a.svg @@ -0,0 +1,836 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extlib/mimalloc/doc/bench-2021/bench-c5-18xlarge-2021-01-30-rss-b.svg b/extlib/mimalloc/doc/bench-2021/bench-c5-18xlarge-2021-01-30-rss-b.svg new file mode 100644 index 0000000..c81072e --- /dev/null +++ b/extlib/mimalloc/doc/bench-2021/bench-c5-18xlarge-2021-01-30-rss-b.svg @@ -0,0 +1,1131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extlib/mimalloc/doc/bench-2021/bench-macmini-2021-01-30.svg b/extlib/mimalloc/doc/bench-2021/bench-macmini-2021-01-30.svg new file mode 100644 index 0000000..ece6418 --- /dev/null +++ b/extlib/mimalloc/doc/bench-2021/bench-macmini-2021-01-30.svg @@ -0,0 +1,766 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extlib/mimalloc/doc/doxyfile b/extlib/mimalloc/doc/doxyfile new file mode 100644 index 0000000..73266f4 --- /dev/null +++ b/extlib/mimalloc/doc/doxyfile @@ -0,0 +1,2659 @@ +# Doxyfile 1.9.1 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the configuration +# file that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# https://www.gnu.org/software/libiconv/ for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = mi-malloc + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = 1.7/2.0 + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = mimalloc-logo.svg + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = .. + +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- +# directories (in 2 levels) under the output directory of each output format and +# will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, +# Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# The OUTPUT_TEXT_DIRECTION tag is used to specify the direction in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all generated output in the proper direction. +# Possible values are: None, LTR, RTL and Context. +# The default value is: None. + +OUTPUT_TEXT_DIRECTION = None + +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = YES + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = YES + +# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line +# such as +# /*************** +# as being the beginning of a Javadoc-style comment "banner". If set to NO, the +# Javadoc-style will behave just like regular comments and it will not be +# interpreted by doxygen. +# The default value is: NO. + +JAVADOC_BANNER = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# By default Python docstrings are displayed as preformatted text and doxygen's +# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the +# doxygen's special commands can be used and the contents of the docstring +# documentation blocks is shown as doxygen documentation. +# The default value is: YES. + +PYTHON_DOCSTRING = YES + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 2 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:\n" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". You can put \n's in the value part of an alias to insert +# newlines (in the resulting output). You can put ^^ in the value part of an +# alias to insert a newline as if a physical newline was in the original file. +# When you need a literal { or } or , in the value part of an alias you have to +# escape them by means of a backslash (\), this can lead to conflicts with the +# commands \{ and \} for these it is advised to use the version @{ and @} or use +# a double escape (\\{ and \\}) + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = YES + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice +# sources only. Doxygen will then generate output that is more tailored for that +# language. For instance, namespaces will be presented as modules, types will be +# separated into more groups, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_SLICE = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, JavaScript, +# Csharp (C#), C, C++, D, PHP, md (Markdown), Objective-C, Python, Slice, VHDL, +# Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: +# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser +# tries to guess whether the code is fixed or free formatted code, this is the +# default for Fortran type files). For instance to make doxygen treat .inc files +# as Fortran files (default is PHP), and .f files as C (default is Fortran), +# use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. When specifying no_extension you should add +# * to the FILE_PATTERNS. +# +# Note see also the list of default file extension mappings. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See https://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up +# to that level are automatically included in the table of contents, even if +# they do not have an id attribute. +# Note: This feature currently applies only to Markdown headings. +# Minimum value: 0, maximum value: 99, default value: 5. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +TOC_INCLUDE_HEADINGS = 0 + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = YES + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = YES + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +# The NUM_PROC_THREADS specifies the number threads doxygen is allowed to use +# during processing. When set to 0 doxygen will based this on the number of +# cores available in the system. You can set it explicitly to a value larger +# than 0 to get more control over the balance between CPU load and processing +# speed. At this moment only the input processing can be done using multiple +# threads. Since this is still an experimental feature the default is set to 1, +# which efficively disables parallel processing. Please report any issues you +# encounter. Generating dot graphs in parallel is controlled by the +# DOT_NUM_THREADS setting. +# Minimum value: 0, maximum value: 32, default value: 1. + +NUM_PROC_THREADS = 1 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual +# methods of a class will be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIV_VIRTUAL = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If this flag is set to YES, the name of an unnamed parameter in a declaration +# will be determined by the corresponding definition. By default unnamed +# parameters remain unnamed in the output. +# The default value is: YES. + +RESOLVE_UNNAMED_PARAMS = YES + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# declarations. If set to NO, these declarations will be included in the +# documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# With the correct setting of option CASE_SENSE_NAMES doxygen will better be +# able to match the capabilities of the underlying filesystem. In case the +# filesystem is case sensitive (i.e. it supports files in the same directory +# whose names only differ in casing), the option must be set to YES to properly +# deal with such files in case they appear in the input. For filesystems that +# are not case sensitive the option should be be set to NO to properly deal with +# output files written for symbols that only differ in casing, such as for two +# classes, one named CLASS and the other named Class, and to also support +# references to files without having to specify the exact matching casing. On +# Windows (including Cygwin) and MacOS, users should typically set this option +# to NO, whereas on Linux or other Unix flavors it should typically be set to +# YES. +# The default value is: system dependent. + +CASE_SENSE_NAMES = NO + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = YES + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 0 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = NO + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = NO + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some parameters +# in a documented function, or documenting parameters that don't exist or using +# markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong or incomplete +# parameter documentation, but not about the absence of documentation. If +# EXTRACT_ALL is set to YES then this flag will automatically be disabled. +# The default value is: NO. + +WARN_NO_PARAMDOC = NO + +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS +# then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but +# at the end of the doxygen process doxygen will return with a non-zero status. +# Possible values are: NO, YES and FAIL_ON_WARNINGS. +# The default value is: NO. + +WARN_AS_ERROR = NO + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = mimalloc-doc.h + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: +# https://www.gnu.org/software/libiconv/) for the list of possible encodings. +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# Note the list of default checked file patterns might differ from the list of +# default file extension mappings. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, +# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, +# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, +# *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C comment), +# *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd, *.vhdl, +# *.ucf, *.qsf and *.ice. + +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.idl \ + *.ddl \ + *.odl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.cs \ + *.d \ + *.php \ + *.php4 \ + *.php5 \ + *.phtml \ + *.inc \ + *.m \ + *.markdown \ + *.md \ + *.mm \ + *.dox \ + *.py \ + *.pyw \ + *.f90 \ + *.f95 \ + *.f03 \ + *.f08 \ + *.f \ + *.for \ + *.tcl \ + *.vhd \ + *.vhdl \ + *.ucf \ + *.qsf + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# entity all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see https://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the +# clang parser (see: +# http://clang.llvm.org/) for more accurate parsing at the cost of reduced +# performance. This can be particularly helpful with template rich C++ code for +# which doxygen's built-in parser lacks the necessary type information. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse_libclang=ON option for CMake. +# The default value is: NO. + +CLANG_ASSISTED_PARSING = NO + +# If clang assisted parsing is enabled and the CLANG_ADD_INC_PATHS tag is set to +# YES then doxygen will add the directory of each input to the include path. +# The default value is: YES. + +CLANG_ADD_INC_PATHS = YES + +# If clang assisted parsing is enabled you can provide the compiler with command +# line options that you would normally use when invoking the compiler. Note that +# the include paths will already be set by doxygen for the files and directories +# specified with INPUT and INCLUDE_PATH. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_OPTIONS = + +# If clang assisted parsing is enabled you can provide the clang parser with the +# path to the directory containing a file called compile_commands.json. This +# file is the compilation database (see: +# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the +# options used when the source files were built. This is equivalent to +# specifying the -p option to a clang tool, such as clang-check. These options +# will then be passed to the parser. Any options specified with CLANG_OPTIONS +# will be added as well. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse_libclang=ON option for CMake. + +CLANG_DATABASE_PATH = + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = YES + +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = docs + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = mimalloc-doxygen.css + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a colorwheel, see +# https://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 189 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use grayscales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 12 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 240 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting this +# to YES can help to show when doxygen was last run and thus if the +# documentation is up to date. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_TIMESTAMP = NO + +# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML +# documentation will contain a main index with vertical navigation menus that +# are dynamically created via JavaScript. If disabled, the navigation index will +# consists of multiple levels of tabs that are statically embedded in every HTML +# page. Disable this option to support browsers that do not have JavaScript, +# like the Qt help browser. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_MENUS = NO + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: +# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To +# create a documentation set, doxygen will generate a Makefile in the HTML +# output directory. Running make will produce the docset in that directory and +# running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy +# genXcode/_index.html for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# (see: +# https://www.microsoft.com/en-us/download/details.aspx?id=21138) on Windows. +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the main .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location (absolute path +# including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to +# run qhelpgenerator on the generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = YES + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = YES + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 180 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg +# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see +# https://inkscape.org) to generate formulas as SVG images instead of PNGs for +# the HTML output. These images will generally look nicer at scaled resolutions. +# Possible values are: png (the default) and svg (looks nicer but requires the +# pdf2svg or inkscape tool). +# The default value is: png. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FORMULA_FORMAT = png + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANSPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are not +# supported properly for IE 6.0, but are supported on all modern browsers. +# +# Note that when changing this option you need to delete any form_*.png files in +# the HTML output directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_TRANSPARENT = YES + +# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands +# to create new LaTeX commands to be used in formulas as building blocks. See +# the section "Including formulas" for details. + +FORMULA_MACROFILE = + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# https://www.mathjax.org) which uses client side JavaScript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. See the MathJax site (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility), NativeMML (i.e. MathML) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from https://www.mathjax.org before deployment. +# The default value is: https://cdn.jsdelivr.net/npm/mathjax@2. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /