From f8656a9af8fdf896f6a9d274b6dff7be8797d432 Mon Sep 17 00:00:00 2001 From: Heath123 Date: Fri, 8 Jul 2022 17:08:25 +0100 Subject: [PATCH] gint, boosts, and so much more --- .cache/clangd/index/3d.c.B25E87FFF83279C2.idx | Bin 0 -> 1482 bytes .cache/clangd/index/3d.h.BDA760B5AF64E463.idx | Bin 0 -> 410 bytes .../index/buttons.c.AA168E02D3C2A5FF.idx | Bin 0 -> 1800 bytes .../index/buttons.h.C34AB84233C86DB7.idx | Bin 0 -> 1236 bytes .../index/debugHud.c.0DE3E78CA9EE118E.idx | Bin 0 -> 1280 bytes .../index/debugHud.h.0800CD4A6FA4F7FE.idx | Bin 0 -> 234 bytes .../generated_lut.h.1DD0AB6BB7578326.idx | Bin 0 -> 384 bytes .../clangd/index/gint.c.DBBFBFBFAD122397.idx | Bin 0 -> 1894 bytes .../clangd/index/gint.h.78C3B1682C8D64FA.idx | Bin 0 -> 1116 bytes .../index/images.c.1F8B0361A7E35E9A.idx | Bin 0 -> 3860 bytes .../index/images.c.803F23E219B7455D.idx | Bin 0 -> 430 bytes .../index/images.h.DD686E5C6087DA5C.idx | Bin 0 -> 3250 bytes .../clangd/index/main.c.874A7ADD6DB57FC3.idx | Bin 0 -> 8444 bytes .../clangd/index/main.h.6BFA7F5622972D20.idx | Bin 0 -> 926 bytes .../clangd/index/maths.c.9DF20CA4865372FD.idx | Bin 0 -> 658 bytes .../clangd/index/maths.h.2D983B08F611D087.idx | Bin 0 -> 348 bytes .../index/particles.c.04E6BAF9E21F2C26.idx | Bin 0 -> 1678 bytes .../index/particles.h.BFFF4739C5D97DC6.idx | Bin 0 -> 1136 bytes .../index/physics.c.BEC7150A4956B853.idx | Bin 0 -> 1988 bytes .../index/physics.h.B9A4C82159624FE8.idx | Bin 0 -> 1112 bytes .../index/platform.c.CCD21C94FAA9A428.idx | Bin 0 -> 432 bytes .../index/platform.h.23938D2965748EFE.idx | Bin 0 -> 152 bytes .../index/sprites.c.D3E6EB9072E5184B.idx | Bin 0 -> 1802 bytes .../index/sprites.h.39AA44A0FCA3CA1A.idx | Bin 0 -> 740 bytes .../clangd/index/state.c.38363B0A396C289D.idx | Bin 0 -> 1194 bytes .../clangd/index/state.h.25FD4037DD824937.idx | Bin 0 -> 988 bytes .../index/tilemap.c.6EAE01AA5F3D4FEC.idx | Bin 0 -> 820 bytes .../index/tilemap.h.DE543ECEEBE1CCC3.idx | Bin 0 -> 390 bytes .../clangd/index/track.h.1C97A1FB34485483.idx | Bin 0 -> 360 bytes .clangd | 7 + .cmake/api/v1/query/cache-v2 | 0 .cmake/api/v1/query/cmakeFiles-v1 | 0 .cmake/api/v1/query/codemodel-v2 | 0 .cmake/api/v1/query/toolchains-v1 | 0 .../reply/cache-v2-090f13c229a843ec3c77.json | 1191 ++++++ .../cmakeFiles-v1-5c368505a9e5b5457aac.json | 133 + .../codemodel-v2-b7ef37ab22d4355f78bd.json | 43 + .../directory-.-f5ebdc15457944623624.json | 14 + .../reply/index-2022-07-05T14-43-38-0198.json | 108 + .../toolchains-v1-455d26859483b5db9132.json | 103 + .gitignore | 38 +- .idea/misc.xml | 11 +- .idea/mk-gint.iml | 2 + .idea/modules.xml | 8 + .idea/vcs.xml | 6 - .vscode/launch.json | 38 - .vscode/settings.json | 37 +- .vscode/tasks.json | 41 - CMakeCache.txt | 374 ++ CMakeFiles/3.23.2/CMakeCCompiler.cmake | 72 + CMakeFiles/3.23.2/CMakeCXXCompiler.cmake | 83 + .../3.23.2/CMakeDetermineCompilerABI_C.bin | Bin 0 -> 20536 bytes .../3.23.2/CMakeDetermineCompilerABI_CXX.bin | Bin 0 -> 20560 bytes CMakeFiles/3.23.2/CMakeSystem.cmake | 15 + .../3.23.2/CompilerIdC/CMakeCCompilerId.c | 828 ++++ CMakeFiles/3.23.2/CompilerIdC/a.out | Bin 0 -> 20664 bytes .../CompilerIdCXX/CMakeCXXCompilerId.cpp | 816 ++++ CMakeFiles/3.23.2/CompilerIdCXX/a.out | Bin 0 -> 20672 bytes CMakeFiles/CMakeDirectoryInformation.cmake | 16 + CMakeFiles/CMakeOutput.log | 405 ++ CMakeFiles/Makefile.cmake | 46 + CMakeFiles/Makefile2 | 86 + CMakeFiles/TargetDirectories.txt | 2 + CMakeFiles/clion-environment.txt | Bin 0 -> 56 bytes CMakeFiles/clion-log.txt | 38 + CMakeFiles/cmake.check_cache | 1 + CMakeFiles/progress.marks | 1 + CMakeLists.txt | 66 + Makefile | 147 - assets-cg/bg.png | Bin 0 -> 12857 bytes assets-cg/fxconv-metadata.txt | 3 + assets-cg/icon-sel.png | Bin 0 -> 9780 bytes assets-cg/icon-uns.png | Bin 0 -> 7618 bytes assets-fx/example.png | Bin 0 -> 3569 bytes assets-fx/fxconv-metadata.txt | 3 + assets-fx/icon.png | Bin 0 -> 7429 bytes assets/img/bg.png | Bin 12962 -> 12857 bytes assets/img/boost/0.png | Bin 0 -> 639 bytes assets/img/boost/1.png | Bin 0 -> 662 bytes assets/img/boost/2.png | Bin 0 -> 757 bytes assets/img/boost/3.png | Bin 0 -> 814 bytes assets/img/boost/4.png | Bin 0 -> 577 bytes assets/img/countdown/0.png | Bin 0 -> 12034 bytes assets/img/countdown/1.png | Bin 0 -> 4512 bytes assets/img/countdown/2.png | Bin 0 -> 5838 bytes assets/img/countdown/3.png | Bin 0 -> 6937 bytes assets/img/fire.png | Bin 0 -> 233 bytes assets/img/font/0.png | Bin 0 -> 150 bytes assets/img/font/1.png | Bin 0 -> 137 bytes assets/img/font/10.png | Bin 0 -> 120 bytes assets/img/font/2.png | Bin 0 -> 158 bytes assets/img/font/3.png | Bin 0 -> 153 bytes assets/img/font/4.png | Bin 0 -> 158 bytes assets/img/font/5.png | Bin 0 -> 151 bytes assets/img/font/6.png | Bin 0 -> 159 bytes assets/img/font/7.png | Bin 0 -> 160 bytes assets/img/font/8.png | Bin 0 -> 139 bytes assets/img/font/9.png | Bin 0 -> 158 bytes build-em/CMakeCache.txt | 379 ++ .../CMakeFiles/3.23.2/CMakeCCompiler.cmake | 72 + .../CMakeFiles/3.23.2/CMakeCXXCompiler.cmake | 83 + build-em/CMakeFiles/3.23.2/CMakeSystem.cmake | 15 + .../CMakeDirectoryInformation.cmake | 16 + build-em/CMakeFiles/CMakeOutput.log | 2 + build-em/CMakeFiles/Makefile.cmake | 44 + build-em/CMakeFiles/Makefile2 | 112 + build-em/CMakeFiles/TargetDirectories.txt | 3 + build-em/CMakeFiles/cmake.check_cache | 1 + .../CMakeFiles/mariokart.dir/DependInfo.cmake | 30 + build-em/CMakeFiles/mariokart.dir/build.make | 287 ++ .../mariokart.dir/cmake_clean.cmake | 33 + .../mariokart.dir/compiler_depend.internal | 145 + .../mariokart.dir/compiler_depend.make | 243 ++ .../mariokart.dir/compiler_depend.ts | 2 + build-em/CMakeFiles/mariokart.dir/depend.make | 2 + build-em/CMakeFiles/mariokart.dir/flags.make | 10 + build-em/CMakeFiles/mariokart.dir/link.txt | 1 + .../CMakeFiles/mariokart.dir/objects1.rsp | 1 + .../CMakeFiles/mariokart.dir/progress.make | 14 + build-em/CMakeFiles/mariokart.dir/src/3d.c.o | Bin 0 -> 3664 bytes .../CMakeFiles/mariokart.dir/src/3d.c.o.d | 7 + .../CMakeFiles/mariokart.dir/src/buttons.c.o | Bin 0 -> 3336 bytes .../mariokart.dir/src/buttons.c.o.d | 6 + .../CMakeFiles/mariokart.dir/src/debugHud.c.o | Bin 0 -> 4200 bytes .../mariokart.dir/src/debugHud.c.o.d | 18 + .../CMakeFiles/mariokart.dir/src/images.c.o | Bin 0 -> 612624 bytes .../CMakeFiles/mariokart.dir/src/images.c.o.d | 2 + .../CMakeFiles/mariokart.dir/src/main.c.o | Bin 0 -> 19432 bytes .../CMakeFiles/mariokart.dir/src/main.c.o.d | 22 + .../CMakeFiles/mariokart.dir/src/maths.c.o | Bin 0 -> 2932 bytes .../CMakeFiles/mariokart.dir/src/maths.c.o.d | 3 + .../mariokart.dir/src/particles.c.o | Bin 0 -> 5548 bytes .../mariokart.dir/src/particles.c.o.d | 6 + .../CMakeFiles/mariokart.dir/src/physics.c.o | Bin 0 -> 5012 bytes .../mariokart.dir/src/physics.c.o.d | 5 + .../src/platforms/emscripten.c.o | Bin 0 -> 7236 bytes .../src/platforms/emscripten.c.o.d | 29 + .../CMakeFiles/mariokart.dir/src/sprites.c.o | Bin 0 -> 5780 bytes .../mariokart.dir/src/sprites.c.o.d | 6 + .../CMakeFiles/mariokart.dir/src/state.c.o | Bin 0 -> 2780 bytes .../CMakeFiles/mariokart.dir/src/state.c.o.d | 4 + .../CMakeFiles/mariokart.dir/src/tilemap.c.o | Bin 0 -> 106912 bytes .../mariokart.dir/src/tilemap.c.o.d | 5 + build-em/CMakeFiles/progress.marks | 1 + build-em/Makefile | 478 +++ build-em/cmake_install.cmake | 49 + build-em/mariokart.html | 109 + build-em/mariokart.js | 3378 +++++++++++++++++ build-em/mariokart.wasm | Bin 0 -> 557264 bytes build/main.d | 33 - build/main.o | Bin 33988 -> 0 bytes cmake_install.cmake | 54 + compile_commands.json | 1 + credits.txt | 2 - cut.png | Bin 0 -> 6567 bytes data-headers/generated_lut.h | 6 +- data-headers/images.c | 26 +- data-headers/images.h | 26 +- emscripten.html | 107 + fxcg-mock/include/fxcg/display.c | 73 - fxcg-mock/include/fxcg/display.h | 376 -- fxcg-mock/include/fxcg/keyboard.c | 50 - fxcg-mock/include/fxcg/keyboard.h | 235 -- fxcg-mock/include/fxcg/mock.c | 6 - fxcg-mock/include/fxcg/mock.h | 1 - fxcg-mock/include/fxcg/system.c | 3 - fxcg-mock/include/fxcg/system.h | 56 - icon-sel.png | Bin 0 -> 8388 bytes icon-uns.png | Bin 0 -> 7618 bytes json-fixup.py | 9 + make.bat | 1 - run.py | 98 + selected.png | Bin 4463 -> 0 bytes src/3d.c | 58 +- src/3d.h | 3 +- src/buttons.c | 34 +- src/buttons.h | 3 + src/debugHud.c | 39 +- src/main.c | 561 +-- src/main.h | 7 - src/particles.c | 9 +- src/physics.c | 104 +- src/physics.h | 13 +- src/platform.h | 5 + src/platforms/emscripten.c | 120 + src/platforms/emscripten.h | 31 + src/platforms/gint.c | 68 + src/platforms/gint.h | 32 + src/sprites.c | 64 +- src/state.c | 43 + src/state.h | 24 + src/test.c | 7 + unselected.png | Bin 2908 -> 0 bytes 193 files changed, 11266 insertions(+), 1527 deletions(-) create mode 100644 .cache/clangd/index/3d.c.B25E87FFF83279C2.idx create mode 100644 .cache/clangd/index/3d.h.BDA760B5AF64E463.idx create mode 100644 .cache/clangd/index/buttons.c.AA168E02D3C2A5FF.idx create mode 100644 .cache/clangd/index/buttons.h.C34AB84233C86DB7.idx create mode 100644 .cache/clangd/index/debugHud.c.0DE3E78CA9EE118E.idx create mode 100644 .cache/clangd/index/debugHud.h.0800CD4A6FA4F7FE.idx create mode 100644 .cache/clangd/index/generated_lut.h.1DD0AB6BB7578326.idx create mode 100644 .cache/clangd/index/gint.c.DBBFBFBFAD122397.idx create mode 100644 .cache/clangd/index/gint.h.78C3B1682C8D64FA.idx create mode 100644 .cache/clangd/index/images.c.1F8B0361A7E35E9A.idx create mode 100644 .cache/clangd/index/images.c.803F23E219B7455D.idx create mode 100644 .cache/clangd/index/images.h.DD686E5C6087DA5C.idx create mode 100644 .cache/clangd/index/main.c.874A7ADD6DB57FC3.idx create mode 100644 .cache/clangd/index/main.h.6BFA7F5622972D20.idx create mode 100644 .cache/clangd/index/maths.c.9DF20CA4865372FD.idx create mode 100644 .cache/clangd/index/maths.h.2D983B08F611D087.idx create mode 100644 .cache/clangd/index/particles.c.04E6BAF9E21F2C26.idx create mode 100644 .cache/clangd/index/particles.h.BFFF4739C5D97DC6.idx create mode 100644 .cache/clangd/index/physics.c.BEC7150A4956B853.idx create mode 100644 .cache/clangd/index/physics.h.B9A4C82159624FE8.idx create mode 100644 .cache/clangd/index/platform.c.CCD21C94FAA9A428.idx create mode 100644 .cache/clangd/index/platform.h.23938D2965748EFE.idx create mode 100644 .cache/clangd/index/sprites.c.D3E6EB9072E5184B.idx create mode 100644 .cache/clangd/index/sprites.h.39AA44A0FCA3CA1A.idx create mode 100644 .cache/clangd/index/state.c.38363B0A396C289D.idx create mode 100644 .cache/clangd/index/state.h.25FD4037DD824937.idx create mode 100644 .cache/clangd/index/tilemap.c.6EAE01AA5F3D4FEC.idx create mode 100644 .cache/clangd/index/tilemap.h.DE543ECEEBE1CCC3.idx create mode 100644 .cache/clangd/index/track.h.1C97A1FB34485483.idx create mode 100644 .clangd create mode 100644 .cmake/api/v1/query/cache-v2 create mode 100644 .cmake/api/v1/query/cmakeFiles-v1 create mode 100644 .cmake/api/v1/query/codemodel-v2 create mode 100644 .cmake/api/v1/query/toolchains-v1 create mode 100644 .cmake/api/v1/reply/cache-v2-090f13c229a843ec3c77.json create mode 100644 .cmake/api/v1/reply/cmakeFiles-v1-5c368505a9e5b5457aac.json create mode 100644 .cmake/api/v1/reply/codemodel-v2-b7ef37ab22d4355f78bd.json create mode 100644 .cmake/api/v1/reply/directory-.-f5ebdc15457944623624.json create mode 100644 .cmake/api/v1/reply/index-2022-07-05T14-43-38-0198.json create mode 100644 .cmake/api/v1/reply/toolchains-v1-455d26859483b5db9132.json create mode 100644 .idea/mk-gint.iml create mode 100644 .idea/modules.xml delete mode 100644 .idea/vcs.xml delete mode 100644 .vscode/launch.json delete mode 100644 .vscode/tasks.json create mode 100644 CMakeCache.txt create mode 100644 CMakeFiles/3.23.2/CMakeCCompiler.cmake create mode 100644 CMakeFiles/3.23.2/CMakeCXXCompiler.cmake create mode 100755 CMakeFiles/3.23.2/CMakeDetermineCompilerABI_C.bin create mode 100755 CMakeFiles/3.23.2/CMakeDetermineCompilerABI_CXX.bin create mode 100644 CMakeFiles/3.23.2/CMakeSystem.cmake create mode 100644 CMakeFiles/3.23.2/CompilerIdC/CMakeCCompilerId.c create mode 100755 CMakeFiles/3.23.2/CompilerIdC/a.out create mode 100644 CMakeFiles/3.23.2/CompilerIdCXX/CMakeCXXCompilerId.cpp create mode 100755 CMakeFiles/3.23.2/CompilerIdCXX/a.out create mode 100644 CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 CMakeFiles/CMakeOutput.log create mode 100644 CMakeFiles/Makefile.cmake create mode 100644 CMakeFiles/Makefile2 create mode 100644 CMakeFiles/TargetDirectories.txt create mode 100644 CMakeFiles/clion-environment.txt create mode 100644 CMakeFiles/clion-log.txt create mode 100644 CMakeFiles/cmake.check_cache create mode 100644 CMakeFiles/progress.marks create mode 100644 CMakeLists.txt delete mode 100644 Makefile create mode 100644 assets-cg/bg.png create mode 100644 assets-cg/fxconv-metadata.txt create mode 100644 assets-cg/icon-sel.png create mode 100644 assets-cg/icon-uns.png create mode 100644 assets-fx/example.png create mode 100644 assets-fx/fxconv-metadata.txt create mode 100644 assets-fx/icon.png create mode 100644 assets/img/boost/0.png create mode 100644 assets/img/boost/1.png create mode 100644 assets/img/boost/2.png create mode 100644 assets/img/boost/3.png create mode 100644 assets/img/boost/4.png create mode 100644 assets/img/countdown/0.png create mode 100644 assets/img/countdown/1.png create mode 100644 assets/img/countdown/2.png create mode 100644 assets/img/countdown/3.png create mode 100644 assets/img/fire.png create mode 100644 assets/img/font/0.png create mode 100644 assets/img/font/1.png create mode 100644 assets/img/font/10.png create mode 100644 assets/img/font/2.png create mode 100644 assets/img/font/3.png create mode 100644 assets/img/font/4.png create mode 100644 assets/img/font/5.png create mode 100644 assets/img/font/6.png create mode 100644 assets/img/font/7.png create mode 100644 assets/img/font/8.png create mode 100644 assets/img/font/9.png create mode 100644 build-em/CMakeCache.txt create mode 100644 build-em/CMakeFiles/3.23.2/CMakeCCompiler.cmake create mode 100644 build-em/CMakeFiles/3.23.2/CMakeCXXCompiler.cmake create mode 100644 build-em/CMakeFiles/3.23.2/CMakeSystem.cmake create mode 100644 build-em/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 build-em/CMakeFiles/CMakeOutput.log create mode 100644 build-em/CMakeFiles/Makefile.cmake create mode 100644 build-em/CMakeFiles/Makefile2 create mode 100644 build-em/CMakeFiles/TargetDirectories.txt create mode 100644 build-em/CMakeFiles/cmake.check_cache create mode 100644 build-em/CMakeFiles/mariokart.dir/DependInfo.cmake create mode 100644 build-em/CMakeFiles/mariokart.dir/build.make create mode 100644 build-em/CMakeFiles/mariokart.dir/cmake_clean.cmake create mode 100644 build-em/CMakeFiles/mariokart.dir/compiler_depend.internal create mode 100644 build-em/CMakeFiles/mariokart.dir/compiler_depend.make create mode 100644 build-em/CMakeFiles/mariokart.dir/compiler_depend.ts create mode 100644 build-em/CMakeFiles/mariokart.dir/depend.make create mode 100644 build-em/CMakeFiles/mariokart.dir/flags.make create mode 100644 build-em/CMakeFiles/mariokart.dir/link.txt create mode 100644 build-em/CMakeFiles/mariokart.dir/objects1.rsp create mode 100644 build-em/CMakeFiles/mariokart.dir/progress.make create mode 100644 build-em/CMakeFiles/mariokart.dir/src/3d.c.o create mode 100644 build-em/CMakeFiles/mariokart.dir/src/3d.c.o.d create mode 100644 build-em/CMakeFiles/mariokart.dir/src/buttons.c.o create mode 100644 build-em/CMakeFiles/mariokart.dir/src/buttons.c.o.d create mode 100644 build-em/CMakeFiles/mariokart.dir/src/debugHud.c.o create mode 100644 build-em/CMakeFiles/mariokart.dir/src/debugHud.c.o.d create mode 100644 build-em/CMakeFiles/mariokart.dir/src/images.c.o create mode 100644 build-em/CMakeFiles/mariokart.dir/src/images.c.o.d create mode 100644 build-em/CMakeFiles/mariokart.dir/src/main.c.o create mode 100644 build-em/CMakeFiles/mariokart.dir/src/main.c.o.d create mode 100644 build-em/CMakeFiles/mariokart.dir/src/maths.c.o create mode 100644 build-em/CMakeFiles/mariokart.dir/src/maths.c.o.d create mode 100644 build-em/CMakeFiles/mariokart.dir/src/particles.c.o create mode 100644 build-em/CMakeFiles/mariokart.dir/src/particles.c.o.d create mode 100644 build-em/CMakeFiles/mariokart.dir/src/physics.c.o create mode 100644 build-em/CMakeFiles/mariokart.dir/src/physics.c.o.d create mode 100644 build-em/CMakeFiles/mariokart.dir/src/platforms/emscripten.c.o create mode 100644 build-em/CMakeFiles/mariokart.dir/src/platforms/emscripten.c.o.d create mode 100644 build-em/CMakeFiles/mariokart.dir/src/sprites.c.o create mode 100644 build-em/CMakeFiles/mariokart.dir/src/sprites.c.o.d create mode 100644 build-em/CMakeFiles/mariokart.dir/src/state.c.o create mode 100644 build-em/CMakeFiles/mariokart.dir/src/state.c.o.d create mode 100644 build-em/CMakeFiles/mariokart.dir/src/tilemap.c.o create mode 100644 build-em/CMakeFiles/mariokart.dir/src/tilemap.c.o.d create mode 100644 build-em/CMakeFiles/progress.marks create mode 100644 build-em/Makefile create mode 100644 build-em/cmake_install.cmake create mode 100644 build-em/mariokart.html create mode 100644 build-em/mariokart.js create mode 100755 build-em/mariokart.wasm delete mode 100644 build/main.d delete mode 100644 build/main.o create mode 100644 cmake_install.cmake create mode 120000 compile_commands.json delete mode 100644 credits.txt create mode 100644 cut.png create mode 100644 emscripten.html delete mode 100644 fxcg-mock/include/fxcg/display.c delete mode 100644 fxcg-mock/include/fxcg/display.h delete mode 100644 fxcg-mock/include/fxcg/keyboard.c delete mode 100644 fxcg-mock/include/fxcg/keyboard.h delete mode 100644 fxcg-mock/include/fxcg/mock.c delete mode 100644 fxcg-mock/include/fxcg/mock.h delete mode 100644 fxcg-mock/include/fxcg/system.c delete mode 100644 fxcg-mock/include/fxcg/system.h create mode 100644 icon-sel.png create mode 100644 icon-uns.png create mode 100644 json-fixup.py delete mode 100644 make.bat create mode 100644 run.py delete mode 100644 selected.png create mode 100644 src/platform.h create mode 100644 src/platforms/emscripten.c create mode 100644 src/platforms/emscripten.h create mode 100644 src/platforms/gint.c create mode 100644 src/platforms/gint.h create mode 100644 src/state.c create mode 100644 src/state.h create mode 100644 src/test.c delete mode 100644 unselected.png diff --git a/.cache/clangd/index/3d.c.B25E87FFF83279C2.idx b/.cache/clangd/index/3d.c.B25E87FFF83279C2.idx new file mode 100644 index 0000000000000000000000000000000000000000..73ea206ebbc8ea539bf912f8578e69e81eef1b4e GIT binary patch literal 1482 zcmWIYbaOkz%D~{9;#rZKT9U}Zz`!5~#Kk2=nZ1k*4CTxW3>9en01Z*J!O+c$4Q8=KR1-5-liUz}Kz<9AP@VVlZM zi)uFgQ|r=dEsjrcKXxF5`PK|sSDnTwg%eJhSnheKSun}@)FRy(T6Pl`G@gFDy?b@} z>a;txKZ?G7eD`nq|CP&wcx#q!XV~Y{Et+f{X{vp~!nH7H;rz*~Cka=SO`IZD?I^oy z5@Y&;_fvOGHC>-|p?WAd9&I#qZ>WaYQWYZvBR3!6IFHo z=wcoQRR#tbP99DXFaeYSgUwH^`FKyR&*5QE0ZMDJYVm;ynDo{!KWZ;o*RJMakOWHe zv-0zU37GWF&tJ9bxeOb57^HyG&aBSdvMj7D+zgzIj0|cLjIxYhmInGM9M0wEWl#bt z;APeJ7Fa+6OW9bpr9DsJu*6i zI$|)#+cPazOs2%f5vsvd%;&##Z9(m>e&Nu`~V9b9EWPg2TpjAvoa_ViIj1tG7R+*>d)X9uVJ7g%Sg~30!YqYp1x7q50m01uyv}mn%^!KW$(qrZVr#qOrJTfApB8mv(T-aQMU{3gXYWt!7 z1NuflJB6f#6cJj4rG$}qx>CAGJUuBrIPX`?>mQBt7$txaBp@h&lv=d~wc)9?C^aV$ zWOQ*+a&a(-p#UNvKn})WV30*H;pQ_i$RkAIX@`MPhS{XCyzrOSGB#NSIYoJChUDCo e95J9$5fLF4Rz6`Kes&HnPBvZvF>Yo-CQ$&RX1wG8 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/3d.h.BDA760B5AF64E463.idx b/.cache/clangd/index/3d.h.BDA760B5AF64E463.idx new file mode 100644 index 0000000000000000000000000000000000000000..dabe94ac3a71bc57e1895601cae07c7cdd1e92bf GIT binary patch literal 410 zcmWIYbaR`;$iU#7;#rZKT9U}Zz`!5~#Kk2=nY}=IKM+^Ui9LIe>yUu}%Z0yFWU4Y2 z?#jrw?0(=V@TX}~&g7$JjVi~yUhbd0x^d>|4+#r$w@t3ued5?ev5UVZ9NG1K(am#T z|J=3C@Xos1EmgMQ$y$?UzQ^f14jeJ|blFm;xWz=R`}FIC8>&5y4;S={@hn}=cK7!_>(q2;{7}zyb90;g&+iWR8Hy`&lahfhQh8V}>-gZiHxB~`kOu2x< z44ll24BRY??2I=*f7PnzGHm2wV1vjru(PnTa5Hc+F){G40u_8&8tA8RIG3N7ffJ^H zm77%@%;N%?z)+N$RvZJAgW1K%39$pJd_x>p%?i5^2}UkVxVfUg-~&r jbwFXTHBjNA)SN^Rv$!a^m>a}k_nmRmPWRLwX$A%WqlJ3j literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/buttons.c.AA168E02D3C2A5FF.idx b/.cache/clangd/index/buttons.c.AA168E02D3C2A5FF.idx new file mode 100644 index 0000000000000000000000000000000000000000..a5e58aaa2fc056eb1e86da785b2f8d98fd3fd08f GIT binary patch literal 1800 zcmYjR2~ZPP7=F8$KsLL{?k1cYB8Wo~sRxQkMWxkZBjdpl9Y=vi4wI?dGKm&%ELAC1 z#1Roe&RD4^OlxIARHzD81UyjiXlbWtm1^ry>w$_b_AQ;a?Cxx4zwdqd{{Q{|`!~)I z9SvLon3HN)$EU3^jRF8L@UgA2S}Yg zJ*2jIFz|+9ZDz#7uM9`uf3u~lB`Cn{#Q1IZO559Nl#`RyWK<%Xcp&ogqDu?ow?tf+ zMeUkdFkqfz)qeYIpZAQ|>T7qx@@LLlzuRD?qJOAU_&A-7v(F43KhoR(?8S|%r*oDL z9Xo874|Rrv5<3E!wRrfmHZT2?9QZ>OD&zL zQSC9Ydh&cix2uKhHuvqVel)Gg_qT-5n_R8qc+35&#M=Q+vzqqnr`LBzSXE;(-$74&o!BziV%2<5|;`S&k+li$3hBEv8D zwK2tykJld!?at41@b>9Dzj-+>H#`gDA5y-+ww_;^0xRF(G+DkT&-GDYGyt5OlzZwt zG#+}OfNLJ!m=1HEoqOP;>hE?@zzYgwq)el8*SPzP2u@W!n790=2OpBa4+`95ZnVxz z=0yVqh5>&c=m4x~>9$(fYJ!+CusPeqiIJRkjCLxFFnoDz^8fqE-O)AJD2~xFLCDXu z-IyKlww;GG%dvro)-5p}$u+(hE0_>kcSKL<{XUsLshAJdv=1$+qyBnv_EeV12-Qk& z= zb9e`$eP;aW`m(aQFcH#14H2E0o!#-~VsIX$8G=zGlT1e!-~766mau(JBdWKiOr-Z= z@@7cW1Wh4zVN&4MlTSLMA+6S_gOGReJDbk7_?cC(5dw|W2c5GwG`FtG6->hDcageu zuEEQN|Kc`O3;jXrvV*s(B9!B%LN!aUVk7L>;h9(bN^&4AoD^hY51JUscb*OxdJnyk ziT#6yyu(BW4b>D!iQ74Z<@{1I)NvisYC(C?G(2TcSuGC}i!6T`!SLXsST z6JjaQjF80efJj6%;fb8!;lY)P5k%so1W`C8K`LA&L26trK{QTF5Q8%k#Nw<3X>g4M zX>qNHP!y1p31e$q5)67&{MDDv*USKYon#2kQ=oD9g6VkJ2_kSkH~ ze{A~_G_2JK2?)cD(tXf-b4Ra!J4+(B*d{m;e9( literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/buttons.h.C34AB84233C86DB7.idx b/.cache/clangd/index/buttons.h.C34AB84233C86DB7.idx new file mode 100644 index 0000000000000000000000000000000000000000..b8bb1ffb73bbacee0891e2851d525e3e470ac796 GIT binary patch literal 1236 zcmYk4dq@;f6vofYw%(oR?#{Zal^T^un$RCbWEK&HVq{OWFtWByD^jT4C|_ln_5iJj zp7u1Mtx$^062ma1mxe(_r5F@s2~v?nFS0r_yT^86zP;!B?mcsd^IMXZlJa;2z?`*d z1^GE!+_(fgKE5s94Ndqzh)==k^sbo;OtWS4>M<2%C_)m z2N0E+acO_X_gEDK9wd!vnjv7p@50~WPvr^E5`I5ZAsl0Y34$RMXUCaKOlNz$RIp)e zXLiXDino=Ob^d*rP^E$eV=J@DhETlIGs$*@3u{wB!B}OgXb8n;PQ9#2lH#YRpkZud zHpvi*Yq`CztN(O9Rbd3i3R7f5D8AL?-r$$-zE?mEdq`^*CZ?-k#TzijBtz&1 z&);3_s7PEtUIG(<;@O=N9Cktzjdk?B0;(3vYk|A{d&&~SUq-?ia1v|zT zW|0k{*qf8R7(AHTY zn=nCJXM}9RgA)Q+1bu=6Z3Bj&O(>vkAP}?(0PL+#pL)~aO=4i+L0^`f%&E~EWXZ)` z8eM}>z)m^`)amECa>$F${E0Sa;WV;|477DD$oA&sx%IWr>+wbCi{S+M+vT{|aI$`2 Hh?C(Thxz}% literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/debugHud.c.0DE3E78CA9EE118E.idx b/.cache/clangd/index/debugHud.c.0DE3E78CA9EE118E.idx new file mode 100644 index 0000000000000000000000000000000000000000..7743575b93493c330bfbdedd5515601c63256779 GIT binary patch literal 1280 zcmWIYbaVT`!oc91;#rZKT9OE4G6({3aY<2THzNZ>IWq%8#hkg5^0P$@1&%#`tTE$^ zY*@U=uSGF?qXJkgFO*O6O)EcsTJ3a7P}Ti=Z!Vq^owE7RyR?6QDvVCreRyRmaaqpK z?wW(zh6&eo+O=gqyI4%RESP)do~zDc;X{p6@4Wdad{$Yt&SU0M(aDb%b2RO|S$F@= zzUZw9<$u3^JN)i=@V}+yt_N$1^Lsc`;}%KWp6;?qV&1b8^R9j|t$aGiM?rq>4%N67 z?4s<)nqO8cYP|}2V6w#|i|z2!fGKJQn&P|@tqs;{g%pX_+uRntrgX#VM#|-e*W9}| zy?>aRuDf{QjoAmQ-&o9D@_+qipDk-rYrO9U9sPQ1-CM4=@4e3&FKzQZZ#MJWvx?8L zPbGTf|J~4eWEc?M-ftSgKl^;1e{^3+LD8Yg_b#~+&nl1Iyz`f(zViCL>JOnUlk%Q3 zxhIv+;QY0$u=B@u-QBBZ1#f(8`5|Rnz3TZazrM?rS$%%LbuL$Kiu8TS5}otqOZu$q z7W#X4<`nsIC2vk$GW&Sq!c2#pZTCOA6wJ3gpnta3$d;kFGB;^HFmAXMw@(Ihbva$*@a56G7s7Wx&GCEFY<`zr$ z3gcyv1S;TR;o$=lF#SiK+_mav;jiOmPz6eJvT*W%37GWz*0pQddb{TEGDrcXxmdV( z<#@PxL>M@M3RJ`ycR8?ZDG;kgYjHLw0HT37XM@9k&#!E*Mp zKw%XY6}T&6lUn0)7v!~oRO`rF!&H|yHJ$!{LaUdFM~0t|Ul=9~7MT|nos$isR2!gv!m-P;oa)GHw(Aqz7S7Jb0b0mU6G(0F7tL^Nbzig;u+Sv27$ z!J?Fd3ml&aEdne8a5wSD2(kzw^8^HuB2kD_NC;uLG@CR(f+xo-Cx+lDu_?jjic)hD zLADhaB^L*S81f(j0_0!}1_oIKQyRfkL@*WLOh%b0D;^#G)4=7=CaWkfC#}GcoSTv( c29y^O5n=)61s;BO4lYhMUI8&~W~;#rZKT9U{DWD5duaY<38FOYTv;)*%R7cQiDY|~2iIDN)*>!s`0 z&!0H&d-c4Bug=K}=g(gAJ%2{~qQ0KjHGfZEE#L1Nz86m?obWi~ebTeEk;`Dp)AVHq z3=CWq;&KedmAOfZKoj*V*I3w<)n)K7fb0VSW>!{KVFpe{Mg~?UMrKBaqSUlvJ)k&D zB_k(91z0fygK>~j_GjlUDU4jqj2w)@P*I?+oJ0`2xG1@p8^mA^F0gqhka*$>0|NjH Cp+RZ@ literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/generated_lut.h.1DD0AB6BB7578326.idx b/.cache/clangd/index/generated_lut.h.1DD0AB6BB7578326.idx new file mode 100644 index 0000000000000000000000000000000000000000..4e4713cf06d6bb561e7073013606f228460ac294 GIT binary patch literal 384 zcmWIYbaSgRzj=!#BliTAkMlNP%4rWoH2pGV$1BF3)VZv4ZykXjH zn_YpztQ@RDFyR$j>kRv^Y|#Y@GjM>t43=3v>%Hlu%OX#J!i*e@aMgE?|KDG^&u0!3 z7c&P3hcL_#9%e2XE_E31=c(<7`VZ(E0rj$Ru<^r$f$q*p1aXRsl8d=P4CXgyWWACk JuD)ep002ZLW7+@! literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/gint.c.DBBFBFBFAD122397.idx b/.cache/clangd/index/gint.c.DBBFBFBFAD122397.idx new file mode 100644 index 0000000000000000000000000000000000000000..98aa73734466d1bf3bd5669d80dfe6634de97745 GIT binary patch literal 1894 zcmZ8g3pA8z82)C=(3pP=6Xs$R!XPs-Ml*6r6ro7bMIvU#+19OGI!SF8r^q2Ct+ZO# z&f*XWAu5ZKqKlNJ!=jR-h(s4#`~B?4+2)-2=RMCn-}5~0`+oms7bhn_B>)^{E(b#8 zQ2`_XfExTpMn&uq5CQO41mHksiI-b=j~VvNV>~B5KcP6k)bZ$&lVSYCN>-V?>!6A3 z)M?B6scY`-NXq?QU-4mkEtyqIJ`-wZ_e=iTjF7#Pq6`l69HV^(I+N+_x7ecsrxmuFV$7@t!q*v*fwalU8x zuDjZIN4Muh>=I&~`&9?V*E9Rv?@Q!bG+!-}hHX`P?t6^{qRe#d&-JNWNdpSzVl`Pw zllD`xgA3*Z7!9MEy5hM^t_U+m*!R(N;8WW zHHZto)bC0(%+^WK@ewo6U5m=}E4%*AQk@&pKID4pLACbBzL?s?+HfOx-I3xzp$l(# zdw!4OM@z|Z@6uE+gE0@g;G|C9w&_(0CZ0RlktyD9tk0Y5k6z(cy;Addfj-CIHK}m4 zs5{R6@KjvkFyEHybfY}O>y=bgBr5`p;Xq+1vANPen7_;{d15H(OLIi4xyHciD_cs9 z5{)|sHbspD($^;h5m+R@4ecK7DtCLtfA0=?`o{yer}5IJ0u^V?jpXXAuxa78C)Ky| zzEw|zH+~=J6AP=NJF@T9T_ zl7$Qbhs^m?Zf&>Gy0bRf*v+1*h*^vGFPp3O&AF08B5E4|#Dry4g zqqabZkOxJ2C;*_8F)|~4a=?;+@g-&wE7Uz25>feo!@>9*JB}O5uk5ecba-vdZFp9l zqRvET=q3r5+&jCJP@jP?SB1+)@M1;hqGW<-4TP6+m+B%|r>PT_j?o4MG@S zAAy# zrWnF39?KL3tR*rp2g`d@e;5V2uCN{at|IpBiVs)+8Yd8l7@w!eqajO-??7=-MLTG5 z?OgM_Jgo(f%aE{9-1fI6 zR0@F{V%Qb*rMFjTw(W*SqAxk7A!Q^ zHwbqwJ2dUa%r|Pw{BOLM5&F|JW6Be`W*`19`3j<^KFw89xV&$r%l~UBN(w1{HE}1H zi((T`S%z(V zr1yzCRB9OiJ>0T^p|~{ig+6vxBB3sWG)Dka3g$<72Zp`FKT z2j`Er<2($aFa;8<5&{gIoGcIp`@(n=H{IJ4!owg0Qy{}41GIvb6=KCj2IJ}zQyeby zFo?kvNU}=ugB5@s`LL{Sy4!;KojeR8Fa_eQ;(`bT3`MDF#lL{5fs4!fTWyor4n{6P zQ4UclsA>j>_umifs!t3B3UhOCgOU#zgeuHApz|#z4JgdU!3HxM9%zi5kidefh6NQ+ z7#u`U;neij?S{$z`anZCIXGdV$dEpvde*$-Q*D64JRCg2P{j-dui1YrI5agDC@jn& z3>Plnb~*RZ@3nS7VG#}yxN!Y7_bncbhi3tW**Vx@;mZJv6QE1LaRD_P785{Wa120& zr^cx@?EG}W4QL2I2S41G)0B=^En+w%1r%oFV1!#adxw41q2uYDKw&`+LAdHgj7x3L zDa>jI3JY-vA%s1)_b%ls5C97Ea`3_pfkipcCE%!ry5zL_ZMKK;i^71a`8fFChQQ(< zs2UvaP}Mh2b~9`*74`+H7T^$otA-^8plWa;fT}J^%}E3?i;I$rl|c-_rrlQkHs`~y SG4Ts9@PkAkKmf*IU;qGun3eh6 zl5YlX4!gPL^qODRjQ(uuCx_|-pL%22dp`%xIy%|zTa|F>trt#gda?D3!1>E3dwsQ` zE@kYTX#_P=DG$r<}@&ea9Cx}Kgg z^2gG$qGxk($K8VZCmmQg&k!&XAhw6>VNrkwo{X0cUJW!3c@{fh&;Rc%7sn)&I=fYI6wwi6odnH=+&~rZ%#~k zwSbX`{iVM}K{!B%n8-hb79X01&(1>}B10?+!uZ}v%l8}OZuHqNpf_SmT0JNThwG5? zYHe2Af-}zxh(jD9BPI zHz^2v>X81Z{C&~T3!nWY;v|`5QZOF!(EsxB%{BiMkd9cBnn^)8LWk_yw3O|AHjWVR z6k=WKCI#a$HT}ct{Wt9vFbuJf!lEFICpNBH+=&eN({KU(5hut5lY+3j4ihsQc5iJt zStVcyVo&L5Q4o&SVdfJ}&y5;lyeVKhV$(1!3c_w0lpI`BUAH%4l7QieeWZ^?LD*M^ z((!fuJsTY#2uMKOQ}(nd2z%?W%yGr{azDpm0TU1h%iu5y!XY}m9sB6-U)_0qs(^gN z;WFH!ARLT%WJ}N1?6}ba#vtx2JDU`QEyQcSeeLc?6=wxxAoh}876oBH#QTP1<<+mf zC}1jL+ptXv!ksjz7VoV*XE$#aU?Yx^F(w6J4;|JH82Ebry9;*+$U!Wnv?vI7)1m&m zgEw*;j=dtFFXG;^w@JaXw-=Xn`sx>Ge3bTU#*^;-R|^=2xU1}H zQV{NmcARMN{{x~G{A3*Djw zEI1 z{L?enW(r6`++B7LqaYlr!?8}=56bV?;fW1K3=&KV!gykzyZ^1njxUaG5HKFGyL2}x z2uC5_GvN5q&2vG(G{lBsm=uINYw(Y4aI*G=@-zYQh$CgBML{@5hqhmC&G*N<*%isf#g}IbNJiXEb~7mmn>yS+p0~~0FV#&zCSpJ7XHgLL*Wvz>xPgPuHtiDd zG-40wVNwuw=+SLH7N-9(xIeqPN`2XJUa*0(V-8iEHd6oUMe!!+77?HRHTErm?@U zq~zr)8RbT$^Oaa**isI2wajQUh4+wUh9zY(SIN${^LSCLG%P8fxk^T{QN|n1V#AWM zT8C1tZfte#0t*gn%5EKM+jQeYXN^UN=b4y9F^ zvCg?aT*pT!*Kv(ChqIOAco=_2QXT1h0xUZ$Dbu-1#zoDz?tBDG4 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/images.c.803F23E219B7455D.idx b/.cache/clangd/index/images.c.803F23E219B7455D.idx new file mode 100644 index 0000000000000000000000000000000000000000..053ca712e56c662669aa6964114ab9109d4c8780 GIT binary patch literal 430 zcmWIYbaPwA$iU#7;#rZKT9U}Zz`!5~#Kk2=nHE6tA|?igiaB!wPJ6K!3Y=lT`7*Xf zrp2~neYaA_0`r%iRcW`*syM4N@2<~xt9f%s>4oabRqH}_-DZ$r=+yI>cd&btw&!;3 zH(R&bY~GZOlMk6#?RmWMxyI}nE~_QD>)IAHuAV*p^zF;8tp4Kt+pqht zkN>l9X$+6eWxE?Bnr z9+Ca^f6mUuKhOO&G~e8HdTHz})?4qFE}NLVmA866Pxg-+HO8JF9_(s9x`r=xLEq-m zXP@R>t5I$==36r9+LEKccFvZa?t6B2=IWO+9|IOGcM4EFKdXLGedUJhhpeA$yZ*Jf zGB*hrj0{DoX~hsaClN#!7bO>qgBW5U0t^_%AMW|@R=K}wJ);;ya&AfvNJ>~lkeP*7 Uh?|d%os)x=hhLP7Nq|uV0J>PTTL1t6 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/images.h.DD686E5C6087DA5C.idx b/.cache/clangd/index/images.h.DD686E5C6087DA5C.idx new file mode 100644 index 0000000000000000000000000000000000000000..b35f87afeebc5fdfb4b2f4468f1e8e7aeeb24fca GIT binary patch literal 3250 zcmX|?2~bp57C>)*7HQx?HzFduW~Tu`Xh1|zSrzF46&FwfQ88kS3q()@K^;dik*Fl2 zxN9^>;u1?T3XZ5~j0MCkSenEwiZeQpxKvG&aY^ZnbA9h!sOqY&bGZHc_v=1)f;A)K zfHOe)Ol!sb;)O-F0AR#N`NFbyN^}5A>;WovEZT6XWTnMWU0Jsy@bl{ref=6&9Qc++ z?zSx~sz0@?X6Nb=3nQOz=(v;L`O!b$Px2{_I9mLoI^ocV9lT@N)7$Y)7xgdN9I1yZ*JOGpY~)DJ8^lo-_6YH)yAW#u|tlhtsIkD@5%KbTh{>0^7_ipdHaF~B{|H7FQi$eF_+V9)b{OG3#V{hg4Y@SlP;o;Jk zo*ylE5H)S-)U?$PM_D$lt@+!GgR#jo4lP==p!G#{*S+6XSWZ7Q*E!!9@_66k?}u$O zJ+A$s_DSuSZ?+fQ`A#34e(KV**CPYG+czy}J2va$@uGj#G^ZT2>pq{oHRQ<5+KZMK zx6_|n4SlYyns#pJd&a%*{@%DGCae9I?2B)G_dI*Z)vLi16ANDI?skmsDX*MABO5<) zJNE?3v66Q@806tuy#5RG=H4No$7fC&IMqL{GAz#j2ZM1!qPF99W}yQ#aMSs`J-YGq zGX`m-ow>7|cG19-eOTC%=COsr6w)SclA3A23+`0H8;Q{j-XLu@nWeVZf$xf^E!vLw zD-7aD$M6`by)_89xw@xo%i%i=GD*8}H>vw-5OlJ^Fe|ib9fQ%Njoc`;n+Bl)yLsuU zLcDe^X)o?2HQu-7FHIifA4N4W7)aWW`vr*m_R%0_S)H|W-ivSpgScea zGx5r$7zUA~gLshC{WOSAn)-8g$lP!SLrF*Q2>GEpYLNV@>Qh!9gx4NU+QKcpI_1B{ z?sMDLzhsb1TE}%#`)iO@7Z;M>!p$!StamvoljXY8bpp+SlYOwVe*i zT5H#B{mOqbgOQ|NxQo=T8kA4in&5cAyqCcs(t$isYG)0Wn0s8iwD?a)3(cnMkF_=u6b1tV%8Z?F58P@w(;EBbP4(H)=8qd4w?iH7_#dg6A za!A{A``#BnX2^8&x_0Va23FF2d0+YB?i!qRxY}|u~tmyWxD>Mg|i|J8%c7gHbmoo@?9o zHZUk8?P2ne+ExeOeg>E87F5MCh#(!n1LRu^)u8jquXFWZgsoyQinJ?tl^VaPSItS4 z|C^Iv%^-$!2oI6(9KUPdA79&jD{?K~_b}2?JW5_0zYbjy4}Nj+$(q3+k#r=Flp25j zU8SkFJA=}y7>prp!)>I--}k*snV)RzY59P`2-49!x_A2i%Mfb__B|8@NHz}u9wqh4PH&{ytnJZ*7q0;CLPAZ zqz=-ctaw)WL0s#!Q*?T{OVt0;Emf z3RB||i?%CFZAUDct}rznv1qx%)N;h4;R;j35sP*!OzlQ2nyoN38?k7$!qjTSqR|Rd zqY;ZXD@<)hESgMMH5svJF=5qW#G=83Rf7?W_9{&6MJ$@DFf|vkXsyE3TEwEU3R7bd zi?%9EZAC1aN?0`&v1qBn)KbKvp@daK5sP*zOzlK0nyD}~6R~Ke!qiH{qLB(yBN2-> zDokxeESgAIH4(9Bp~BQc#G-);Qv(r;_9;y5LoAx7Ff|XcXr02;I>e%JgjM4Zi?%6D zZ9^=YrZ6=Pv1pmX)H1}PVG2{j5Q}yxOzlD}nx$}A@w}qfPs_{RDtCJQBrN&gHJ*#- IyZ#5@{|Cvky#N3J literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/main.c.874A7ADD6DB57FC3.idx b/.cache/clangd/index/main.c.874A7ADD6DB57FC3.idx new file mode 100644 index 0000000000000000000000000000000000000000..ac0d3d8cc35686cd3de448bff49e378495c7e7aa GIT binary patch literal 8444 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 R;N<3F=Mxm?VG&{$0|2`t;vWD2 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/maths.h.2D983B08F611D087.idx b/.cache/clangd/index/maths.h.2D983B08F611D087.idx new file mode 100644 index 0000000000000000000000000000000000000000..fae30db7ed040648e2b76474b17f95f434156902 GIT binary patch literal 348 zcmWIYbaM+~WMFVk@vO*AElFfyU|&rc^9Q<_xx0_AUjDA#mbHGNw)Yo?NzXb& zj!&DA-`?uoe6?W@XYtGVYr_<66i-Bm@u-)Vq!(~*IwyGTnP;foPumr_*)cDw-SdN^ zbc7j-D|3^afc9%^^6lF@VI?mQ13Qoh0xYa-tlSKoOpFX1%#19IzhYkhXq?9=!Nb4? zk!N6GV`D>7P?VZh>d3TvRn1d(}R|q zz2_Qt7L~`2>iddbe8#`qXr9h^-+XZNlF)C^GBsknW!8=44vZ%Qo8{$^nS zvAa8XDy>b}Hk-Yr_9U+=JUHt>-(L|Wwmp+^AE>{nS`bP8oST?@I6EJD;6&7C=YO%@ zlmFeXu>}75dN^kT#k&ysUIyOBlJ7991~&s((qMmL)d)wKO@=#*FxXzoqflx z%*>)GBUM*#4H-_coIP^%&6aZNtYSc?U9=skaDHN&JlxK)c5kjt7;R3>H-=<{)A45n zIlF@Hoa?D*FbsWCZI-p2zwEBNdivYInWwoC^Y>(r+sbM)cozy+CEId4V_Fxi`yPGt ztaG;hi(PJ|4=e+9w|?VniqjmtWUQEYxV7fN{fpvwuyJo>B`}p5^IOo|)?xfkI@0(U1T5Fq2oIXPaDWF{Rs2!S7RP!dW~?oD{J91JA}MbsZ_NdZtI z2dPl%vwWc3%TJ??xehi>Xa&F@nOz00dS6)l6W0bM$Ay|RT5k!PY?nC&9fV(s2 zd3{i<+h*!QTjiv@ADr3L-tG)30U_|fc_AesBrL@EF=3dqXM=WMt97u&4N{btlGuBt z0?9xx>;x&5MCIc^!DKMY7Agw$bl7M)t#qJhuV|^AKa~noJusrQ_e()`>>3VYM@lHn z6%*j_mX*dDX!*(Sey80Ui#p>GJU;e@l$a2+kZQFm5*No`lxb-sIMZ9vUvE!a=Us#9 z3P^#yE*=rV``>7gDqKo{NkPhA;lBzehE%j$v>5jTsRVgK5Jo0#*0!V8#$%`o9|%cCy4oLbXz)d^Bzim(8OQwmJ6=f(0OF_yLwONU6yR4giV0L>DE zPNg?E(lLBSgpoP0@%y*~r{YmfwL;CRseu}M&1S!evD__>yO3h8z!hQ&xK%X8rOn4w zepL5tzO5=!av{Yh_^jO~36h2A7&-~FKqBYRMHty)BIDB@4$mR!!bD*#v6z>bcvT02dO$f_dQAx4ZEs862#Vm>n z;i8sh{$QqJV_q_ibxAWXZCtETM%g6IYy8fyo^iMPJ!hZidCu?UlNc8pyTJos?)tcb zO=)>4^cB46-4r(}D+(*DG~Z8f)kT&?keTk*p2p}PXJyestL69Q@2{VXx4SPUg#?s~ ztGbJOW6ui97zaKA)ACdI5c~}0+wvI_n zz7^X>wO1tcom%t>)u2VMXp^}JptM&2lcMx_G1jw4*M7_;?G z@)|1viOzcoUW5hCuQEo-3noXobjqENH1lSen0V8F^Ld82#Ox`~!vthH?;&{TSm6AY z?jIlaR%b?tzylDSO6SD_G;H&9efzXqp7m2}9}qCod97M2vcUP%mg9G$9rd#b_|USb z7DX0Vt{L~CYxRoHS48lnpVzDOgvGzlH!q1R3k$H$*MXYuKa>xZh!5{0fyRRyI)7`( z?d8vcG6D#QbOA|_WEQx<+Zj=_=e>J6K)^uDYC)}Gf#vs^EoFWe_v|NNqGdr4G%T<@ z(Dk-$aAHF+0SzsCtGy)_SccrRbX(4Ujydg+TXs4B+)}KF9j1UzIn9vEVU8wgx1tfd z(ID++=7xEWBYO1a&iHS%n-e%AcB4*;6_DrRc2@)Z E1>G_Q;s5{u literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/physics.c.BEC7150A4956B853.idx b/.cache/clangd/index/physics.c.BEC7150A4956B853.idx new file mode 100644 index 0000000000000000000000000000000000000000..dc98ea080a5a182b6fc19d6d1dbcb79607e28681 GIT binary patch literal 1988 zcmY*Y3rv$&6uxc2{%!w0ptR-P{;eP{M-dcSU|LWC5n(MYEf1Bq4>}$71<4SDC`JV* zhB>Y1bSPs?77>74CW0AG7o!7q+vWa0`;(sDbI&>7IrqEY)g~=n zdVvW*d_mGSbK$03Cjfv8{8=`YuDwVD-~t1HZPsJ;DI0`gf?dC#8NM68H!qqc-JKY_ zNEQp|1ItDXW#dC{1#K746(^r;nf8eeYD!#^^2ONDR}<}Ru?@`Hx=)|qs#8x4R}Z|{ zqE>a8LZ0mJ53{xxSr5BMEjhj+_369Dqbq#lS1hWT7vR1y)2+ePvv%#)mh7=lRJO50 zZwA)1ox9J{C+sU%jtY4^hB^M5^n*KoK2}4YsF?hG^WWtL>)s!q-2ON_d$RV@d3AVA za;&KL`Pb#YO7;f!&2E;)c;pS#UQzbRLOk2*&sH>bS|c#VNwYAo$S0)w?9N67cC)+x zVHFnE{?=9*Ftk%udt+>Uv_5}DOKY>-OFe(PU-4^hOxxg?(|g0F>&?4*tNxtcJi2Ez zvir-2w$>weMzU`ox^T%BwK~8!{lI^6>DY!Ij~iLJT?rD)ymcG9m-{C(zPnRiwf^;C zeVec^rA&Hn@L9~Yf|80#Q)l7Isy$`2&N^|4w^!Zj`d26BdL}nbb>z2iFEMqUxx7*r zwKH#P<-_A@zSHsa{*IiW!I$PRw-ZsTo~15Vrgsl^tdi-Bpf1qLuMuCr((vS?J&#Av z4m?#KtX{R?(Xto7QfAIu1aFa@(|bR!;=y7Z%m#p%!<@r$75=H>>gX|tDt%u1i^$*=TM1U;w*s(bQ%cufC$Aw zJ?dzpp^^*yVFJ#?`Eoa&o0vk_pYU?qKdL@&9C*QmU}iAKVbF+|Kg2n$d;fp0=|wH=8?89-gb7lnl;bd{zO=B&B85+bJ^$9Dl*jHVG@J-^5A{ZK zBYNrV|IvyQ8iB?QB_Wa-?EjIA6Ec>JOZF$UBCQ81LBvB`JL_l~i0iH)n+FH-dM+OL zmJ4U{cJUUYHX%d5v=Obzsc>75=~)Oex^eoq$yQDr6DO1sB?*EPk?cr5O2P>hTQ$Se zU>YtJ)6CV(qdcurJD>7&N*(DTUBKz>qM)Wvbx$Qw3DO2+#V!mgDMOS&@_-XYk&*P4 zqz8AU>Mc`roJgFN$U#Urk%T3YV=m7x?7e!a<0w3S5-&-NlF&bm?T{I2mvi;x^N|DR zxeUk(T{#PF<3u<;e1;c6k03oHNq9QD9;p(IkH!zRF|&P}?!3Pj2d6M#2J#Y+T4AkS zs#I;JAd}QfqhgeI`m-&gaHcdYO@bhC!Xz>IQ(hL9MaE9ic0WEcb?Y8%w}8KZL_+F^ z9NVQ&wTl!+`cghn%IH8qk$z$S#PNtjT znJ^Q15jc^FWzO`xGGz$vcJqgt2hM4J@Q7MW>w>nSVukt{(#*gz$e1lBx@jsauoaf* zFdexK`4t*wlo&B18M6(azF8fzMgh+fIy*EJbwN)KUV{C-Q>^GjI#O#Bwd^-BMXlFi zZ6cmXGCI}y{VCPT++4UF9vdEqAVFziNv<8pQkri`urH)`^WP^!3qT{TRD|2E_F3|s srQXa-w@G1jWAG$=rQ8X}RR3lDUaD|L29Ld{OW?p*%r1g{q^nQ|+hsBw!cOD}y;#A@~RV(b=|v+MOH zaT+xTw%>B!5VC96wl&ojEiXirs-$G9mLGlmq3&+G%8Z){-&5yA|ChJ;Wy$_oT4$zV z8=vo*`UmgU?ah2|s3P25I^$@W%f?5|^Wt6{HtezgwWL>|S;X)6MN96~EvCPs1^)k- zE7vEY<71%vGE4Wf`X-Iq>kP$}xk>YZ{^c?~eaH8%gfBM(Ff@1sm;~6s1Oq29JQx@l zc^GwW-deA?#@nBdL4=ushl7)Y3rsL@fE6%U&-?%I?;36=J_dfEG!G{aADDni+kT07 zyWs7G*Sz3>25I3D<`WhN8_&rOG~OjBreA=kY9B8H7sNmY9w9yiSv|S@hvMXd&S4V29)OK^~0FRC;SNa`7;7Fv7x%0TzWoVNm=* zwZfwgC=7}>m@q8L7&#$P1r>)y6i^r(K~Q0s)j(lzv_OSnkpdJ3M+Q_F78O7%LGb_; zWq?HiP#6^cFkx8G0}TNOIaC}L;6T-&(1xjo1vF3?6v{ARSO5csL7@v5ezNRTt4@Y8 wBM**as% zKKwc=zj*c81DmaxIZERKy`nsqaC|UP|8_?~@20t)B-76)N7h!9&Yfk!e9xiBDP;EP z#?K2(wl3OgmU#ccUX{5XEVkQEOmQ+j@O81-EFPcd6TIh$yY3B)i1t|H@w_!F@`y0Y zH0_vG3$#`+ermXTEiWg%Ku7qY$GYB(;E#HVvU3Ia?wmL)_dZij^RuS7*wlugmV?!A zEbABlzrR^6>b_Op%J|(kO1Ev6-g4sRa#ew8GdJB@CO_ZDUBbfrjkq7~;#rZKT9U{DWD5duaY<38J&=wD;)*%R9;eTEZoPE<`uP**eXpMP z@YOka;r!WazUR+qU)0z0x~6}^Q^)hP{;8{{6BL3{H`;k{tdL_^x<&pgLvdwp63_^S lqSUlv2%VD%qKk`?i^V|<#@b`bXZZSqIvJT5m_Py$001qhFyjCK literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/sprites.c.D3E6EB9072E5184B.idx b/.cache/clangd/index/sprites.c.D3E6EB9072E5184B.idx new file mode 100644 index 0000000000000000000000000000000000000000..c8fcbb150a44205094fe47b3070027764be8a5fc GIT binary patch literal 1802 zcmY+E3s4hR6o&8JWX*1JV+ctM8wi9)dF;ko2eoP)L8ufV6iaJB1s{Z<(4duoQo(7V zwQ3x(MX91F6$-vk1mCT#P)8|PP;0@Vh<2n_J6IWpqSi<4272ANGr7Ab-+%U;d(OF= zFe@sGkN^;wHY+d7nzL9808sKjdro$Sk^sO#0+3gJ=-s$@&+%?U@m->I3FrI1F7WbO z5uS05e6z!^X>9hruAvDF@~!#4%3EizJ*e?j8mI%u8g8ChGk77ip=H}A%~z6=dLyqe zn~%e}dDfKR?_<0lUHxiu-qT4@Du?yLTTI>V(Jf0tRnyzI_n8Nt-#T{YFstwl4J!Mh zIP7{Q%DndcM&-Sf9*NDTq3P&;qIS;0+Y?mshqA@TbN9D)>yab5`ldNQ`pMW!8U3|G zrpJpyi#N4(1}wPPe(2$m{%@Lhex{(S2O|A*f(m1D3`MyILu+gz6I3`#f0Z6COS}#b zjt9%hZ$C8`HdWW(^~)gU?|d!dYDxEZLH(&i}su>2;cvAR>Zt! zP5IH{)T^0lkEI=q^0JPdvGji453`P=ViijrVkN(cUU!evN9v7x?j}wTkK9*3J$jQp z!oRPvyM4p;Zl>>yWk9jXL@_Z+Uy`%DUo3yOSpA zN~^MeY;BvJB@1lbvCFTm=#Q35Z~Ri?c-&EOV`gvXdH+WVpSNfhHmWD)b$+mJWm8J9 zb!z*G+GB%ZX{p^E{XZqo>%Nh7K5^jj#|1OW_sae)+LdYR)(>4uQk@P=Er|blQ~O0@ z*k*5Y-&U`?Nd+eY=1d#hUVn0`ZSszU@AhU+RFvknJ!!qOVa@D)(W@Q5kDCeqB!T_I ztke()0DSMSs^$NjeFuS80ASZcay?XV6iF!nJ&FKEf5<^4<9@j=(()w&-n?WPxlBF0 z@Z&Xn+2<#um-duxLm+_1`D8xLNk|C|XcCV2A0YG z2>9@lQRFBMN0Oul(3E&Y(947^M{~VSAzqtukAz_bb4xj1dadJrD8i{VjsufA^TwHbj!94H{~KO qBp8HXM*xC_M^1ROWTn~0@TRAlks*yvHD9|vutWsQ)oOyV9re<4j3_ZRrXSr|a*ZZFHRx>ay5!-m`EcD8vx|HmZ6EzD^!m5U@&Rj7+McBUkFM+u37x_@lRd>H zVYj*Nq+hT0mqw*rFKBzq$7|;^^~%;$n%*i>V&-=w#oMOb*PjvSbMpQ_rp$jEmUnOW zoBJejP4bqXSC07KuBdAJ`Ksr5^YSMbfBs#~Z*}tdyeW^QKc;N?ZhQW;uH>hWkq-?e z!_*o1j#=)1<*~F^htXlDThk;R%?va1()qlG1syNsx$D*i^d2%}GpORdV-S6~Ch(4! z_l0S*!#p}X*UUBETl1oI53~GR-W-PF%G{(gz|dk0dAm6O=l(z*23`gRfeuF24n}@K z4pt6+22M6624QYSLB`_fptPxXXHMr~-~lSBX07HFWM^gPWZ-0Fgecg+^jUVz6fIF6 z20oyIsf?^s83hG7Svds}O3sG;D7DE_$hwG8K#+@-OMrosof%@v-Ef8H zF*$Seco;Z=O4wN0Lh($ literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/state.c.38363B0A396C289D.idx b/.cache/clangd/index/state.c.38363B0A396C289D.idx new file mode 100644 index 0000000000000000000000000000000000000000..d84f1b5405e1a6df85e02c57203ebbb65b6e6ae6 GIT binary patch literal 1194 zcmWIYbaPw8!oc91;#rZKT9OE4G6({3aY<387b6416eb3SiaB!wPI|Ez3ast_xFBI^ zT7e}8vvQueYk*_^B)?U=PkXBSPLfOeckj!N<_AoQm0w>yy~=dkx*?*k;xXIl4Ao61 z71yO-Y3o~=IyX8cFnP zGn(1?N6l4BEE&9_mYUP5`Qnz=zQ~&!XYxi&v+i3qlhA9w`29`O}d<|a7-L)JA!dzXJ`@jqS$Sq26vDK;r?X%Su#AqGyMoVWy| zG~7Yu-UnPk~v zih#~!l0)LjGsz?I6qpo{c#2GlNIWGbB_y6QlQI%dg-Hd8r^=*?#8YEZL*l73sUz_; zm^6@hnoOE-o=p~L&P&IbBXjYAFY_1L7=xZDMKEkI#S4oz{GuX4HMmY)B02^1o7 z{Bm&B^ORrlEh{X01r%21SC)gRhS7{%;OK`1)TaAq?YlmSn*&v=3ad)MgwF)+V_2ch z_Xa2|#URBB3*|FMcDF00_nrj`EAcDABjMbN-yPRk15|;+^8E4=FsrV_S}*++0c;zqSH}H8?Z`VX9xTp6#|-IzIp?tiquJ_s+*Yt}ixeYmNbhRXJ4Q z!bPb$i6F-o7bO>q18GL73UTl5+g-j)jM5C!FmEt0B>OO2 NY`g+u+{}VZq5wMhntK2M literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/state.h.25FD4037DD824937.idx b/.cache/clangd/index/state.h.25FD4037DD824937.idx new file mode 100644 index 0000000000000000000000000000000000000000..be26831747c1cdb1c8019bfab0762087db2e233d GIT binary patch literal 988 zcmX|;dq`7J9LLXHdat`X_sqS>1T_Ll(9r%cQhbo2X*inpAQLM$Co0WkTW0&i5Y#_> zRexlOk*0~23KlB5sIbAJhk}$DJuo9{M&txVN_+h7-Hr$LyNA#Boc+%EoV@JJ%-35G zN-xf?wwUcj0SF-#{A_k>*(`jM8HB2@*I(RM;flinzqDbFEYk8bC9-l_xi{iejC+Ui zGMmxoUFv_Q^jIeHjpyd=4VuR1N9}_*or67{4~Rpzzb$kuro8pD(0$0;99|bS^C>i3 z+kCe_mrrfKRm3+f79W$%hIJ?OD)5CRuVJv}TUuOI#O!=k@|0<xFgS8dFpufZ`+z~vh8fy^sdJGKT*r&dT!_aj>=lI zy9HOJjwMdbS+uLpMpr??MC<`iWhSznw-^iHZv4ZVjjVMtN>GptVZsuXR8SDy9fl(Q z)s5Ox&oDv35OW+SNQK53hohYbkJ$bSk~47w)(ToRlEW;3WiXRtGCy%W9_b)R4*LaG zAX1_G^9sgG7E4dQB}fS|&+;0n(74c8f5OsLQAdy(Vil{>NrlE;Eq5X}bosd$5wSH4 ztP9jZD~3TD4!Xb0dxUOBlOGBM&x+MDH76DEc<|(~;Qe^{jBEM#2tk3+K*=hVQlSmL z2TnF6^>!Kv5+GKv3L+I6FSqh5NhJerf_R8Ahm}&HF|wLVYzEPB{EH9zk0E*nVj0I$ zr&K+|`;_~xu&Erd=-W?`&a^Pso4j5KmG#Kc1D2|BJhp>)4KKY literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/tilemap.c.6EAE01AA5F3D4FEC.idx b/.cache/clangd/index/tilemap.c.6EAE01AA5F3D4FEC.idx new file mode 100644 index 0000000000000000000000000000000000000000..688c5a7836ddf9b8e0c32c4e3ccfca44b0ee51f7 GIT binary patch literal 820 zcmWIYbaT^TW?*nm@vO*AElFfyU|HASiaB$GZ)Zsx3S3?OLy@1e z!sOmPIi5-mPhl=y-lG%tiLN!-Ju5<6S6TN)%fITaYHNi#_BKvj?)wR2ZqUfdfaW1G&kK(Eitr|-bV3A&!&p1-*4@ZzLMzm-Zh zQ(At@hUZRcTYgM*^PgC5xG}^?tcItFYu&p2argGbh9(z(eERI~v)lfEb{g;0*kSC= zF#Y&Vu7&SZCb3jVFh}cM@VzMJCn$3>;mDb9Yi@}ea;<4vC%h=er$pvAm$N6A#rxug zj*dP%cN|#Tbc*Y#NvG|Xvc6!kHF9ebll#v~@4fW?%KopjYy(~_*e({`=l|gU@tNAQ z&cBHdw%&ZhWYI&D^=b0WOQo%n z?8Fx97YBmsQDW0MeqY)9W zyOcZs!MRrPj*q6CXZxSH1}rIGue&sF_ne>m8WStGUFCf#ARNET;ryiZ+fSp{ykC^? zv(dY5Let4*spZKV85v|{n%pLu>^SZzIlp01%a&yIWnTZZU(L4&X31uo5LUtZb*ojl zxk22mN|yyDe2O<>!)N@ey|`Z3NGNa9jhU>vvu!1x7Cs5;u2^!u{u@*5<&ggj#g(~9 zPC%EYo?8CPapt;c9tL&>1{MxJ4oOy4K2}KvP9{bMPG&|{#uiroh>y2UI`c4a02PSx zi%PMw@v}*R6>xzR6s4vWy8=y;{hwQ5&T@AqBNrqDZpU-iGuQ8C>=P9X5s%s``=4=T@8uWak=NpsgMcYS^2cQrQ?A5np zD6Y&+ast{darC{>@tsE{cp2Ck7+9N`M4Fjop%eorP@b8Q!LG&oiq+~rIOrj_?ClSOhE=n%u1~FKh{r}|rnx?JGzyJUZ4{&(^ literal 0 HcmV?d00001 diff --git a/.clangd b/.clangd new file mode 100644 index 0000000..b6660f6 --- /dev/null +++ b/.clangd @@ -0,0 +1,7 @@ +CompileFlags: + Add: + - "--include-directory=/home/heath/.local/share/giteapc/Lephenixnoir/gint/include/" + Remove: + - "-m4-nofpu" + - "-mb" + - "-fstrict-volatile-bitfields" diff --git a/.cmake/api/v1/query/cache-v2 b/.cmake/api/v1/query/cache-v2 new file mode 100644 index 0000000..e69de29 diff --git a/.cmake/api/v1/query/cmakeFiles-v1 b/.cmake/api/v1/query/cmakeFiles-v1 new file mode 100644 index 0000000..e69de29 diff --git a/.cmake/api/v1/query/codemodel-v2 b/.cmake/api/v1/query/codemodel-v2 new file mode 100644 index 0000000..e69de29 diff --git a/.cmake/api/v1/query/toolchains-v1 b/.cmake/api/v1/query/toolchains-v1 new file mode 100644 index 0000000..e69de29 diff --git a/.cmake/api/v1/reply/cache-v2-090f13c229a843ec3c77.json b/.cmake/api/v1/reply/cache-v2-090f13c229a843ec3c77.json new file mode 100644 index 0000000..4ad7a26 --- /dev/null +++ b/.cmake/api/v1/reply/cache-v2-090f13c229a843ec3c77.json @@ -0,0 +1,1191 @@ +{ + "entries" : + [ + { + "name" : "CMAKE_ADDR2LINE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/addr2line" + }, + { + "name" : "CMAKE_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/ar" + }, + { + "name" : "CMAKE_BUILD_TYPE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ..." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_CACHEFILE_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "This is the directory where this CMakeCache.txt was created" + } + ], + "type" : "INTERNAL", + "value" : "/home/heath/mk-gint" + }, + { + "name" : "CMAKE_CACHE_MAJOR_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Major version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "3" + }, + { + "name" : "CMAKE_CACHE_MINOR_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Minor version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "23" + }, + { + "name" : "CMAKE_CACHE_PATCH_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Patch version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "2" + }, + { + "name" : "CMAKE_COLOR_MAKEFILE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Enable/Disable color output during build." + } + ], + "type" : "BOOL", + "value" : "ON" + }, + { + "name" : "CMAKE_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to CMake executable." + } + ], + "type" : "INTERNAL", + "value" : "/usr/bin/cmake" + }, + { + "name" : "CMAKE_CPACK_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to cpack program executable." + } + ], + "type" : "INTERNAL", + "value" : "/usr/bin/cpack" + }, + { + "name" : "CMAKE_CTEST_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to ctest program executable." + } + ], + "type" : "INTERNAL", + "value" : "/usr/bin/ctest" + }, + { + "name" : "CMAKE_CXX_COMPILER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "CXX compiler" + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/c++" + }, + { + "name" : "CMAKE_CXX_COMPILER_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "A wrapper around 'ar' adding the appropriate '--plugin' option for the GCC compiler" + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/gcc-ar" + }, + { + "name" : "CMAKE_CXX_COMPILER_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "A wrapper around 'ranlib' adding the appropriate '--plugin' option for the GCC compiler" + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/gcc-ranlib" + }, + { + "name" : "CMAKE_CXX_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the CXX compiler during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_CXX_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the CXX compiler during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "-g" + }, + { + "name" : "CMAKE_CXX_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the CXX compiler during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "-Os -DNDEBUG" + }, + { + "name" : "CMAKE_CXX_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the CXX compiler during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "-O3 -DNDEBUG" + }, + { + "name" : "CMAKE_CXX_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the CXX compiler during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "-O2 -g -DNDEBUG" + }, + { + "name" : "CMAKE_C_COMPILER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "C compiler" + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/cc" + }, + { + "name" : "CMAKE_C_COMPILER_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "A wrapper around 'ar' adding the appropriate '--plugin' option for the GCC compiler" + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/gcc-ar" + }, + { + "name" : "CMAKE_C_COMPILER_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "A wrapper around 'ranlib' adding the appropriate '--plugin' option for the GCC compiler" + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/gcc-ranlib" + }, + { + "name" : "CMAKE_C_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_C_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "-g" + }, + { + "name" : "CMAKE_C_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "-Os -DNDEBUG" + }, + { + "name" : "CMAKE_C_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "-O3 -DNDEBUG" + }, + { + "name" : "CMAKE_C_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "-O2 -g -DNDEBUG" + }, + { + "name" : "CMAKE_DLLTOOL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "CMAKE_DLLTOOL-NOTFOUND" + }, + { + "name" : "CMAKE_EDIT_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to cache edit program executable." + } + ], + "type" : "INTERNAL", + "value" : "/usr/bin/ccmake" + }, + { + "name" : "CMAKE_EXECUTABLE_FORMAT", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Executable file format" + } + ], + "type" : "INTERNAL", + "value" : "ELF" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXPORT_COMPILE_COMMANDS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Enable/Disable output of compile commands during generation." + } + ], + "type" : "BOOL", + "value" : "" + }, + { + "name" : "CMAKE_EXTRA_GENERATOR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of external makefile project generator." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_GENERATOR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator." + } + ], + "type" : "INTERNAL", + "value" : "Unix Makefiles" + }, + { + "name" : "CMAKE_GENERATOR_INSTANCE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Generator instance identifier." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_GENERATOR_PLATFORM", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator platform." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_GENERATOR_TOOLSET", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator toolset." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_HOME_DIRECTORY", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Source directory with the top level CMakeLists.txt file for this project" + } + ], + "type" : "INTERNAL", + "value" : "/home/heath/mk-gint" + }, + { + "name" : "CMAKE_INSTALL_PREFIX", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Install path prefix, prepended onto install directories." + } + ], + "type" : "PATH", + "value" : "/usr/local" + }, + { + "name" : "CMAKE_INSTALL_SO_NO_EXE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Install .so files without execute permission." + } + ], + "type" : "INTERNAL", + "value" : "0" + }, + { + "name" : "CMAKE_LINKER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/ld" + }, + { + "name" : "CMAKE_MAKE_PROGRAM", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/make" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_NM", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/nm" + }, + { + "name" : "CMAKE_NUMBER_OF_MAKEFILES", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "number of local generators" + } + ], + "type" : "INTERNAL", + "value" : "1" + }, + { + "name" : "CMAKE_OBJCOPY", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/objcopy" + }, + { + "name" : "CMAKE_OBJDUMP", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/objdump" + }, + { + "name" : "CMAKE_PLATFORM_INFO_INITIALIZED", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Platform information initialized" + } + ], + "type" : "INTERNAL", + "value" : "1" + }, + { + "name" : "CMAKE_PROJECT_DESCRIPTION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "" + }, + { + "name" : "CMAKE_PROJECT_HOMEPAGE_URL", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "" + }, + { + "name" : "CMAKE_PROJECT_NAME", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "MarioKart" + }, + { + "name" : "CMAKE_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/ranlib" + }, + { + "name" : "CMAKE_READELF", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/readelf" + }, + { + "name" : "CMAKE_ROOT", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to CMake installation." + } + ], + "type" : "INTERNAL", + "value" : "/usr/share/cmake" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SKIP_INSTALL_RPATH", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If set, runtime paths are not added when installing shared libraries, but are added when building." + } + ], + "type" : "BOOL", + "value" : "NO" + }, + { + "name" : "CMAKE_SKIP_RPATH", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If set, runtime paths are not added when using shared libraries." + } + ], + "type" : "BOOL", + "value" : "NO" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STRIP", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/strip" + }, + { + "name" : "CMAKE_UNAME", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "uname command" + } + ], + "type" : "INTERNAL", + "value" : "/usr/bin/uname" + }, + { + "name" : "CMAKE_VERBOSE_MAKEFILE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo." + } + ], + "type" : "BOOL", + "value" : "FALSE" + }, + { + "name" : "Gint_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "The directory containing a CMake configuration file for Gint." + } + ], + "type" : "PATH", + "value" : "Gint_DIR-NOTFOUND" + }, + { + "name" : "MarioKart_BINARY_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "/home/heath/mk-gint" + }, + { + "name" : "MarioKart_IS_TOP_LEVEL", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "ON" + }, + { + "name" : "MarioKart_SOURCE_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "/home/heath/mk-gint" + } + ], + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } +} diff --git a/.cmake/api/v1/reply/cmakeFiles-v1-5c368505a9e5b5457aac.json b/.cmake/api/v1/reply/cmakeFiles-v1-5c368505a9e5b5457aac.json new file mode 100644 index 0000000..0f914a9 --- /dev/null +++ b/.cmake/api/v1/reply/cmakeFiles-v1-5c368505a9e5b5457aac.json @@ -0,0 +1,133 @@ +{ + "inputs" : + [ + { + "path" : "CMakeLists.txt" + }, + { + "path" : "CMakeFiles/3.23.2/CMakeSystem.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake/Modules/CMakeSystemSpecificInitialize.cmake" + }, + { + "path" : "CMakeFiles/3.23.2/CMakeCCompiler.cmake" + }, + { + "path" : "CMakeFiles/3.23.2/CMakeCXXCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake/Modules/CMakeSystemSpecificInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake/Modules/CMakeGenericSystem.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake/Modules/CMakeInitializeConfigs.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake/Modules/Platform/Linux.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake/Modules/Platform/UnixPaths.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake/Modules/CMakeCInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake/Modules/CMakeLanguageInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake/Modules/Compiler/GNU-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake/Modules/Compiler/GNU.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake/Modules/Platform/Linux-GNU-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake/Modules/Platform/Linux-GNU.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake/Modules/CMakeCommonLanguageInclude.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake/Modules/CMakeCXXInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake/Modules/CMakeLanguageInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake/Modules/Compiler/GNU-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake/Modules/Compiler/GNU.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake/Modules/Platform/Linux-GNU-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake/Modules/Platform/Linux-GNU.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake/Modules/CMakeCommonLanguageInclude.cmake" + } + ], + "kind" : "cmakeFiles", + "paths" : + { + "build" : "/home/heath/mk-gint", + "source" : "/home/heath/mk-gint" + }, + "version" : + { + "major" : 1, + "minor" : 0 + } +} diff --git a/.cmake/api/v1/reply/codemodel-v2-b7ef37ab22d4355f78bd.json b/.cmake/api/v1/reply/codemodel-v2-b7ef37ab22d4355f78bd.json new file mode 100644 index 0000000..4aec3d9 --- /dev/null +++ b/.cmake/api/v1/reply/codemodel-v2-b7ef37ab22d4355f78bd.json @@ -0,0 +1,43 @@ +{ + "configurations" : + [ + { + "directories" : + [ + { + "build" : ".", + "jsonFile" : "directory-.-f5ebdc15457944623624.json", + "minimumCMakeVersion" : + { + "string" : "3.15" + }, + "projectIndex" : 0, + "source" : "." + } + ], + "name" : "", + "projects" : + [ + { + "directoryIndexes" : + [ + 0 + ], + "name" : "MarioKart" + } + ], + "targets" : [] + } + ], + "kind" : "codemodel", + "paths" : + { + "build" : "/home/heath/mk-gint", + "source" : "/home/heath/mk-gint" + }, + "version" : + { + "major" : 2, + "minor" : 4 + } +} diff --git a/.cmake/api/v1/reply/directory-.-f5ebdc15457944623624.json b/.cmake/api/v1/reply/directory-.-f5ebdc15457944623624.json new file mode 100644 index 0000000..3a67af9 --- /dev/null +++ b/.cmake/api/v1/reply/directory-.-f5ebdc15457944623624.json @@ -0,0 +1,14 @@ +{ + "backtraceGraph" : + { + "commands" : [], + "files" : [], + "nodes" : [] + }, + "installers" : [], + "paths" : + { + "build" : ".", + "source" : "." + } +} diff --git a/.cmake/api/v1/reply/index-2022-07-05T14-43-38-0198.json b/.cmake/api/v1/reply/index-2022-07-05T14-43-38-0198.json new file mode 100644 index 0000000..78c0d7a --- /dev/null +++ b/.cmake/api/v1/reply/index-2022-07-05T14-43-38-0198.json @@ -0,0 +1,108 @@ +{ + "cmake" : + { + "generator" : + { + "multiConfig" : false, + "name" : "Unix Makefiles" + }, + "paths" : + { + "cmake" : "/usr/bin/cmake", + "cpack" : "/usr/bin/cpack", + "ctest" : "/usr/bin/ctest", + "root" : "/usr/share/cmake" + }, + "version" : + { + "isDirty" : false, + "major" : 3, + "minor" : 23, + "patch" : 2, + "string" : "3.23.2", + "suffix" : "" + } + }, + "objects" : + [ + { + "jsonFile" : "codemodel-v2-b7ef37ab22d4355f78bd.json", + "kind" : "codemodel", + "version" : + { + "major" : 2, + "minor" : 4 + } + }, + { + "jsonFile" : "cache-v2-090f13c229a843ec3c77.json", + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } + }, + { + "jsonFile" : "cmakeFiles-v1-5c368505a9e5b5457aac.json", + "kind" : "cmakeFiles", + "version" : + { + "major" : 1, + "minor" : 0 + } + }, + { + "jsonFile" : "toolchains-v1-455d26859483b5db9132.json", + "kind" : "toolchains", + "version" : + { + "major" : 1, + "minor" : 0 + } + } + ], + "reply" : + { + "cache-v2" : + { + "jsonFile" : "cache-v2-090f13c229a843ec3c77.json", + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } + }, + "cmakeFiles-v1" : + { + "jsonFile" : "cmakeFiles-v1-5c368505a9e5b5457aac.json", + "kind" : "cmakeFiles", + "version" : + { + "major" : 1, + "minor" : 0 + } + }, + "codemodel-v2" : + { + "jsonFile" : "codemodel-v2-b7ef37ab22d4355f78bd.json", + "kind" : "codemodel", + "version" : + { + "major" : 2, + "minor" : 4 + } + }, + "toolchains-v1" : + { + "jsonFile" : "toolchains-v1-455d26859483b5db9132.json", + "kind" : "toolchains", + "version" : + { + "major" : 1, + "minor" : 0 + } + } + } +} diff --git a/.cmake/api/v1/reply/toolchains-v1-455d26859483b5db9132.json b/.cmake/api/v1/reply/toolchains-v1-455d26859483b5db9132.json new file mode 100644 index 0000000..98bebd3 --- /dev/null +++ b/.cmake/api/v1/reply/toolchains-v1-455d26859483b5db9132.json @@ -0,0 +1,103 @@ +{ + "kind" : "toolchains", + "toolchains" : + [ + { + "compiler" : + { + "id" : "GNU", + "implicit" : + { + "includeDirectories" : + [ + "/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include", + "/usr/local/include", + "/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include-fixed", + "/usr/include" + ], + "linkDirectories" : + [ + "/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0", + "/usr/lib", + "/lib" + ], + "linkFrameworkDirectories" : [], + "linkLibraries" : + [ + "gcc", + "gcc_s", + "c", + "gcc", + "gcc_s" + ] + }, + "path" : "/usr/bin/cc", + "version" : "12.1.0" + }, + "language" : "C", + "sourceFileExtensions" : + [ + "c", + "m" + ] + }, + { + "compiler" : + { + "id" : "GNU", + "implicit" : + { + "includeDirectories" : + [ + "/usr/include/c++/12.1.0", + "/usr/include/c++/12.1.0/x86_64-pc-linux-gnu", + "/usr/include/c++/12.1.0/backward", + "/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include", + "/usr/local/include", + "/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include-fixed", + "/usr/include" + ], + "linkDirectories" : + [ + "/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0", + "/usr/lib", + "/lib" + ], + "linkFrameworkDirectories" : [], + "linkLibraries" : + [ + "stdc++", + "m", + "gcc_s", + "gcc", + "c", + "gcc_s", + "gcc" + ] + }, + "path" : "/usr/bin/c++", + "version" : "12.1.0" + }, + "language" : "CXX", + "sourceFileExtensions" : + [ + "C", + "M", + "c++", + "cc", + "cpp", + "cxx", + "mm", + "mpp", + "CPP", + "ixx", + "cppm" + ] + } + ], + "version" : + { + "major" : 1, + "minor" : 0 + } +} diff --git a/.gitignore b/.gitignore index b965363..2c4f84b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,29 +1,13 @@ +# Build files +/build-fx +/build-cg +/*.g1a +/*.g3a -# Created by https://www.toptal.com/developers/gitignore/api/visualstudiocode -# Edit at https://www.toptal.com/developers/gitignore?templates=visualstudiocode +# Python bytecode + __pycache__/ -### VisualStudioCode ### -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json -*.code-workspace - -# Local History for Visual Studio Code -.history/ - -### VisualStudioCode Patch ### -# Ignore all local history of files -.history -.ionide - -# Support for Project snippet scope -!.vscode/*.code-snippets - -# End of https://www.toptal.com/developers/gitignore/api/visualstudiocode - -build -html -*.g3a -*.bin +# Common IDE files +*.sublime-project +*.sublime-workspace +.vscode diff --git a/.idea/misc.xml b/.idea/misc.xml index bedf918..79b3c94 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,13 +1,4 @@ - - - - - + \ No newline at end of file diff --git a/.idea/mk-gint.iml b/.idea/mk-gint.iml new file mode 100644 index 0000000..f08604b --- /dev/null +++ b/.idea/mk-gint.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..9622dcb --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index 0513fb5..0000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - // Run the "Build for browser" task - { - "name": "Run", - "type": "chrome", - "request": "attach", - "url": "http://localhost:8080/index.html", - "webRoot": "${workspaceRoot}", - "preLaunchTask": "Build for browser" - }, - { - "name": "sh3eb-elf-g++ - Build and debug active file", - "type": "cppdbg", - "request": "launch", - "program": "${fileDirname}/${fileBasenameNoExtension}", - "args": [], - "stopAtEntry": false, - "cwd": "${fileDirname}", - "environment": [], - "externalConsole": false, - "MIMode": "gdb", - "setupCommands": [ - { - "description": "Enable pretty-printing for gdb", - "text": "-enable-pretty-printing", - "ignoreFailures": true - } - ], - "preLaunchTask": "C/C++: sh3eb-elf-g++ build active file", - "miDebuggerPath": "/usr/bin/gdb" - } - ] -} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 922af6a..ceba510 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,19 +1,22 @@ { - "makefile.extensionOutputFolder": "./.vscode", - "files.associations": { - "*.xsh": "python", - "generated_lut.cpp": "c", - "track.cpp": "c", - "kartsprites.h": "c", - "track.h": "c", - "3d.h": "c", - "display.h": "c", - "math.h": "c", - "generated_lut.h": "c", - "stdbool.h": "c", - "SYSTEM.C": "cpp", - "rtc.h": "c", - "particles.h": "c", - "images.h": "c" - } + "files.associations": { + "*.xsh": "python", + "display.h": "c", + "types.h": "c", + "stddef.h": "c", + "stdint.h": "c", + "stdint-gcc.h": "c", + "keyboard.h": "c", + "main.h": "c", + "tilemap.h": "c", + "generated_lut.h": "c", + "rtc.h": "c", + "gint.h": "c", + "drivers.h": "c", + "platform.h": "c", + "display-cg.h": "c", + "attributes.h": "c", + "r61524.h": "c" + }, + "C_Cpp.intelliSenseEngineFallback": "Enabled" } \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json deleted file mode 100644 index 622cc4f..0000000 --- a/.vscode/tasks.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "tasks": [ - { - "label": "Build for browser", - "type": "shell", - "command": "make", - "args": [ - "-B", - "html/index.html" - ], - "group": "build", - "presentation": { - "reveal": "always" - } - }, - { - "type": "cppbuild", - "label": "C/C++: sh3eb-elf-g++ build active file", - "command": "/usr/local/cross/bin/sh3eb-elf-g++", - "args": [ - "-fdiagnostics-color=always", - "-g", - "${file}", - "-o", - "${fileDirname}/${fileBasenameNoExtension}" - ], - "options": { - "cwd": "${fileDirname}" - }, - "problemMatcher": [ - "$gcc" - ], - "group": { - "kind": "build", - "isDefault": true - }, - "detail": "Task generated by Debugger." - } - ], - "version": "2.0.0" -} \ No newline at end of file diff --git a/CMakeCache.txt b/CMakeCache.txt new file mode 100644 index 0000000..7e78e1f --- /dev/null +++ b/CMakeCache.txt @@ -0,0 +1,374 @@ +# This is the CMakeCache file. +# For build in directory: /home/heath/mk-gint +# It was generated by CMake: /usr/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=/usr/bin/addr2line + +//Path to a program. +CMAKE_AR:FILEPATH=/usr/bin/ar + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING= + +//Enable/Disable color output during build. +CMAKE_COLOR_MAKEFILE:BOOL=ON + +//CXX compiler +CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++ + +//A wrapper around 'ar' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_CXX_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar + +//A wrapper around 'ranlib' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_CXX_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib + +//Flags used by the CXX compiler during all build types. +CMAKE_CXX_FLAGS:STRING= + +//Flags used by the CXX compiler during DEBUG builds. +CMAKE_CXX_FLAGS_DEBUG:STRING=-g + +//Flags used by the CXX compiler during MINSIZEREL builds. +CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the CXX compiler during RELEASE builds. +CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the CXX compiler during RELWITHDEBINFO builds. +CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//C compiler +CMAKE_C_COMPILER:FILEPATH=/usr/bin/cc + +//A wrapper around 'ar' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_C_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar + +//A wrapper around 'ranlib' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_C_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib + +//Flags used by the C compiler during all build types. +CMAKE_C_FLAGS:STRING= + +//Flags used by the C compiler during DEBUG builds. +CMAKE_C_FLAGS_DEBUG:STRING=-g + +//Flags used by the C compiler during MINSIZEREL builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the C compiler during RELEASE builds. +CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the C compiler during RELWITHDEBINFO builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND + +//Flags used by the linker during all build types. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of compile commands during generation. +CMAKE_EXPORT_COMPILE_COMMANDS:BOOL= + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +//Path to a program. +CMAKE_LINKER:FILEPATH=/usr/bin/ld + +//Path to a program. +CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make + +//Flags used by the linker during the creation of modules during +// all build types. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=/usr/bin/nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=MarioKart + +//Path to a program. +CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib + +//Path to a program. +CMAKE_READELF:FILEPATH=/usr/bin/readelf + +//Flags used by the linker during the creation of shared libraries +// during all build types. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_STRIP:FILEPATH=/usr/bin/strip + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//The directory containing a CMake configuration file for Gint. +Gint_DIR:PATH=Gint_DIR-NOTFOUND + +//Value Computed by CMake +MarioKart_BINARY_DIR:STATIC=/home/heath/mk-gint + +//Value Computed by CMake +MarioKart_IS_TOP_LEVEL:STATIC=ON + +//Value Computed by CMake +MarioKart_SOURCE_DIR:STATIC=/home/heath/mk-gint + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/home/heath/mk-gint +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=23 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=2 +//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE +CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/usr/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/usr/bin/cpack +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/usr/bin/ctest +//ADVANCED property for variable: CMAKE_CXX_COMPILER +CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR +CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB +CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS +CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG +CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL +CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE +CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO +CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER +CMAKE_C_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_AR +CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB +CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Path to cache edit program executable. +CMAKE_EDIT_COMMAND:INTERNAL=/usr/bin/ccmake +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS +CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Unix Makefiles +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/home/heath/mk-gint +//Install .so files without execute permission. +CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MAKE_PROGRAM +CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/usr/share/cmake +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/usr/bin/uname +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 + diff --git a/CMakeFiles/3.23.2/CMakeCCompiler.cmake b/CMakeFiles/3.23.2/CMakeCCompiler.cmake new file mode 100644 index 0000000..118821e --- /dev/null +++ b/CMakeFiles/3.23.2/CMakeCCompiler.cmake @@ -0,0 +1,72 @@ +set(CMAKE_C_COMPILER "/usr/bin/cc") +set(CMAKE_C_COMPILER_ARG1 "") +set(CMAKE_C_COMPILER_ID "GNU") +set(CMAKE_C_COMPILER_VERSION "12.1.0") +set(CMAKE_C_COMPILER_VERSION_INTERNAL "") +set(CMAKE_C_COMPILER_WRAPPER "") +set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "17") +set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "ON") +set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert;c_std_17;c_std_23") +set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") +set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") +set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") +set(CMAKE_C17_COMPILE_FEATURES "c_std_17") +set(CMAKE_C23_COMPILE_FEATURES "c_std_23") + +set(CMAKE_C_PLATFORM_ID "Linux") +set(CMAKE_C_SIMULATE_ID "") +set(CMAKE_C_COMPILER_FRONTEND_VARIANT "") +set(CMAKE_C_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "/usr/bin/ar") +set(CMAKE_C_COMPILER_AR "/usr/bin/gcc-ar") +set(CMAKE_RANLIB "/usr/bin/ranlib") +set(CMAKE_C_COMPILER_RANLIB "/usr/bin/gcc-ranlib") +set(CMAKE_LINKER "/usr/bin/ld") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCC 1) +set(CMAKE_C_COMPILER_LOADED 1) +set(CMAKE_C_COMPILER_WORKS TRUE) +set(CMAKE_C_ABI_COMPILED TRUE) + +set(CMAKE_C_COMPILER_ENV_VAR "CC") + +set(CMAKE_C_COMPILER_ID_RUN 1) +set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) +set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_C_LINKER_PREFERENCE 10) + +# Save compiler ABI information. +set(CMAKE_C_SIZEOF_DATA_PTR "8") +set(CMAKE_C_COMPILER_ABI "ELF") +set(CMAKE_C_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_C_LIBRARY_ARCHITECTURE "") + +if(CMAKE_C_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_C_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") +endif() + +if(CMAKE_C_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include;/usr/local/include;/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include-fixed;/usr/include") +set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "gcc;gcc_s;c;gcc;gcc_s") +set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0;/usr/lib;/lib") +set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/CMakeFiles/3.23.2/CMakeCXXCompiler.cmake b/CMakeFiles/3.23.2/CMakeCXXCompiler.cmake new file mode 100644 index 0000000..96768dc --- /dev/null +++ b/CMakeFiles/3.23.2/CMakeCXXCompiler.cmake @@ -0,0 +1,83 @@ +set(CMAKE_CXX_COMPILER "/usr/bin/c++") +set(CMAKE_CXX_COMPILER_ARG1 "") +set(CMAKE_CXX_COMPILER_ID "GNU") +set(CMAKE_CXX_COMPILER_VERSION "12.1.0") +set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") +set(CMAKE_CXX_COMPILER_WRAPPER "") +set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "17") +set(CMAKE_CXX_EXTENSIONS_COMPUTED_DEFAULT "ON") +set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20;cxx_std_23") +set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") +set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") +set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") +set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") +set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20") +set(CMAKE_CXX23_COMPILE_FEATURES "cxx_std_23") + +set(CMAKE_CXX_PLATFORM_ID "Linux") +set(CMAKE_CXX_SIMULATE_ID "") +set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "") +set(CMAKE_CXX_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "/usr/bin/ar") +set(CMAKE_CXX_COMPILER_AR "/usr/bin/gcc-ar") +set(CMAKE_RANLIB "/usr/bin/ranlib") +set(CMAKE_CXX_COMPILER_RANLIB "/usr/bin/gcc-ranlib") +set(CMAKE_LINKER "/usr/bin/ld") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCXX 1) +set(CMAKE_CXX_COMPILER_LOADED 1) +set(CMAKE_CXX_COMPILER_WORKS TRUE) +set(CMAKE_CXX_ABI_COMPILED TRUE) + +set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") + +set(CMAKE_CXX_COMPILER_ID_RUN 1) +set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;mpp;CPP;ixx;cppm) +set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) + +foreach (lang C OBJC OBJCXX) + if (CMAKE_${lang}_COMPILER_ID_RUN) + foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS) + list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension}) + endforeach() + endif() +endforeach() + +set(CMAKE_CXX_LINKER_PREFERENCE 30) +set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) + +# Save compiler ABI information. +set(CMAKE_CXX_SIZEOF_DATA_PTR "8") +set(CMAKE_CXX_COMPILER_ABI "ELF") +set(CMAKE_CXX_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_CXX_LIBRARY_ARCHITECTURE "") + +if(CMAKE_CXX_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_CXX_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") +endif() + +if(CMAKE_CXX_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/usr/include/c++/12.1.0;/usr/include/c++/12.1.0/x86_64-pc-linux-gnu;/usr/include/c++/12.1.0/backward;/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include;/usr/local/include;/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include-fixed;/usr/include") +set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;m;gcc_s;gcc;c;gcc_s;gcc") +set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0;/usr/lib;/lib") +set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/CMakeFiles/3.23.2/CMakeDetermineCompilerABI_C.bin b/CMakeFiles/3.23.2/CMakeDetermineCompilerABI_C.bin new file mode 100755 index 0000000000000000000000000000000000000000..b92b39f36a9d48073010180f3e9a2abc1e8ee9a9 GIT binary patch literal 20536 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 literal 0 HcmV?d00001 diff --git a/CMakeFiles/3.23.2/CMakeDetermineCompilerABI_CXX.bin b/CMakeFiles/3.23.2/CMakeDetermineCompilerABI_CXX.bin new file mode 100755 index 0000000000000000000000000000000000000000..0a21a8a1c25b44804b93a199bbcf0ee0e3e0097e GIT binary patch literal 20560 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 Y7k$qC@!OzQ%YM^7*FNVn@R8!b0eyh|*8l(j literal 0 HcmV?d00001 diff --git a/CMakeFiles/3.23.2/CMakeSystem.cmake b/CMakeFiles/3.23.2/CMakeSystem.cmake new file mode 100644 index 0000000..4bc6f31 --- /dev/null +++ b/CMakeFiles/3.23.2/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Linux-5.17.9-zen1-1-zen") +set(CMAKE_HOST_SYSTEM_NAME "Linux") +set(CMAKE_HOST_SYSTEM_VERSION "5.17.9-zen1-1-zen") +set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") + + + +set(CMAKE_SYSTEM "Linux-5.17.9-zen1-1-zen") +set(CMAKE_SYSTEM_NAME "Linux") +set(CMAKE_SYSTEM_VERSION "5.17.9-zen1-1-zen") +set(CMAKE_SYSTEM_PROCESSOR "x86_64") + +set(CMAKE_CROSSCOMPILING "FALSE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/CMakeFiles/3.23.2/CompilerIdC/CMakeCCompilerId.c b/CMakeFiles/3.23.2/CompilerIdC/CMakeCCompilerId.c new file mode 100644 index 0000000..26b2f9e --- /dev/null +++ b/CMakeFiles/3.23.2/CompilerIdC/CMakeCCompilerId.c @@ -0,0 +1,828 @@ +#ifdef __cplusplus +# error "A C++ compiler has been selected for C." +#endif + +#if defined(__18CXX) +# define ID_VOID_MAIN +#endif +#if defined(__CLASSIC_C__) +/* cv-qualifiers did not exist in K&R C */ +# define const +# define volatile +#endif + +#if !defined(__has_include) +/* If the compiler does not have __has_include, pretend the answer is + always no. */ +# define __has_include(x) 0 +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, + except that a few beta releases use the old format with V=2021. */ +# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) + /* The third version component from --version is an update index, + but no macro is provided for it. */ +# define COMPILER_VERSION_PATCH DEC(0) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) +# define COMPILER_ID "IntelLLVM" +#if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +#endif +#if defined(__GNUC__) +# define SIMULATE_ID "GNU" +#endif +/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and + * later. Look for 6 digit vs. 8 digit version number to decide encoding. + * VVVV is no smaller than the current year when a version is released. + */ +#if __INTEL_LLVM_COMPILER < 1000000L +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) +#else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) +#endif +#if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +#endif +#if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +#elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +#endif +#if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +#endif +#if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +#endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" +# if __SUNPRO_C >= 0x5100 + /* __SUNPRO_C = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# endif + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + /* __HP_cc = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) + +#elif defined(__IBMC__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__open_xl__) && defined(__clang__) +# define COMPILER_ID "IBMClang" +# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__) +# define COMPILER_VERSION_MINOR DEC(__open_xl_release__) +# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__) + + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 +# define COMPILER_ID "XL" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__BCC__) +# define COMPILER_ID "Bruce" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__)) +# define COMPILER_ID "LCC" +# define COMPILER_VERSION_MAJOR DEC(1) +# if defined(__LCC__) +# define COMPILER_VERSION_MINOR DEC(__LCC__- 100) +# endif +# if defined(__LCC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__) +# endif +# if defined(__GNUC__) && defined(__GNUC_MINOR__) +# define SIMULATE_ID "GNU" +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif +# endif + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + +#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) +# define COMPILER_ID "SDCC" +# if defined(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) +# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) +# else + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#if !defined(__STDC__) && !defined(__clang__) +# if defined(_MSC_VER) || defined(__ibmxl__) || defined(__IBMC__) +# define C_VERSION "90" +# else +# define C_VERSION +# endif +#elif __STDC_VERSION__ > 201710L +# define C_VERSION "23" +#elif __STDC_VERSION__ >= 201710L +# define C_VERSION "17" +#elif __STDC_VERSION__ >= 201000L +# define C_VERSION "11" +#elif __STDC_VERSION__ >= 199901L +# define C_VERSION "99" +#else +# define C_VERSION "90" +#endif +const char* info_language_standard_default = + "INFO" ":" "standard_default[" C_VERSION "]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \ + defined(__TI_COMPILER_VERSION__)) && \ + !defined(__STRICT_ANSI__) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +# if defined(__CLASSIC_C__) +int main(argc, argv) int argc; char *argv[]; +# else +int main(int argc, char* argv[]) +# endif +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} +#endif diff --git a/CMakeFiles/3.23.2/CompilerIdC/a.out b/CMakeFiles/3.23.2/CompilerIdC/a.out new file mode 100755 index 0000000000000000000000000000000000000000..fde29581aae1d60898450fbd4abeea713c30fefd GIT binary patch literal 20664 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 ak0%}SIrrDk%brH|AK2^J7kmajQT;cXcO#+z literal 0 HcmV?d00001 diff --git a/CMakeFiles/3.23.2/CompilerIdCXX/CMakeCXXCompilerId.cpp b/CMakeFiles/3.23.2/CompilerIdCXX/CMakeCXXCompilerId.cpp new file mode 100644 index 0000000..57a7a85 --- /dev/null +++ b/CMakeFiles/3.23.2/CompilerIdCXX/CMakeCXXCompilerId.cpp @@ -0,0 +1,816 @@ +/* This source file must have a .cpp extension so that all C++ compilers + recognize the extension without flags. Borland does not know .cxx for + example. */ +#ifndef __cplusplus +# error "A C compiler has been selected for C++." +#endif + +#if !defined(__has_include) +/* If the compiler does not have __has_include, pretend the answer is + always no. */ +# define __has_include(x) 0 +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__COMO__) +# define COMPILER_ID "Comeau" + /* __COMO_VERSION__ = VRR */ +# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100) +# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100) + +#elif defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, + except that a few beta releases use the old format with V=2021. */ +# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) + /* The third version component from --version is an update index, + but no macro is provided for it. */ +# define COMPILER_VERSION_PATCH DEC(0) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) +# define COMPILER_ID "IntelLLVM" +#if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +#endif +#if defined(__GNUC__) +# define SIMULATE_ID "GNU" +#endif +/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and + * later. Look for 6 digit vs. 8 digit version number to decide encoding. + * VVVV is no smaller than the current year when a version is released. + */ +#if __INTEL_LLVM_COMPILER < 1000000L +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) +#else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) +#endif +#if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +#endif +#if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +#elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +#endif +#if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +#endif +#if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +#endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_CC) +# define COMPILER_ID "SunPro" +# if __SUNPRO_CC >= 0x5100 + /* __SUNPRO_CC = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# endif + +#elif defined(__HP_aCC) +# define COMPILER_ID "HP" + /* __HP_aCC = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) + +#elif defined(__DECCXX) +# define COMPILER_ID "Compaq" + /* __DECCXX_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) + +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__open_xl__) && defined(__clang__) +# define COMPILER_ID "IBMClang" +# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__) +# define COMPILER_VERSION_MINOR DEC(__open_xl_release__) +# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__) + + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 +# define COMPILER_ID "XL" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__)) +# define COMPILER_ID "LCC" +# define COMPILER_VERSION_MAJOR DEC(1) +# if defined(__LCC__) +# define COMPILER_VERSION_MINOR DEC(__LCC__- 100) +# endif +# if defined(__LCC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__) +# endif +# if defined(__GNUC__) && defined(__GNUC_MINOR__) +# define SIMULATE_ID "GNU" +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif +# endif + +#elif defined(__GNUC__) || defined(__GNUG__) +# define COMPILER_ID "GNU" +# if defined(__GNUC__) +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# else +# define COMPILER_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L +# if defined(__INTEL_CXX11_MODE__) +# if defined(__cpp_aggregate_nsdmi) +# define CXX_STD 201402L +# else +# define CXX_STD 201103L +# endif +# else +# define CXX_STD 199711L +# endif +#elif defined(_MSC_VER) && defined(_MSVC_LANG) +# define CXX_STD _MSVC_LANG +#else +# define CXX_STD __cplusplus +#endif + +const char* info_language_standard_default = "INFO" ":" "standard_default[" +#if CXX_STD > 202002L + "23" +#elif CXX_STD > 201703L + "20" +#elif CXX_STD >= 201703L + "17" +#elif CXX_STD >= 201402L + "14" +#elif CXX_STD >= 201103L + "11" +#else + "98" +#endif +"]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \ + defined(__TI_COMPILER_VERSION__)) && \ + !defined(__STRICT_ANSI__) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} diff --git a/CMakeFiles/3.23.2/CompilerIdCXX/a.out b/CMakeFiles/3.23.2/CompilerIdCXX/a.out new file mode 100755 index 0000000000000000000000000000000000000000..ce798a202de1af9c9d1d4d6409a0134b813a1a4f GIT binary patch literal 20672 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 r>wzuDN7j?9>t search starts here: + /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include + /usr/local/include + /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include-fixed + /usr/include +End of search list. +GNU C17 (GCC) version 12.1.0 (x86_64-pc-linux-gnu) + compiled by GNU C version 12.1.0, GMP version 6.2.1, MPFR version 4.1.0-p13, MPC version 1.2.1, isl version isl-0.24-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +Compiler executable checksum: 3e6a47a96552b6758214eb71bda8ede7 +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_6061f.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_6061f.dir/' + as -v --64 -o CMakeFiles/cmTC_6061f.dir/CMakeCCompilerABI.c.o /tmp/cceDWYfT.s +GNU assembler version 2.38 (x86_64-pc-linux-gnu) using BFD version (GNU Binutils) 2.38 +COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_6061f.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_6061f.dir/CMakeCCompilerABI.c.' +Linking C executable cmTC_6061f +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_6061f.dir/link.txt --verbose=1 +/usr/bin/cc -v CMakeFiles/cmTC_6061f.dir/CMakeCCompilerABI.c.o -o cmTC_6061f +Using built-in specs. +COLLECT_GCC=/usr/bin/cc +COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/lto-wrapper +Target: x86_64-pc-linux-gnu +Configured with: /build/gcc/src/gcc/configure --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ --enable-bootstrap --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-werror --with-build-config=bootstrap-lto --enable-link-serialization=1 +Thread model: posix +Supported LTO compression algorithms: zlib zstd +gcc version 12.1.0 (GCC) +COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_6061f' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_6061f.' + /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/collect2 -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/lto-wrapper -plugin-opt=-fresolution=/tmp/ccu3jlfJ.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_6061f /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0 -L/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../.. CMakeFiles/cmTC_6061f.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/crtn.o +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_6061f' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_6061f.' +make[1]: Leaving directory '/home/heath/mk-gint/CMakeFiles/CMakeTmp' + + + +Parsed C implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include] + add: [/usr/local/include] + add: [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include-fixed] + add: [/usr/include] + end of search list found + collapse include dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include] ==> [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include] + collapse include dir [/usr/local/include] ==> [/usr/local/include] + collapse include dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include-fixed] ==> [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include-fixed] + collapse include dir [/usr/include] ==> [/usr/include] + implicit include dirs: [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include;/usr/local/include;/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include-fixed;/usr/include] + + +Parsed C implicit link information from above output: + link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: /home/heath/mk-gint/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):/usr/bin/make -f Makefile cmTC_6061f/fast && /usr/bin/make -f CMakeFiles/cmTC_6061f.dir/build.make CMakeFiles/cmTC_6061f.dir/build] + ignore line: [make[1]: Entering directory '/home/heath/mk-gint/CMakeFiles/CMakeTmp'] + ignore line: [Building C object CMakeFiles/cmTC_6061f.dir/CMakeCCompilerABI.c.o] + ignore line: [/usr/bin/cc -v -o CMakeFiles/cmTC_6061f.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake/Modules/CMakeCCompilerABI.c] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/cc] + ignore line: [Target: x86_64-pc-linux-gnu] + ignore line: [Configured with: /build/gcc/src/gcc/configure --enable-languages=c c++ ada fortran go lto objc obj-c++ --enable-bootstrap --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-werror --with-build-config=bootstrap-lto --enable-link-serialization=1] + ignore line: [Thread model: posix] + ignore line: [Supported LTO compression algorithms: zlib zstd] + ignore line: [gcc version 12.1.0 (GCC) ] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_6061f.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_6061f.dir/'] + ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/cc1 -quiet -v /usr/share/cmake/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_6061f.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -o /tmp/cceDWYfT.s] + ignore line: [GNU C17 (GCC) version 12.1.0 (x86_64-pc-linux-gnu)] + ignore line: [ compiled by GNU C version 12.1.0 GMP version 6.2.1 MPFR version 4.1.0-p13 MPC version 1.2.1 isl version isl-0.24-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../x86_64-pc-linux-gnu/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include] + ignore line: [ /usr/local/include] + ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include-fixed] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [GNU C17 (GCC) version 12.1.0 (x86_64-pc-linux-gnu)] + ignore line: [ compiled by GNU C version 12.1.0 GMP version 6.2.1 MPFR version 4.1.0-p13 MPC version 1.2.1 isl version isl-0.24-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [Compiler executable checksum: 3e6a47a96552b6758214eb71bda8ede7] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_6061f.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_6061f.dir/'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_6061f.dir/CMakeCCompilerABI.c.o /tmp/cceDWYfT.s] + ignore line: [GNU assembler version 2.38 (x86_64-pc-linux-gnu) using BFD version (GNU Binutils) 2.38] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_6061f.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_6061f.dir/CMakeCCompilerABI.c.'] + ignore line: [Linking C executable cmTC_6061f] + ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_6061f.dir/link.txt --verbose=1] + ignore line: [/usr/bin/cc -v CMakeFiles/cmTC_6061f.dir/CMakeCCompilerABI.c.o -o cmTC_6061f ] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/cc] + ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/lto-wrapper] + ignore line: [Target: x86_64-pc-linux-gnu] + ignore line: [Configured with: /build/gcc/src/gcc/configure --enable-languages=c c++ ada fortran go lto objc obj-c++ --enable-bootstrap --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-werror --with-build-config=bootstrap-lto --enable-link-serialization=1] + ignore line: [Thread model: posix] + ignore line: [Supported LTO compression algorithms: zlib zstd] + ignore line: [gcc version 12.1.0 (GCC) ] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_6061f' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_6061f.'] + link line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/collect2 -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/lto-wrapper -plugin-opt=-fresolution=/tmp/ccu3jlfJ.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_6061f /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0 -L/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../.. CMakeFiles/cmTC_6061f.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/crtn.o] + arg [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/collect2] ==> ignore + arg [-plugin] ==> ignore + arg [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/liblto_plugin.so] ==> ignore + arg [-plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/lto-wrapper] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccu3jlfJ.res] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [--build-id] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [-m] ==> ignore + arg [elf_x86_64] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib64/ld-linux-x86-64.so.2] ==> ignore + arg [-pie] ==> ignore + arg [-o] ==> ignore + arg [cmTC_6061f] ==> ignore + arg [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/Scrt1.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/Scrt1.o] + arg [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/crti.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/crti.o] + arg [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/crtbeginS.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/crtbeginS.o] + arg [-L/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0] ==> dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0] + arg [-L/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib] + arg [-L/lib/../lib] ==> dir [/lib/../lib] + arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] + arg [-L/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../..] ==> dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../..] + arg [CMakeFiles/cmTC_6061f.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [-lgcc] ==> lib [gcc] + arg [--push-state] ==> ignore + arg [--as-needed] ==> ignore + arg [-lgcc_s] ==> lib [gcc_s] + arg [--pop-state] ==> ignore + arg [-lc] ==> lib [c] + arg [-lgcc] ==> lib [gcc] + arg [--push-state] ==> ignore + arg [--as-needed] ==> ignore + arg [-lgcc_s] ==> lib [gcc_s] + arg [--pop-state] ==> ignore + arg [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/crtendS.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/crtendS.o] + arg [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/crtn.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/crtn.o] + collapse obj [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/Scrt1.o] ==> [/usr/lib/Scrt1.o] + collapse obj [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/crti.o] ==> [/usr/lib/crti.o] + collapse obj [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/crtn.o] ==> [/usr/lib/crtn.o] + collapse library dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0] ==> [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0] + collapse library dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib] ==> [/usr/lib] + collapse library dir [/lib/../lib] ==> [/lib] + collapse library dir [/usr/lib/../lib] ==> [/usr/lib] + collapse library dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../..] ==> [/usr/lib] + implicit libs: [gcc;gcc_s;c;gcc;gcc_s] + implicit objs: [/usr/lib/Scrt1.o;/usr/lib/crti.o;/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/crtbeginS.o;/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/crtendS.o;/usr/lib/crtn.o] + implicit dirs: [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0;/usr/lib;/lib] + implicit fwks: [] + + +Detecting CXX compiler ABI info compiled with the following output: +Change Dir: /home/heath/mk-gint/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/bin/make -f Makefile cmTC_07844/fast && /usr/bin/make -f CMakeFiles/cmTC_07844.dir/build.make CMakeFiles/cmTC_07844.dir/build +make[1]: Entering directory '/home/heath/mk-gint/CMakeFiles/CMakeTmp' +Building CXX object CMakeFiles/cmTC_07844.dir/CMakeCXXCompilerABI.cpp.o +/usr/bin/c++ -v -o CMakeFiles/cmTC_07844.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp +Using built-in specs. +COLLECT_GCC=/usr/bin/c++ +Target: x86_64-pc-linux-gnu +Configured with: /build/gcc/src/gcc/configure --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ --enable-bootstrap --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-werror --with-build-config=bootstrap-lto --enable-link-serialization=1 +Thread model: posix +Supported LTO compression algorithms: zlib zstd +gcc version 12.1.0 (GCC) +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_07844.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_07844.dir/' + /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/cc1plus -quiet -v -D_GNU_SOURCE /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_07844.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -o /tmp/ccei2Vzw.s +GNU C++17 (GCC) version 12.1.0 (x86_64-pc-linux-gnu) + compiled by GNU C version 12.1.0, GMP version 6.2.1, MPFR version 4.1.0-p13, MPC version 1.2.1, isl version isl-0.24-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +ignoring nonexistent directory "/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../x86_64-pc-linux-gnu/include" +#include "..." search starts here: +#include <...> search starts here: + /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../include/c++/12.1.0 + /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../include/c++/12.1.0/x86_64-pc-linux-gnu + /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../include/c++/12.1.0/backward + /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include + /usr/local/include + /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include-fixed + /usr/include +End of search list. +GNU C++17 (GCC) version 12.1.0 (x86_64-pc-linux-gnu) + compiled by GNU C version 12.1.0, GMP version 6.2.1, MPFR version 4.1.0-p13, MPC version 1.2.1, isl version isl-0.24-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +Compiler executable checksum: 14439460ac50886fda7029a3ce5859f0 +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_07844.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_07844.dir/' + as -v --64 -o CMakeFiles/cmTC_07844.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccei2Vzw.s +GNU assembler version 2.38 (x86_64-pc-linux-gnu) using BFD version (GNU Binutils) 2.38 +COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_07844.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_07844.dir/CMakeCXXCompilerABI.cpp.' +Linking CXX executable cmTC_07844 +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_07844.dir/link.txt --verbose=1 +/usr/bin/c++ -v CMakeFiles/cmTC_07844.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_07844 +Using built-in specs. +COLLECT_GCC=/usr/bin/c++ +COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/lto-wrapper +Target: x86_64-pc-linux-gnu +Configured with: /build/gcc/src/gcc/configure --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ --enable-bootstrap --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-werror --with-build-config=bootstrap-lto --enable-link-serialization=1 +Thread model: posix +Supported LTO compression algorithms: zlib zstd +gcc version 12.1.0 (GCC) +COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_07844' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_07844.' + /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/collect2 -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/lto-wrapper -plugin-opt=-fresolution=/tmp/cc9Olf49.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_07844 /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0 -L/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../.. CMakeFiles/cmTC_07844.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/crtn.o +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_07844' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_07844.' +make[1]: Leaving directory '/home/heath/mk-gint/CMakeFiles/CMakeTmp' + + + +Parsed CXX implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../include/c++/12.1.0] + add: [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../include/c++/12.1.0/x86_64-pc-linux-gnu] + add: [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../include/c++/12.1.0/backward] + add: [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include] + add: [/usr/local/include] + add: [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include-fixed] + add: [/usr/include] + end of search list found + collapse include dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../include/c++/12.1.0] ==> [/usr/include/c++/12.1.0] + collapse include dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../include/c++/12.1.0/x86_64-pc-linux-gnu] ==> [/usr/include/c++/12.1.0/x86_64-pc-linux-gnu] + collapse include dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../include/c++/12.1.0/backward] ==> [/usr/include/c++/12.1.0/backward] + collapse include dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include] ==> [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include] + collapse include dir [/usr/local/include] ==> [/usr/local/include] + collapse include dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include-fixed] ==> [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include-fixed] + collapse include dir [/usr/include] ==> [/usr/include] + implicit include dirs: [/usr/include/c++/12.1.0;/usr/include/c++/12.1.0/x86_64-pc-linux-gnu;/usr/include/c++/12.1.0/backward;/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include;/usr/local/include;/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include-fixed;/usr/include] + + +Parsed CXX implicit link information from above output: + link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: /home/heath/mk-gint/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):/usr/bin/make -f Makefile cmTC_07844/fast && /usr/bin/make -f CMakeFiles/cmTC_07844.dir/build.make CMakeFiles/cmTC_07844.dir/build] + ignore line: [make[1]: Entering directory '/home/heath/mk-gint/CMakeFiles/CMakeTmp'] + ignore line: [Building CXX object CMakeFiles/cmTC_07844.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [/usr/bin/c++ -v -o CMakeFiles/cmTC_07844.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [Target: x86_64-pc-linux-gnu] + ignore line: [Configured with: /build/gcc/src/gcc/configure --enable-languages=c c++ ada fortran go lto objc obj-c++ --enable-bootstrap --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-werror --with-build-config=bootstrap-lto --enable-link-serialization=1] + ignore line: [Thread model: posix] + ignore line: [Supported LTO compression algorithms: zlib zstd] + ignore line: [gcc version 12.1.0 (GCC) ] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_07844.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_07844.dir/'] + ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/cc1plus -quiet -v -D_GNU_SOURCE /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_07844.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -o /tmp/ccei2Vzw.s] + ignore line: [GNU C++17 (GCC) version 12.1.0 (x86_64-pc-linux-gnu)] + ignore line: [ compiled by GNU C version 12.1.0 GMP version 6.2.1 MPFR version 4.1.0-p13 MPC version 1.2.1 isl version isl-0.24-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../x86_64-pc-linux-gnu/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../include/c++/12.1.0] + ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../include/c++/12.1.0/x86_64-pc-linux-gnu] + ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../include/c++/12.1.0/backward] + ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include] + ignore line: [ /usr/local/include] + ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include-fixed] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [GNU C++17 (GCC) version 12.1.0 (x86_64-pc-linux-gnu)] + ignore line: [ compiled by GNU C version 12.1.0 GMP version 6.2.1 MPFR version 4.1.0-p13 MPC version 1.2.1 isl version isl-0.24-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [Compiler executable checksum: 14439460ac50886fda7029a3ce5859f0] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_07844.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_07844.dir/'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_07844.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccei2Vzw.s] + ignore line: [GNU assembler version 2.38 (x86_64-pc-linux-gnu) using BFD version (GNU Binutils) 2.38] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_07844.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_07844.dir/CMakeCXXCompilerABI.cpp.'] + ignore line: [Linking CXX executable cmTC_07844] + ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_07844.dir/link.txt --verbose=1] + ignore line: [/usr/bin/c++ -v CMakeFiles/cmTC_07844.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_07844 ] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/lto-wrapper] + ignore line: [Target: x86_64-pc-linux-gnu] + ignore line: [Configured with: /build/gcc/src/gcc/configure --enable-languages=c c++ ada fortran go lto objc obj-c++ --enable-bootstrap --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-werror --with-build-config=bootstrap-lto --enable-link-serialization=1] + ignore line: [Thread model: posix] + ignore line: [Supported LTO compression algorithms: zlib zstd] + ignore line: [gcc version 12.1.0 (GCC) ] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_07844' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_07844.'] + link line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/collect2 -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/lto-wrapper -plugin-opt=-fresolution=/tmp/cc9Olf49.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_07844 /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0 -L/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../.. CMakeFiles/cmTC_07844.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/crtn.o] + arg [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/collect2] ==> ignore + arg [-plugin] ==> ignore + arg [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/liblto_plugin.so] ==> ignore + arg [-plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/lto-wrapper] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/cc9Olf49.res] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [--build-id] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [-m] ==> ignore + arg [elf_x86_64] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib64/ld-linux-x86-64.so.2] ==> ignore + arg [-pie] ==> ignore + arg [-o] ==> ignore + arg [cmTC_07844] ==> ignore + arg [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/Scrt1.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/Scrt1.o] + arg [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/crti.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/crti.o] + arg [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/crtbeginS.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/crtbeginS.o] + arg [-L/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0] ==> dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0] + arg [-L/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib] + arg [-L/lib/../lib] ==> dir [/lib/../lib] + arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] + arg [-L/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../..] ==> dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../..] + arg [CMakeFiles/cmTC_07844.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-lstdc++] ==> lib [stdc++] + arg [-lm] ==> lib [m] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [-lc] ==> lib [c] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/crtendS.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/crtendS.o] + arg [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/crtn.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/crtn.o] + collapse obj [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/Scrt1.o] ==> [/usr/lib/Scrt1.o] + collapse obj [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/crti.o] ==> [/usr/lib/crti.o] + collapse obj [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib/crtn.o] ==> [/usr/lib/crtn.o] + collapse library dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0] ==> [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0] + collapse library dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../lib] ==> [/usr/lib] + collapse library dir [/lib/../lib] ==> [/lib] + collapse library dir [/usr/lib/../lib] ==> [/usr/lib] + collapse library dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/../../..] ==> [/usr/lib] + implicit libs: [stdc++;m;gcc_s;gcc;c;gcc_s;gcc] + implicit objs: [/usr/lib/Scrt1.o;/usr/lib/crti.o;/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/crtbeginS.o;/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/crtendS.o;/usr/lib/crtn.o] + implicit dirs: [/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0;/usr/lib;/lib] + implicit fwks: [] + + diff --git a/CMakeFiles/Makefile.cmake b/CMakeFiles/Makefile.cmake new file mode 100644 index 0000000..1947e22 --- /dev/null +++ b/CMakeFiles/Makefile.cmake @@ -0,0 +1,46 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.23 + +# The generator used is: +set(CMAKE_DEPENDS_GENERATOR "Unix Makefiles") + +# The top level Makefile was generated from the following files: +set(CMAKE_MAKEFILE_DEPENDS + "CMakeCache.txt" + "CMakeFiles/3.23.2/CMakeCCompiler.cmake" + "CMakeFiles/3.23.2/CMakeCXXCompiler.cmake" + "CMakeFiles/3.23.2/CMakeSystem.cmake" + "CMakeLists.txt" + "/usr/share/cmake/Modules/CMakeCInformation.cmake" + "/usr/share/cmake/Modules/CMakeCXXInformation.cmake" + "/usr/share/cmake/Modules/CMakeCommonLanguageInclude.cmake" + "/usr/share/cmake/Modules/CMakeGenericSystem.cmake" + "/usr/share/cmake/Modules/CMakeInitializeConfigs.cmake" + "/usr/share/cmake/Modules/CMakeLanguageInformation.cmake" + "/usr/share/cmake/Modules/CMakeSystemSpecificInformation.cmake" + "/usr/share/cmake/Modules/CMakeSystemSpecificInitialize.cmake" + "/usr/share/cmake/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + "/usr/share/cmake/Modules/Compiler/GNU-C.cmake" + "/usr/share/cmake/Modules/Compiler/GNU-CXX.cmake" + "/usr/share/cmake/Modules/Compiler/GNU.cmake" + "/usr/share/cmake/Modules/Platform/Linux-GNU-C.cmake" + "/usr/share/cmake/Modules/Platform/Linux-GNU-CXX.cmake" + "/usr/share/cmake/Modules/Platform/Linux-GNU.cmake" + "/usr/share/cmake/Modules/Platform/Linux.cmake" + "/usr/share/cmake/Modules/Platform/UnixPaths.cmake" + ) + +# The corresponding makefile is: +set(CMAKE_MAKEFILE_OUTPUTS + "Makefile" + "CMakeFiles/cmake.check_cache" + ) + +# Byproducts of CMake generate step: +set(CMAKE_MAKEFILE_PRODUCTS + "CMakeFiles/CMakeDirectoryInformation.cmake" + ) + +# Dependency information for all targets: +set(CMAKE_DEPEND_INFO_FILES + ) diff --git a/CMakeFiles/Makefile2 b/CMakeFiles/Makefile2 new file mode 100644 index 0000000..3c11c65 --- /dev/null +++ b/CMakeFiles/Makefile2 @@ -0,0 +1,86 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.23 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/heath/mk-gint + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/heath/mk-gint + +#============================================================================= +# Directory level rules for the build root directory + +# The main recursive "all" target. +all: +.PHONY : all + +# The main recursive "preinstall" target. +preinstall: +.PHONY : preinstall + +# The main recursive "clean" target. +clean: +.PHONY : clean + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/CMakeFiles/TargetDirectories.txt b/CMakeFiles/TargetDirectories.txt new file mode 100644 index 0000000..e8beb50 --- /dev/null +++ b/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,2 @@ +/home/heath/mk-gint/CMakeFiles/edit_cache.dir +/home/heath/mk-gint/CMakeFiles/rebuild_cache.dir diff --git a/CMakeFiles/clion-environment.txt b/CMakeFiles/clion-environment.txt new file mode 100644 index 0000000000000000000000000000000000000000..0b9a66bab4da40aaa523cef36118f7fc35f89832 GIT binary patch literal 56 zcmWH^&(8@?EwNHC)H6`f$jMJm%+d5OD9OyvE4EVL;({@C-5EmjGAk5(6SGs(GILUk E0Ra9Ic>n+a literal 0 HcmV?d00001 diff --git a/CMakeFiles/clion-log.txt b/CMakeFiles/clion-log.txt new file mode 100644 index 0000000..921a4bf --- /dev/null +++ b/CMakeFiles/clion-log.txt @@ -0,0 +1,38 @@ +cmake -G "Unix Makefiles" -S /home/heath/mk-gint -B /home/heath/mk-gint +CMake Error at CMakeLists.txt:7 (include): + include could not find requested file: + + GenerateG1A + + +CMake Error at CMakeLists.txt:8 (include): + include could not find requested file: + + GenerateG3A + + +CMake Error at CMakeLists.txt:9 (include): + include could not find requested file: + + Fxconv + + +CMake Error at CMakeLists.txt:10 (find_package): + By not providing "FindGint.cmake" in CMAKE_MODULE_PATH this project has + asked CMake to find a package configuration file provided by "Gint", but + CMake did not find one. + + Could not find a package configuration file provided by "Gint" (requested + version 2.1) with any of the following names: + + GintConfig.cmake + gint-config.cmake + + Add the installation prefix of "Gint" to CMAKE_PREFIX_PATH or set + "Gint_DIR" to a directory containing one of the above files. If "Gint" + provides a separate development package or SDK, be sure it has been + installed. + + +-- Configuring incomplete, errors occurred! +See also "/home/heath/mk-gint/CMakeFiles/CMakeOutput.log". diff --git a/CMakeFiles/cmake.check_cache b/CMakeFiles/cmake.check_cache new file mode 100644 index 0000000..3dccd73 --- /dev/null +++ b/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/CMakeFiles/progress.marks b/CMakeFiles/progress.marks new file mode 100644 index 0000000..573541a --- /dev/null +++ b/CMakeFiles/progress.marks @@ -0,0 +1 @@ +0 diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..3b7929c --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,66 @@ +# Configure with [fxsdk build-fx] or [fxsdk build-cg], which provide the +# toolchain file and module path of the fxSDK + +cmake_minimum_required(VERSION 3.15) +project(MarioKart) + +set(SOURCES + src/3d.c + src/buttons.c + src/debugHud.c + src/images.c + src/main.c + src/maths.c + src/particles.c + src/physics.c + src/sprites.c + src/state.c + src/tilemap.c +) + +if (DEFINED FXSDK_PLATFORM_LONG) + set(SOURCES ${SOURCES} + src/platforms/gint.c + ) + + include(GenerateG1A) + include(GenerateG3A) + include(Fxconv) + find_package(Gint 2.1 REQUIRED) + + # Shared assets, fx-9860G-only assets and fx-CG-50-only assets + set(ASSETS + # ... + ) + set(ASSETS_fx + # assets-fx/example.png + ) + set(ASSETS_cg + # assets-cg/example.png + # assets-cg/bg.png + ) + + fxconv_declare_assets(${ASSETS} ${ASSETS_fx} ${ASSETS_cg} WITH_METADATA) + + add_executable(mariokart ${SOURCES} ${ASSETS} ${ASSETS_${FXSDK_PLATFORM}}) + target_compile_options(mariokart PRIVATE -Wall -Wextra -Werror-implicit-function-declaration -Ofast -flto) + target_link_libraries(mariokart Gint::Gint) + + if("${FXSDK_PLATFORM_LONG}" STREQUAL fx9860G) + generate_g1a(TARGET mariokart OUTPUT "MarioKart.g1a" + NAME "MarioKart" ICON assets-fx/icon.png) + elseif("${FXSDK_PLATFORM_LONG}" STREQUAL fxCG50) + generate_g3a(TARGET mariokart OUTPUT "MarioKart.g3a" + NAME "Mario Kart" ICONS assets-cg/icon-uns.png assets-cg/icon-sel.png) + endif() + +else() + set(SOURCES ${SOURCES} + src/platforms/emscripten.c + ) + + set(CMAKE_EXECUTABLE_SUFFIX ".html") + add_executable(mariokart ${SOURCES}) + target_compile_options(mariokart PRIVATE -Wall -Wextra -Werror-implicit-function-declaration -O3 -flto) + target_link_options(mariokart PRIVATE --shell-file=../emscripten.html) +endif() diff --git a/Makefile b/Makefile deleted file mode 100644 index 99f20bf..0000000 --- a/Makefile +++ /dev/null @@ -1,147 +0,0 @@ -#--------------------------------------------------------------------------------- -# Clear the implicit built in rules -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- -# Set toolchain location in an environment var for future use, this will change -# to use a system environment var in the future. -#--------------------------------------------------------------------------------- -ifeq ($(strip $(FXCGSDK)),) -export FXCGSDK := $(abspath ../../) -endif - -include $(FXCGSDK)/toolchain/prizm_rules - - -#--------------------------------------------------------------------------------- -# TARGET is the name of the output -# BUILD is the directory where object files & intermediate files will be placed -# SOURCES is a list of directories containing source code -# INCLUDES is a list of directories containing extra header files -#--------------------------------------------------------------------------------- -TARGET := $(notdir $(CURDIR)) -BUILD := build -SOURCES := src -DATA := data -INCLUDES := - -#--------------------------------------------------------------------------------- -# options for code and add-in generation -#--------------------------------------------------------------------------------- - -MKG3AFLAGS := -n "basic:Mario Kart" -i uns:../unselected.png -i sel:../selected.png - -# Optional: add -flto to CFLAGS and LDFLAGS to enable link-time optimization -# (LTO). Doing so will usually allow the compiler to generate much better code -# (smaller and/or faster), but may expose bugs in your code that don't cause -# any trouble without LTO enabled. -CFLAGS = -Ofast -flto -Wall $(MACHDEP) $(INCLUDE) -ffunction-sections -fdata-sections -CXXFLAGS = $(CFLAGS) -fno-exceptions - -LDFLAGS = $(MACHDEP) -T$(FXCGSDK)/toolchain/prizm.x -Wl,-static -Wl,-gc-sections - -#--------------------------------------------------------------------------------- -# any extra libraries we wish to link with the project -#--------------------------------------------------------------------------------- -LIBS := -lc -lfxcg -lgcc - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := - -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- - -export OUTPUT := $(CURDIR)/$(TARGET) - -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ - $(foreach dir,$(DATA),$(CURDIR)/$(dir)) - -export DEPSDIR := $(CURDIR)/$(BUILD) - -#--------------------------------------------------------------------------------- -# automatically build a list of object files for our project -#--------------------------------------------------------------------------------- -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) -CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) -sFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) -SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.S))) -BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) - -#--------------------------------------------------------------------------------- -# use CXX for linking C++ projects, CC for standard C -#--------------------------------------------------------------------------------- -ifeq ($(strip $(CPPFILES)),) - export LD := $(CC) -else - export LD := $(CXX) -endif - -export OFILES := $(addsuffix .o,$(BINFILES)) \ - $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) \ - $(sFILES:.s=.o) $(SFILES:.S=.o) - -#--------------------------------------------------------------------------------- -# build a list of include paths -#--------------------------------------------------------------------------------- -export INCLUDE := $(foreach dir,$(INCLUDES), -iquote $(CURDIR)/$(dir)) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - -I$(CURDIR)/$(BUILD) -I$(LIBFXCG_INC) - -#--------------------------------------------------------------------------------- -# build a list of library paths -#--------------------------------------------------------------------------------- -export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) \ - -L$(LIBFXCG_LIB) - -export OUTPUT := $(CURDIR)/$(TARGET) -.PHONY: all clean - -#--------------------------------------------------------------------------------- -all: $(BUILD) data-headers/*.h - @make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile - -# Don't know what I'm doing here -generated_lut.cpp: /home/heath/ti-mario-kart-py/compress.py lookup_gen_config.yaml - /usr/bin/env /bin/python3.10 /home/heath/ti-mario-kart-py/compress.py > generated_lut.cpp - -# Still not really sure what I'm doing here -html/index.html: src/*.c data-headers/*.h - emcc -D FXCG_MOCK -D EMSCRIPTEN -Ifxcg-mock/include -g -sSTACK_OVERFLOW_CHECK=1 src/*.c ./fxcg-mock/include/fxcg/*.c -o html/index.html - -browser: html/index.html - emrun --browser=chromium --browser_args=--auto-open-devtools-for-tabs html/index.html - -$(BUILD): - @mkdir -p $@ - -#--------------------------------------------------------------------------------- -export CYGWIN := nodosfilewarning -clean: - $(call rmdir,$(BUILD)) - $(call rm,$(OUTPUT).bin) - $(call rm,$(OUTPUT).g3a) - -#--------------------------------------------------------------------------------- -else - -DEPENDS := $(OFILES:.o=.d) - -#--------------------------------------------------------------------------------- -# main targets -#--------------------------------------------------------------------------------- -$(OUTPUT).g3a: $(OUTPUT).bin -$(OUTPUT).bin: $(OFILES) - - --include $(DEPENDS) - -#--------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------- diff --git a/assets-cg/bg.png b/assets-cg/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..827630eba9c02a8e78ea93a3e6def25a0186a1d0 GIT binary patch literal 12857 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%0ABDOaI{6n8#gHkNBH`(c&Oqf)J1sA>i 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%0ABDOaI{6n8#gHkNBH`(c&Oqf)J1sA>i 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

ml-ZGUQ!J<8~lL}czHzw8K8O7Ms^xC-u#(B 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 literal 0 HcmV?d00001 diff --git a/assets/img/boost/1.png b/assets/img/boost/1.png new file mode 100644 index 0000000000000000000000000000000000000000..051705bf12d89d408f8b03d24012db7599696e9e GIT binary patch literal 662 zcmV;H0%`q;P)kfIc;6o_o1tc0zsf4c;t(|-^a3#ZWwsQ7W*FL zX2B1SMF90rPmKXfr7tK4pitb)Rb8TJq^6v7&OO3p!I=9bm}tHzM$bJ#W8dCBHDKC{?QH$$=0RR9107*qoM6N<$g6b$K^Z)<= literal 0 HcmV?d00001 diff --git a/assets/img/boost/2.png b/assets/img/boost/2.png new file mode 100644 index 0000000000000000000000000000000000000000..1c3b89d4bf42ebac221c84d77b559aaa23f085c4 GIT binary patch literal 757 zcmV#5kFn=_>oTn(``v)L)(X5&W{BAnE>JLeRA} zXP8Mp<|l}5ud}ZXH+3NF0JCQTxWI!Tbw*A2MARP6!^#XekwgA2pBp8{% z!3>dT#Bw$V0H^Cf&*5Fu2pA1g55j;@Bmit?NNM1Naa+HlO`$lTHpvY3rxU@6Z0r|{ zL<(Q5pM$gMd<>{UQIaux7@RPTAcOgUF&{8$kyf1Vm%=xK=xLLTN}!vb)Qt-~KrD(F z32SUe+sf!U9PJj;gS6AM>?9LQG(Z@sO_{jB{sj~aloVL82Fp(}P9%^OYCa1G?}tsf zm@uGN9H0<5nd??uZIo(37t7-m{(VmH>^4!lsPBc+NUA|Sh%WZKgXpFH%1$y8+uKi7 zx`5=g1oRQCOEMLXYO&N`c?6#%$uv8QK3j5e2u@e64ZB6()Nsz{f+VA^CIGR?BVXz? z-RK>*BZr%uWP;I?=h1r|)pplkwIbEkgxSO3h^aUZAufnY$~J4`tB@3|e_xv_pspqW zj3X%PvRI)Cmh}{vv~{**xi!E?v3W%wV25NRJ=tIAs``WIm-ATxbw%$J%n4U>QD3|!viCHX~Kl`hk!bjo{<%BW21GNoGo!e7A^C&~~A zk`P5jbnbS>ld(fC76eF&pn!h~)PauHuoYP!9@$B=cIrU>vx%r8Qd&}4ot4my@wP|6 zsxK*88x>AO9cXXIrHz~>iC-lKxsg57RoW@Bl^uQRKsZld2GMzh^G0h&lJf?RF+DlE zY6Ll<8{uZh&Ws$w`8{wJ8N%%k;dId`>~m0aM2TodvI)_MMQo?+KBWw)>G6^_Ru$ec zZu7cqQkJ5N&}|=mwGl zy1;9C9;R2(9)#2MLeY;j5yqEth+WD$$xw?na6b)9HoE|%~oNjA2koFog!w!hR%g+&w(EH zjh?6Ij;DLmDIPGNJOK8{Axnkyi%Z{zup^2HTU&1)*~s!ns8hjNpCT zGn`sr_IL+yu`M*V+a;}XrB$5~uVGpc^!41Lu$-;K*l0f-m$ufAV8w*UYD07*qoM6N<$f^^x1mH+?% literal 0 HcmV?d00001 diff --git a/assets/img/boost/4.png b/assets/img/boost/4.png new file mode 100644 index 0000000000000000000000000000000000000000..46c11d7c100704276e174ac2629d0a0b8bc954e4 GIT binary patch literal 577 zcmV-H0>1r;P)`W$3K=uk@ zNq_(V_6ds&O6@(cnX`Sux=;AK_J%D%c~Q<``@{)ROb<+v&|{Tr3Cf|w89+=l5-{)Y zCFo${->no)cu`J}c_jqx6BY)Te*fF-OBkgkz1bD;${D^r;<;q_B=edmW?$=nqS6;4 zd^XEX@E5!V9p0nnMoAmIqI+K(XGw0$!KUA_2zr)BWm#(Rl=bsX|yc7UtH&;gr3pL0tn{G8leJ9R>19(!-g95^qg%?t= z|5A&QxPGw*qDe+t5L=qbWHUS#Y3GQA*Kx3l5ge&@3jj;0)X^iz)6(+-Zvb zBmy-nWQ{QVOw4;x#U9jQ(_%Ng9%12I+OFV*h;o`8Pz_gpR}E-(Jaz=pA!v=?_>6tg z+##Y;RP9QPWU&(Nq{|n(&?-)z5w5D8Nzb$U!)Ni?n>Vh$*jr5@VVeante-ip9)`+o zdU#0Sf(oc36-^R~9eUKT?WswVkgNxDh-$#d^_kfZy`OY_7#iwGk8=0}M+85uj>$!0 P00000NkvXXu0mjf5O)0d literal 0 HcmV?d00001 diff --git a/assets/img/countdown/0.png b/assets/img/countdown/0.png new file mode 100644 index 0000000000000000000000000000000000000000..5411e66835c962635b6fe62ea20c4006c26de778 GIT binary patch literal 12034 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 bFQbOOr2gMYEcWb8P8q=1z(T)C&znTinb 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 CzQXnZ literal 0 HcmV?d00001 diff --git a/assets/img/countdown/3.png b/assets/img/countdown/3.png new file mode 100644 index 0000000000000000000000000000000000000000..c9267b619ae190b612086f16b645ebc9331b6ad0 GIT binary patch literal 6937 zcmZ{pcQ71W^!Jxtov^IlduR0;7OS`DvQc*R5K*F+SiOW0ogfI&Sww;at4EjUB9Dy{ zEjqDEc=MZg=AC)pnRo8o`<-*{eC|1a+&OdR-sA@+x>V#WRu1p1Cmq5GDWspyL35tA8%^HUJO^1ps!D0D$tp z0~mdaI?Yu7Z4f&d>cRnc|1(Ovso{B_faFNpjH59mq#QffRfb18mrIsRWVZCB`aZlj( z@M2gwv6ho8t3C_{V^qLmDY^Px(LXtm8`AyQ@v{Ka;6QuR;)^Bq|DJW$g=05P!Nrzo z>S~9UW|5OM7CwJ>LrX3?y80x20i&DJJY1T~r0#@OwVE!WSfZfxCfu`*~PSUo@ z5N2K`aCumCwOYI$O!?y(GAi|sCL=Zyc=zgoM4p)y0M6$_`GyhSp0vT%3z^ar!aTAH zPW~d3v?AU|F(fmkd#>3l>8NOC?8DVPuIkdd6#Ew(b$}=8b;=&wT-vJbWZU2YPeQ;o zR%5fZ+R_~+F)W<=l=Y+UV+hEcbSaI15vY@09U?@q1`LxpG#7(u|%9BCmO zFz_XDH#wW2)1rFwi%&jXMO`YKrS3@nF2k4Q!P}&rVfWrPIHN6<6OUB|FK5ezVC=5c zeHKEJJS&MOPz;Hyf+mO!dc9<{2R_IUwC$iZlpu;*)xM;~zz2?Y$4q^~aO9WD@ePE~Lu}K@2(T`cPH;gW$)!sC z8{j#j(V)|!m5bc;7cLIl|gH7m=;?BFm#ZYbxV>=z5?MSxP zrL`mWzMPN9J^dKDxSe!qb`=y8n+YPQ?-0<6Xkk{#aOQoW)FUDZ~d-9E`an$va)MSbZC1mfZGMSSKN3`4sH5iz9#^XAkN` zf_OM4(XCu5EE)~`DYM|lT1x}X4xaIWiq{fk@hwoyn&p3?qj{v}4A2?mP1nAroPGj&elEtI}}x>XQ8P7;dCZrTJ54 zxup}(BUruI5gCpLel;sHr542c+NV1Xa|Ef=Rkcp*!)9cR7>KRj$KIzW;3pJgn&G-* zg=qK}ssQ1=Xvq{kIE~O{cBLq9+`0W?U#!Q4GFmFmIhvLFPf=F^l;oQDd9F~-SoP#+ zp4y71cWlzxT))Vp!`twu*ITX7&0!@c%K0XY*iPD)ilT=2HsssI9wM%g0B(FzXLML8 zM>$8e#w^#`U_ZbiA~k*ay$W@#JLO|_IQa##pEe1E^?}cAbRmG^qP=eXd1#R_D|`a> z6P&WLK>y&=dQ-?+chk3=0@Oqj>Pd1-wf%8KDEpXfPAai@ z*(um#-hFA?WyHj8zI(_%%o^4Y zKrd*y83xcvy>&f0k$15k!wB>yP2C6s*jZc`qx0Gj7l~aUBBtq|+<(-uH)NO};mVsx z)mLbi{u9NW7wo8ri?braP_1Ij_{5tvz<`)#WduDu&^poyRD9orO`o?^#P3K&pur~b z{d&WecHE#!^Up(MOayv&q=sA}p&<5tmd`yz3X*EW0LX|ds(R7Trh2;Fu<~qXaB*#> zp84Fijq)ly&gkW3ZgnSj(;l|KB5|O3c!`dMucUU|e!TPUjm%BfphrZika=WM^%>#2 zXZKS|Y$u?g-^z=pmu{u5sW-&_fxtXM#^f(+h=#t{VEYO7)%z3{k%j%ksxNIND9_0Y zEF%&mm|8u!AOjUC$vLWTbQ_0yzF!VI`>l!n%OF@MBuMalM_fN;${)8+p=L2t?n*k3 zeinTSPjwVC@?Q|oYu>#3D{Nn2^RTDSc^@^sPzkyvcv2Y4aRk!k=~wO3==Ty+{1XUA z@?O$ziGfRmQC0Fz{mj?~0qQ?|-48v4>B%SwI3ZwxKcB~kSS8(tTNPwx?cFD;hg;OP zzr;SinLStXCK@N>YsJNf#WuvpT;VQZ1)=bI$ z&e5SYaC5Qu%hbgSbCLZN7CNHz`E(SPqB3#uc}n$yE)&%#ea;PKEQo6BF`Maoss(Tc zCCQ>I0<6mbF#-VJz;7U(hvae7>-C1@wy9K%#da(+ID$C}*Ka$)ovF#kuKo^YPRh&`JJ1i71ZHaU zCF*hTajHAUQQm@E&SY?#QcI}Xjv1kB2S(6^cBWaKLneQy`WxbbBLm(U%3RpX@7QawGRYH>4?%FNpDzoS;+$176ib z=y@)31(VEIK^C$PbmNZA^c}D$V!ZEZB;_#EXyf1wnrgR8F;nJRT zxWNp;lx!p43XIl_NuwnJQKX$(sivNIV17=XxoHDj&S_GqFm;hmQt`3u8Q3<6AtV&? zh){x3wL4*V21`|)`E*ZE#h;}T@%owH#3|nJGc2E#f{|L{JLfFVmr|}o ziit5yF0XA&K$v{K4e*v>^TH~yiqK)TiKkA@G+&LpL6^$mVv&qR8%e~j_~X@>k8Ua7 zmv|wY`CU)?`MMK{L869{mr`cGOA%?m8sE-ut~{bJ>&K)`S{J|IvVGxB7(w!O>0g3b{Z3(`OTcpU}b$n|1JFgKs$ z>|Al>ofQfogtr#n8J7<0EU%tizgQj5ebi%w2*&usZPhBo?r}j|3HS#{{3+Zz4?ILY z&6?PmZ)j2@Xj@{NcU@E@kaylrj*hJYoE*}iSfJhqQaq*8q>cKKoS4%vXWyY6NiPqr z|6Jc}LO^XUNjK?DFj%Y2e4|XIdxAIE(O5SqW^RmUC|9WX;Zf~~h`hCzS_VDii`4j> zd32_>{}}2_Z2M09NSdtUDaoxMMy}(l8$TnP6DT&GFAH*1g}sE4OC=xM6L%<*;tjec zSyl|rAYkW|8M>A0*t(EEw};c;AEC~Zq@^EJ-RDHr4`kN#x*3qltIUuGa!wSZQzKcF zU+Ou$A-KJVe};7Q50J?cy~HO%qzlAy{FAE@Lt`6WiX)aJYA=_AkhB}42rGG}enhlS z42S3twAo$owGUoeR{-?f>pNhd@?AL3 zYrWgNX4+AxXG`c+>cBT7gAN%9r%3qlr<>ZULSJ&npvTkXmoy{&rKv4Zih z`L-YolIzW;>mLP9X{tQU$=7S{)Fj}OBjt^{_hYy{Q!#+rx02M+!d1G=RbYl^1TTeH zrp_&WWrxiWJR!n~Xjqf?oozhzoTF`*P~n6h&*cC*+#K7;9o{F-jUj)a63QI31iYav zc@4s?N=VwfEyB0s^9Hn&rIiaT`>j1-n<^#YwWK-EjTi<&+crc2zm47A>Ff5<9aCnh z8fg6q{;z`H*lO{FsHAEN6R>f7-aZkKtD)T5 zeXi1L0mQ;keS;4xAH9u>5flkv|E+ZO@U1JEb)7Yfp;Q7yqCa$XRl8Q;Y1105C0G-+)c_Q>+3A+4~SjgB*)ts~Pz-lV@@QBA+OZa-o3=zZgn?kO| z& z#QW-}voON=>`W6=x^92q`K~M%N2BSGQxYSmcv3FUBH<&i2Ss`1C7%v2mUsRi8mj&FfwT0fOsdjuDMvZ1NuJsRmm-r7=I&L> zRoc$b)mt~TJJ3uDundIu-BJ4%G4;<5cs=QS3j7##nof3czi$`(GtZi=E}`rbFlN!r z8UE^+B*|dCy(P+|t=4`X(We&$SfR|dyZf2{irTyur4Y*0-r%YzuVXwLJ?7Tc0~~ z{d1bTnQ-n5T_L%wZ+8K@(vP`{=oDjBD{?9~Q zmTFF~+iR&JW?*4pXo_{^IwoVDtoD14uB9k2(*n=r=NV9^-~5i>wn6?{JAkxE^oTvV za(?{Q@1WzdZskwIsqkTBhE-y(nHOc<6|%VsM6c}*5g(Gt0DmEU{w}o`4`!Kz*;X8> zbo)Sgn4C*MjaF?S??@Nx;>mF%mGd3t56G`EorPZ@9y(u*Zag5x1mb80h>G(u@1W?4 zao}p!K;~W-_V_5F?U(V3Uw<|zx`d+0ibQyZ5MwV)pQ6Sl9GxQ;7_K_SonsR!fzxxu zx0HG{y`d=3!-|ZcpiHxj<+t$4ANc+Lq-`JDI>(dLY@Rw!!vBbnpcXA3=iL!!z4TQR zHPP1An&LuP?SN{u(KjrchIGP{=hT(<3a@q^rXRLFF#a*Y#iGZJ zj4}I-dm$0)>d4xr7XMl2Ck4=Hs!K7ZqSeuwdi-Mpj54!swYyo)Qi_E zN+ISWnZL58&HyHAwN5qYqAmN)^L*Y;?$<5PcC9yIj!aay(zEBj=Mb4dLDbKHZ!Z?m z%jed%F37vyl4S+D2}5Y&dhb5}`^ziQ#oM=09I0jmK~a$O6B=`^1?jifeI@Lzh33T&WQV8(|d+b23>OlC@xI~DUk9f zMIk@vb?ZYJ4LH&s86SjadxSCeu1Ucx1|}>yy7yF6Kb;Fmx4fZ`P54@bGBe3a$Zt06 zled$3ER4anm{VMS#EIX@Zd^TR1N(l`+(DY|y-xeZpMO1hONMW98t;@F{>#Ar(;^`C zj(0yaqqBSl*S%ru9}1HgasMF1AVNsL5UlCE7W%brR`3HjpoyzKC-mue0glh-o++Q+ zl=jf+T&X66$2ES=^yHH&)lMG!Nt@*LPMWbkZbh0&iF4VS{}LI+dz8Z<)3au}T2XB! zsxPq`4!JcO2(YROHV@mdcpp!_#;E$s`>i{y(^pi-$uXy)KQ3`rbzqEZEmm;R#IW*u zp@yoYciwp6_;>%uR}DroD`w6W-@mPrEqz`Kq`)T|S2gm_s8O6l$&@q65dA$!!T-l~s7A&fX0R^C zwiUQQrlF}}^w~L)pi_+h@m7b;_s|o^;8*7;K4+#KlUAX_pVwT^izt2$mT;I=N3%DT zo3(hwMrQ{OGZPWoxGSBIG!kW>NcRb2|Mj$EOVS<)`T_%Y+Nugd8-QT>AN&gL*vK>@ z`=p!d{o@~P9Of3|Qcll)2#e^r3y3M>f zp_XZLX6-$Aq)*ZuCnfFfC1|?FRHnl{&+zN_`!C`mpT5UyD-CKL325+8liJ;F!)4^# zYwa1)q~*IS;R8yjfa189C2632TbX)HMXoXn31JT5{#KwDo;falWh@$7 z%8FsY0FIK3Jy9$_>>)aU0uuZgjEF(b87O^)3*$s^M(DoN1)eEKO*Q*~Yu{904zXZP zRlWn~h}-%E#CKo(Lh~Cvov(kliss+Zm3tq`u!@Zw!Ww`x+VGPs_QeF`AR}s<&*|f! zF?I(AM!fak7A&i=a)}8Lcs;8!@5_EK9r!SdQz?FDWVqTS;DhoMMaL zir&bY&&JrU9FuykquVQ>&7hg~8%MW(P4W`MaqF75AIKe8*@Es-mcWb}C$OPxJR30r z_k!*~sw71u%C6>0{&i~l{O5+V{Vq+zOv^ZA@x+dk#7dUSq=KgR$~Ye(Ynk5#TbiRq z`O?JCSAYaHVy#2dOeV+PHruFMr0Mh&owyc;=o`)&Co-G4%f@Z%CoveN{-Gq~bSpLD zt895=Wu*rLckC-lot7khgo7Im)pQsUE5lbzl8&paNZE(DWf4!&gSIemgH74BdjB_5 zv_7zt70-$7_wnr!f02vnW%)YIQp$;E@NHR6s?oho!F4ocm@YV*(MuA{y;*)#tYy6-m%U5ZjfOm}=b%{xPBorN-{fbRri6z^Os{GtJH-k> z8Z!C&E#_Qxc~m_Kh#S&=JQQ6!?l(fRLtxx7PGQ4DmP$eEnrW}k4cN&cj&&$?`?_qf z(JoourOPihM74J1m>r$FEOEISn+rX0q$X$Dd>-HP;H;&zLAS+gs_evwz|jHzKF0Qe zx@I{|GwS!xU@fO$9a>V~vdU4r^(Gezo-D-yv5G6yk4uk3vu0o(=bCvtwZ8wL#X@0q z_E_?&*Q=xmx)4sG56bb)L>SkB`3wVQk*o*BabZN|Jop*pMfv&Tf%#H|&c%W5i*T40 zWB-}vwn!{v_+FR1;%`FRKT-=K><8BP`_WrOdYm!;I#>ZFSdFEDd8Q3;fnaaT?x;DU z@O$RGhVxy{vf`{oqENs_9b<8xS}jbG>Nk-J@LU?yHGT0K=T6|DeIAJg>K~OBe2l$( zJpB!1SYewgh2tgMqtC^4vI#`V!>D~0v(yfh#oclXC*8dCdP?RBj0oN&)pt!Q5Z8t2 z)eeEgjiLEHh6#j^H9QRj8~ag&)QYq=ny=ZyK+sXULMH@#e*MEQy`%!c#_^%cKaKzi z8@!vH%?6^Dv(Fy*9>#Ym{R61Oj$erBw1YiC+7 zGnPQ#QOi%peG0d9`S0I95PyKSZGa0Zz*X7V-}RpWq@mK%;!p)~sG_Bmtg@W6vaFOS z6sin`g1_ij{a=8$kIQ4X(EmSx%sFQL2MGP22mz11U7rP@ynX*)Mo}3m`@e(ynMOVM P#{l%TP2i21$e8~Hh#JdQ literal 0 HcmV?d00001 diff --git a/assets/img/fire.png b/assets/img/fire.png new file mode 100644 index 0000000000000000000000000000000000000000..41d9df2127ebeac1cb8186050a07c34e77656f03 GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~q!3HGX7W?Z1DVAa<&kznEsNqQI0P+`jx;Tbt zOk6wZH181w9+$Zp{8J_g6)h2&J}s!|j!+Pn`8S4heFx9EcdDvPm}#!ev(#heyldG4 zk>x&Zi@g)C{ta$;-m*YM^Kqq3v4CJxVZNKsM597momwfzmZ@!lod%mYcIt8GsRra9 z$ldP$CG)pL;rg5GJCkoIPFmDj!@b0N!4bFCl{1#Dy%U&hQvZmlkL`rKve@Cef8DVM eL<1fy`pYPD+Pxu4M(_{Ntqh*7elF{r5}E+8epJf< literal 0 HcmV?d00001 diff --git a/assets/img/font/0.png b/assets/img/font/0.png new file mode 100644 index 0000000000000000000000000000000000000000..facc0f60f3a621887d4c5f29dc4dddba48bc0da1 GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^JRmj)8<3o<+3y6TSc;uILpXq-h9ji|$oKVhaSYLz zxOCz{E(QY*r_%rb&%YJBs&?hs$_J832LgCDn@YsmdKI;Vst08foH0ssI2 literal 0 HcmV?d00001 diff --git a/assets/img/font/1.png b/assets/img/font/1.png new file mode 100644 index 0000000000000000000000000000000000000000..7c8607b256ec291bb11eef68cd62512b3a422913 GIT binary patch literal 137 zcmeAS@N?(olHy`uVBq!ia0vp^JRmj)8<3o<+3y6TSc;uILpXq-h9ji|$anB`aSYLz zcy;1IE(Qe-=lPfZ|KBuMX#&snwX&)H$JiF}bUdoN!q9P}C-NohfvX<(e$Hy#H~YHB ieCE{)_iVdzCsdd-npOJDy5LrzSqz@8elF{r5}E+!9WD9* literal 0 HcmV?d00001 diff --git a/assets/img/font/10.png b/assets/img/font/10.png new file mode 100644 index 0000000000000000000000000000000000000000..881ee28e13fb3974e373d3a4037c214790c85dab GIT binary patch literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^JRmj)8<3o<+3y6TSc;uILpXq-h9ji|$k+FDaSYLz zn4BO{(lD{H@u9t#;hcufMj-3||NlJy|1W-hcyZ%5KP6TkC;JO>3=H+B_?hHR3QYrQ OW$<+Mb6Mw<&;$U|>?4~1 literal 0 HcmV?d00001 diff --git a/assets/img/font/2.png b/assets/img/font/2.png new file mode 100644 index 0000000000000000000000000000000000000000..f1a3786db4e8ec298273537997a12c62b9ddedd7 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^JRmj)8<3o<+3y6TSc;uILpXq-h9ji|$Pe{&aSYLz zICY|<&;bPwX7j)Q=f7MU+^oDvMuu-Ti-4ZDgN#9>z{YDHMSKnE>A7z8!F^9w#$T$K zqy1p%g4Vs3O_%vtZ8rbj?8nyhY)z=o_sf|}URN>hTCc?Qao!(ypal$`u6{1-oD!M< D@sBiR literal 0 HcmV?d00001 diff --git a/assets/img/font/3.png b/assets/img/font/3.png new file mode 100644 index 0000000000000000000000000000000000000000..8416cdc8cffdfe72bbf163f33525bd5e6d927884 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^JRmj)8<3o<+3y6TSc;uILpXq-h9ji|$Pe&zaSYLz zxOU=gE(Qe-=j|{4*WZj&O4Cx@a{Zj1&;=338;@gTe~DWM4f#5^PxpO*5V)a?SR#K5NIg@$t)dT|Py#wGX<*xoiq5Gh^sVkDKUuN@Tx9 z_Ce;EdpSc?TMe4qUqq#H1iz6{GOS;{>FnQok3^-6T{T&3=4PJ&TEO7x>gTe~DWM4f D5&JTM literal 0 HcmV?d00001 diff --git a/assets/img/font/5.png b/assets/img/font/5.png new file mode 100644 index 0000000000000000000000000000000000000000..a101fff997da95250c2af9c7e3e3f27234f08026 GIT binary patch literal 151 zcmeAS@N?(olHy`uVBq!ia0vp^JRmj)8<3o<+3y6TSc;uILpXq-h9ji|$oKPfaSYLz zxOSo=AA=$X^YUZ=>m~KqUG(6X@s`trn{@#P|llHkNv`6>v=}6oE@j|s$<*zxIANC6mdKI;Vst05sPwrvLx| literal 0 HcmV?d00001 diff --git a/assets/img/font/6.png b/assets/img/font/6.png new file mode 100644 index 0000000000000000000000000000000000000000..aa2e39ab92cd4b4816284bcba1015541b3d002a5 GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^JRmj)8<3o<+3y6TSc;uILpXq-h9ji|$Pe>$aSYLz zIJe)Ek3oThdFB8A#&SI@TOM3;X})z(>669;>$Uf!jaO$`q&pZ`cQ9qAGe+E+`0*MK z^QQNn%xj#v8KQ&tJ!G5XlDQld~UtM~Mt7*!f46f;_3VbG_9Upp@gt8wnj?{Ov6mbaJ*2qwC z`_;=eEW2){-b&N(+Wu3#s%ZOxCw5Hd?%IB-{&v4SO8)EEHkKS+6wCuC`S33t*{W>3x07yo14^%lgTyr+H@1X35sEWjo}AE-_8} jklQ{prsk;A>Whq>c?L`t(|2b8O=IwM^>bP0l+XkKX+bJL literal 0 HcmV?d00001 diff --git a/assets/img/font/9.png b/assets/img/font/9.png new file mode 100644 index 0000000000000000000000000000000000000000..5402c4ca5519b5061997b1cd43fc34939187e7e2 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^JRmj)8<3o<+3y6TSc;uILpXq-h9ji|$Pe{&aSYLz zI5)tN?|=eN)6xI+Gi7_0S!KPl*eVt!u!F^UEmyt>6T{2Zis5?xDe6hjPw^(+`zcfN zJG)+o@mc$^Cfky3U$wsC*#~pxuV_iTr7}%sd7pSrlB|e&z4m6H1q`09elF{r5}E+m C%Q2z= literal 0 HcmV?d00001 diff --git a/build-em/CMakeCache.txt b/build-em/CMakeCache.txt new file mode 100644 index 0000000..7448a8e --- /dev/null +++ b/build-em/CMakeCache.txt @@ -0,0 +1,379 @@ +# This is the CMakeCache file. +# For build in directory: /home/heath/mk-gint/build-em +# It was generated by CMake: /usr/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=/usr/bin/llvm-addr2line + +//Emscripten ar +CMAKE_AR:FILEPATH=/usr/lib/emscripten/emar + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING= + +//Enable/Disable color output during build. +CMAKE_COLOR_MAKEFILE:BOOL=ON + +//No help, variable specified on the command line. +CMAKE_CROSSCOMPILING_EMULATOR:UNINITIALIZED=/usr/bin/node;--experimental-wasm-threads + +//CXX compiler +CMAKE_CXX_COMPILER:STRING=/usr/lib/emscripten/em++ + +//Emscripten ar +CMAKE_CXX_COMPILER_AR:FILEPATH=/usr/lib/emscripten/emar + +//Emscripten ranlib +CMAKE_CXX_COMPILER_RANLIB:FILEPATH=/usr/lib/emscripten/emranlib + +//Flags used by the CXX compiler during all build types. +CMAKE_CXX_FLAGS:STRING= + +//Flags used by the CXX compiler during DEBUG builds. +CMAKE_CXX_FLAGS_DEBUG:STRING=-g + +//Flags used by the CXX compiler during MINSIZEREL builds. +CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the CXX compiler during RELEASE builds. +CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the CXX compiler during RELWITHDEBINFO builds. +CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//C compiler +CMAKE_C_COMPILER:STRING=/usr/lib/emscripten/emcc + +//Emscripten ar +CMAKE_C_COMPILER_AR:FILEPATH=/usr/lib/emscripten/emar + +//Emscripten ranlib +CMAKE_C_COMPILER_RANLIB:FILEPATH=/usr/lib/emscripten/emranlib + +//Flags used by the C compiler during all build types. +CMAKE_C_FLAGS:STRING= + +//Flags used by the C compiler during DEBUG builds. +CMAKE_C_FLAGS_DEBUG:STRING=-g + +//Flags used by the C compiler during MINSIZEREL builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the C compiler during RELEASE builds. +CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the C compiler during RELWITHDEBINFO builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=/usr/bin/llvm-dlltool + +//Flags used by the linker during all build types. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of compile commands during generation. +CMAKE_EXPORT_COMPILE_COMMANDS:BOOL= + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/home/heath/.emscripten_cache/sysroot + +//Path to a program. +CMAKE_LINKER:FILEPATH=/usr/bin/ld.lld + +//Path to a program. +CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make + +//Flags used by the linker during the creation of modules during +// all build types. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=/usr/bin/llvm-nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=/usr/bin/llvm-objcopy + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/usr/bin/llvm-objdump + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=MarioKart + +//Emscripten ranlib +CMAKE_RANLIB:FILEPATH=/usr/lib/emscripten/emranlib + +//Path to a program. +CMAKE_READELF:FILEPATH=/usr/bin/llvm-readelf + +//Flags used by the linker during the creation of shared libraries +// during all build types. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_STRIP:FILEPATH=/usr/bin/llvm-strip + +//The CMake toolchain file +CMAKE_TOOLCHAIN_FILE:FILEPATH=/usr/lib/emscripten/cmake/Modules/Platform/Emscripten.cmake + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//If true, we are targeting Emscripten output. +EMSCRIPTEN:BOOL=1 + +//Force C/C++ compiler +EMSCRIPTEN_FORCE_COMPILERS:BOOL=ON + +//If set, static library targets generate LLVM bitcode files (.bc). +// If disabled (default), UNIX ar archives (.a) are generated. +EMSCRIPTEN_GENERATE_BITCODE_STATIC_LIBRARIES:BOOL=OFF + +//Value Computed by CMake +MarioKart_BINARY_DIR:STATIC=/home/heath/mk-gint/build-em + +//Value Computed by CMake +MarioKart_IS_TOP_LEVEL:STATIC=ON + +//Value Computed by CMake +MarioKart_SOURCE_DIR:STATIC=/home/heath/mk-gint + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/home/heath/mk-gint/build-em +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=23 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=2 +//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE +CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/usr/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/usr/bin/cpack +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/usr/bin/ctest +//ADVANCED property for variable: CMAKE_CXX_COMPILER +CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR +CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB +CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS +CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG +CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL +CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE +CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO +CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER +CMAKE_C_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_AR +CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB +CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Path to cache edit program executable. +CMAKE_EDIT_COMMAND:INTERNAL=/usr/bin/ccmake +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS +CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Unix Makefiles +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/home/heath/mk-gint +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MAKE_PROGRAM +CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/usr/share/cmake +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/usr/bin/uname +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 + diff --git a/build-em/CMakeFiles/3.23.2/CMakeCCompiler.cmake b/build-em/CMakeFiles/3.23.2/CMakeCCompiler.cmake new file mode 100644 index 0000000..d25c284 --- /dev/null +++ b/build-em/CMakeFiles/3.23.2/CMakeCCompiler.cmake @@ -0,0 +1,72 @@ +set(CMAKE_C_COMPILER "/usr/lib/emscripten/emcc") +set(CMAKE_C_COMPILER_ARG1 "") +set(CMAKE_C_COMPILER_ID "Clang") +set(CMAKE_C_COMPILER_VERSION "15.0.0") +set(CMAKE_C_COMPILER_VERSION_INTERNAL "") +set(CMAKE_C_COMPILER_WRAPPER "") +set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11") +set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "") +set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert;c_std_17;c_std_23") +set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") +set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") +set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") +set(CMAKE_C17_COMPILE_FEATURES "c_std_17") +set(CMAKE_C23_COMPILE_FEATURES "c_std_23") + +set(CMAKE_C_PLATFORM_ID "emscripten") +set(CMAKE_C_SIMULATE_ID "") +set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_C_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "/usr/lib/emscripten/emar") +set(CMAKE_C_COMPILER_AR "/usr/lib/emscripten/emar") +set(CMAKE_RANLIB "/usr/lib/emscripten/emranlib") +set(CMAKE_C_COMPILER_RANLIB "/usr/lib/emscripten/emranlib") +set(CMAKE_LINKER "/usr/bin/ld.lld") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCC ) +set(CMAKE_C_COMPILER_LOADED 1) +set(CMAKE_C_COMPILER_WORKS TRUE) +set(CMAKE_C_ABI_COMPILED ) + +set(CMAKE_C_COMPILER_ENV_VAR "CC") + +set(CMAKE_C_COMPILER_ID_RUN 1) +set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) +set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_C_LINKER_PREFERENCE 10) + +# Save compiler ABI information. +set(CMAKE_C_SIZEOF_DATA_PTR "4") +set(CMAKE_C_COMPILER_ABI "") +set(CMAKE_C_BYTE_ORDER "") +set(CMAKE_C_LIBRARY_ARCHITECTURE "") + +if(CMAKE_C_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_C_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") +endif() + +if(CMAKE_C_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "") +set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "") +set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "") +set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/build-em/CMakeFiles/3.23.2/CMakeCXXCompiler.cmake b/build-em/CMakeFiles/3.23.2/CMakeCXXCompiler.cmake new file mode 100644 index 0000000..a5622ff --- /dev/null +++ b/build-em/CMakeFiles/3.23.2/CMakeCXXCompiler.cmake @@ -0,0 +1,83 @@ +set(CMAKE_CXX_COMPILER "/usr/lib/emscripten/em++") +set(CMAKE_CXX_COMPILER_ARG1 "") +set(CMAKE_CXX_COMPILER_ID "Clang") +set(CMAKE_CXX_COMPILER_VERSION "15.0.0") +set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") +set(CMAKE_CXX_COMPILER_WRAPPER "") +set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "98") +set(CMAKE_CXX_EXTENSIONS_COMPUTED_DEFAULT "") +set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20;cxx_std_23") +set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") +set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") +set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") +set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") +set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20") +set(CMAKE_CXX23_COMPILE_FEATURES "cxx_std_23") + +set(CMAKE_CXX_PLATFORM_ID "emscripten") +set(CMAKE_CXX_SIMULATE_ID "") +set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_CXX_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "/usr/lib/emscripten/emar") +set(CMAKE_CXX_COMPILER_AR "/usr/lib/emscripten/emar") +set(CMAKE_RANLIB "/usr/lib/emscripten/emranlib") +set(CMAKE_CXX_COMPILER_RANLIB "/usr/lib/emscripten/emranlib") +set(CMAKE_LINKER "/usr/bin/ld.lld") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCXX ) +set(CMAKE_CXX_COMPILER_LOADED 1) +set(CMAKE_CXX_COMPILER_WORKS TRUE) +set(CMAKE_CXX_ABI_COMPILED ) + +set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") + +set(CMAKE_CXX_COMPILER_ID_RUN 1) +set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;mpp;CPP;ixx;cppm) +set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) + +foreach (lang C OBJC OBJCXX) + if (CMAKE_${lang}_COMPILER_ID_RUN) + foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS) + list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension}) + endforeach() + endif() +endforeach() + +set(CMAKE_CXX_LINKER_PREFERENCE 30) +set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) + +# Save compiler ABI information. +set(CMAKE_CXX_SIZEOF_DATA_PTR "4") +set(CMAKE_CXX_COMPILER_ABI "") +set(CMAKE_CXX_BYTE_ORDER "") +set(CMAKE_CXX_LIBRARY_ARCHITECTURE "") + +if(CMAKE_CXX_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_CXX_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") +endif() + +if(CMAKE_CXX_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "") +set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "") +set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "") +set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/build-em/CMakeFiles/3.23.2/CMakeSystem.cmake b/build-em/CMakeFiles/3.23.2/CMakeSystem.cmake new file mode 100644 index 0000000..459e24f --- /dev/null +++ b/build-em/CMakeFiles/3.23.2/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Linux-5.18.9-zen1-1-zen") +set(CMAKE_HOST_SYSTEM_NAME "Linux") +set(CMAKE_HOST_SYSTEM_VERSION "5.18.9-zen1-1-zen") +set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") + +include("/usr/lib/emscripten/cmake/Modules/Platform/Emscripten.cmake") + +set(CMAKE_SYSTEM "Emscripten-1") +set(CMAKE_SYSTEM_NAME "Emscripten") +set(CMAKE_SYSTEM_VERSION "1") +set(CMAKE_SYSTEM_PROCESSOR "x86") + +set(CMAKE_CROSSCOMPILING "TRUE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/build-em/CMakeFiles/CMakeDirectoryInformation.cmake b/build-em/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..bdb0f29 --- /dev/null +++ b/build-em/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.23 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/heath/mk-gint") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/heath/mk-gint/build-em") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/build-em/CMakeFiles/CMakeOutput.log b/build-em/CMakeFiles/CMakeOutput.log new file mode 100644 index 0000000..5983523 --- /dev/null +++ b/build-em/CMakeFiles/CMakeOutput.log @@ -0,0 +1,2 @@ +The target system is: Emscripten - 1 - x86 +The host system is: Linux - 5.18.9-zen1-1-zen - x86_64 diff --git a/build-em/CMakeFiles/Makefile.cmake b/build-em/CMakeFiles/Makefile.cmake new file mode 100644 index 0000000..1101b84 --- /dev/null +++ b/build-em/CMakeFiles/Makefile.cmake @@ -0,0 +1,44 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.23 + +# The generator used is: +set(CMAKE_DEPENDS_GENERATOR "Unix Makefiles") + +# The top level Makefile was generated from the following files: +set(CMAKE_MAKEFILE_DEPENDS + "CMakeCache.txt" + "../CMakeLists.txt" + "CMakeFiles/3.23.2/CMakeCCompiler.cmake" + "CMakeFiles/3.23.2/CMakeCXXCompiler.cmake" + "CMakeFiles/3.23.2/CMakeSystem.cmake" + "/usr/lib/emscripten/cmake/Modules/CMakeSystemSpecificInformation.cmake" + "/usr/lib/emscripten/cmake/Modules/Platform/Emscripten.cmake" + "/usr/share/cmake/Modules/CMakeCInformation.cmake" + "/usr/share/cmake/Modules/CMakeCXXInformation.cmake" + "/usr/share/cmake/Modules/CMakeCommonLanguageInclude.cmake" + "/usr/share/cmake/Modules/CMakeGenericSystem.cmake" + "/usr/share/cmake/Modules/CMakeInitializeConfigs.cmake" + "/usr/share/cmake/Modules/CMakeLanguageInformation.cmake" + "/usr/share/cmake/Modules/CMakeSystemSpecificInitialize.cmake" + "/usr/share/cmake/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + "/usr/share/cmake/Modules/Compiler/Clang-C.cmake" + "/usr/share/cmake/Modules/Compiler/Clang-CXX.cmake" + "/usr/share/cmake/Modules/Compiler/Clang.cmake" + "/usr/share/cmake/Modules/Compiler/GNU.cmake" + ) + +# The corresponding makefile is: +set(CMAKE_MAKEFILE_OUTPUTS + "Makefile" + "CMakeFiles/cmake.check_cache" + ) + +# Byproducts of CMake generate step: +set(CMAKE_MAKEFILE_PRODUCTS + "CMakeFiles/CMakeDirectoryInformation.cmake" + ) + +# Dependency information for all targets: +set(CMAKE_DEPEND_INFO_FILES + "CMakeFiles/mariokart.dir/DependInfo.cmake" + ) diff --git a/build-em/CMakeFiles/Makefile2 b/build-em/CMakeFiles/Makefile2 new file mode 100644 index 0000000..8bc08ef --- /dev/null +++ b/build-em/CMakeFiles/Makefile2 @@ -0,0 +1,112 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.23 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/heath/mk-gint + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/heath/mk-gint/build-em + +#============================================================================= +# Directory level rules for the build root directory + +# The main recursive "all" target. +all: CMakeFiles/mariokart.dir/all +.PHONY : all + +# The main recursive "preinstall" target. +preinstall: +.PHONY : preinstall + +# The main recursive "clean" target. +clean: CMakeFiles/mariokart.dir/clean +.PHONY : clean + +#============================================================================= +# Target rules for target CMakeFiles/mariokart.dir + +# All Build rule for target. +CMakeFiles/mariokart.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mariokart.dir/build.make CMakeFiles/mariokart.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/mariokart.dir/build.make CMakeFiles/mariokart.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/heath/mk-gint/build-em/CMakeFiles --progress-num=1,2,3,4,5,6,7,8,9,10,11,12,13 "Built target mariokart" +.PHONY : CMakeFiles/mariokart.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/mariokart.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/heath/mk-gint/build-em/CMakeFiles 13 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/mariokart.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/heath/mk-gint/build-em/CMakeFiles 0 +.PHONY : CMakeFiles/mariokart.dir/rule + +# Convenience name for target. +mariokart: CMakeFiles/mariokart.dir/rule +.PHONY : mariokart + +# clean rule for target. +CMakeFiles/mariokart.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mariokart.dir/build.make CMakeFiles/mariokart.dir/clean +.PHONY : CMakeFiles/mariokart.dir/clean + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/build-em/CMakeFiles/TargetDirectories.txt b/build-em/CMakeFiles/TargetDirectories.txt new file mode 100644 index 0000000..5c10895 --- /dev/null +++ b/build-em/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,3 @@ +/home/heath/mk-gint/build-em/CMakeFiles/mariokart.dir +/home/heath/mk-gint/build-em/CMakeFiles/edit_cache.dir +/home/heath/mk-gint/build-em/CMakeFiles/rebuild_cache.dir diff --git a/build-em/CMakeFiles/cmake.check_cache b/build-em/CMakeFiles/cmake.check_cache new file mode 100644 index 0000000..3dccd73 --- /dev/null +++ b/build-em/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/build-em/CMakeFiles/mariokart.dir/DependInfo.cmake b/build-em/CMakeFiles/mariokart.dir/DependInfo.cmake new file mode 100644 index 0000000..761489d --- /dev/null +++ b/build-em/CMakeFiles/mariokart.dir/DependInfo.cmake @@ -0,0 +1,30 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + "/home/heath/mk-gint/src/3d.c" "CMakeFiles/mariokart.dir/src/3d.c.o" "gcc" "CMakeFiles/mariokart.dir/src/3d.c.o.d" + "/home/heath/mk-gint/src/buttons.c" "CMakeFiles/mariokart.dir/src/buttons.c.o" "gcc" "CMakeFiles/mariokart.dir/src/buttons.c.o.d" + "/home/heath/mk-gint/src/debugHud.c" "CMakeFiles/mariokart.dir/src/debugHud.c.o" "gcc" "CMakeFiles/mariokart.dir/src/debugHud.c.o.d" + "/home/heath/mk-gint/src/images.c" "CMakeFiles/mariokart.dir/src/images.c.o" "gcc" "CMakeFiles/mariokart.dir/src/images.c.o.d" + "/home/heath/mk-gint/src/main.c" "CMakeFiles/mariokart.dir/src/main.c.o" "gcc" "CMakeFiles/mariokart.dir/src/main.c.o.d" + "/home/heath/mk-gint/src/maths.c" "CMakeFiles/mariokart.dir/src/maths.c.o" "gcc" "CMakeFiles/mariokart.dir/src/maths.c.o.d" + "/home/heath/mk-gint/src/particles.c" "CMakeFiles/mariokart.dir/src/particles.c.o" "gcc" "CMakeFiles/mariokart.dir/src/particles.c.o.d" + "/home/heath/mk-gint/src/physics.c" "CMakeFiles/mariokart.dir/src/physics.c.o" "gcc" "CMakeFiles/mariokart.dir/src/physics.c.o.d" + "/home/heath/mk-gint/src/platforms/emscripten.c" "CMakeFiles/mariokart.dir/src/platforms/emscripten.c.o" "gcc" "CMakeFiles/mariokart.dir/src/platforms/emscripten.c.o.d" + "/home/heath/mk-gint/src/sprites.c" "CMakeFiles/mariokart.dir/src/sprites.c.o" "gcc" "CMakeFiles/mariokart.dir/src/sprites.c.o.d" + "/home/heath/mk-gint/src/state.c" "CMakeFiles/mariokart.dir/src/state.c.o" "gcc" "CMakeFiles/mariokart.dir/src/state.c.o.d" + "/home/heath/mk-gint/src/tilemap.c" "CMakeFiles/mariokart.dir/src/tilemap.c.o" "gcc" "CMakeFiles/mariokart.dir/src/tilemap.c.o.d" + ) + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build-em/CMakeFiles/mariokart.dir/build.make b/build-em/CMakeFiles/mariokart.dir/build.make new file mode 100644 index 0000000..1a1732d --- /dev/null +++ b/build-em/CMakeFiles/mariokart.dir/build.make @@ -0,0 +1,287 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.23 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/heath/mk-gint + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/heath/mk-gint/build-em + +# Include any dependencies generated for this target. +include CMakeFiles/mariokart.dir/depend.make +# Include any dependencies generated by the compiler for this target. +include CMakeFiles/mariokart.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/mariokart.dir/progress.make + +# Include the compile flags for this target's objects. +include CMakeFiles/mariokart.dir/flags.make + +CMakeFiles/mariokart.dir/src/3d.c.o: CMakeFiles/mariokart.dir/flags.make +CMakeFiles/mariokart.dir/src/3d.c.o: ../src/3d.c +CMakeFiles/mariokart.dir/src/3d.c.o: CMakeFiles/mariokart.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/heath/mk-gint/build-em/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object CMakeFiles/mariokart.dir/src/3d.c.o" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/mariokart.dir/src/3d.c.o -MF CMakeFiles/mariokart.dir/src/3d.c.o.d -o CMakeFiles/mariokart.dir/src/3d.c.o -c /home/heath/mk-gint/src/3d.c + +CMakeFiles/mariokart.dir/src/3d.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mariokart.dir/src/3d.c.i" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/heath/mk-gint/src/3d.c > CMakeFiles/mariokart.dir/src/3d.c.i + +CMakeFiles/mariokart.dir/src/3d.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mariokart.dir/src/3d.c.s" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/heath/mk-gint/src/3d.c -o CMakeFiles/mariokart.dir/src/3d.c.s + +CMakeFiles/mariokart.dir/src/buttons.c.o: CMakeFiles/mariokart.dir/flags.make +CMakeFiles/mariokart.dir/src/buttons.c.o: ../src/buttons.c +CMakeFiles/mariokart.dir/src/buttons.c.o: CMakeFiles/mariokart.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/heath/mk-gint/build-em/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building C object CMakeFiles/mariokart.dir/src/buttons.c.o" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/mariokart.dir/src/buttons.c.o -MF CMakeFiles/mariokart.dir/src/buttons.c.o.d -o CMakeFiles/mariokart.dir/src/buttons.c.o -c /home/heath/mk-gint/src/buttons.c + +CMakeFiles/mariokart.dir/src/buttons.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mariokart.dir/src/buttons.c.i" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/heath/mk-gint/src/buttons.c > CMakeFiles/mariokart.dir/src/buttons.c.i + +CMakeFiles/mariokart.dir/src/buttons.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mariokart.dir/src/buttons.c.s" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/heath/mk-gint/src/buttons.c -o CMakeFiles/mariokart.dir/src/buttons.c.s + +CMakeFiles/mariokart.dir/src/debugHud.c.o: CMakeFiles/mariokart.dir/flags.make +CMakeFiles/mariokart.dir/src/debugHud.c.o: ../src/debugHud.c +CMakeFiles/mariokart.dir/src/debugHud.c.o: CMakeFiles/mariokart.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/heath/mk-gint/build-em/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building C object CMakeFiles/mariokart.dir/src/debugHud.c.o" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/mariokart.dir/src/debugHud.c.o -MF CMakeFiles/mariokart.dir/src/debugHud.c.o.d -o CMakeFiles/mariokart.dir/src/debugHud.c.o -c /home/heath/mk-gint/src/debugHud.c + +CMakeFiles/mariokart.dir/src/debugHud.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mariokart.dir/src/debugHud.c.i" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/heath/mk-gint/src/debugHud.c > CMakeFiles/mariokart.dir/src/debugHud.c.i + +CMakeFiles/mariokart.dir/src/debugHud.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mariokart.dir/src/debugHud.c.s" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/heath/mk-gint/src/debugHud.c -o CMakeFiles/mariokart.dir/src/debugHud.c.s + +CMakeFiles/mariokart.dir/src/images.c.o: CMakeFiles/mariokart.dir/flags.make +CMakeFiles/mariokart.dir/src/images.c.o: ../src/images.c +CMakeFiles/mariokart.dir/src/images.c.o: CMakeFiles/mariokart.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/heath/mk-gint/build-em/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building C object CMakeFiles/mariokart.dir/src/images.c.o" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/mariokart.dir/src/images.c.o -MF CMakeFiles/mariokart.dir/src/images.c.o.d -o CMakeFiles/mariokart.dir/src/images.c.o -c /home/heath/mk-gint/src/images.c + +CMakeFiles/mariokart.dir/src/images.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mariokart.dir/src/images.c.i" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/heath/mk-gint/src/images.c > CMakeFiles/mariokart.dir/src/images.c.i + +CMakeFiles/mariokart.dir/src/images.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mariokart.dir/src/images.c.s" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/heath/mk-gint/src/images.c -o CMakeFiles/mariokart.dir/src/images.c.s + +CMakeFiles/mariokart.dir/src/main.c.o: CMakeFiles/mariokart.dir/flags.make +CMakeFiles/mariokart.dir/src/main.c.o: ../src/main.c +CMakeFiles/mariokart.dir/src/main.c.o: CMakeFiles/mariokart.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/heath/mk-gint/build-em/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building C object CMakeFiles/mariokart.dir/src/main.c.o" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/mariokart.dir/src/main.c.o -MF CMakeFiles/mariokart.dir/src/main.c.o.d -o CMakeFiles/mariokart.dir/src/main.c.o -c /home/heath/mk-gint/src/main.c + +CMakeFiles/mariokart.dir/src/main.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mariokart.dir/src/main.c.i" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/heath/mk-gint/src/main.c > CMakeFiles/mariokart.dir/src/main.c.i + +CMakeFiles/mariokart.dir/src/main.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mariokart.dir/src/main.c.s" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/heath/mk-gint/src/main.c -o CMakeFiles/mariokart.dir/src/main.c.s + +CMakeFiles/mariokart.dir/src/maths.c.o: CMakeFiles/mariokart.dir/flags.make +CMakeFiles/mariokart.dir/src/maths.c.o: ../src/maths.c +CMakeFiles/mariokart.dir/src/maths.c.o: CMakeFiles/mariokart.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/heath/mk-gint/build-em/CMakeFiles --progress-num=$(CMAKE_PROGRESS_6) "Building C object CMakeFiles/mariokart.dir/src/maths.c.o" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/mariokart.dir/src/maths.c.o -MF CMakeFiles/mariokart.dir/src/maths.c.o.d -o CMakeFiles/mariokart.dir/src/maths.c.o -c /home/heath/mk-gint/src/maths.c + +CMakeFiles/mariokart.dir/src/maths.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mariokart.dir/src/maths.c.i" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/heath/mk-gint/src/maths.c > CMakeFiles/mariokart.dir/src/maths.c.i + +CMakeFiles/mariokart.dir/src/maths.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mariokart.dir/src/maths.c.s" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/heath/mk-gint/src/maths.c -o CMakeFiles/mariokart.dir/src/maths.c.s + +CMakeFiles/mariokart.dir/src/particles.c.o: CMakeFiles/mariokart.dir/flags.make +CMakeFiles/mariokart.dir/src/particles.c.o: ../src/particles.c +CMakeFiles/mariokart.dir/src/particles.c.o: CMakeFiles/mariokart.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/heath/mk-gint/build-em/CMakeFiles --progress-num=$(CMAKE_PROGRESS_7) "Building C object CMakeFiles/mariokart.dir/src/particles.c.o" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/mariokart.dir/src/particles.c.o -MF CMakeFiles/mariokart.dir/src/particles.c.o.d -o CMakeFiles/mariokart.dir/src/particles.c.o -c /home/heath/mk-gint/src/particles.c + +CMakeFiles/mariokart.dir/src/particles.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mariokart.dir/src/particles.c.i" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/heath/mk-gint/src/particles.c > CMakeFiles/mariokart.dir/src/particles.c.i + +CMakeFiles/mariokart.dir/src/particles.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mariokart.dir/src/particles.c.s" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/heath/mk-gint/src/particles.c -o CMakeFiles/mariokart.dir/src/particles.c.s + +CMakeFiles/mariokart.dir/src/physics.c.o: CMakeFiles/mariokart.dir/flags.make +CMakeFiles/mariokart.dir/src/physics.c.o: ../src/physics.c +CMakeFiles/mariokart.dir/src/physics.c.o: CMakeFiles/mariokart.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/heath/mk-gint/build-em/CMakeFiles --progress-num=$(CMAKE_PROGRESS_8) "Building C object CMakeFiles/mariokart.dir/src/physics.c.o" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/mariokart.dir/src/physics.c.o -MF CMakeFiles/mariokart.dir/src/physics.c.o.d -o CMakeFiles/mariokart.dir/src/physics.c.o -c /home/heath/mk-gint/src/physics.c + +CMakeFiles/mariokart.dir/src/physics.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mariokart.dir/src/physics.c.i" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/heath/mk-gint/src/physics.c > CMakeFiles/mariokart.dir/src/physics.c.i + +CMakeFiles/mariokart.dir/src/physics.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mariokart.dir/src/physics.c.s" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/heath/mk-gint/src/physics.c -o CMakeFiles/mariokart.dir/src/physics.c.s + +CMakeFiles/mariokart.dir/src/sprites.c.o: CMakeFiles/mariokart.dir/flags.make +CMakeFiles/mariokart.dir/src/sprites.c.o: ../src/sprites.c +CMakeFiles/mariokart.dir/src/sprites.c.o: CMakeFiles/mariokart.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/heath/mk-gint/build-em/CMakeFiles --progress-num=$(CMAKE_PROGRESS_9) "Building C object CMakeFiles/mariokart.dir/src/sprites.c.o" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/mariokart.dir/src/sprites.c.o -MF CMakeFiles/mariokart.dir/src/sprites.c.o.d -o CMakeFiles/mariokart.dir/src/sprites.c.o -c /home/heath/mk-gint/src/sprites.c + +CMakeFiles/mariokart.dir/src/sprites.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mariokart.dir/src/sprites.c.i" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/heath/mk-gint/src/sprites.c > CMakeFiles/mariokart.dir/src/sprites.c.i + +CMakeFiles/mariokart.dir/src/sprites.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mariokart.dir/src/sprites.c.s" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/heath/mk-gint/src/sprites.c -o CMakeFiles/mariokart.dir/src/sprites.c.s + +CMakeFiles/mariokart.dir/src/state.c.o: CMakeFiles/mariokart.dir/flags.make +CMakeFiles/mariokart.dir/src/state.c.o: ../src/state.c +CMakeFiles/mariokart.dir/src/state.c.o: CMakeFiles/mariokart.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/heath/mk-gint/build-em/CMakeFiles --progress-num=$(CMAKE_PROGRESS_10) "Building C object CMakeFiles/mariokart.dir/src/state.c.o" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/mariokart.dir/src/state.c.o -MF CMakeFiles/mariokart.dir/src/state.c.o.d -o CMakeFiles/mariokart.dir/src/state.c.o -c /home/heath/mk-gint/src/state.c + +CMakeFiles/mariokart.dir/src/state.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mariokart.dir/src/state.c.i" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/heath/mk-gint/src/state.c > CMakeFiles/mariokart.dir/src/state.c.i + +CMakeFiles/mariokart.dir/src/state.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mariokart.dir/src/state.c.s" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/heath/mk-gint/src/state.c -o CMakeFiles/mariokart.dir/src/state.c.s + +CMakeFiles/mariokart.dir/src/tilemap.c.o: CMakeFiles/mariokart.dir/flags.make +CMakeFiles/mariokart.dir/src/tilemap.c.o: ../src/tilemap.c +CMakeFiles/mariokart.dir/src/tilemap.c.o: CMakeFiles/mariokart.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/heath/mk-gint/build-em/CMakeFiles --progress-num=$(CMAKE_PROGRESS_11) "Building C object CMakeFiles/mariokart.dir/src/tilemap.c.o" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/mariokart.dir/src/tilemap.c.o -MF CMakeFiles/mariokart.dir/src/tilemap.c.o.d -o CMakeFiles/mariokart.dir/src/tilemap.c.o -c /home/heath/mk-gint/src/tilemap.c + +CMakeFiles/mariokart.dir/src/tilemap.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mariokart.dir/src/tilemap.c.i" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/heath/mk-gint/src/tilemap.c > CMakeFiles/mariokart.dir/src/tilemap.c.i + +CMakeFiles/mariokart.dir/src/tilemap.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mariokart.dir/src/tilemap.c.s" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/heath/mk-gint/src/tilemap.c -o CMakeFiles/mariokart.dir/src/tilemap.c.s + +CMakeFiles/mariokart.dir/src/platforms/emscripten.c.o: CMakeFiles/mariokart.dir/flags.make +CMakeFiles/mariokart.dir/src/platforms/emscripten.c.o: ../src/platforms/emscripten.c +CMakeFiles/mariokart.dir/src/platforms/emscripten.c.o: CMakeFiles/mariokart.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/heath/mk-gint/build-em/CMakeFiles --progress-num=$(CMAKE_PROGRESS_12) "Building C object CMakeFiles/mariokart.dir/src/platforms/emscripten.c.o" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -MD -MT CMakeFiles/mariokart.dir/src/platforms/emscripten.c.o -MF CMakeFiles/mariokart.dir/src/platforms/emscripten.c.o.d -o CMakeFiles/mariokart.dir/src/platforms/emscripten.c.o -c /home/heath/mk-gint/src/platforms/emscripten.c + +CMakeFiles/mariokart.dir/src/platforms/emscripten.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mariokart.dir/src/platforms/emscripten.c.i" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/heath/mk-gint/src/platforms/emscripten.c > CMakeFiles/mariokart.dir/src/platforms/emscripten.c.i + +CMakeFiles/mariokart.dir/src/platforms/emscripten.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mariokart.dir/src/platforms/emscripten.c.s" + /usr/lib/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/heath/mk-gint/src/platforms/emscripten.c -o CMakeFiles/mariokart.dir/src/platforms/emscripten.c.s + +# Object files for target mariokart +mariokart_OBJECTS = \ +"CMakeFiles/mariokart.dir/src/3d.c.o" \ +"CMakeFiles/mariokart.dir/src/buttons.c.o" \ +"CMakeFiles/mariokart.dir/src/debugHud.c.o" \ +"CMakeFiles/mariokart.dir/src/images.c.o" \ +"CMakeFiles/mariokart.dir/src/main.c.o" \ +"CMakeFiles/mariokart.dir/src/maths.c.o" \ +"CMakeFiles/mariokart.dir/src/particles.c.o" \ +"CMakeFiles/mariokart.dir/src/physics.c.o" \ +"CMakeFiles/mariokart.dir/src/sprites.c.o" \ +"CMakeFiles/mariokart.dir/src/state.c.o" \ +"CMakeFiles/mariokart.dir/src/tilemap.c.o" \ +"CMakeFiles/mariokart.dir/src/platforms/emscripten.c.o" + +# External object files for target mariokart +mariokart_EXTERNAL_OBJECTS = + +mariokart.html: CMakeFiles/mariokart.dir/src/3d.c.o +mariokart.html: CMakeFiles/mariokart.dir/src/buttons.c.o +mariokart.html: CMakeFiles/mariokart.dir/src/debugHud.c.o +mariokart.html: CMakeFiles/mariokart.dir/src/images.c.o +mariokart.html: CMakeFiles/mariokart.dir/src/main.c.o +mariokart.html: CMakeFiles/mariokart.dir/src/maths.c.o +mariokart.html: CMakeFiles/mariokart.dir/src/particles.c.o +mariokart.html: CMakeFiles/mariokart.dir/src/physics.c.o +mariokart.html: CMakeFiles/mariokart.dir/src/sprites.c.o +mariokart.html: CMakeFiles/mariokart.dir/src/state.c.o +mariokart.html: CMakeFiles/mariokart.dir/src/tilemap.c.o +mariokart.html: CMakeFiles/mariokart.dir/src/platforms/emscripten.c.o +mariokart.html: CMakeFiles/mariokart.dir/build.make +mariokart.html: CMakeFiles/mariokart.dir/objects1.rsp +mariokart.html: CMakeFiles/mariokart.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/home/heath/mk-gint/build-em/CMakeFiles --progress-num=$(CMAKE_PROGRESS_13) "Linking C executable mariokart.html" + $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/mariokart.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +CMakeFiles/mariokart.dir/build: mariokart.html +.PHONY : CMakeFiles/mariokart.dir/build + +CMakeFiles/mariokart.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/mariokart.dir/cmake_clean.cmake +.PHONY : CMakeFiles/mariokart.dir/clean + +CMakeFiles/mariokart.dir/depend: + cd /home/heath/mk-gint/build-em && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/heath/mk-gint /home/heath/mk-gint /home/heath/mk-gint/build-em /home/heath/mk-gint/build-em /home/heath/mk-gint/build-em/CMakeFiles/mariokart.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/mariokart.dir/depend + diff --git a/build-em/CMakeFiles/mariokart.dir/cmake_clean.cmake b/build-em/CMakeFiles/mariokart.dir/cmake_clean.cmake new file mode 100644 index 0000000..60cebac --- /dev/null +++ b/build-em/CMakeFiles/mariokart.dir/cmake_clean.cmake @@ -0,0 +1,33 @@ +file(REMOVE_RECURSE + "CMakeFiles/mariokart.dir/src/3d.c.o" + "CMakeFiles/mariokart.dir/src/3d.c.o.d" + "CMakeFiles/mariokart.dir/src/buttons.c.o" + "CMakeFiles/mariokart.dir/src/buttons.c.o.d" + "CMakeFiles/mariokart.dir/src/debugHud.c.o" + "CMakeFiles/mariokart.dir/src/debugHud.c.o.d" + "CMakeFiles/mariokart.dir/src/images.c.o" + "CMakeFiles/mariokart.dir/src/images.c.o.d" + "CMakeFiles/mariokart.dir/src/main.c.o" + "CMakeFiles/mariokart.dir/src/main.c.o.d" + "CMakeFiles/mariokart.dir/src/maths.c.o" + "CMakeFiles/mariokart.dir/src/maths.c.o.d" + "CMakeFiles/mariokart.dir/src/particles.c.o" + "CMakeFiles/mariokart.dir/src/particles.c.o.d" + "CMakeFiles/mariokart.dir/src/physics.c.o" + "CMakeFiles/mariokart.dir/src/physics.c.o.d" + "CMakeFiles/mariokart.dir/src/platforms/emscripten.c.o" + "CMakeFiles/mariokart.dir/src/platforms/emscripten.c.o.d" + "CMakeFiles/mariokart.dir/src/sprites.c.o" + "CMakeFiles/mariokart.dir/src/sprites.c.o.d" + "CMakeFiles/mariokart.dir/src/state.c.o" + "CMakeFiles/mariokart.dir/src/state.c.o.d" + "CMakeFiles/mariokart.dir/src/tilemap.c.o" + "CMakeFiles/mariokart.dir/src/tilemap.c.o.d" + "mariokart.html" + "mariokart.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/mariokart.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build-em/CMakeFiles/mariokart.dir/compiler_depend.internal b/build-em/CMakeFiles/mariokart.dir/compiler_depend.internal new file mode 100644 index 0000000..3d93b70 --- /dev/null +++ b/build-em/CMakeFiles/mariokart.dir/compiler_depend.internal @@ -0,0 +1,145 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.23 + +CMakeFiles/mariokart.dir/src/3d.c.o + /home/heath/mk-gint/src/3d.c + /home/heath/mk-gint/src/3d.h + /home/heath/mk-gint/src/platform.h + /home/heath/mk-gint/src/platforms/emscripten.h + /home/heath/mk-gint/src/main.h + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdbool.h + /home/heath/mk-gint/src/tilemap.h + /home/heath/mk-gint/src/maths.h + /home/heath/mk-gint/data-headers/generated_lut.h + +CMakeFiles/mariokart.dir/src/buttons.c.o + /home/heath/mk-gint/src/buttons.c + /home/heath/mk-gint/src/buttons.h + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdbool.h + /home/heath/mk-gint/src/platform.h + /home/heath/mk-gint/src/platforms/emscripten.h + /home/heath/mk-gint/src/main.h + +CMakeFiles/mariokart.dir/src/debugHud.c.o + /home/heath/mk-gint/src/debugHud.c + /home/heath/mk-gint/src/debugHud.h + /home/heath/.emscripten_cache/sysroot/include/stdio.h + /home/heath/.emscripten_cache/sysroot/include/wasi/api.h + /opt/emscripten-llvm/lib/clang/15.0.0/include/stddef.h + /opt/emscripten-llvm/lib/clang/15.0.0/include/__stddef_max_align_t.h + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdint.h + /home/heath/.emscripten_cache/sysroot/include/stdint.h + /home/heath/.emscripten_cache/sysroot/include/bits/alltypes.h + /home/heath/.emscripten_cache/sysroot/include/bits/stdint.h + /home/heath/.emscripten_cache/sysroot/include/features.h + /home/heath/mk-gint/src/platform.h + /home/heath/mk-gint/src/platforms/emscripten.h + /home/heath/mk-gint/src/main.h + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdbool.h + /home/heath/mk-gint/src/buttons.h + /home/heath/mk-gint/src/state.h + /home/heath/mk-gint/src/physics.h + +CMakeFiles/mariokart.dir/src/images.c.o + /home/heath/mk-gint/src/images.c + /home/heath/mk-gint/data-headers/images.c + +CMakeFiles/mariokart.dir/src/main.c.o + /home/heath/mk-gint/src/main.c + /home/heath/mk-gint/src/main.h + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdbool.h + /home/heath/mk-gint/src/platform.h + /home/heath/mk-gint/src/platforms/emscripten.h + /home/heath/mk-gint/src/state.h + /home/heath/mk-gint/src/physics.h + /home/heath/mk-gint/src/buttons.h + /home/heath/mk-gint/src/3d.h + /home/heath/mk-gint/src/tilemap.h + /home/heath/mk-gint/src/sprites.h + /home/heath/mk-gint/src/debugHud.h + /home/heath/mk-gint/src/particles.h + /home/heath/mk-gint/data-headers/images.h + /home/heath/mk-gint/src/platforms/gint.h + /home/heath/.emscripten_cache/sysroot/include/stdio.h + /home/heath/.emscripten_cache/sysroot/include/wasi/api.h + /opt/emscripten-llvm/lib/clang/15.0.0/include/stddef.h + /opt/emscripten-llvm/lib/clang/15.0.0/include/__stddef_max_align_t.h + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdint.h + /home/heath/.emscripten_cache/sysroot/include/stdint.h + /home/heath/.emscripten_cache/sysroot/include/bits/alltypes.h + /home/heath/.emscripten_cache/sysroot/include/bits/stdint.h + /home/heath/.emscripten_cache/sysroot/include/features.h + +CMakeFiles/mariokart.dir/src/maths.c.o + /home/heath/mk-gint/src/maths.c + /home/heath/mk-gint/src/maths.h + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdbool.h + +CMakeFiles/mariokart.dir/src/particles.c.o + /home/heath/mk-gint/src/particles.c + /home/heath/mk-gint/src/particles.h + /home/heath/mk-gint/src/sprites.h + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdbool.h + /home/heath/mk-gint/data-headers/images.h + +CMakeFiles/mariokart.dir/src/physics.c.o + /home/heath/mk-gint/src/physics.c + /home/heath/mk-gint/src/physics.h + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdbool.h + /home/heath/mk-gint/src/buttons.h + /home/heath/mk-gint/src/main.h + /home/heath/mk-gint/src/maths.h + /home/heath/mk-gint/src/state.h + +CMakeFiles/mariokart.dir/src/platforms/emscripten.c.o + /home/heath/mk-gint/src/platforms/emscripten.c + /home/heath/.emscripten_cache/sysroot/include/emscripten.h + /home/heath/.emscripten_cache/sysroot/include/emscripten/emscripten.h + /home/heath/.emscripten_cache/sysroot/include/emscripten/em_asm.h + /home/heath/.emscripten_cache/sysroot/include/emscripten/em_macros.h + /home/heath/.emscripten_cache/sysroot/include/emscripten/em_types.h + /home/heath/.emscripten_cache/sysroot/include/emscripten/em_js.h + /home/heath/.emscripten_cache/sysroot/include/emscripten/wget.h + /home/heath/.emscripten_cache/sysroot/include/emscripten/version.h + /home/heath/mk-gint/src/platforms/emscripten.h + /home/heath/mk-gint/src/platforms/gint.h + /home/heath/.emscripten_cache/sysroot/include/emscripten/html5.h + /home/heath/.emscripten_cache/sysroot/include/pthread.h + /home/heath/.emscripten_cache/sysroot/include/features.h + /home/heath/.emscripten_cache/sysroot/include/bits/alltypes.h + /home/heath/.emscripten_cache/sysroot/include/sched.h + /home/heath/.emscripten_cache/sysroot/include/compat/time.h + /home/heath/.emscripten_cache/sysroot/include/time.h + /home/heath/.emscripten_cache/sysroot/include/emscripten/eventloop.h + /home/heath/.emscripten_cache/sysroot/include/emscripten/console.h + /home/heath/.emscripten_cache/sysroot/include/emscripten/html5_webgl.h + /home/heath/.emscripten_cache/sysroot/include/stdio.h + /home/heath/.emscripten_cache/sysroot/include/wasi/api.h + /opt/emscripten-llvm/lib/clang/15.0.0/include/stddef.h + /opt/emscripten-llvm/lib/clang/15.0.0/include/__stddef_max_align_t.h + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdint.h + /home/heath/.emscripten_cache/sysroot/include/stdint.h + /home/heath/.emscripten_cache/sysroot/include/bits/stdint.h + +CMakeFiles/mariokart.dir/src/sprites.c.o + /home/heath/mk-gint/src/sprites.c + /home/heath/mk-gint/src/sprites.h + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdbool.h + /home/heath/mk-gint/src/platform.h + /home/heath/mk-gint/src/platforms/emscripten.h + /home/heath/mk-gint/src/main.h + +CMakeFiles/mariokart.dir/src/state.c.o + /home/heath/mk-gint/src/state.c + /home/heath/mk-gint/src/state.h + /home/heath/mk-gint/src/physics.h + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdbool.h + /home/heath/mk-gint/src/buttons.h + +CMakeFiles/mariokart.dir/src/tilemap.c.o + /home/heath/mk-gint/src/tilemap.c + /home/heath/mk-gint/src/tilemap.h + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdbool.h + /home/heath/mk-gint/src/main.h + /home/heath/mk-gint/data-headers/track.h + diff --git a/build-em/CMakeFiles/mariokart.dir/compiler_depend.make b/build-em/CMakeFiles/mariokart.dir/compiler_depend.make new file mode 100644 index 0000000..b3edf09 --- /dev/null +++ b/build-em/CMakeFiles/mariokart.dir/compiler_depend.make @@ -0,0 +1,243 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.23 + +CMakeFiles/mariokart.dir/src/3d.c.o: ../src/3d.c \ + ../src/3d.h \ + ../src/platform.h \ + ../src/platforms/emscripten.h \ + ../src/main.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdbool.h \ + ../src/tilemap.h \ + ../src/maths.h \ + ../data-headers/generated_lut.h + +CMakeFiles/mariokart.dir/src/buttons.c.o: ../src/buttons.c \ + ../src/buttons.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdbool.h \ + ../src/platform.h \ + ../src/platforms/emscripten.h \ + ../src/main.h + +CMakeFiles/mariokart.dir/src/debugHud.c.o: ../src/debugHud.c \ + ../src/debugHud.h \ + /home/heath/.emscripten_cache/sysroot/include/stdio.h \ + /home/heath/.emscripten_cache/sysroot/include/wasi/api.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/stddef.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/__stddef_max_align_t.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdint.h \ + /home/heath/.emscripten_cache/sysroot/include/stdint.h \ + /home/heath/.emscripten_cache/sysroot/include/bits/alltypes.h \ + /home/heath/.emscripten_cache/sysroot/include/bits/stdint.h \ + /home/heath/.emscripten_cache/sysroot/include/features.h \ + ../src/platform.h \ + ../src/platforms/emscripten.h \ + ../src/main.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdbool.h \ + ../src/buttons.h \ + ../src/state.h \ + ../src/physics.h + +CMakeFiles/mariokart.dir/src/images.c.o: ../src/images.c \ + ../data-headers/images.c + +CMakeFiles/mariokart.dir/src/main.c.o: ../src/main.c \ + ../src/main.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdbool.h \ + ../src/platform.h \ + ../src/platforms/emscripten.h \ + ../src/state.h \ + ../src/physics.h \ + ../src/buttons.h \ + ../src/3d.h \ + ../src/tilemap.h \ + ../src/sprites.h \ + ../src/debugHud.h \ + ../src/particles.h \ + ../data-headers/images.h \ + ../src/platforms/gint.h \ + /home/heath/.emscripten_cache/sysroot/include/stdio.h \ + /home/heath/.emscripten_cache/sysroot/include/wasi/api.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/stddef.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/__stddef_max_align_t.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdint.h \ + /home/heath/.emscripten_cache/sysroot/include/stdint.h \ + /home/heath/.emscripten_cache/sysroot/include/bits/alltypes.h \ + /home/heath/.emscripten_cache/sysroot/include/bits/stdint.h \ + /home/heath/.emscripten_cache/sysroot/include/features.h + +CMakeFiles/mariokart.dir/src/maths.c.o: ../src/maths.c \ + ../src/maths.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdbool.h + +CMakeFiles/mariokart.dir/src/particles.c.o: ../src/particles.c \ + ../src/particles.h \ + ../src/sprites.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdbool.h \ + ../data-headers/images.h + +CMakeFiles/mariokart.dir/src/physics.c.o: ../src/physics.c \ + ../src/physics.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdbool.h \ + ../src/buttons.h \ + ../src/main.h \ + ../src/maths.h \ + ../src/state.h + +CMakeFiles/mariokart.dir/src/platforms/emscripten.c.o: ../src/platforms/emscripten.c \ + /home/heath/.emscripten_cache/sysroot/include/emscripten.h \ + /home/heath/.emscripten_cache/sysroot/include/emscripten/emscripten.h \ + /home/heath/.emscripten_cache/sysroot/include/emscripten/em_asm.h \ + /home/heath/.emscripten_cache/sysroot/include/emscripten/em_macros.h \ + /home/heath/.emscripten_cache/sysroot/include/emscripten/em_types.h \ + /home/heath/.emscripten_cache/sysroot/include/emscripten/em_js.h \ + /home/heath/.emscripten_cache/sysroot/include/emscripten/wget.h \ + /home/heath/.emscripten_cache/sysroot/include/emscripten/version.h \ + ../src/platforms/emscripten.h \ + ../src/platforms/gint.h \ + /home/heath/.emscripten_cache/sysroot/include/emscripten/html5.h \ + /home/heath/.emscripten_cache/sysroot/include/pthread.h \ + /home/heath/.emscripten_cache/sysroot/include/features.h \ + /home/heath/.emscripten_cache/sysroot/include/bits/alltypes.h \ + /home/heath/.emscripten_cache/sysroot/include/sched.h \ + /home/heath/.emscripten_cache/sysroot/include/compat/time.h \ + /home/heath/.emscripten_cache/sysroot/include/time.h \ + /home/heath/.emscripten_cache/sysroot/include/emscripten/eventloop.h \ + /home/heath/.emscripten_cache/sysroot/include/emscripten/console.h \ + /home/heath/.emscripten_cache/sysroot/include/emscripten/html5_webgl.h \ + /home/heath/.emscripten_cache/sysroot/include/stdio.h \ + /home/heath/.emscripten_cache/sysroot/include/wasi/api.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/stddef.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/__stddef_max_align_t.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdint.h \ + /home/heath/.emscripten_cache/sysroot/include/stdint.h \ + /home/heath/.emscripten_cache/sysroot/include/bits/stdint.h + +CMakeFiles/mariokart.dir/src/sprites.c.o: ../src/sprites.c \ + ../src/sprites.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdbool.h \ + ../src/platform.h \ + ../src/platforms/emscripten.h \ + ../src/main.h + +CMakeFiles/mariokart.dir/src/state.c.o: ../src/state.c \ + ../src/state.h \ + ../src/physics.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdbool.h \ + ../src/buttons.h + +CMakeFiles/mariokart.dir/src/tilemap.c.o: ../src/tilemap.c \ + ../src/tilemap.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdbool.h \ + ../src/main.h \ + ../data-headers/track.h + + +../data-headers/track.h: + +/home/heath/.emscripten_cache/sysroot/include/emscripten/html5_webgl.h: + +/home/heath/.emscripten_cache/sysroot/include/sched.h: + +/home/heath/.emscripten_cache/sysroot/include/emscripten/version.h: + +/home/heath/.emscripten_cache/sysroot/include/emscripten/em_js.h: + +/home/heath/.emscripten_cache/sysroot/include/emscripten/em_types.h: + +/home/heath/.emscripten_cache/sysroot/include/emscripten/em_macros.h: + +/home/heath/.emscripten_cache/sysroot/include/emscripten/em_asm.h: + +/home/heath/.emscripten_cache/sysroot/include/emscripten/emscripten.h: + +../src/platforms/emscripten.c: + +../src/physics.c: + +/home/heath/.emscripten_cache/sysroot/include/emscripten/console.h: + +/home/heath/.emscripten_cache/sysroot/include/emscripten/html5.h: + +../src/particles.c: + +../src/state.c: + +../src/maths.c: + +../src/platforms/gint.h: + +../data-headers/images.h: + +../src/sprites.c: + +../src/sprites.h: + +../data-headers/generated_lut.h: + +../src/maths.h: + +/home/heath/.emscripten_cache/sysroot/include/emscripten/eventloop.h: + +../src/buttons.h: + +../src/main.h: + +/home/heath/.emscripten_cache/sysroot/include/emscripten.h: + +../src/buttons.c: + +/opt/emscripten-llvm/lib/clang/15.0.0/include/stdbool.h: + +../src/particles.h: + +../src/platforms/emscripten.h: + +../src/3d.h: + +/opt/emscripten-llvm/lib/clang/15.0.0/include/__stddef_max_align_t.h: + +/home/heath/.emscripten_cache/sysroot/include/compat/time.h: + +../src/tilemap.h: + +../src/3d.c: + +/home/heath/.emscripten_cache/sysroot/include/time.h: + +../src/platform.h: + +/home/heath/.emscripten_cache/sysroot/include/stdio.h: + +/home/heath/.emscripten_cache/sysroot/include/wasi/api.h: + +/opt/emscripten-llvm/lib/clang/15.0.0/include/stddef.h: + +../src/images.c: + +../src/debugHud.c: + +/opt/emscripten-llvm/lib/clang/15.0.0/include/stdint.h: + +/home/heath/.emscripten_cache/sysroot/include/emscripten/wget.h: + +../src/debugHud.h: + +/home/heath/.emscripten_cache/sysroot/include/bits/alltypes.h: + +/home/heath/.emscripten_cache/sysroot/include/stdint.h: + +/home/heath/.emscripten_cache/sysroot/include/bits/stdint.h: + +/home/heath/.emscripten_cache/sysroot/include/features.h: + +../src/state.h: + +../src/tilemap.c: + +/home/heath/.emscripten_cache/sysroot/include/pthread.h: + +../data-headers/images.c: + +../src/physics.h: + +../src/main.c: diff --git a/build-em/CMakeFiles/mariokart.dir/compiler_depend.ts b/build-em/CMakeFiles/mariokart.dir/compiler_depend.ts new file mode 100644 index 0000000..20b5611 --- /dev/null +++ b/build-em/CMakeFiles/mariokart.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for compiler generated dependencies management for mariokart. diff --git a/build-em/CMakeFiles/mariokart.dir/depend.make b/build-em/CMakeFiles/mariokart.dir/depend.make new file mode 100644 index 0000000..5a1f437 --- /dev/null +++ b/build-em/CMakeFiles/mariokart.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for mariokart. +# This may be replaced when dependencies are built. diff --git a/build-em/CMakeFiles/mariokart.dir/flags.make b/build-em/CMakeFiles/mariokart.dir/flags.make new file mode 100644 index 0000000..4d94ef4 --- /dev/null +++ b/build-em/CMakeFiles/mariokart.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.23 + +# compile C with /usr/lib/emscripten/emcc +C_DEFINES = + +C_INCLUDES = + +C_FLAGS = -Wall -Wextra -Werror-implicit-function-declaration -O3 -flto + diff --git a/build-em/CMakeFiles/mariokart.dir/link.txt b/build-em/CMakeFiles/mariokart.dir/link.txt new file mode 100644 index 0000000..41b8ce8 --- /dev/null +++ b/build-em/CMakeFiles/mariokart.dir/link.txt @@ -0,0 +1 @@ +/usr/lib/emscripten/emcc --shell-file=../emscripten.html @CMakeFiles/mariokart.dir/objects1.rsp -o mariokart.html diff --git a/build-em/CMakeFiles/mariokart.dir/objects1.rsp b/build-em/CMakeFiles/mariokart.dir/objects1.rsp new file mode 100644 index 0000000..3b31ce0 --- /dev/null +++ b/build-em/CMakeFiles/mariokart.dir/objects1.rsp @@ -0,0 +1 @@ +CMakeFiles/mariokart.dir/src/3d.c.o CMakeFiles/mariokart.dir/src/buttons.c.o CMakeFiles/mariokart.dir/src/debugHud.c.o CMakeFiles/mariokart.dir/src/images.c.o CMakeFiles/mariokart.dir/src/main.c.o CMakeFiles/mariokart.dir/src/maths.c.o CMakeFiles/mariokart.dir/src/particles.c.o CMakeFiles/mariokart.dir/src/physics.c.o CMakeFiles/mariokart.dir/src/sprites.c.o CMakeFiles/mariokart.dir/src/state.c.o CMakeFiles/mariokart.dir/src/tilemap.c.o CMakeFiles/mariokart.dir/src/platforms/emscripten.c.o diff --git a/build-em/CMakeFiles/mariokart.dir/progress.make b/build-em/CMakeFiles/mariokart.dir/progress.make new file mode 100644 index 0000000..7a1b005 --- /dev/null +++ b/build-em/CMakeFiles/mariokart.dir/progress.make @@ -0,0 +1,14 @@ +CMAKE_PROGRESS_1 = 1 +CMAKE_PROGRESS_2 = 2 +CMAKE_PROGRESS_3 = 3 +CMAKE_PROGRESS_4 = 4 +CMAKE_PROGRESS_5 = 5 +CMAKE_PROGRESS_6 = 6 +CMAKE_PROGRESS_7 = 7 +CMAKE_PROGRESS_8 = 8 +CMAKE_PROGRESS_9 = 9 +CMAKE_PROGRESS_10 = 10 +CMAKE_PROGRESS_11 = 11 +CMAKE_PROGRESS_12 = 12 +CMAKE_PROGRESS_13 = 13 + diff --git a/build-em/CMakeFiles/mariokart.dir/src/3d.c.o b/build-em/CMakeFiles/mariokart.dir/src/3d.c.o new file mode 100644 index 0000000000000000000000000000000000000000..3318126ac913589ff23c60b09b0e5a072c15f3b9 GIT binary patch literal 3664 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 literal 0 HcmV?d00001 diff --git a/build-em/CMakeFiles/mariokart.dir/src/3d.c.o.d b/build-em/CMakeFiles/mariokart.dir/src/3d.c.o.d new file mode 100644 index 0000000..f0b6953 --- /dev/null +++ b/build-em/CMakeFiles/mariokart.dir/src/3d.c.o.d @@ -0,0 +1,7 @@ +CMakeFiles/mariokart.dir/src/3d.c.o: /home/heath/mk-gint/src/3d.c \ + /home/heath/mk-gint/src/./3d.h /home/heath/mk-gint/src/./platform.h \ + /home/heath/mk-gint/src/./platforms/emscripten.h \ + /home/heath/mk-gint/src/./main.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdbool.h \ + /home/heath/mk-gint/src/./tilemap.h /home/heath/mk-gint/src/./maths.h \ + /home/heath/mk-gint/src/../data-headers/generated_lut.h diff --git a/build-em/CMakeFiles/mariokart.dir/src/buttons.c.o b/build-em/CMakeFiles/mariokart.dir/src/buttons.c.o new file mode 100644 index 0000000000000000000000000000000000000000..45ba7a7e8d268df0851cba0eef12754542bc12e0 GIT binary patch literal 3336 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 +
+ +
+
+ +
+
+
+     + +
+ +
+ +
+ + + + + + diff --git a/build-em/mariokart.js b/build-em/mariokart.js new file mode 100644 index 0000000..6dbdf07 --- /dev/null +++ b/build-em/mariokart.js @@ -0,0 +1,3378 @@ + + +// The Module object: Our interface to the outside world. We import +// and export values on it. There are various ways Module can be used: +// 1. Not defined. We create it here +// 2. A function parameter, function(Module) { ..generated code.. } +// 3. pre-run appended it, var Module = {}; ..generated code.. +// 4. External script tag defines var Module. +// We need to check if Module already exists (e.g. case 3 above). +// Substitution will be replaced with actual code on later stage of the build, +// this way Closure Compiler will not mangle it (e.g. case 4. above). +// Note that if you want to run closure, and also to use Module +// after the generated code, you will need to define var Module = {}; +// before the code. Then that object will be used in the code, and you +// can continue to use Module afterwards as well. +var Module = typeof Module != 'undefined' ? Module : {}; + +// See https://caniuse.com/mdn-javascript_builtins_object_assign + +// --pre-jses are emitted after the Module integration code, so that they can +// refer to Module (if they choose; they can also define Module) +// {{PRE_JSES}} + +// Sometimes an existing Module object exists with properties +// meant to overwrite the default module functionality. Here +// we collect those properties and reapply _after_ we configure +// the current environment's defaults to avoid having to be so +// defensive during initialization. +var moduleOverrides = Object.assign({}, Module); + +var arguments_ = []; +var thisProgram = './this.program'; +var quit_ = (status, toThrow) => { + throw toThrow; +}; + +// Determine the runtime environment we are in. You can customize this by +// setting the ENVIRONMENT setting at compile time (see settings.js). + +// Attempt to auto-detect the environment +var ENVIRONMENT_IS_WEB = typeof window == 'object'; +var ENVIRONMENT_IS_WORKER = typeof importScripts == 'function'; +// N.b. Electron.js environment is simultaneously a NODE-environment, but +// also a web environment. +var ENVIRONMENT_IS_NODE = typeof process == 'object' && typeof process.versions == 'object' && typeof process.versions.node == 'string'; +var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; + +if (Module['ENVIRONMENT']) { + throw new Error('Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)'); +} + +// `/` should be present at the end if `scriptDirectory` is not empty +var scriptDirectory = ''; +function locateFile(path) { + if (Module['locateFile']) { + return Module['locateFile'](path, scriptDirectory); + } + return scriptDirectory + path; +} + +// Hooks that are implemented differently in different runtime environments. +var read_, + readAsync, + readBinary, + setWindowTitle; + +// Normally we don't log exceptions but instead let them bubble out the top +// level where the embedding environment (e.g. the browser) can handle +// them. +// However under v8 and node we sometimes exit the process direcly in which case +// its up to use us to log the exception before exiting. +// If we fix https://github.com/emscripten-core/emscripten/issues/15080 +// this may no longer be needed under node. +function logExceptionOnExit(e) { + if (e instanceof ExitStatus) return; + let toLog = e; + if (e && typeof e == 'object' && e.stack) { + toLog = [e, e.stack]; + } + err('exiting due to exception: ' + toLog); +} + +var fs; +var nodePath; +var requireNodeFS; + +if (ENVIRONMENT_IS_NODE) { + if (!(typeof process == 'object' && typeof require == 'function')) throw new Error('not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)'); + if (ENVIRONMENT_IS_WORKER) { + scriptDirectory = require('path').dirname(scriptDirectory) + '/'; + } else { + scriptDirectory = __dirname + '/'; + } + +// include: node_shell_read.js + + +requireNodeFS = () => { + // Use nodePath as the indicator for these not being initialized, + // since in some environments a global fs may have already been + // created. + if (!nodePath) { + fs = require('fs'); + nodePath = require('path'); + } +}; + +read_ = function shell_read(filename, binary) { + requireNodeFS(); + filename = nodePath['normalize'](filename); + return fs.readFileSync(filename, binary ? undefined : 'utf8'); +}; + +readBinary = (filename) => { + var ret = read_(filename, true); + if (!ret.buffer) { + ret = new Uint8Array(ret); + } + assert(ret.buffer); + return ret; +}; + +readAsync = (filename, onload, onerror) => { + requireNodeFS(); + filename = nodePath['normalize'](filename); + fs.readFile(filename, function(err, data) { + if (err) onerror(err); + else onload(data.buffer); + }); +}; + +// end include: node_shell_read.js + if (process['argv'].length > 1) { + thisProgram = process['argv'][1].replace(/\\/g, '/'); + } + + arguments_ = process['argv'].slice(2); + + if (typeof module != 'undefined') { + module['exports'] = Module; + } + + process['on']('uncaughtException', function(ex) { + // suppress ExitStatus exceptions from showing an error + if (!(ex instanceof ExitStatus)) { + throw ex; + } + }); + + // Without this older versions of node (< v15) will log unhandled rejections + // but return 0, which is not normally the desired behaviour. This is + // not be needed with node v15 and about because it is now the default + // behaviour: + // See https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode + process['on']('unhandledRejection', function(reason) { throw reason; }); + + quit_ = (status, toThrow) => { + if (keepRuntimeAlive()) { + process['exitCode'] = status; + throw toThrow; + } + logExceptionOnExit(toThrow); + process['exit'](status); + }; + + Module['inspect'] = function () { return '[Emscripten Module object]'; }; + +} else +if (ENVIRONMENT_IS_SHELL) { + + if ((typeof process == 'object' && typeof require === 'function') || typeof window == 'object' || typeof importScripts == 'function') throw new Error('not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)'); + + if (typeof read != 'undefined') { + read_ = function shell_read(f) { + return read(f); + }; + } + + readBinary = function readBinary(f) { + let data; + if (typeof readbuffer == 'function') { + return new Uint8Array(readbuffer(f)); + } + data = read(f, 'binary'); + assert(typeof data == 'object'); + return data; + }; + + readAsync = function readAsync(f, onload, onerror) { + setTimeout(() => onload(readBinary(f)), 0); + }; + + if (typeof scriptArgs != 'undefined') { + arguments_ = scriptArgs; + } else if (typeof arguments != 'undefined') { + arguments_ = arguments; + } + + if (typeof quit == 'function') { + quit_ = (status, toThrow) => { + logExceptionOnExit(toThrow); + quit(status); + }; + } + + if (typeof print != 'undefined') { + // Prefer to use print/printErr where they exist, as they usually work better. + if (typeof console == 'undefined') console = /** @type{!Console} */({}); + console.log = /** @type{!function(this:Console, ...*): undefined} */ (print); + console.warn = console.error = /** @type{!function(this:Console, ...*): undefined} */ (typeof printErr != 'undefined' ? printErr : print); + } + +} else + +// Note that this includes Node.js workers when relevant (pthreads is enabled). +// Node.js workers are detected as a combination of ENVIRONMENT_IS_WORKER and +// ENVIRONMENT_IS_NODE. +if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { + if (ENVIRONMENT_IS_WORKER) { // Check worker, not web, since window could be polyfilled + scriptDirectory = self.location.href; + } else if (typeof document != 'undefined' && document.currentScript) { // web + scriptDirectory = document.currentScript.src; + } + // blob urls look like blob:http://site.com/etc/etc and we cannot infer anything from them. + // otherwise, slice off the final part of the url to find the script directory. + // if scriptDirectory does not contain a slash, lastIndexOf will return -1, + // and scriptDirectory will correctly be replaced with an empty string. + // If scriptDirectory contains a query (starting with ?) or a fragment (starting with #), + // they are removed because they could contain a slash. + if (scriptDirectory.indexOf('blob:') !== 0) { + scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf('/')+1); + } else { + scriptDirectory = ''; + } + + if (!(typeof window == 'object' || typeof importScripts == 'function')) throw new Error('not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)'); + + // Differentiate the Web Worker from the Node Worker case, as reading must + // be done differently. + { +// include: web_or_worker_shell_read.js + + + read_ = (url) => { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, false); + xhr.send(null); + return xhr.responseText; + } + + if (ENVIRONMENT_IS_WORKER) { + readBinary = (url) => { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, false); + xhr.responseType = 'arraybuffer'; + xhr.send(null); + return new Uint8Array(/** @type{!ArrayBuffer} */(xhr.response)); + }; + } + + readAsync = (url, onload, onerror) => { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, true); + xhr.responseType = 'arraybuffer'; + xhr.onload = () => { + if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0 + onload(xhr.response); + return; + } + onerror(); + }; + xhr.onerror = onerror; + xhr.send(null); + } + +// end include: web_or_worker_shell_read.js + } + + setWindowTitle = (title) => document.title = title; +} else +{ + throw new Error('environment detection error'); +} + +var out = Module['print'] || console.log.bind(console); +var err = Module['printErr'] || console.warn.bind(console); + +// Merge back in the overrides +Object.assign(Module, moduleOverrides); +// Free the object hierarchy contained in the overrides, this lets the GC +// reclaim data used e.g. in memoryInitializerRequest, which is a large typed array. +moduleOverrides = null; +checkIncomingModuleAPI(); + +// Emit code to handle expected values on the Module object. This applies Module.x +// to the proper local x. This has two benefits: first, we only emit it if it is +// expected to arrive, and second, by using a local everywhere else that can be +// minified. + +if (Module['arguments']) arguments_ = Module['arguments'];legacyModuleProp('arguments', 'arguments_'); + +if (Module['thisProgram']) thisProgram = Module['thisProgram'];legacyModuleProp('thisProgram', 'thisProgram'); + +if (Module['quit']) quit_ = Module['quit'];legacyModuleProp('quit', 'quit_'); + +// perform assertions in shell.js after we set up out() and err(), as otherwise if an assertion fails it cannot print the message +// Assertions on removed incoming Module JS APIs. +assert(typeof Module['memoryInitializerPrefixURL'] == 'undefined', 'Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead'); +assert(typeof Module['pthreadMainPrefixURL'] == 'undefined', 'Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead'); +assert(typeof Module['cdInitializerPrefixURL'] == 'undefined', 'Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead'); +assert(typeof Module['filePackagePrefixURL'] == 'undefined', 'Module.filePackagePrefixURL option was removed, use Module.locateFile instead'); +assert(typeof Module['read'] == 'undefined', 'Module.read option was removed (modify read_ in JS)'); +assert(typeof Module['readAsync'] == 'undefined', 'Module.readAsync option was removed (modify readAsync in JS)'); +assert(typeof Module['readBinary'] == 'undefined', 'Module.readBinary option was removed (modify readBinary in JS)'); +assert(typeof Module['setWindowTitle'] == 'undefined', 'Module.setWindowTitle option was removed (modify setWindowTitle in JS)'); +assert(typeof Module['TOTAL_MEMORY'] == 'undefined', 'Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY'); +legacyModuleProp('read', 'read_'); +legacyModuleProp('readAsync', 'readAsync'); +legacyModuleProp('readBinary', 'readBinary'); +legacyModuleProp('setWindowTitle', 'setWindowTitle'); +var IDBFS = 'IDBFS is no longer included by default; build with -lidbfs.js'; +var PROXYFS = 'PROXYFS is no longer included by default; build with -lproxyfs.js'; +var WORKERFS = 'WORKERFS is no longer included by default; build with -lworkerfs.js'; +var NODEFS = 'NODEFS is no longer included by default; build with -lnodefs.js'; +function alignMemory() { abort('`alignMemory` is now a library function and not included by default; add it to your library.js __deps or to DEFAULT_LIBRARY_FUNCS_TO_INCLUDE on the command line'); } + +assert(!ENVIRONMENT_IS_SHELL, "shell environment detected but not enabled at build time. Add 'shell' to `-sENVIRONMENT` to enable."); + + + + +var STACK_ALIGN = 16; +var POINTER_SIZE = 4; + +function getNativeTypeSize(type) { + switch (type) { + case 'i1': case 'i8': case 'u8': return 1; + case 'i16': case 'u16': return 2; + case 'i32': case 'u32': return 4; + case 'i64': case 'u64': return 8; + case 'float': return 4; + case 'double': return 8; + default: { + if (type[type.length - 1] === '*') { + return POINTER_SIZE; + } else if (type[0] === 'i') { + const bits = Number(type.substr(1)); + assert(bits % 8 === 0, 'getNativeTypeSize invalid bits ' + bits + ', type ' + type); + return bits / 8; + } else { + return 0; + } + } + } +} + +function warnOnce(text) { + if (!warnOnce.shown) warnOnce.shown = {}; + if (!warnOnce.shown[text]) { + warnOnce.shown[text] = 1; + err(text); + } +} + +// include: runtime_functions.js + + +// This gives correct answers for everything less than 2^{14} = 16384 +// I hope nobody is contemplating functions with 16384 arguments... +function uleb128Encode(n) { + assert(n < 16384); + if (n < 128) { + return [n]; + } + return [(n % 128) | 128, n >> 7]; +} + +// Converts a signature like 'vii' into a description of the wasm types, like +// { parameters: ['i32', 'i32'], results: [] }. +function sigToWasmTypes(sig) { + var typeNames = { + 'i': 'i32', + 'j': 'i64', + 'f': 'f32', + 'd': 'f64', + 'p': 'i32', + }; + var type = { + parameters: [], + results: sig[0] == 'v' ? [] : [typeNames[sig[0]]] + }; + for (var i = 1; i < sig.length; ++i) { + assert(sig[i] in typeNames, 'invalid signature char: ' + sig[i]); + type.parameters.push(typeNames[sig[i]]); + } + return type; +} + +// Wraps a JS function as a wasm function with a given signature. +function convertJsFunctionToWasm(func, sig) { + + // If the type reflection proposal is available, use the new + // "WebAssembly.Function" constructor. + // Otherwise, construct a minimal wasm module importing the JS function and + // re-exporting it. + if (typeof WebAssembly.Function == "function") { + return new WebAssembly.Function(sigToWasmTypes(sig), func); + } + + // The module is static, with the exception of the type section, which is + // generated based on the signature passed in. + var typeSection = [ + 0x01, // count: 1 + 0x60, // form: func + ]; + var sigRet = sig.slice(0, 1); + var sigParam = sig.slice(1); + var typeCodes = { + 'i': 0x7f, // i32 + 'p': 0x7f, // i32 + 'j': 0x7e, // i64 + 'f': 0x7d, // f32 + 'd': 0x7c, // f64 + }; + + // Parameters, length + signatures + typeSection = typeSection.concat(uleb128Encode(sigParam.length)); + for (var i = 0; i < sigParam.length; ++i) { + assert(sigParam[i] in typeCodes, 'invalid signature char: ' + sigParam[i]); + typeSection.push(typeCodes[sigParam[i]]); + } + + // Return values, length + signatures + // With no multi-return in MVP, either 0 (void) or 1 (anything else) + if (sigRet == 'v') { + typeSection.push(0x00); + } else { + typeSection = typeSection.concat([0x01, typeCodes[sigRet]]); + } + + // Write the section code and overall length of the type section into the + // section header + typeSection = [0x01 /* Type section code */].concat( + uleb128Encode(typeSection.length), + typeSection + ); + + // Rest of the module is static + var bytes = new Uint8Array([ + 0x00, 0x61, 0x73, 0x6d, // magic ("\0asm") + 0x01, 0x00, 0x00, 0x00, // version: 1 + ].concat(typeSection, [ + 0x02, 0x07, // import section + // (import "e" "f" (func 0 (type 0))) + 0x01, 0x01, 0x65, 0x01, 0x66, 0x00, 0x00, + 0x07, 0x05, // export section + // (export "f" (func 0 (type 0))) + 0x01, 0x01, 0x66, 0x00, 0x00, + ])); + + // We can compile this wasm module synchronously because it is very small. + // This accepts an import (at "e.f"), that it reroutes to an export (at "f") + var module = new WebAssembly.Module(bytes); + var instance = new WebAssembly.Instance(module, { + 'e': { + 'f': func + } + }); + var wrappedFunc = instance.exports['f']; + return wrappedFunc; +} + +var freeTableIndexes = []; + +// Weak map of functions in the table to their indexes, created on first use. +var functionsInTableMap; + +function getEmptyTableSlot() { + // Reuse a free index if there is one, otherwise grow. + if (freeTableIndexes.length) { + return freeTableIndexes.pop(); + } + // Grow the table + try { + wasmTable.grow(1); + } catch (err) { + if (!(err instanceof RangeError)) { + throw err; + } + throw 'Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.'; + } + return wasmTable.length - 1; +} + +function updateTableMap(offset, count) { + for (var i = offset; i < offset + count; i++) { + var item = getWasmTableEntry(i); + // Ignore null values. + if (item) { + functionsInTableMap.set(item, i); + } + } +} + +/** + * Add a function to the table. + * 'sig' parameter is required if the function being added is a JS function. + * @param {string=} sig + */ +function addFunction(func, sig) { + assert(typeof func != 'undefined'); + + // Check if the function is already in the table, to ensure each function + // gets a unique index. First, create the map if this is the first use. + if (!functionsInTableMap) { + functionsInTableMap = new WeakMap(); + updateTableMap(0, wasmTable.length); + } + if (functionsInTableMap.has(func)) { + return functionsInTableMap.get(func); + } + + // It's not in the table, add it now. + + var ret = getEmptyTableSlot(); + + // Set the new value. + try { + // Attempting to call this with JS function will cause of table.set() to fail + setWasmTableEntry(ret, func); + } catch (err) { + if (!(err instanceof TypeError)) { + throw err; + } + assert(typeof sig != 'undefined', 'Missing signature argument to addFunction: ' + func); + var wrapped = convertJsFunctionToWasm(func, sig); + setWasmTableEntry(ret, wrapped); + } + + functionsInTableMap.set(func, ret); + + return ret; +} + +function removeFunction(index) { + functionsInTableMap.delete(getWasmTableEntry(index)); + freeTableIndexes.push(index); +} + +// end include: runtime_functions.js +// include: runtime_debug.js + + +function legacyModuleProp(prop, newName) { + if (!Object.getOwnPropertyDescriptor(Module, prop)) { + Object.defineProperty(Module, prop, { + configurable: true, + get: function() { + abort('Module.' + prop + ' has been replaced with plain ' + newName + ' (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)'); + } + }); + } +} + +function ignoredModuleProp(prop) { + if (Object.getOwnPropertyDescriptor(Module, prop)) { + abort('`Module.' + prop + '` was supplied but `' + prop + '` not included in INCOMING_MODULE_JS_API'); + } +} + +function unexportedMessage(sym, isFSSybol) { + var msg = "'" + sym + "' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"; + if (isFSSybol) { + msg += '. Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you'; + } + return msg; +} + +function unexportedRuntimeSymbol(sym, isFSSybol) { + if (!Object.getOwnPropertyDescriptor(Module, sym)) { + Object.defineProperty(Module, sym, { + configurable: true, + get: function() { + abort(unexportedMessage(sym, isFSSybol)); + } + }); + } +} + +function unexportedRuntimeFunction(sym, isFSSybol) { + if (!Object.getOwnPropertyDescriptor(Module, sym)) { + Module[sym] = () => abort(unexportedMessage(sym, isFSSybol)); + } +} + +// end include: runtime_debug.js +var tempRet0 = 0; +var setTempRet0 = (value) => { tempRet0 = value; }; +var getTempRet0 = () => tempRet0; + + + +// === Preamble library stuff === + +// Documentation for the public APIs defined in this file must be updated in: +// site/source/docs/api_reference/preamble.js.rst +// A prebuilt local version of the documentation is available at: +// site/build/text/docs/api_reference/preamble.js.txt +// You can also build docs locally as HTML or other formats in site/ +// An online HTML version (which may be of a different version of Emscripten) +// is up at http://kripken.github.io/emscripten-site/docs/api_reference/preamble.js.html + +var wasmBinary; +if (Module['wasmBinary']) wasmBinary = Module['wasmBinary'];legacyModuleProp('wasmBinary', 'wasmBinary'); +var noExitRuntime = Module['noExitRuntime'] || true;legacyModuleProp('noExitRuntime', 'noExitRuntime'); + +if (typeof WebAssembly != 'object') { + abort('no native wasm support detected'); +} + +// Wasm globals + +var wasmMemory; + +//======================================== +// Runtime essentials +//======================================== + +// whether we are quitting the application. no code should run after this. +// set in exit() and abort() +var ABORT = false; + +// set by exit() and abort(). Passed to 'onExit' handler. +// NOTE: This is also used as the process return code code in shell environments +// but only when noExitRuntime is false. +var EXITSTATUS; + +/** @type {function(*, string=)} */ +function assert(condition, text) { + if (!condition) { + abort('Assertion failed' + (text ? ': ' + text : '')); + } +} + +// Returns the C function with a specified identifier (for C++, you need to do manual name mangling) +function getCFunc(ident) { + var func = Module['_' + ident]; // closure exported function + assert(func, 'Cannot call unknown function ' + ident + ', make sure it is exported'); + return func; +} + +// C calling interface. +/** @param {string|null=} returnType + @param {Array=} argTypes + @param {Arguments|Array=} args + @param {Object=} opts */ +function ccall(ident, returnType, argTypes, args, opts) { + // For fast lookup of conversion functions + var toC = { + 'string': function(str) { + var ret = 0; + if (str !== null && str !== undefined && str !== 0) { // null string + // at most 4 bytes per UTF-8 code point, +1 for the trailing '\0' + var len = (str.length << 2) + 1; + ret = stackAlloc(len); + stringToUTF8(str, ret, len); + } + return ret; + }, + 'array': function(arr) { + var ret = stackAlloc(arr.length); + writeArrayToMemory(arr, ret); + return ret; + } + }; + + function convertReturnValue(ret) { + if (returnType === 'string') { + + return UTF8ToString(ret); + } + if (returnType === 'boolean') return Boolean(ret); + return ret; + } + + var func = getCFunc(ident); + var cArgs = []; + var stack = 0; + assert(returnType !== 'array', 'Return type should not be "array".'); + if (args) { + for (var i = 0; i < args.length; i++) { + var converter = toC[argTypes[i]]; + if (converter) { + if (stack === 0) stack = stackSave(); + cArgs[i] = converter(args[i]); + } else { + cArgs[i] = args[i]; + } + } + } + var ret = func.apply(null, cArgs); + function onDone(ret) { + if (stack !== 0) stackRestore(stack); + return convertReturnValue(ret); + } + + ret = onDone(ret); + return ret; +} + +/** @param {string=} returnType + @param {Array=} argTypes + @param {Object=} opts */ +function cwrap(ident, returnType, argTypes, opts) { + return function() { + return ccall(ident, returnType, argTypes, arguments, opts); + } +} + +// We used to include malloc/free by default in the past. Show a helpful error in +// builds with assertions. +function _free() { + // Show a helpful error since we used to include free by default in the past. + abort("free() called but not included in the build - add '_free' to EXPORTED_FUNCTIONS"); +} + +// include: runtime_legacy.js + + +var ALLOC_NORMAL = 0; // Tries to use _malloc() +var ALLOC_STACK = 1; // Lives for the duration of the current function call + +/** + * allocate(): This function is no longer used by emscripten but is kept around to avoid + * breaking external users. + * You should normally not use allocate(), and instead allocate + * memory using _malloc()/stackAlloc(), initialize it with + * setValue(), and so forth. + * @param {(Uint8Array|Array)} slab: An array of data. + * @param {number=} allocator : How to allocate memory, see ALLOC_* + */ +function allocate(slab, allocator) { + var ret; + assert(typeof allocator == 'number', 'allocate no longer takes a type argument') + assert(typeof slab != 'number', 'allocate no longer takes a number as arg0') + + if (allocator == ALLOC_STACK) { + ret = stackAlloc(slab.length); + } else { + ret = _malloc(slab.length); + } + + if (!slab.subarray && !slab.slice) { + slab = new Uint8Array(slab); + } + HEAPU8.set(slab, ret); + return ret; +} + +// end include: runtime_legacy.js +// include: runtime_strings.js + + +// runtime_strings.js: Strings related runtime functions that are part of both MINIMAL_RUNTIME and regular runtime. + +var UTF8Decoder = typeof TextDecoder != 'undefined' ? new TextDecoder('utf8') : undefined; + +// Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the given array that contains uint8 values, returns +// a copy of that string as a Javascript String object. +/** + * heapOrArray is either a regular array, or a JavaScript typed array view. + * @param {number} idx + * @param {number=} maxBytesToRead + * @return {string} + */ +function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) { + var endIdx = idx + maxBytesToRead; + var endPtr = idx; + // TextDecoder needs to know the byte length in advance, it doesn't stop on null terminator by itself. + // Also, use the length info to avoid running tiny strings through TextDecoder, since .subarray() allocates garbage. + // (As a tiny code save trick, compare endPtr against endIdx using a negation, so that undefined means Infinity) + while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr; + + if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) { + return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr)); + } else { + var str = ''; + // If building with TextDecoder, we have already computed the string length above, so test loop end condition against that + while (idx < endPtr) { + // For UTF8 byte structure, see: + // http://en.wikipedia.org/wiki/UTF-8#Description + // https://www.ietf.org/rfc/rfc2279.txt + // https://tools.ietf.org/html/rfc3629 + var u0 = heapOrArray[idx++]; + if (!(u0 & 0x80)) { str += String.fromCharCode(u0); continue; } + var u1 = heapOrArray[idx++] & 63; + if ((u0 & 0xE0) == 0xC0) { str += String.fromCharCode(((u0 & 31) << 6) | u1); continue; } + var u2 = heapOrArray[idx++] & 63; + if ((u0 & 0xF0) == 0xE0) { + u0 = ((u0 & 15) << 12) | (u1 << 6) | u2; + } else { + if ((u0 & 0xF8) != 0xF0) warnOnce('Invalid UTF-8 leading byte 0x' + u0.toString(16) + ' encountered when deserializing a UTF-8 string in wasm memory to a JS string!'); + u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | (heapOrArray[idx++] & 63); + } + + if (u0 < 0x10000) { + str += String.fromCharCode(u0); + } else { + var ch = u0 - 0x10000; + str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); + } + } + } + return str; +} + +// Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the emscripten HEAP, returns a +// copy of that string as a Javascript String object. +// maxBytesToRead: an optional length that specifies the maximum number of bytes to read. You can omit +// this parameter to scan the string until the first \0 byte. If maxBytesToRead is +// passed, and the string at [ptr, ptr+maxBytesToReadr[ contains a null byte in the +// middle, then the string will cut short at that byte index (i.e. maxBytesToRead will +// not produce a string of exact length [ptr, ptr+maxBytesToRead[) +// N.B. mixing frequent uses of UTF8ToString() with and without maxBytesToRead may +// throw JS JIT optimizations off, so it is worth to consider consistently using one +// style or the other. +/** + * @param {number} ptr + * @param {number=} maxBytesToRead + * @return {string} + */ +function UTF8ToString(ptr, maxBytesToRead) { + return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ''; +} + +// Copies the given Javascript String object 'str' to the given byte array at address 'outIdx', +// encoded in UTF8 form and null-terminated. The copy will require at most str.length*4+1 bytes of space in the HEAP. +// Use the function lengthBytesUTF8 to compute the exact number of bytes (excluding null terminator) that this function will write. +// Parameters: +// str: the Javascript string to copy. +// heap: the array to copy to. Each index in this array is assumed to be one 8-byte element. +// outIdx: The starting offset in the array to begin the copying. +// maxBytesToWrite: The maximum number of bytes this function can write to the array. +// This count should include the null terminator, +// i.e. if maxBytesToWrite=1, only the null terminator will be written and nothing else. +// maxBytesToWrite=0 does not write any bytes to the output, not even the null terminator. +// Returns the number of bytes written, EXCLUDING the null terminator. + +function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { + if (!(maxBytesToWrite > 0)) // Parameter maxBytesToWrite is not optional. Negative values, 0, null, undefined and false each don't write out any bytes. + return 0; + + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; // -1 for string null terminator. + for (var i = 0; i < str.length; ++i) { + // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + // For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description and https://www.ietf.org/rfc/rfc2279.txt and https://tools.ietf.org/html/rfc3629 + var u = str.charCodeAt(i); // possibly a lead surrogate + if (u >= 0xD800 && u <= 0xDFFF) { + var u1 = str.charCodeAt(++i); + u = 0x10000 + ((u & 0x3FF) << 10) | (u1 & 0x3FF); + } + if (u <= 0x7F) { + if (outIdx >= endIdx) break; + heap[outIdx++] = u; + } else if (u <= 0x7FF) { + if (outIdx + 1 >= endIdx) break; + heap[outIdx++] = 0xC0 | (u >> 6); + heap[outIdx++] = 0x80 | (u & 63); + } else if (u <= 0xFFFF) { + if (outIdx + 2 >= endIdx) break; + heap[outIdx++] = 0xE0 | (u >> 12); + heap[outIdx++] = 0x80 | ((u >> 6) & 63); + heap[outIdx++] = 0x80 | (u & 63); + } else { + if (outIdx + 3 >= endIdx) break; + if (u > 0x10FFFF) warnOnce('Invalid Unicode code point 0x' + u.toString(16) + ' encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF).'); + heap[outIdx++] = 0xF0 | (u >> 18); + heap[outIdx++] = 0x80 | ((u >> 12) & 63); + heap[outIdx++] = 0x80 | ((u >> 6) & 63); + heap[outIdx++] = 0x80 | (u & 63); + } + } + // Null-terminate the pointer to the buffer. + heap[outIdx] = 0; + return outIdx - startIdx; +} + +// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', +// null-terminated and encoded in UTF8 form. The copy will require at most str.length*4+1 bytes of space in the HEAP. +// Use the function lengthBytesUTF8 to compute the exact number of bytes (excluding null terminator) that this function will write. +// Returns the number of bytes written, EXCLUDING the null terminator. + +function stringToUTF8(str, outPtr, maxBytesToWrite) { + assert(typeof maxBytesToWrite == 'number', 'stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); + return stringToUTF8Array(str, HEAPU8,outPtr, maxBytesToWrite); +} + +// Returns the number of bytes the given Javascript string takes if encoded as a UTF8 byte array, EXCLUDING the null terminator byte. +function lengthBytesUTF8(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + var u = str.charCodeAt(i); // possibly a lead surrogate + if (u >= 0xD800 && u <= 0xDFFF) u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF); + if (u <= 0x7F) ++len; + else if (u <= 0x7FF) len += 2; + else if (u <= 0xFFFF) len += 3; + else len += 4; + } + return len; +} + +// end include: runtime_strings.js +// include: runtime_strings_extra.js + + +// runtime_strings_extra.js: Strings related runtime functions that are available only in regular runtime. + +// Given a pointer 'ptr' to a null-terminated ASCII-encoded string in the emscripten HEAP, returns +// a copy of that string as a Javascript String object. + +function AsciiToString(ptr) { + var str = ''; + while (1) { + var ch = HEAPU8[((ptr++)>>0)]; + if (!ch) return str; + str += String.fromCharCode(ch); + } +} + +// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', +// null-terminated and encoded in ASCII form. The copy will require at most str.length+1 bytes of space in the HEAP. + +function stringToAscii(str, outPtr) { + return writeAsciiToMemory(str, outPtr, false); +} + +// Given a pointer 'ptr' to a null-terminated UTF16LE-encoded string in the emscripten HEAP, returns +// a copy of that string as a Javascript String object. + +var UTF16Decoder = typeof TextDecoder != 'undefined' ? new TextDecoder('utf-16le') : undefined; + +function UTF16ToString(ptr, maxBytesToRead) { + assert(ptr % 2 == 0, 'Pointer passed to UTF16ToString must be aligned to two bytes!'); + var endPtr = ptr; + // TextDecoder needs to know the byte length in advance, it doesn't stop on null terminator by itself. + // Also, use the length info to avoid running tiny strings through TextDecoder, since .subarray() allocates garbage. + var idx = endPtr >> 1; + var maxIdx = idx + maxBytesToRead / 2; + // If maxBytesToRead is not passed explicitly, it will be undefined, and this + // will always evaluate to true. This saves on code size. + while (!(idx >= maxIdx) && HEAPU16[idx]) ++idx; + endPtr = idx << 1; + + if (endPtr - ptr > 32 && UTF16Decoder) { + return UTF16Decoder.decode(HEAPU8.subarray(ptr, endPtr)); + } else { + var str = ''; + + // If maxBytesToRead is not passed explicitly, it will be undefined, and the for-loop's condition + // will always evaluate to true. The loop is then terminated on the first null char. + for (var i = 0; !(i >= maxBytesToRead / 2); ++i) { + var codeUnit = HEAP16[(((ptr)+(i*2))>>1)]; + if (codeUnit == 0) break; + // fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through. + str += String.fromCharCode(codeUnit); + } + + return str; + } +} + +// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', +// null-terminated and encoded in UTF16 form. The copy will require at most str.length*4+2 bytes of space in the HEAP. +// Use the function lengthBytesUTF16() to compute the exact number of bytes (excluding null terminator) that this function will write. +// Parameters: +// str: the Javascript string to copy. +// outPtr: Byte address in Emscripten HEAP where to write the string to. +// maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null +// terminator, i.e. if maxBytesToWrite=2, only the null terminator will be written and nothing else. +// maxBytesToWrite<2 does not write any bytes to the output, not even the null terminator. +// Returns the number of bytes written, EXCLUDING the null terminator. + +function stringToUTF16(str, outPtr, maxBytesToWrite) { + assert(outPtr % 2 == 0, 'Pointer passed to stringToUTF16 must be aligned to two bytes!'); + assert(typeof maxBytesToWrite == 'number', 'stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); + // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed. + if (maxBytesToWrite === undefined) { + maxBytesToWrite = 0x7FFFFFFF; + } + if (maxBytesToWrite < 2) return 0; + maxBytesToWrite -= 2; // Null terminator. + var startPtr = outPtr; + var numCharsToWrite = (maxBytesToWrite < str.length*2) ? (maxBytesToWrite / 2) : str.length; + for (var i = 0; i < numCharsToWrite; ++i) { + // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP. + var codeUnit = str.charCodeAt(i); // possibly a lead surrogate + HEAP16[((outPtr)>>1)] = codeUnit; + outPtr += 2; + } + // Null-terminate the pointer to the HEAP. + HEAP16[((outPtr)>>1)] = 0; + return outPtr - startPtr; +} + +// Returns the number of bytes the given Javascript string takes if encoded as a UTF16 byte array, EXCLUDING the null terminator byte. + +function lengthBytesUTF16(str) { + return str.length*2; +} + +function UTF32ToString(ptr, maxBytesToRead) { + assert(ptr % 4 == 0, 'Pointer passed to UTF32ToString must be aligned to four bytes!'); + var i = 0; + + var str = ''; + // If maxBytesToRead is not passed explicitly, it will be undefined, and this + // will always evaluate to true. This saves on code size. + while (!(i >= maxBytesToRead / 4)) { + var utf32 = HEAP32[(((ptr)+(i*4))>>2)]; + if (utf32 == 0) break; + ++i; + // Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + if (utf32 >= 0x10000) { + var ch = utf32 - 0x10000; + str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); + } else { + str += String.fromCharCode(utf32); + } + } + return str; +} + +// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', +// null-terminated and encoded in UTF32 form. The copy will require at most str.length*4+4 bytes of space in the HEAP. +// Use the function lengthBytesUTF32() to compute the exact number of bytes (excluding null terminator) that this function will write. +// Parameters: +// str: the Javascript string to copy. +// outPtr: Byte address in Emscripten HEAP where to write the string to. +// maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null +// terminator, i.e. if maxBytesToWrite=4, only the null terminator will be written and nothing else. +// maxBytesToWrite<4 does not write any bytes to the output, not even the null terminator. +// Returns the number of bytes written, EXCLUDING the null terminator. + +function stringToUTF32(str, outPtr, maxBytesToWrite) { + assert(outPtr % 4 == 0, 'Pointer passed to stringToUTF32 must be aligned to four bytes!'); + assert(typeof maxBytesToWrite == 'number', 'stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); + // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed. + if (maxBytesToWrite === undefined) { + maxBytesToWrite = 0x7FFFFFFF; + } + if (maxBytesToWrite < 4) return 0; + var startPtr = outPtr; + var endPtr = startPtr + maxBytesToWrite - 4; + for (var i = 0; i < str.length; ++i) { + // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + var codeUnit = str.charCodeAt(i); // possibly a lead surrogate + if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) { + var trailSurrogate = str.charCodeAt(++i); + codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF); + } + HEAP32[((outPtr)>>2)] = codeUnit; + outPtr += 4; + if (outPtr + 4 > endPtr) break; + } + // Null-terminate the pointer to the HEAP. + HEAP32[((outPtr)>>2)] = 0; + return outPtr - startPtr; +} + +// Returns the number of bytes the given Javascript string takes if encoded as a UTF16 byte array, EXCLUDING the null terminator byte. + +function lengthBytesUTF32(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + var codeUnit = str.charCodeAt(i); + if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) ++i; // possibly a lead surrogate, so skip over the tail surrogate. + len += 4; + } + + return len; +} + +// Allocate heap space for a JS string, and write it there. +// It is the responsibility of the caller to free() that memory. +function allocateUTF8(str) { + var size = lengthBytesUTF8(str) + 1; + var ret = _malloc(size); + if (ret) stringToUTF8Array(str, HEAP8, ret, size); + return ret; +} + +// Allocate stack space for a JS string, and write it there. +function allocateUTF8OnStack(str) { + var size = lengthBytesUTF8(str) + 1; + var ret = stackAlloc(size); + stringToUTF8Array(str, HEAP8, ret, size); + return ret; +} + +// Deprecated: This function should not be called because it is unsafe and does not provide +// a maximum length limit of how many bytes it is allowed to write. Prefer calling the +// function stringToUTF8Array() instead, which takes in a maximum length that can be used +// to be secure from out of bounds writes. +/** @deprecated + @param {boolean=} dontAddNull */ +function writeStringToMemory(string, buffer, dontAddNull) { + warnOnce('writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!'); + + var /** @type {number} */ lastChar, /** @type {number} */ end; + if (dontAddNull) { + // stringToUTF8Array always appends null. If we don't want to do that, remember the + // character that existed at the location where the null will be placed, and restore + // that after the write (below). + end = buffer + lengthBytesUTF8(string); + lastChar = HEAP8[end]; + } + stringToUTF8(string, buffer, Infinity); + if (dontAddNull) HEAP8[end] = lastChar; // Restore the value under the null character. +} + +function writeArrayToMemory(array, buffer) { + assert(array.length >= 0, 'writeArrayToMemory array must have a length (should be an array or typed array)') + HEAP8.set(array, buffer); +} + +/** @param {boolean=} dontAddNull */ +function writeAsciiToMemory(str, buffer, dontAddNull) { + for (var i = 0; i < str.length; ++i) { + assert(str.charCodeAt(i) === (str.charCodeAt(i) & 0xff)); + HEAP8[((buffer++)>>0)] = str.charCodeAt(i); + } + // Null-terminate the pointer to the HEAP. + if (!dontAddNull) HEAP8[((buffer)>>0)] = 0; +} + +// end include: runtime_strings_extra.js +// Memory management + +var HEAP, +/** @type {!ArrayBuffer} */ + buffer, +/** @type {!Int8Array} */ + HEAP8, +/** @type {!Uint8Array} */ + HEAPU8, +/** @type {!Int16Array} */ + HEAP16, +/** @type {!Uint16Array} */ + HEAPU16, +/** @type {!Int32Array} */ + HEAP32, +/** @type {!Uint32Array} */ + HEAPU32, +/** @type {!Float32Array} */ + HEAPF32, +/** @type {!Float64Array} */ + HEAPF64; + +function updateGlobalBufferAndViews(buf) { + buffer = buf; + Module['HEAP8'] = HEAP8 = new Int8Array(buf); + Module['HEAP16'] = HEAP16 = new Int16Array(buf); + Module['HEAP32'] = HEAP32 = new Int32Array(buf); + Module['HEAPU8'] = HEAPU8 = new Uint8Array(buf); + Module['HEAPU16'] = HEAPU16 = new Uint16Array(buf); + Module['HEAPU32'] = HEAPU32 = new Uint32Array(buf); + Module['HEAPF32'] = HEAPF32 = new Float32Array(buf); + Module['HEAPF64'] = HEAPF64 = new Float64Array(buf); +} + +var TOTAL_STACK = 5242880; +if (Module['TOTAL_STACK']) assert(TOTAL_STACK === Module['TOTAL_STACK'], 'the stack size can no longer be determined at runtime') + +var INITIAL_MEMORY = Module['INITIAL_MEMORY'] || 16777216;legacyModuleProp('INITIAL_MEMORY', 'INITIAL_MEMORY'); + +assert(INITIAL_MEMORY >= TOTAL_STACK, 'INITIAL_MEMORY should be larger than TOTAL_STACK, was ' + INITIAL_MEMORY + '! (TOTAL_STACK=' + TOTAL_STACK + ')'); + +// check for full engine support (use string 'subarray' to avoid closure compiler confusion) +assert(typeof Int32Array != 'undefined' && typeof Float64Array !== 'undefined' && Int32Array.prototype.subarray != undefined && Int32Array.prototype.set != undefined, + 'JS engine does not provide full typed array support'); + +// If memory is defined in wasm, the user can't provide it. +assert(!Module['wasmMemory'], 'Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally'); +assert(INITIAL_MEMORY == 16777216, 'Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically'); + +// include: runtime_init_table.js +// In regular non-RELOCATABLE mode the table is exported +// from the wasm module and this will be assigned once +// the exports are available. +var wasmTable; + +// end include: runtime_init_table.js +// include: runtime_stack_check.js + + +// Initializes the stack cookie. Called at the startup of main and at the startup of each thread in pthreads mode. +function writeStackCookie() { + var max = _emscripten_stack_get_end(); + assert((max & 3) == 0); + // The stack grow downwards towards _emscripten_stack_get_end. + // We write cookies to the final two words in the stack and detect if they are + // ever overwritten. + HEAP32[((max)>>2)] = 0x2135467; + HEAP32[(((max)+(4))>>2)] = 0x89BACDFE; + // Also test the global address 0 for integrity. + HEAPU32[0] = 0x63736d65; /* 'emsc' */ +} + +function checkStackCookie() { + if (ABORT) return; + var max = _emscripten_stack_get_end(); + var cookie1 = HEAPU32[((max)>>2)]; + var cookie2 = HEAPU32[(((max)+(4))>>2)]; + if (cookie1 != 0x2135467 || cookie2 != 0x89BACDFE) { + abort('Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x' + cookie2.toString(16) + ' 0x' + cookie1.toString(16)); + } + // Also test the global address 0 for integrity. + if (HEAPU32[0] !== 0x63736d65 /* 'emsc' */) abort('Runtime error: The application has corrupted its heap memory area (address zero)!'); +} + +// end include: runtime_stack_check.js +// include: runtime_assertions.js + + +// Endianness check +(function() { + var h16 = new Int16Array(1); + var h8 = new Int8Array(h16.buffer); + h16[0] = 0x6373; + if (h8[0] !== 0x73 || h8[1] !== 0x63) throw 'Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)'; +})(); + +// end include: runtime_assertions.js +var __ATPRERUN__ = []; // functions called before the runtime is initialized +var __ATINIT__ = []; // functions called during startup +var __ATMAIN__ = []; // functions called when main() is to be run +var __ATEXIT__ = []; // functions called during shutdown +var __ATPOSTRUN__ = []; // functions called after the main() is called + +var runtimeInitialized = false; + +function keepRuntimeAlive() { + return noExitRuntime; +} + +function preRun() { + + if (Module['preRun']) { + if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']]; + while (Module['preRun'].length) { + addOnPreRun(Module['preRun'].shift()); + } + } + + callRuntimeCallbacks(__ATPRERUN__); +} + +function initRuntime() { + assert(!runtimeInitialized); + runtimeInitialized = true; + + checkStackCookie(); + + + callRuntimeCallbacks(__ATINIT__); +} + +function preMain() { + checkStackCookie(); + + callRuntimeCallbacks(__ATMAIN__); +} + +function postRun() { + checkStackCookie(); + + if (Module['postRun']) { + if (typeof Module['postRun'] == 'function') Module['postRun'] = [Module['postRun']]; + while (Module['postRun'].length) { + addOnPostRun(Module['postRun'].shift()); + } + } + + callRuntimeCallbacks(__ATPOSTRUN__); +} + +function addOnPreRun(cb) { + __ATPRERUN__.unshift(cb); +} + +function addOnInit(cb) { + __ATINIT__.unshift(cb); +} + +function addOnPreMain(cb) { + __ATMAIN__.unshift(cb); +} + +function addOnExit(cb) { +} + +function addOnPostRun(cb) { + __ATPOSTRUN__.unshift(cb); +} + +// include: runtime_math.js + + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/imul + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/fround + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/clz32 + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/trunc + +assert(Math.imul, 'This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); +assert(Math.fround, 'This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); +assert(Math.clz32, 'This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); +assert(Math.trunc, 'This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); + +// end include: runtime_math.js +// A counter of dependencies for calling run(). If we need to +// do asynchronous work before running, increment this and +// decrement it. Incrementing must happen in a place like +// Module.preRun (used by emcc to add file preloading). +// Note that you can add dependencies in preRun, even though +// it happens right before run - run will be postponed until +// the dependencies are met. +var runDependencies = 0; +var runDependencyWatcher = null; +var dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled +var runDependencyTracking = {}; + +function getUniqueRunDependency(id) { + var orig = id; + while (1) { + if (!runDependencyTracking[id]) return id; + id = orig + Math.random(); + } +} + +function addRunDependency(id) { + runDependencies++; + + if (Module['monitorRunDependencies']) { + Module['monitorRunDependencies'](runDependencies); + } + + if (id) { + assert(!runDependencyTracking[id]); + runDependencyTracking[id] = 1; + if (runDependencyWatcher === null && typeof setInterval != 'undefined') { + // Check for missing dependencies every few seconds + runDependencyWatcher = setInterval(function() { + if (ABORT) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; + return; + } + var shown = false; + for (var dep in runDependencyTracking) { + if (!shown) { + shown = true; + err('still waiting on run dependencies:'); + } + err('dependency: ' + dep); + } + if (shown) { + err('(end of list)'); + } + }, 10000); + } + } else { + err('warning: run dependency added without ID'); + } +} + +function removeRunDependency(id) { + runDependencies--; + + if (Module['monitorRunDependencies']) { + Module['monitorRunDependencies'](runDependencies); + } + + if (id) { + assert(runDependencyTracking[id]); + delete runDependencyTracking[id]; + } else { + err('warning: run dependency removed without ID'); + } + if (runDependencies == 0) { + if (runDependencyWatcher !== null) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; + } + if (dependenciesFulfilled) { + var callback = dependenciesFulfilled; + dependenciesFulfilled = null; + callback(); // can add another dependenciesFulfilled + } + } +} + +/** @param {string|number=} what */ +function abort(what) { + { + if (Module['onAbort']) { + Module['onAbort'](what); + } + } + + what = 'Aborted(' + what + ')'; + // TODO(sbc): Should we remove printing and leave it up to whoever + // catches the exception? + err(what); + + ABORT = true; + EXITSTATUS = 1; + + // Use a wasm runtime error, because a JS error might be seen as a foreign + // exception, which means we'd run destructors on it. We need the error to + // simply make the program stop. + // FIXME This approach does not work in Wasm EH because it currently does not assume + // all RuntimeErrors are from traps; it decides whether a RuntimeError is from + // a trap or not based on a hidden field within the object. So at the moment + // we don't have a way of throwing a wasm trap from JS. TODO Make a JS API that + // allows this in the wasm spec. + + // Suppress closure compiler warning here. Closure compiler's builtin extern + // defintion for WebAssembly.RuntimeError claims it takes no arguments even + // though it can. + // TODO(https://github.com/google/closure-compiler/pull/3913): Remove if/when upstream closure gets fixed. + /** @suppress {checkTypes} */ + var e = new WebAssembly.RuntimeError(what); + + // Throw the error whether or not MODULARIZE is set because abort is used + // in code paths apart from instantiation where an exception is expected + // to be thrown when abort is called. + throw e; +} + +// {{MEM_INITIALIZER}} + +// include: memoryprofiler.js + + +// end include: memoryprofiler.js +// show errors on likely calls to FS when it was not included +var FS = { + error: function() { + abort('Filesystem support (FS) was not included. The problem is that you are using files from JS, but files were not used from C/C++, so filesystem support was not auto-included. You can force-include filesystem support with -sFORCE_FILESYSTEM'); + }, + init: function() { FS.error() }, + createDataFile: function() { FS.error() }, + createPreloadedFile: function() { FS.error() }, + createLazyFile: function() { FS.error() }, + open: function() { FS.error() }, + mkdev: function() { FS.error() }, + registerDevice: function() { FS.error() }, + analyzePath: function() { FS.error() }, + loadFilesFromDB: function() { FS.error() }, + + ErrnoError: function ErrnoError() { FS.error() }, +}; +Module['FS_createDataFile'] = FS.createDataFile; +Module['FS_createPreloadedFile'] = FS.createPreloadedFile; + +// include: URIUtils.js + + +// Prefix of data URIs emitted by SINGLE_FILE and related options. +var dataURIPrefix = 'data:application/octet-stream;base64,'; + +// Indicates whether filename is a base64 data URI. +function isDataURI(filename) { + // Prefix of data URIs emitted by SINGLE_FILE and related options. + return filename.startsWith(dataURIPrefix); +} + +// Indicates whether filename is delivered via file protocol (as opposed to http/https) +function isFileURI(filename) { + return filename.startsWith('file://'); +} + +// end include: URIUtils.js +/** @param {boolean=} fixedasm */ +function createExportWrapper(name, fixedasm) { + return function() { + var displayName = name; + var asm = fixedasm; + if (!fixedasm) { + asm = Module['asm']; + } + assert(runtimeInitialized, 'native function `' + displayName + '` called before runtime initialization'); + if (!asm[name]) { + assert(asm[name], 'exported native function `' + displayName + '` not found'); + } + return asm[name].apply(null, arguments); + }; +} + +var wasmBinaryFile; + wasmBinaryFile = 'mariokart.wasm'; + if (!isDataURI(wasmBinaryFile)) { + wasmBinaryFile = locateFile(wasmBinaryFile); + } + +function getBinary(file) { + try { + if (file == wasmBinaryFile && wasmBinary) { + return new Uint8Array(wasmBinary); + } + if (readBinary) { + return readBinary(file); + } else { + throw "both async and sync fetching of the wasm failed"; + } + } + catch (err) { + abort(err); + } +} + +function getBinaryPromise() { + // If we don't have the binary yet, try to to load it asynchronously. + // Fetch has some additional restrictions over XHR, like it can't be used on a file:// url. + // See https://github.com/github/fetch/pull/92#issuecomment-140665932 + // Cordova or Electron apps are typically loaded from a file:// url. + // So use fetch if it is available and the url is not a file, otherwise fall back to XHR. + if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) { + if (typeof fetch == 'function' + && !isFileURI(wasmBinaryFile) + ) { + return fetch(wasmBinaryFile, { credentials: 'same-origin' }).then(function(response) { + if (!response['ok']) { + throw "failed to load wasm binary file at '" + wasmBinaryFile + "'"; + } + return response['arrayBuffer'](); + }).catch(function () { + return getBinary(wasmBinaryFile); + }); + } + else { + if (readAsync) { + // fetch is not available or url is file => try XHR (readAsync uses XHR internally) + return new Promise(function(resolve, reject) { + readAsync(wasmBinaryFile, function(response) { resolve(new Uint8Array(/** @type{!ArrayBuffer} */(response))) }, reject) + }); + } + } + } + + // Otherwise, getBinary should be able to get it synchronously + return Promise.resolve().then(function() { return getBinary(wasmBinaryFile); }); +} + +// Create the wasm instance. +// Receives the wasm imports, returns the exports. +function createWasm() { + // prepare imports + var info = { + 'env': asmLibraryArg, + 'wasi_snapshot_preview1': asmLibraryArg, + }; + // Load the wasm module and create an instance of using native support in the JS engine. + // handle a generated wasm instance, receiving its exports and + // performing other necessary setup + /** @param {WebAssembly.Module=} module*/ + function receiveInstance(instance, module) { + var exports = instance.exports; + + Module['asm'] = exports; + + wasmMemory = Module['asm']['memory']; + assert(wasmMemory, "memory not found in wasm exports"); + // This assertion doesn't hold when emscripten is run in --post-link + // mode. + // TODO(sbc): Read INITIAL_MEMORY out of the wasm file in post-link mode. + //assert(wasmMemory.buffer.byteLength === 16777216); + updateGlobalBufferAndViews(wasmMemory.buffer); + + wasmTable = Module['asm']['__indirect_function_table']; + assert(wasmTable, "table not found in wasm exports"); + + addOnInit(Module['asm']['__wasm_call_ctors']); + + removeRunDependency('wasm-instantiate'); + + } + // we can't run yet (except in a pthread, where we have a custom sync instantiator) + addRunDependency('wasm-instantiate'); + + // Prefer streaming instantiation if available. + // Async compilation can be confusing when an error on the page overwrites Module + // (for example, if the order of elements is wrong, and the one defining Module is + // later), so we save Module and check it later. + var trueModule = Module; + function receiveInstantiationResult(result) { + // 'result' is a ResultObject object which has both the module and instance. + // receiveInstance() will swap in the exports (to Module.asm) so they can be called + assert(Module === trueModule, 'the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?'); + trueModule = null; + // TODO: Due to Closure regression https://github.com/google/closure-compiler/issues/3193, the above line no longer optimizes out down to the following line. + // When the regression is fixed, can restore the above USE_PTHREADS-enabled path. + receiveInstance(result['instance']); + } + + function instantiateArrayBuffer(receiver) { + return getBinaryPromise().then(function(binary) { + return WebAssembly.instantiate(binary, info); + }).then(function (instance) { + return instance; + }).then(receiver, function(reason) { + err('failed to asynchronously prepare wasm: ' + reason); + + // Warn on some common problems. + if (isFileURI(wasmBinaryFile)) { + err('warning: Loading from a file URI (' + wasmBinaryFile + ') is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing'); + } + abort(reason); + }); + } + + function instantiateAsync() { + if (!wasmBinary && + typeof WebAssembly.instantiateStreaming == 'function' && + !isDataURI(wasmBinaryFile) && + // Don't use streaming for file:// delivered objects in a webview, fetch them synchronously. + !isFileURI(wasmBinaryFile) && + // Avoid instantiateStreaming() on Node.js environment for now, as while + // Node.js v18.1.0 implements it, it does not have a full fetch() + // implementation yet. + // + // Reference: + // https://github.com/emscripten-core/emscripten/pull/16917 + !ENVIRONMENT_IS_NODE && + typeof fetch == 'function') { + return fetch(wasmBinaryFile, { credentials: 'same-origin' }).then(function(response) { + // Suppress closure warning here since the upstream definition for + // instantiateStreaming only allows Promise rather than + // an actual Response. + // TODO(https://github.com/google/closure-compiler/pull/3913): Remove if/when upstream closure is fixed. + /** @suppress {checkTypes} */ + var result = WebAssembly.instantiateStreaming(response, info); + + return result.then( + receiveInstantiationResult, + function(reason) { + // We expect the most common failure cause to be a bad MIME type for the binary, + // in which case falling back to ArrayBuffer instantiation should work. + err('wasm streaming compile failed: ' + reason); + err('falling back to ArrayBuffer instantiation'); + return instantiateArrayBuffer(receiveInstantiationResult); + }); + }); + } else { + return instantiateArrayBuffer(receiveInstantiationResult); + } + } + + // User shell pages can write their own Module.instantiateWasm = function(imports, successCallback) callback + // to manually instantiate the Wasm module themselves. This allows pages to run the instantiation parallel + // to any other async startup actions they are performing. + // Also pthreads and wasm workers initialize the wasm instance through this path. + if (Module['instantiateWasm']) { + try { + var exports = Module['instantiateWasm'](info, receiveInstance); + return exports; + } catch(e) { + err('Module.instantiateWasm callback failed with error: ' + e); + return false; + } + } + + instantiateAsync(); + return {}; // no exports yet; we'll fill them in later +} + +// Globals used by JS i64 conversions (see makeSetValue) +var tempDouble; +var tempI64; + +// === Body === + +var ASM_CONSTS = { + 529604: () => { window.canvasContext = Module['canvas'].getContext('2d'); window.canvasImageData = canvasContext.getImageData(0, 0, 396, 224); }, + 529735: ($0) => { let data = Module.HEAPU8.slice($0, $0 + 396 * 224 * 4); canvasImageData.data.set(data); canvasContext.putImageData(canvasImageData, 0, 0); } +}; +function getTimeMS() { return Date.now() - 1657104690407; } +function logInit() { console.log("platformInit"); } + + + + + + function callRuntimeCallbacks(callbacks) { + while (callbacks.length > 0) { + var callback = callbacks.shift(); + if (typeof callback == 'function') { + callback(Module); // Pass the module as the first argument. + continue; + } + var func = callback.func; + if (typeof func == 'number') { + if (callback.arg === undefined) { + // Run the wasm function ptr with signature 'v'. If no function + // with such signature was exported, this call does not need + // to be emitted (and would confuse Closure) + getWasmTableEntry(func)(); + } else { + // If any function with signature 'vi' was exported, run + // the callback with that signature. + getWasmTableEntry(func)(callback.arg); + } + } else { + func(callback.arg === undefined ? null : callback.arg); + } + } + } + + function withStackSave(f) { + var stack = stackSave(); + var ret = f(); + stackRestore(stack); + return ret; + } + function demangle(func) { + warnOnce('warning: build with -sDEMANGLE_SUPPORT to link in libcxxabi demangling'); + return func; + } + + function demangleAll(text) { + var regex = + /\b_Z[\w\d_]+/g; + return text.replace(regex, + function(x) { + var y = demangle(x); + return x === y ? x : (y + ' [' + x + ']'); + }); + } + + + /** + * @param {number} ptr + * @param {string} type + */ + function getValue(ptr, type = 'i8') { + if (type.endsWith('*')) type = 'i32'; + switch (type) { + case 'i1': return HEAP8[((ptr)>>0)]; + case 'i8': return HEAP8[((ptr)>>0)]; + case 'i16': return HEAP16[((ptr)>>1)]; + case 'i32': return HEAP32[((ptr)>>2)]; + case 'i64': return HEAP32[((ptr)>>2)]; + case 'float': return HEAPF32[((ptr)>>2)]; + case 'double': return Number(HEAPF64[((ptr)>>3)]); + default: abort('invalid type for getValue: ' + type); + } + return null; + } + + var wasmTableMirror = []; + function getWasmTableEntry(funcPtr) { + var func = wasmTableMirror[funcPtr]; + if (!func) { + if (funcPtr >= wasmTableMirror.length) wasmTableMirror.length = funcPtr + 1; + wasmTableMirror[funcPtr] = func = wasmTable.get(funcPtr); + } + assert(wasmTable.get(funcPtr) == func, "JavaScript-side Wasm function table mirror is out of date!"); + return func; + } + + function handleException(e) { + // Certain exception types we do not treat as errors since they are used for + // internal control flow. + // 1. ExitStatus, which is thrown by exit() + // 2. "unwind", which is thrown by emscripten_unwind_to_js_event_loop() and others + // that wish to return to JS event loop. + if (e instanceof ExitStatus || e == 'unwind') { + return EXITSTATUS; + } + quit_(1, e); + } + + function jsStackTrace() { + var error = new Error(); + if (!error.stack) { + // IE10+ special cases: It does have callstack info, but it is only + // populated if an Error object is thrown, so try that as a special-case. + try { + throw new Error(); + } catch(e) { + error = e; + } + if (!error.stack) { + return '(no stack trace available)'; + } + } + return error.stack.toString(); + } + + + /** + * @param {number} ptr + * @param {number} value + * @param {string} type + */ + function setValue(ptr, value, type = 'i8') { + if (type.endsWith('*')) type = 'i32'; + switch (type) { + case 'i1': HEAP8[((ptr)>>0)] = value; break; + case 'i8': HEAP8[((ptr)>>0)] = value; break; + case 'i16': HEAP16[((ptr)>>1)] = value; break; + case 'i32': HEAP32[((ptr)>>2)] = value; break; + case 'i64': (tempI64 = [value>>>0,(tempDouble=value,(+(Math.abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math.min((+(Math.floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math.ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[((ptr)>>2)] = tempI64[0],HEAP32[(((ptr)+(4))>>2)] = tempI64[1]); break; + case 'float': HEAPF32[((ptr)>>2)] = value; break; + case 'double': HEAPF64[((ptr)>>3)] = value; break; + default: abort('invalid type for setValue: ' + type); + } + } + + function setWasmTableEntry(idx, func) { + wasmTable.set(idx, func); + // With ABORT_ON_WASM_EXCEPTIONS wasmTable.get is overriden to return wrapped + // functions so we need to call it here to retrieve the potential wrapper correctly + // instead of just storing 'func' directly into wasmTableMirror + wasmTableMirror[idx] = wasmTable.get(idx); + } + + function stackTrace() { + var js = jsStackTrace(); + if (Module['extraStackTrace']) js += '\n' + Module['extraStackTrace'](); + return demangleAll(js); + } + + var readAsmConstArgsArray = []; + function readAsmConstArgs(sigPtr, buf) { + // Nobody should have mutated _readAsmConstArgsArray underneath us to be something else than an array. + assert(Array.isArray(readAsmConstArgsArray)); + // The input buffer is allocated on the stack, so it must be stack-aligned. + assert(buf % 16 == 0); + readAsmConstArgsArray.length = 0; + var ch; + // Most arguments are i32s, so shift the buffer pointer so it is a plain + // index into HEAP32. + buf >>= 2; + while (ch = HEAPU8[sigPtr++]) { + var chr = String.fromCharCode(ch); + var validChars = ['d', 'f', 'i']; + assert(validChars.includes(chr), 'Invalid character ' + ch + '("' + chr + '") in readAsmConstArgs! Use only [' + validChars + '], and do not specify "v" for void return argument.'); + // Floats are always passed as doubles, and doubles and int64s take up 8 + // bytes (two 32-bit slots) in memory, align reads to these: + buf += (ch != 105/*i*/) & buf; + readAsmConstArgsArray.push( + ch == 105/*i*/ ? HEAP32[buf] : + HEAPF64[buf++ >> 1] + ); + ++buf; + } + return readAsmConstArgsArray; + } + function _emscripten_asm_const_int(code, sigPtr, argbuf) { + var args = readAsmConstArgs(sigPtr, argbuf); + if (!ASM_CONSTS.hasOwnProperty(code)) abort('No EM_ASM constant found at address ' + code); + return ASM_CONSTS[code].apply(null, args); + } + + function _emscripten_memcpy_big(dest, src, num) { + HEAPU8.copyWithin(dest, src, src + num); + } + + function getHeapMax() { + return HEAPU8.length; + } + + function abortOnCannotGrowMemory(requestedSize) { + abort('Cannot enlarge memory arrays to size ' + requestedSize + ' bytes (OOM). Either (1) compile with -sINITIAL_MEMORY=X with X higher than the current value ' + HEAP8.length + ', (2) compile with -sALLOW_MEMORY_GROWTH which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -sABORTING_MALLOC=0'); + } + function _emscripten_resize_heap(requestedSize) { + var oldSize = HEAPU8.length; + requestedSize = requestedSize >>> 0; + abortOnCannotGrowMemory(requestedSize); + } + + function _emscripten_set_main_loop_timing(mode, value) { + Browser.mainLoop.timingMode = mode; + Browser.mainLoop.timingValue = value; + + if (!Browser.mainLoop.func) { + err('emscripten_set_main_loop_timing: Cannot set timing mode for main loop since a main loop does not exist! Call emscripten_set_main_loop first to set one up.'); + return 1; // Return non-zero on failure, can't set timing mode when there is no main loop. + } + + if (!Browser.mainLoop.running) { + + Browser.mainLoop.running = true; + } + if (mode == 0 /*EM_TIMING_SETTIMEOUT*/) { + Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_setTimeout() { + var timeUntilNextTick = Math.max(0, Browser.mainLoop.tickStartTime + value - _emscripten_get_now())|0; + setTimeout(Browser.mainLoop.runner, timeUntilNextTick); // doing this each time means that on exception, we stop + }; + Browser.mainLoop.method = 'timeout'; + } else if (mode == 1 /*EM_TIMING_RAF*/) { + Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_rAF() { + Browser.requestAnimationFrame(Browser.mainLoop.runner); + }; + Browser.mainLoop.method = 'rAF'; + } else if (mode == 2 /*EM_TIMING_SETIMMEDIATE*/) { + if (typeof setImmediate == 'undefined') { + // Emulate setImmediate. (note: not a complete polyfill, we don't emulate clearImmediate() to keep code size to minimum, since not needed) + var setImmediates = []; + var emscriptenMainLoopMessageId = 'setimmediate'; + var Browser_setImmediate_messageHandler = function(/** @type {Event} */ event) { + // When called in current thread or Worker, the main loop ID is structured slightly different to accommodate for --proxy-to-worker runtime listening to Worker events, + // so check for both cases. + if (event.data === emscriptenMainLoopMessageId || event.data.target === emscriptenMainLoopMessageId) { + event.stopPropagation(); + setImmediates.shift()(); + } + } + addEventListener("message", Browser_setImmediate_messageHandler, true); + setImmediate = /** @type{function(function(): ?, ...?): number} */(function Browser_emulated_setImmediate(func) { + setImmediates.push(func); + if (ENVIRONMENT_IS_WORKER) { + if (Module['setImmediates'] === undefined) Module['setImmediates'] = []; + Module['setImmediates'].push(func); + postMessage({target: emscriptenMainLoopMessageId}); // In --proxy-to-worker, route the message via proxyClient.js + } else postMessage(emscriptenMainLoopMessageId, "*"); // On the main thread, can just send the message to itself. + }) + } + Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_setImmediate() { + setImmediate(Browser.mainLoop.runner); + }; + Browser.mainLoop.method = 'immediate'; + } + return 0; + } + + var _emscripten_get_now;if (ENVIRONMENT_IS_NODE) { + _emscripten_get_now = () => { + var t = process['hrtime'](); + return t[0] * 1e3 + t[1] / 1e6; + }; + } else _emscripten_get_now = () => performance.now(); + ; + + function runtimeKeepalivePush() { + } + + function _exit(status) { + // void _exit(int status); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/exit.html + exit(status); + } + function maybeExit() { + } + + /** + * @param {number=} arg + * @param {boolean=} noSetTiming + */ + function setMainLoop(browserIterationFunc, fps, simulateInfiniteLoop, arg, noSetTiming) { + assert(!Browser.mainLoop.func, 'emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.'); + + Browser.mainLoop.func = browserIterationFunc; + Browser.mainLoop.arg = arg; + + var thisMainLoopId = Browser.mainLoop.currentlyRunningMainloop; + function checkIsRunning() { + if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) { + + maybeExit(); + return false; + } + return true; + } + + // We create the loop runner here but it is not actually running until + // _emscripten_set_main_loop_timing is called (which might happen a + // later time). This member signifies that the current runner has not + // yet been started so that we can call runtimeKeepalivePush when it + // gets it timing set for the first time. + Browser.mainLoop.running = false; + Browser.mainLoop.runner = function Browser_mainLoop_runner() { + if (ABORT) return; + if (Browser.mainLoop.queue.length > 0) { + var start = Date.now(); + var blocker = Browser.mainLoop.queue.shift(); + blocker.func(blocker.arg); + if (Browser.mainLoop.remainingBlockers) { + var remaining = Browser.mainLoop.remainingBlockers; + var next = remaining%1 == 0 ? remaining-1 : Math.floor(remaining); + if (blocker.counted) { + Browser.mainLoop.remainingBlockers = next; + } else { + // not counted, but move the progress along a tiny bit + next = next + 0.5; // do not steal all the next one's progress + Browser.mainLoop.remainingBlockers = (8*remaining + next)/9; + } + } + out('main loop blocker "' + blocker.name + '" took ' + (Date.now() - start) + ' ms'); //, left: ' + Browser.mainLoop.remainingBlockers); + Browser.mainLoop.updateStatus(); + + // catches pause/resume main loop from blocker execution + if (!checkIsRunning()) return; + + setTimeout(Browser.mainLoop.runner, 0); + return; + } + + // catch pauses from non-main loop sources + if (!checkIsRunning()) return; + + // Implement very basic swap interval control + Browser.mainLoop.currentFrameNumber = Browser.mainLoop.currentFrameNumber + 1 | 0; + if (Browser.mainLoop.timingMode == 1/*EM_TIMING_RAF*/ && Browser.mainLoop.timingValue > 1 && Browser.mainLoop.currentFrameNumber % Browser.mainLoop.timingValue != 0) { + // Not the scheduled time to render this frame - skip. + Browser.mainLoop.scheduler(); + return; + } else if (Browser.mainLoop.timingMode == 0/*EM_TIMING_SETTIMEOUT*/) { + Browser.mainLoop.tickStartTime = _emscripten_get_now(); + } + + // Signal GL rendering layer that processing of a new frame is about to start. This helps it optimize + // VBO double-buffering and reduce GPU stalls. + + if (Browser.mainLoop.method === 'timeout' && Module.ctx) { + warnOnce('Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!'); + Browser.mainLoop.method = ''; // just warn once per call to set main loop + } + + Browser.mainLoop.runIter(browserIterationFunc); + + checkStackCookie(); + + // catch pauses from the main loop itself + if (!checkIsRunning()) return; + + // Queue new audio data. This is important to be right after the main loop invocation, so that we will immediately be able + // to queue the newest produced audio samples. + // TODO: Consider adding pre- and post- rAF callbacks so that GL.newRenderingFrameStarted() and SDL.audio.queueNewAudioData() + // do not need to be hardcoded into this function, but can be more generic. + if (typeof SDL == 'object' && SDL.audio && SDL.audio.queueNewAudioData) SDL.audio.queueNewAudioData(); + + Browser.mainLoop.scheduler(); + } + + if (!noSetTiming) { + if (fps && fps > 0) _emscripten_set_main_loop_timing(0/*EM_TIMING_SETTIMEOUT*/, 1000.0 / fps); + else _emscripten_set_main_loop_timing(1/*EM_TIMING_RAF*/, 1); // Do rAF by rendering each frame (no decimating) + + Browser.mainLoop.scheduler(); + } + + if (simulateInfiniteLoop) { + throw 'unwind'; + } + } + + /** @param {boolean=} synchronous */ + function callUserCallback(func, synchronous) { + if (ABORT) { + err('user callback triggered after runtime exited or application aborted. Ignoring.'); + return; + } + // For synchronous calls, let any exceptions propagate, and don't let the runtime exit. + if (synchronous) { + func(); + return; + } + try { + func(); + } catch (e) { + handleException(e); + } + } + + function runtimeKeepalivePop() { + } + /** @param {number=} timeout */ + function safeSetTimeout(func, timeout) { + + return setTimeout(function() { + + callUserCallback(func); + }, timeout); + } + var Browser = {mainLoop:{running:false,scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function() { + Browser.mainLoop.scheduler = null; + // Incrementing this signals the previous main loop that it's now become old, and it must return. + Browser.mainLoop.currentlyRunningMainloop++; + },resume:function() { + Browser.mainLoop.currentlyRunningMainloop++; + var timingMode = Browser.mainLoop.timingMode; + var timingValue = Browser.mainLoop.timingValue; + var func = Browser.mainLoop.func; + Browser.mainLoop.func = null; + // do not set timing and call scheduler, we will do it on the next lines + setMainLoop(func, 0, false, Browser.mainLoop.arg, true); + _emscripten_set_main_loop_timing(timingMode, timingValue); + Browser.mainLoop.scheduler(); + },updateStatus:function() { + if (Module['setStatus']) { + var message = Module['statusMessage'] || 'Please wait...'; + var remaining = Browser.mainLoop.remainingBlockers; + var expected = Browser.mainLoop.expectedBlockers; + if (remaining) { + if (remaining < expected) { + Module['setStatus'](message + ' (' + (expected - remaining) + '/' + expected + ')'); + } else { + Module['setStatus'](message); + } + } else { + Module['setStatus'](''); + } + } + },runIter:function(func) { + if (ABORT) return; + if (Module['preMainLoop']) { + var preRet = Module['preMainLoop'](); + if (preRet === false) { + return; // |return false| skips a frame + } + } + callUserCallback(func); + if (Module['postMainLoop']) Module['postMainLoop'](); + }},isFullscreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function() { + if (!Module["preloadPlugins"]) Module["preloadPlugins"] = []; // needs to exist even in workers + + if (Browser.initted) return; + Browser.initted = true; + + try { + new Blob(); + Browser.hasBlobConstructor = true; + } catch(e) { + Browser.hasBlobConstructor = false; + out("warning: no blob constructor, cannot create blobs with mimetypes"); + } + Browser.BlobBuilder = typeof MozBlobBuilder != "undefined" ? MozBlobBuilder : (typeof WebKitBlobBuilder != "undefined" ? WebKitBlobBuilder : (!Browser.hasBlobConstructor ? out("warning: no BlobBuilder") : null)); + Browser.URLObject = typeof window != "undefined" ? (window.URL ? window.URL : window.webkitURL) : undefined; + if (!Module.noImageDecoding && typeof Browser.URLObject == 'undefined') { + out("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available."); + Module.noImageDecoding = true; + } + + // Support for plugins that can process preloaded files. You can add more of these to + // your app by creating and appending to Module.preloadPlugins. + // + // Each plugin is asked if it can handle a file based on the file's name. If it can, + // it is given the file's raw data. When it is done, it calls a callback with the file's + // (possibly modified) data. For example, a plugin might decompress a file, or it + // might create some side data structure for use later (like an Image element, etc.). + + var imagePlugin = {}; + imagePlugin['canHandle'] = function imagePlugin_canHandle(name) { + return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(name); + }; + imagePlugin['handle'] = function imagePlugin_handle(byteArray, name, onload, onerror) { + var b = null; + if (Browser.hasBlobConstructor) { + try { + b = new Blob([byteArray], { type: Browser.getMimetype(name) }); + if (b.size !== byteArray.length) { // Safari bug #118630 + // Safari's Blob can only take an ArrayBuffer + b = new Blob([(new Uint8Array(byteArray)).buffer], { type: Browser.getMimetype(name) }); + } + } catch(e) { + warnOnce('Blob constructor present but fails: ' + e + '; falling back to blob builder'); + } + } + if (!b) { + var bb = new Browser.BlobBuilder(); + bb.append((new Uint8Array(byteArray)).buffer); // we need to pass a buffer, and must copy the array to get the right data range + b = bb.getBlob(); + } + var url = Browser.URLObject.createObjectURL(b); + assert(typeof url == 'string', 'createObjectURL must return a url as a string'); + var img = new Image(); + img.onload = () => { + assert(img.complete, 'Image ' + name + ' could not be decoded'); + var canvas = /** @type {!HTMLCanvasElement} */ (document.createElement('canvas')); + canvas.width = img.width; + canvas.height = img.height; + var ctx = canvas.getContext('2d'); + ctx.drawImage(img, 0, 0); + preloadedImages[name] = canvas; + Browser.URLObject.revokeObjectURL(url); + if (onload) onload(byteArray); + }; + img.onerror = (event) => { + out('Image ' + url + ' could not be decoded'); + if (onerror) onerror(); + }; + img.src = url; + }; + Module['preloadPlugins'].push(imagePlugin); + + var audioPlugin = {}; + audioPlugin['canHandle'] = function audioPlugin_canHandle(name) { + return !Module.noAudioDecoding && name.substr(-4) in { '.ogg': 1, '.wav': 1, '.mp3': 1 }; + }; + audioPlugin['handle'] = function audioPlugin_handle(byteArray, name, onload, onerror) { + var done = false; + function finish(audio) { + if (done) return; + done = true; + preloadedAudios[name] = audio; + if (onload) onload(byteArray); + } + function fail() { + if (done) return; + done = true; + preloadedAudios[name] = new Audio(); // empty shim + if (onerror) onerror(); + } + if (Browser.hasBlobConstructor) { + try { + var b = new Blob([byteArray], { type: Browser.getMimetype(name) }); + } catch(e) { + return fail(); + } + var url = Browser.URLObject.createObjectURL(b); // XXX we never revoke this! + assert(typeof url == 'string', 'createObjectURL must return a url as a string'); + var audio = new Audio(); + audio.addEventListener('canplaythrough', function() { finish(audio) }, false); // use addEventListener due to chromium bug 124926 + audio.onerror = function audio_onerror(event) { + if (done) return; + out('warning: browser could not fully decode audio ' + name + ', trying slower base64 approach'); + function encode64(data) { + var BASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + var PAD = '='; + var ret = ''; + var leftchar = 0; + var leftbits = 0; + for (var i = 0; i < data.length; i++) { + leftchar = (leftchar << 8) | data[i]; + leftbits += 8; + while (leftbits >= 6) { + var curr = (leftchar >> (leftbits-6)) & 0x3f; + leftbits -= 6; + ret += BASE[curr]; + } + } + if (leftbits == 2) { + ret += BASE[(leftchar&3) << 4]; + ret += PAD + PAD; + } else if (leftbits == 4) { + ret += BASE[(leftchar&0xf) << 2]; + ret += PAD; + } + return ret; + } + audio.src = 'data:audio/x-' + name.substr(-3) + ';base64,' + encode64(byteArray); + finish(audio); // we don't wait for confirmation this worked - but it's worth trying + }; + audio.src = url; + // workaround for chrome bug 124926 - we do not always get oncanplaythrough or onerror + safeSetTimeout(function() { + finish(audio); // try to use it even though it is not necessarily ready to play + }, 10000); + } else { + return fail(); + } + }; + Module['preloadPlugins'].push(audioPlugin); + + // Canvas event setup + + function pointerLockChange() { + Browser.pointerLock = document['pointerLockElement'] === Module['canvas'] || + document['mozPointerLockElement'] === Module['canvas'] || + document['webkitPointerLockElement'] === Module['canvas'] || + document['msPointerLockElement'] === Module['canvas']; + } + var canvas = Module['canvas']; + if (canvas) { + // forced aspect ratio can be enabled by defining 'forcedAspectRatio' on Module + // Module['forcedAspectRatio'] = 4 / 3; + + canvas.requestPointerLock = canvas['requestPointerLock'] || + canvas['mozRequestPointerLock'] || + canvas['webkitRequestPointerLock'] || + canvas['msRequestPointerLock'] || + function(){}; + canvas.exitPointerLock = document['exitPointerLock'] || + document['mozExitPointerLock'] || + document['webkitExitPointerLock'] || + document['msExitPointerLock'] || + function(){}; // no-op if function does not exist + canvas.exitPointerLock = canvas.exitPointerLock.bind(document); + + document.addEventListener('pointerlockchange', pointerLockChange, false); + document.addEventListener('mozpointerlockchange', pointerLockChange, false); + document.addEventListener('webkitpointerlockchange', pointerLockChange, false); + document.addEventListener('mspointerlockchange', pointerLockChange, false); + + if (Module['elementPointerLock']) { + canvas.addEventListener("click", function(ev) { + if (!Browser.pointerLock && Module['canvas'].requestPointerLock) { + Module['canvas'].requestPointerLock(); + ev.preventDefault(); + } + }, false); + } + } + },handledByPreloadPlugin:function(byteArray, fullname, finish, onerror) { + // Ensure plugins are ready. + Browser.init(); + + var handled = false; + Module['preloadPlugins'].forEach(function(plugin) { + if (handled) return; + if (plugin['canHandle'](fullname)) { + plugin['handle'](byteArray, fullname, finish, onerror); + handled = true; + } + }); + return handled; + },createContext:function(/** @type {HTMLCanvasElement} */ canvas, useWebGL, setInModule, webGLContextAttributes) { + if (useWebGL && Module.ctx && canvas == Module.canvas) return Module.ctx; // no need to recreate GL context if it's already been created for this canvas. + + var ctx; + var contextHandle; + if (useWebGL) { + // For GLES2/desktop GL compatibility, adjust a few defaults to be different to WebGL defaults, so that they align better with the desktop defaults. + var contextAttributes = { + antialias: false, + alpha: false, + majorVersion: 1, + }; + + if (webGLContextAttributes) { + for (var attribute in webGLContextAttributes) { + contextAttributes[attribute] = webGLContextAttributes[attribute]; + } + } + + // This check of existence of GL is here to satisfy Closure compiler, which yells if variable GL is referenced below but GL object is not + // actually compiled in because application is not doing any GL operations. TODO: Ideally if GL is not being used, this function + // Browser.createContext() should not even be emitted. + if (typeof GL != 'undefined') { + contextHandle = GL.createContext(canvas, contextAttributes); + if (contextHandle) { + ctx = GL.getContext(contextHandle).GLctx; + } + } + } else { + ctx = canvas.getContext('2d'); + } + + if (!ctx) return null; + + if (setInModule) { + if (!useWebGL) assert(typeof GLctx == 'undefined', 'cannot set in module if GLctx is used, but we are a non-GL context that would replace it'); + + Module.ctx = ctx; + if (useWebGL) GL.makeContextCurrent(contextHandle); + Module.useWebGL = useWebGL; + Browser.moduleContextCreatedCallbacks.forEach(function(callback) { callback() }); + Browser.init(); + } + return ctx; + },destroyContext:function(canvas, useWebGL, setInModule) {},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(lockPointer, resizeCanvas) { + Browser.lockPointer = lockPointer; + Browser.resizeCanvas = resizeCanvas; + if (typeof Browser.lockPointer == 'undefined') Browser.lockPointer = true; + if (typeof Browser.resizeCanvas == 'undefined') Browser.resizeCanvas = false; + + var canvas = Module['canvas']; + function fullscreenChange() { + Browser.isFullscreen = false; + var canvasContainer = canvas.parentNode; + if ((document['fullscreenElement'] || document['mozFullScreenElement'] || + document['msFullscreenElement'] || document['webkitFullscreenElement'] || + document['webkitCurrentFullScreenElement']) === canvasContainer) { + canvas.exitFullscreen = Browser.exitFullscreen; + if (Browser.lockPointer) canvas.requestPointerLock(); + Browser.isFullscreen = true; + if (Browser.resizeCanvas) { + Browser.setFullscreenCanvasSize(); + } else { + Browser.updateCanvasDimensions(canvas); + } + } else { + // remove the full screen specific parent of the canvas again to restore the HTML structure from before going full screen + canvasContainer.parentNode.insertBefore(canvas, canvasContainer); + canvasContainer.parentNode.removeChild(canvasContainer); + + if (Browser.resizeCanvas) { + Browser.setWindowedCanvasSize(); + } else { + Browser.updateCanvasDimensions(canvas); + } + } + if (Module['onFullScreen']) Module['onFullScreen'](Browser.isFullscreen); + if (Module['onFullscreen']) Module['onFullscreen'](Browser.isFullscreen); + } + + if (!Browser.fullscreenHandlersInstalled) { + Browser.fullscreenHandlersInstalled = true; + document.addEventListener('fullscreenchange', fullscreenChange, false); + document.addEventListener('mozfullscreenchange', fullscreenChange, false); + document.addEventListener('webkitfullscreenchange', fullscreenChange, false); + document.addEventListener('MSFullscreenChange', fullscreenChange, false); + } + + // create a new parent to ensure the canvas has no siblings. this allows browsers to optimize full screen performance when its parent is the full screen root + var canvasContainer = document.createElement("div"); + canvas.parentNode.insertBefore(canvasContainer, canvas); + canvasContainer.appendChild(canvas); + + // use parent of canvas as full screen root to allow aspect ratio correction (Firefox stretches the root to screen size) + canvasContainer.requestFullscreen = canvasContainer['requestFullscreen'] || + canvasContainer['mozRequestFullScreen'] || + canvasContainer['msRequestFullscreen'] || + (canvasContainer['webkitRequestFullscreen'] ? function() { canvasContainer['webkitRequestFullscreen'](Element['ALLOW_KEYBOARD_INPUT']) } : null) || + (canvasContainer['webkitRequestFullScreen'] ? function() { canvasContainer['webkitRequestFullScreen'](Element['ALLOW_KEYBOARD_INPUT']) } : null); + + canvasContainer.requestFullscreen(); + },requestFullScreen:function() { + abort('Module.requestFullScreen has been replaced by Module.requestFullscreen (without a capital S)'); + },exitFullscreen:function() { + // This is workaround for chrome. Trying to exit from fullscreen + // not in fullscreen state will cause "TypeError: Document not active" + // in chrome. See https://github.com/emscripten-core/emscripten/pull/8236 + if (!Browser.isFullscreen) { + return false; + } + + var CFS = document['exitFullscreen'] || + document['cancelFullScreen'] || + document['mozCancelFullScreen'] || + document['msExitFullscreen'] || + document['webkitCancelFullScreen'] || + (function() {}); + CFS.apply(document, []); + return true; + },nextRAF:0,fakeRequestAnimationFrame:function(func) { + // try to keep 60fps between calls to here + var now = Date.now(); + if (Browser.nextRAF === 0) { + Browser.nextRAF = now + 1000/60; + } else { + while (now + 2 >= Browser.nextRAF) { // fudge a little, to avoid timer jitter causing us to do lots of delay:0 + Browser.nextRAF += 1000/60; + } + } + var delay = Math.max(Browser.nextRAF - now, 0); + setTimeout(func, delay); + },requestAnimationFrame:function(func) { + if (typeof requestAnimationFrame == 'function') { + requestAnimationFrame(func); + return; + } + var RAF = Browser.fakeRequestAnimationFrame; + RAF(func); + },safeSetTimeout:function(func) { + // Legacy function, this is used by the SDL2 port so we need to keep it + // around at least until that is updated. + return safeSetTimeout(func); + },safeRequestAnimationFrame:function(func) { + + return Browser.requestAnimationFrame(function() { + + callUserCallback(func); + }); + },getMimetype:function(name) { + return { + 'jpg': 'image/jpeg', + 'jpeg': 'image/jpeg', + 'png': 'image/png', + 'bmp': 'image/bmp', + 'ogg': 'audio/ogg', + 'wav': 'audio/wav', + 'mp3': 'audio/mpeg' + }[name.substr(name.lastIndexOf('.')+1)]; + },getUserMedia:function(func) { + if (!window.getUserMedia) { + window.getUserMedia = navigator['getUserMedia'] || + navigator['mozGetUserMedia']; + } + window.getUserMedia(func); + },getMovementX:function(event) { + return event['movementX'] || + event['mozMovementX'] || + event['webkitMovementX'] || + 0; + },getMovementY:function(event) { + return event['movementY'] || + event['mozMovementY'] || + event['webkitMovementY'] || + 0; + },getMouseWheelDelta:function(event) { + var delta = 0; + switch (event.type) { + case 'DOMMouseScroll': + // 3 lines make up a step + delta = event.detail / 3; + break; + case 'mousewheel': + // 120 units make up a step + delta = event.wheelDelta / 120; + break; + case 'wheel': + delta = event.deltaY + switch (event.deltaMode) { + case 0: + // DOM_DELTA_PIXEL: 100 pixels make up a step + delta /= 100; + break; + case 1: + // DOM_DELTA_LINE: 3 lines make up a step + delta /= 3; + break; + case 2: + // DOM_DELTA_PAGE: A page makes up 80 steps + delta *= 80; + break; + default: + throw 'unrecognized mouse wheel delta mode: ' + event.deltaMode; + } + break; + default: + throw 'unrecognized mouse wheel event: ' + event.type; + } + return delta; + },mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(event) { // event should be mousemove, mousedown or mouseup + if (Browser.pointerLock) { + // When the pointer is locked, calculate the coordinates + // based on the movement of the mouse. + // Workaround for Firefox bug 764498 + if (event.type != 'mousemove' && + ('mozMovementX' in event)) { + Browser.mouseMovementX = Browser.mouseMovementY = 0; + } else { + Browser.mouseMovementX = Browser.getMovementX(event); + Browser.mouseMovementY = Browser.getMovementY(event); + } + + // check if SDL is available + if (typeof SDL != "undefined") { + Browser.mouseX = SDL.mouseX + Browser.mouseMovementX; + Browser.mouseY = SDL.mouseY + Browser.mouseMovementY; + } else { + // just add the mouse delta to the current absolut mouse position + // FIXME: ideally this should be clamped against the canvas size and zero + Browser.mouseX += Browser.mouseMovementX; + Browser.mouseY += Browser.mouseMovementY; + } + } else { + // Otherwise, calculate the movement based on the changes + // in the coordinates. + var rect = Module["canvas"].getBoundingClientRect(); + var cw = Module["canvas"].width; + var ch = Module["canvas"].height; + + // Neither .scrollX or .pageXOffset are defined in a spec, but + // we prefer .scrollX because it is currently in a spec draft. + // (see: http://www.w3.org/TR/2013/WD-cssom-view-20131217/) + var scrollX = ((typeof window.scrollX != 'undefined') ? window.scrollX : window.pageXOffset); + var scrollY = ((typeof window.scrollY != 'undefined') ? window.scrollY : window.pageYOffset); + // If this assert lands, it's likely because the browser doesn't support scrollX or pageXOffset + // and we have no viable fallback. + assert((typeof scrollX != 'undefined') && (typeof scrollY != 'undefined'), 'Unable to retrieve scroll position, mouse positions likely broken.'); + + if (event.type === 'touchstart' || event.type === 'touchend' || event.type === 'touchmove') { + var touch = event.touch; + if (touch === undefined) { + return; // the "touch" property is only defined in SDL + + } + var adjustedX = touch.pageX - (scrollX + rect.left); + var adjustedY = touch.pageY - (scrollY + rect.top); + + adjustedX = adjustedX * (cw / rect.width); + adjustedY = adjustedY * (ch / rect.height); + + var coords = { x: adjustedX, y: adjustedY }; + + if (event.type === 'touchstart') { + Browser.lastTouches[touch.identifier] = coords; + Browser.touches[touch.identifier] = coords; + } else if (event.type === 'touchend' || event.type === 'touchmove') { + var last = Browser.touches[touch.identifier]; + if (!last) last = coords; + Browser.lastTouches[touch.identifier] = last; + Browser.touches[touch.identifier] = coords; + } + return; + } + + var x = event.pageX - (scrollX + rect.left); + var y = event.pageY - (scrollY + rect.top); + + // the canvas might be CSS-scaled compared to its backbuffer; + // SDL-using content will want mouse coordinates in terms + // of backbuffer units. + x = x * (cw / rect.width); + y = y * (ch / rect.height); + + Browser.mouseMovementX = x - Browser.mouseX; + Browser.mouseMovementY = y - Browser.mouseY; + Browser.mouseX = x; + Browser.mouseY = y; + } + },resizeListeners:[],updateResizeListeners:function() { + var canvas = Module['canvas']; + Browser.resizeListeners.forEach(function(listener) { + listener(canvas.width, canvas.height); + }); + },setCanvasSize:function(width, height, noUpdates) { + var canvas = Module['canvas']; + Browser.updateCanvasDimensions(canvas, width, height); + if (!noUpdates) Browser.updateResizeListeners(); + },windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function() { + // check if SDL is available + if (typeof SDL != "undefined") { + var flags = HEAPU32[((SDL.screen)>>2)]; + flags = flags | 0x00800000; // set SDL_FULLSCREEN flag + HEAP32[((SDL.screen)>>2)] = flags; + } + Browser.updateCanvasDimensions(Module['canvas']); + Browser.updateResizeListeners(); + },setWindowedCanvasSize:function() { + // check if SDL is available + if (typeof SDL != "undefined") { + var flags = HEAPU32[((SDL.screen)>>2)]; + flags = flags & ~0x00800000; // clear SDL_FULLSCREEN flag + HEAP32[((SDL.screen)>>2)] = flags; + } + Browser.updateCanvasDimensions(Module['canvas']); + Browser.updateResizeListeners(); + },updateCanvasDimensions:function(canvas, wNative, hNative) { + if (wNative && hNative) { + canvas.widthNative = wNative; + canvas.heightNative = hNative; + } else { + wNative = canvas.widthNative; + hNative = canvas.heightNative; + } + var w = wNative; + var h = hNative; + if (Module['forcedAspectRatio'] && Module['forcedAspectRatio'] > 0) { + if (w/h < Module['forcedAspectRatio']) { + w = Math.round(h * Module['forcedAspectRatio']); + } else { + h = Math.round(w / Module['forcedAspectRatio']); + } + } + if (((document['fullscreenElement'] || document['mozFullScreenElement'] || + document['msFullscreenElement'] || document['webkitFullscreenElement'] || + document['webkitCurrentFullScreenElement']) === canvas.parentNode) && (typeof screen != 'undefined')) { + var factor = Math.min(screen.width / w, screen.height / h); + w = Math.round(w * factor); + h = Math.round(h * factor); + } + if (Browser.resizeCanvas) { + if (canvas.width != w) canvas.width = w; + if (canvas.height != h) canvas.height = h; + if (typeof canvas.style != 'undefined') { + canvas.style.removeProperty( "width"); + canvas.style.removeProperty("height"); + } + } else { + if (canvas.width != wNative) canvas.width = wNative; + if (canvas.height != hNative) canvas.height = hNative; + if (typeof canvas.style != 'undefined') { + if (w != wNative || h != hNative) { + canvas.style.setProperty( "width", w + "px", "important"); + canvas.style.setProperty("height", h + "px", "important"); + } else { + canvas.style.removeProperty( "width"); + canvas.style.removeProperty("height"); + } + } + } + }}; + function _emscripten_set_canvas_size(width, height) { + Browser.setCanvasSize(width, height); + } + + var JSEvents = {inEventHandler:0,removeAllEventListeners:function() { + for (var i = JSEvents.eventHandlers.length-1; i >= 0; --i) { + JSEvents._removeHandler(i); + } + JSEvents.eventHandlers = []; + JSEvents.deferredCalls = []; + },registerRemoveEventListeners:function() { + if (!JSEvents.removeEventListenersRegistered) { + __ATEXIT__.push(JSEvents.removeAllEventListeners); + JSEvents.removeEventListenersRegistered = true; + } + },deferredCalls:[],deferCall:function(targetFunction, precedence, argsList) { + function arraysHaveEqualContent(arrA, arrB) { + if (arrA.length != arrB.length) return false; + + for (var i in arrA) { + if (arrA[i] != arrB[i]) return false; + } + return true; + } + // Test if the given call was already queued, and if so, don't add it again. + for (var i in JSEvents.deferredCalls) { + var call = JSEvents.deferredCalls[i]; + if (call.targetFunction == targetFunction && arraysHaveEqualContent(call.argsList, argsList)) { + return; + } + } + JSEvents.deferredCalls.push({ + targetFunction: targetFunction, + precedence: precedence, + argsList: argsList + }); + + JSEvents.deferredCalls.sort(function(x,y) { return x.precedence < y.precedence; }); + },removeDeferredCalls:function(targetFunction) { + for (var i = 0; i < JSEvents.deferredCalls.length; ++i) { + if (JSEvents.deferredCalls[i].targetFunction == targetFunction) { + JSEvents.deferredCalls.splice(i, 1); + --i; + } + } + },canPerformEventHandlerRequests:function() { + return JSEvents.inEventHandler && JSEvents.currentEventHandler.allowsDeferredCalls; + },runDeferredCalls:function() { + if (!JSEvents.canPerformEventHandlerRequests()) { + return; + } + for (var i = 0; i < JSEvents.deferredCalls.length; ++i) { + var call = JSEvents.deferredCalls[i]; + JSEvents.deferredCalls.splice(i, 1); + --i; + call.targetFunction.apply(null, call.argsList); + } + },eventHandlers:[],removeAllHandlersOnTarget:function(target, eventTypeString) { + for (var i = 0; i < JSEvents.eventHandlers.length; ++i) { + if (JSEvents.eventHandlers[i].target == target && + (!eventTypeString || eventTypeString == JSEvents.eventHandlers[i].eventTypeString)) { + JSEvents._removeHandler(i--); + } + } + },_removeHandler:function(i) { + var h = JSEvents.eventHandlers[i]; + h.target.removeEventListener(h.eventTypeString, h.eventListenerFunc, h.useCapture); + JSEvents.eventHandlers.splice(i, 1); + },registerOrRemoveHandler:function(eventHandler) { + var jsEventHandler = function jsEventHandler(event) { + // Increment nesting count for the event handler. + ++JSEvents.inEventHandler; + JSEvents.currentEventHandler = eventHandler; + // Process any old deferred calls the user has placed. + JSEvents.runDeferredCalls(); + // Process the actual event, calls back to user C code handler. + eventHandler.handlerFunc(event); + // Process any new deferred calls that were placed right now from this event handler. + JSEvents.runDeferredCalls(); + // Out of event handler - restore nesting count. + --JSEvents.inEventHandler; + }; + + if (eventHandler.callbackfunc) { + eventHandler.eventListenerFunc = jsEventHandler; + eventHandler.target.addEventListener(eventHandler.eventTypeString, jsEventHandler, eventHandler.useCapture); + JSEvents.eventHandlers.push(eventHandler); + JSEvents.registerRemoveEventListeners(); + } else { + for (var i = 0; i < JSEvents.eventHandlers.length; ++i) { + if (JSEvents.eventHandlers[i].target == eventHandler.target + && JSEvents.eventHandlers[i].eventTypeString == eventHandler.eventTypeString) { + JSEvents._removeHandler(i--); + } + } + } + },getNodeNameForTarget:function(target) { + if (!target) return ''; + if (target == window) return '#window'; + if (target == screen) return '#screen'; + return (target && target.nodeName) ? target.nodeName : ''; + },fullscreenEnabled:function() { + return document.fullscreenEnabled + // Safari 13.0.3 on macOS Catalina 10.15.1 still ships with prefixed webkitFullscreenEnabled. + // TODO: If Safari at some point ships with unprefixed version, update the version check above. + || document.webkitFullscreenEnabled + ; + }}; + + function maybeCStringToJsString(cString) { + // "cString > 2" checks if the input is a number, and isn't of the special + // values we accept here, EMSCRIPTEN_EVENT_TARGET_* (which map to 0, 1, 2). + // In other words, if cString > 2 then it's a pointer to a valid place in + // memory, and points to a C string. + return cString > 2 ? UTF8ToString(cString) : cString; + } + + var specialHTMLTargets = [0, typeof document != 'undefined' ? document : 0, typeof window != 'undefined' ? window : 0]; + function findEventTarget(target) { + target = maybeCStringToJsString(target); + var domElement = specialHTMLTargets[target] || (typeof document != 'undefined' ? document.querySelector(target) : undefined); + return domElement; + } + function registerKeyEventCallback(target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) { + if (!JSEvents.keyEvent) JSEvents.keyEvent = _malloc( 176 ); + + var keyEventHandlerFunc = function(e) { + assert(e); + + var keyEventData = JSEvents.keyEvent; + HEAPF64[((keyEventData)>>3)] = e.timeStamp; + + var idx = keyEventData >> 2; + + HEAP32[idx + 2] = e.location; + HEAP32[idx + 3] = e.ctrlKey; + HEAP32[idx + 4] = e.shiftKey; + HEAP32[idx + 5] = e.altKey; + HEAP32[idx + 6] = e.metaKey; + HEAP32[idx + 7] = e.repeat; + HEAP32[idx + 8] = e.charCode; + HEAP32[idx + 9] = e.keyCode; + HEAP32[idx + 10] = e.which; + stringToUTF8(e.key || '', keyEventData + 44, 32); + stringToUTF8(e.code || '', keyEventData + 76, 32); + stringToUTF8(e.char || '', keyEventData + 108, 32); + stringToUTF8(e.locale || '', keyEventData + 140, 32); + + if (getWasmTableEntry(callbackfunc)(eventTypeId, keyEventData, userData)) e.preventDefault(); + }; + + var eventHandler = { + target: findEventTarget(target), + allowsDeferredCalls: true, + eventTypeString: eventTypeString, + callbackfunc: callbackfunc, + handlerFunc: keyEventHandlerFunc, + useCapture: useCapture + }; + JSEvents.registerOrRemoveHandler(eventHandler); + } + function _emscripten_set_keydown_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) { + registerKeyEventCallback(target, userData, useCapture, callbackfunc, 2, "keydown", targetThread); + return 0; + } + + function _emscripten_set_keyup_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) { + registerKeyEventCallback(target, userData, useCapture, callbackfunc, 3, "keyup", targetThread); + return 0; + } + + function _emscripten_set_main_loop(func, fps, simulateInfiniteLoop) { + var browserIterationFunc = getWasmTableEntry(func); + setMainLoop(browserIterationFunc, fps, simulateInfiniteLoop); + } +Module["requestFullscreen"] = function Module_requestFullscreen(lockPointer, resizeCanvas) { Browser.requestFullscreen(lockPointer, resizeCanvas) }; + Module["requestFullScreen"] = function Module_requestFullScreen() { Browser.requestFullScreen() }; + Module["requestAnimationFrame"] = function Module_requestAnimationFrame(func) { Browser.requestAnimationFrame(func) }; + Module["setCanvasSize"] = function Module_setCanvasSize(width, height, noUpdates) { Browser.setCanvasSize(width, height, noUpdates) }; + Module["pauseMainLoop"] = function Module_pauseMainLoop() { Browser.mainLoop.pause() }; + Module["resumeMainLoop"] = function Module_resumeMainLoop() { Browser.mainLoop.resume() }; + Module["getUserMedia"] = function Module_getUserMedia() { Browser.getUserMedia() }; + Module["createContext"] = function Module_createContext(canvas, useWebGL, setInModule, webGLContextAttributes) { return Browser.createContext(canvas, useWebGL, setInModule, webGLContextAttributes) }; + var preloadedImages = {}; + var preloadedAudios = {}; + ; +var ASSERTIONS = true; + + + +/** @type {function(string, boolean=, number=)} */ +function intArrayFromString(stringy, dontAddNull, length) { + var len = length > 0 ? length : lengthBytesUTF8(stringy)+1; + var u8array = new Array(len); + var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length); + if (dontAddNull) u8array.length = numBytesWritten; + return u8array; +} + +function intArrayToString(array) { + var ret = []; + for (var i = 0; i < array.length; i++) { + var chr = array[i]; + if (chr > 0xFF) { + if (ASSERTIONS) { + assert(false, 'Character code ' + chr + ' (' + String.fromCharCode(chr) + ') at offset ' + i + ' not in 0x00-0xFF.'); + } + chr &= 0xFF; + } + ret.push(String.fromCharCode(chr)); + } + return ret.join(''); +} + + +function checkIncomingModuleAPI() { + ignoredModuleProp('fetchSettings'); +} +var asmLibraryArg = { + "emscripten_asm_const_int": _emscripten_asm_const_int, + "emscripten_memcpy_big": _emscripten_memcpy_big, + "emscripten_resize_heap": _emscripten_resize_heap, + "emscripten_set_canvas_size": _emscripten_set_canvas_size, + "emscripten_set_keydown_callback_on_thread": _emscripten_set_keydown_callback_on_thread, + "emscripten_set_keyup_callback_on_thread": _emscripten_set_keyup_callback_on_thread, + "emscripten_set_main_loop": _emscripten_set_main_loop, + "getTimeMS": getTimeMS, + "logInit": logInit +}; +var asm = createWasm(); +/** @type {function(...*):?} */ +var ___wasm_call_ctors = Module["___wasm_call_ctors"] = createExportWrapper("__wasm_call_ctors"); + +/** @type {function(...*):?} */ +var _main = Module["_main"] = createExportWrapper("main"); + +/** @type {function(...*):?} */ +var ___errno_location = Module["___errno_location"] = createExportWrapper("__errno_location"); + +/** @type {function(...*):?} */ +var _fflush = Module["_fflush"] = createExportWrapper("fflush"); + +/** @type {function(...*):?} */ +var _malloc = Module["_malloc"] = createExportWrapper("malloc"); + +/** @type {function(...*):?} */ +var _emscripten_stack_init = Module["_emscripten_stack_init"] = function() { + return (_emscripten_stack_init = Module["_emscripten_stack_init"] = Module["asm"]["emscripten_stack_init"]).apply(null, arguments); +}; + +/** @type {function(...*):?} */ +var _emscripten_stack_get_free = Module["_emscripten_stack_get_free"] = function() { + return (_emscripten_stack_get_free = Module["_emscripten_stack_get_free"] = Module["asm"]["emscripten_stack_get_free"]).apply(null, arguments); +}; + +/** @type {function(...*):?} */ +var _emscripten_stack_get_base = Module["_emscripten_stack_get_base"] = function() { + return (_emscripten_stack_get_base = Module["_emscripten_stack_get_base"] = Module["asm"]["emscripten_stack_get_base"]).apply(null, arguments); +}; + +/** @type {function(...*):?} */ +var _emscripten_stack_get_end = Module["_emscripten_stack_get_end"] = function() { + return (_emscripten_stack_get_end = Module["_emscripten_stack_get_end"] = Module["asm"]["emscripten_stack_get_end"]).apply(null, arguments); +}; + +/** @type {function(...*):?} */ +var stackSave = Module["stackSave"] = createExportWrapper("stackSave"); + +/** @type {function(...*):?} */ +var stackRestore = Module["stackRestore"] = createExportWrapper("stackRestore"); + +/** @type {function(...*):?} */ +var stackAlloc = Module["stackAlloc"] = createExportWrapper("stackAlloc"); + + + + + +// === Auto-generated postamble setup entry stuff === + +unexportedRuntimeFunction('ccall', false); +unexportedRuntimeFunction('cwrap', false); +unexportedRuntimeFunction('allocate', false); +unexportedRuntimeFunction('UTF8ArrayToString', false); +unexportedRuntimeFunction('UTF8ToString', false); +unexportedRuntimeFunction('stringToUTF8Array', false); +unexportedRuntimeFunction('stringToUTF8', false); +unexportedRuntimeFunction('lengthBytesUTF8', false); +unexportedRuntimeFunction('addOnPreRun', false); +unexportedRuntimeFunction('addOnInit', false); +unexportedRuntimeFunction('addOnPreMain', false); +unexportedRuntimeFunction('addOnExit', false); +unexportedRuntimeFunction('addOnPostRun', false); +unexportedRuntimeFunction('addRunDependency', true); +unexportedRuntimeFunction('removeRunDependency', true); +unexportedRuntimeFunction('FS_createFolder', false); +unexportedRuntimeFunction('FS_createPath', true); +unexportedRuntimeFunction('FS_createDataFile', true); +unexportedRuntimeFunction('FS_createPreloadedFile', true); +unexportedRuntimeFunction('FS_createLazyFile', true); +unexportedRuntimeFunction('FS_createLink', false); +unexportedRuntimeFunction('FS_createDevice', true); +unexportedRuntimeFunction('FS_unlink', true); +unexportedRuntimeFunction('getLEB', false); +unexportedRuntimeFunction('getFunctionTables', false); +unexportedRuntimeFunction('alignFunctionTables', false); +unexportedRuntimeFunction('registerFunctions', false); +unexportedRuntimeFunction('addFunction', false); +unexportedRuntimeFunction('removeFunction', false); +unexportedRuntimeFunction('prettyPrint', false); +unexportedRuntimeFunction('getCompilerSetting', false); +unexportedRuntimeFunction('print', false); +unexportedRuntimeFunction('printErr', false); +unexportedRuntimeFunction('getTempRet0', false); +unexportedRuntimeFunction('setTempRet0', false); +unexportedRuntimeFunction('callMain', false); +unexportedRuntimeFunction('abort', false); +unexportedRuntimeFunction('keepRuntimeAlive', false); +unexportedRuntimeFunction('wasmMemory', false); +unexportedRuntimeFunction('warnOnce', false); +unexportedRuntimeFunction('stackSave', false); +unexportedRuntimeFunction('stackRestore', false); +unexportedRuntimeFunction('stackAlloc', false); +unexportedRuntimeFunction('AsciiToString', false); +unexportedRuntimeFunction('stringToAscii', false); +unexportedRuntimeFunction('UTF16ToString', false); +unexportedRuntimeFunction('stringToUTF16', false); +unexportedRuntimeFunction('lengthBytesUTF16', false); +unexportedRuntimeFunction('UTF32ToString', false); +unexportedRuntimeFunction('stringToUTF32', false); +unexportedRuntimeFunction('lengthBytesUTF32', false); +unexportedRuntimeFunction('allocateUTF8', false); +unexportedRuntimeFunction('allocateUTF8OnStack', false); +unexportedRuntimeFunction('ExitStatus', false); +unexportedRuntimeFunction('intArrayFromString', false); +unexportedRuntimeFunction('intArrayToString', false); +unexportedRuntimeFunction('writeStringToMemory', false); +unexportedRuntimeFunction('writeArrayToMemory', false); +unexportedRuntimeFunction('writeAsciiToMemory', false); +Module["writeStackCookie"] = writeStackCookie; +Module["checkStackCookie"] = checkStackCookie; +unexportedRuntimeFunction('ptrToString', false); +unexportedRuntimeFunction('zeroMemory', false); +unexportedRuntimeFunction('stringToNewUTF8', false); +unexportedRuntimeFunction('getHeapMax', false); +unexportedRuntimeFunction('abortOnCannotGrowMemory', false); +unexportedRuntimeFunction('emscripten_realloc_buffer', false); +unexportedRuntimeFunction('ENV', false); +unexportedRuntimeFunction('ERRNO_CODES', false); +unexportedRuntimeFunction('ERRNO_MESSAGES', false); +unexportedRuntimeFunction('setErrNo', false); +unexportedRuntimeFunction('inetPton4', false); +unexportedRuntimeFunction('inetNtop4', false); +unexportedRuntimeFunction('inetPton6', false); +unexportedRuntimeFunction('inetNtop6', false); +unexportedRuntimeFunction('readSockaddr', false); +unexportedRuntimeFunction('writeSockaddr', false); +unexportedRuntimeFunction('DNS', false); +unexportedRuntimeFunction('getHostByName', false); +unexportedRuntimeFunction('Protocols', false); +unexportedRuntimeFunction('Sockets', false); +unexportedRuntimeFunction('getRandomDevice', false); +unexportedRuntimeFunction('traverseStack', false); +unexportedRuntimeFunction('UNWIND_CACHE', false); +unexportedRuntimeFunction('convertPCtoSourceLocation', false); +unexportedRuntimeFunction('readAsmConstArgsArray', false); +unexportedRuntimeFunction('readAsmConstArgs', false); +unexportedRuntimeFunction('mainThreadEM_ASM', false); +unexportedRuntimeFunction('jstoi_q', false); +unexportedRuntimeFunction('jstoi_s', false); +unexportedRuntimeFunction('getExecutableName', false); +unexportedRuntimeFunction('listenOnce', false); +unexportedRuntimeFunction('autoResumeAudioContext', false); +unexportedRuntimeFunction('dynCallLegacy', false); +unexportedRuntimeFunction('getDynCaller', false); +unexportedRuntimeFunction('dynCall', false); +unexportedRuntimeFunction('handleException', false); +unexportedRuntimeFunction('runtimeKeepalivePush', false); +unexportedRuntimeFunction('runtimeKeepalivePop', false); +unexportedRuntimeFunction('callUserCallback', false); +unexportedRuntimeFunction('maybeExit', false); +unexportedRuntimeFunction('safeSetTimeout', false); +unexportedRuntimeFunction('asmjsMangle', false); +unexportedRuntimeFunction('asyncLoad', false); +unexportedRuntimeFunction('alignMemory', false); +unexportedRuntimeFunction('mmapAlloc', false); +unexportedRuntimeFunction('writeI53ToI64', false); +unexportedRuntimeFunction('writeI53ToI64Clamped', false); +unexportedRuntimeFunction('writeI53ToI64Signaling', false); +unexportedRuntimeFunction('writeI53ToU64Clamped', false); +unexportedRuntimeFunction('writeI53ToU64Signaling', false); +unexportedRuntimeFunction('readI53FromI64', false); +unexportedRuntimeFunction('readI53FromU64', false); +unexportedRuntimeFunction('convertI32PairToI53', false); +unexportedRuntimeFunction('convertI32PairToI53Checked', false); +unexportedRuntimeFunction('convertU32PairToI53', false); +unexportedRuntimeFunction('reallyNegative', false); +unexportedRuntimeFunction('unSign', false); +unexportedRuntimeFunction('strLen', false); +unexportedRuntimeFunction('reSign', false); +unexportedRuntimeFunction('formatString', false); +unexportedRuntimeFunction('setValue', false); +unexportedRuntimeFunction('getValue', false); +unexportedRuntimeFunction('PATH', false); +unexportedRuntimeFunction('PATH_FS', false); +unexportedRuntimeFunction('SYSCALLS', false); +unexportedRuntimeFunction('getSocketFromFD', false); +unexportedRuntimeFunction('getSocketAddress', false); +unexportedRuntimeFunction('JSEvents', false); +unexportedRuntimeFunction('registerKeyEventCallback', false); +unexportedRuntimeFunction('specialHTMLTargets', false); +unexportedRuntimeFunction('maybeCStringToJsString', false); +unexportedRuntimeFunction('findEventTarget', false); +unexportedRuntimeFunction('findCanvasEventTarget', false); +unexportedRuntimeFunction('getBoundingClientRect', false); +unexportedRuntimeFunction('fillMouseEventData', false); +unexportedRuntimeFunction('registerMouseEventCallback', false); +unexportedRuntimeFunction('registerWheelEventCallback', false); +unexportedRuntimeFunction('registerUiEventCallback', false); +unexportedRuntimeFunction('registerFocusEventCallback', false); +unexportedRuntimeFunction('fillDeviceOrientationEventData', false); +unexportedRuntimeFunction('registerDeviceOrientationEventCallback', false); +unexportedRuntimeFunction('fillDeviceMotionEventData', false); +unexportedRuntimeFunction('registerDeviceMotionEventCallback', false); +unexportedRuntimeFunction('screenOrientation', false); +unexportedRuntimeFunction('fillOrientationChangeEventData', false); +unexportedRuntimeFunction('registerOrientationChangeEventCallback', false); +unexportedRuntimeFunction('fillFullscreenChangeEventData', false); +unexportedRuntimeFunction('registerFullscreenChangeEventCallback', false); +unexportedRuntimeFunction('JSEvents_requestFullscreen', false); +unexportedRuntimeFunction('JSEvents_resizeCanvasForFullscreen', false); +unexportedRuntimeFunction('registerRestoreOldStyle', false); +unexportedRuntimeFunction('hideEverythingExceptGivenElement', false); +unexportedRuntimeFunction('restoreHiddenElements', false); +unexportedRuntimeFunction('setLetterbox', false); +unexportedRuntimeFunction('currentFullscreenStrategy', false); +unexportedRuntimeFunction('restoreOldWindowedStyle', false); +unexportedRuntimeFunction('softFullscreenResizeWebGLRenderTarget', false); +unexportedRuntimeFunction('doRequestFullscreen', false); +unexportedRuntimeFunction('fillPointerlockChangeEventData', false); +unexportedRuntimeFunction('registerPointerlockChangeEventCallback', false); +unexportedRuntimeFunction('registerPointerlockErrorEventCallback', false); +unexportedRuntimeFunction('requestPointerLock', false); +unexportedRuntimeFunction('fillVisibilityChangeEventData', false); +unexportedRuntimeFunction('registerVisibilityChangeEventCallback', false); +unexportedRuntimeFunction('registerTouchEventCallback', false); +unexportedRuntimeFunction('fillGamepadEventData', false); +unexportedRuntimeFunction('registerGamepadEventCallback', false); +unexportedRuntimeFunction('registerBeforeUnloadEventCallback', false); +unexportedRuntimeFunction('fillBatteryEventData', false); +unexportedRuntimeFunction('battery', false); +unexportedRuntimeFunction('registerBatteryEventCallback', false); +unexportedRuntimeFunction('setCanvasElementSize', false); +unexportedRuntimeFunction('getCanvasElementSize', false); +unexportedRuntimeFunction('demangle', false); +unexportedRuntimeFunction('demangleAll', false); +unexportedRuntimeFunction('jsStackTrace', false); +unexportedRuntimeFunction('stackTrace', false); +unexportedRuntimeFunction('getEnvStrings', false); +unexportedRuntimeFunction('checkWasiClock', false); +unexportedRuntimeFunction('flush_NO_FILESYSTEM', false); +unexportedRuntimeFunction('dlopenMissingError', false); +unexportedRuntimeFunction('setImmediateWrapped', false); +unexportedRuntimeFunction('clearImmediateWrapped', false); +unexportedRuntimeFunction('polyfillSetImmediate', false); +unexportedRuntimeFunction('uncaughtExceptionCount', false); +unexportedRuntimeFunction('exceptionLast', false); +unexportedRuntimeFunction('exceptionCaught', false); +unexportedRuntimeFunction('ExceptionInfo', false); +unexportedRuntimeFunction('exception_addRef', false); +unexportedRuntimeFunction('exception_decRef', false); +unexportedRuntimeFunction('Browser', false); +unexportedRuntimeFunction('setMainLoop', false); +unexportedRuntimeFunction('wget', false); +unexportedRuntimeFunction('FS', false); +unexportedRuntimeFunction('MEMFS', false); +unexportedRuntimeFunction('TTY', false); +unexportedRuntimeFunction('PIPEFS', false); +unexportedRuntimeFunction('SOCKFS', false); +unexportedRuntimeFunction('_setNetworkCallback', false); +unexportedRuntimeFunction('tempFixedLengthArray', false); +unexportedRuntimeFunction('miniTempWebGLFloatBuffers', false); +unexportedRuntimeFunction('heapObjectForWebGLType', false); +unexportedRuntimeFunction('heapAccessShiftForWebGLHeap', false); +unexportedRuntimeFunction('GL', false); +unexportedRuntimeFunction('emscriptenWebGLGet', false); +unexportedRuntimeFunction('computeUnpackAlignedImageSize', false); +unexportedRuntimeFunction('emscriptenWebGLGetTexPixelData', false); +unexportedRuntimeFunction('emscriptenWebGLGetUniform', false); +unexportedRuntimeFunction('webglGetUniformLocation', false); +unexportedRuntimeFunction('webglPrepareUniformLocationsBeforeFirstUse', false); +unexportedRuntimeFunction('webglGetLeftBracePos', false); +unexportedRuntimeFunction('emscriptenWebGLGetVertexAttrib', false); +unexportedRuntimeFunction('writeGLArray', false); +unexportedRuntimeFunction('AL', false); +unexportedRuntimeFunction('SDL_unicode', false); +unexportedRuntimeFunction('SDL_ttfContext', false); +unexportedRuntimeFunction('SDL_audio', false); +unexportedRuntimeFunction('SDL', false); +unexportedRuntimeFunction('SDL_gfx', false); +unexportedRuntimeFunction('GLUT', false); +unexportedRuntimeFunction('EGL', false); +unexportedRuntimeFunction('GLFW_Window', false); +unexportedRuntimeFunction('GLFW', false); +unexportedRuntimeFunction('GLEW', false); +unexportedRuntimeFunction('IDBStore', false); +unexportedRuntimeFunction('runAndAbortIfError', false); +unexportedRuntimeSymbol('ALLOC_NORMAL', false); +unexportedRuntimeSymbol('ALLOC_STACK', false); + +var calledRun; + +/** + * @constructor + * @this {ExitStatus} + */ +function ExitStatus(status) { + this.name = "ExitStatus"; + this.message = "Program terminated with exit(" + status + ")"; + this.status = status; +} + +var calledMain = false; + +dependenciesFulfilled = function runCaller() { + // If run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false) + if (!calledRun) run(); + if (!calledRun) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled +}; + +function callMain(args) { + assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on Module["onRuntimeInitialized"])'); + assert(__ATPRERUN__.length == 0, 'cannot call main when preRun functions remain to be called'); + + var entryFunction = Module['_main']; + + var argc = 0; + var argv = 0; + + try { + + var ret = entryFunction(argc, argv); + + // In PROXY_TO_PTHREAD builds, we should never exit the runtime below, as + // execution is asynchronously handed off to a pthread. + // if we're not running an evented main loop, it's time to exit + exit(ret, /* implicit = */ true); + return ret; + } + catch (e) { + return handleException(e); + } finally { + calledMain = true; + + } +} + +function stackCheckInit() { + // This is normally called automatically during __wasm_call_ctors but need to + // get these values before even running any of the ctors so we call it redundantly + // here. + _emscripten_stack_init(); + // TODO(sbc): Move writeStackCookie to native to to avoid this. + writeStackCookie(); +} + +/** @type {function(Array=)} */ +function run(args) { + args = args || arguments_; + + if (runDependencies > 0) { + return; + } + + stackCheckInit(); + + preRun(); + + // a preRun added a dependency, run will be called later + if (runDependencies > 0) { + return; + } + + function doRun() { + // run may have just been called through dependencies being fulfilled just in this very frame, + // or while the async setStatus time below was happening + if (calledRun) return; + calledRun = true; + Module['calledRun'] = true; + + if (ABORT) return; + + initRuntime(); + + preMain(); + + if (Module['onRuntimeInitialized']) Module['onRuntimeInitialized'](); + + if (shouldRunNow) callMain(args); + + postRun(); + } + + if (Module['setStatus']) { + Module['setStatus']('Running...'); + setTimeout(function() { + setTimeout(function() { + Module['setStatus'](''); + }, 1); + doRun(); + }, 1); + } else + { + doRun(); + } + checkStackCookie(); +} +Module['run'] = run; + +function checkUnflushedContent() { + // Compiler settings do not allow exiting the runtime, so flushing + // the streams is not possible. but in ASSERTIONS mode we check + // if there was something to flush, and if so tell the user they + // should request that the runtime be exitable. + // Normally we would not even include flush() at all, but in ASSERTIONS + // builds we do so just for this check, and here we see if there is any + // content to flush, that is, we check if there would have been + // something a non-ASSERTIONS build would have not seen. + // How we flush the streams depends on whether we are in SYSCALLS_REQUIRE_FILESYSTEM=0 + // mode (which has its own special function for this; otherwise, all + // the code is inside libc) + var oldOut = out; + var oldErr = err; + var has = false; + out = err = (x) => { + has = true; + } + try { // it doesn't matter if it fails + _fflush(0); + } catch(e) {} + out = oldOut; + err = oldErr; + if (has) { + warnOnce('stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc.'); + warnOnce('(this may also be due to not including full filesystem support - try building with -sFORCE_FILESYSTEM)'); + } +} + +/** @param {boolean|number=} implicit */ +function exit(status, implicit) { + EXITSTATUS = status; + + checkUnflushedContent(); + + // if exit() was called explicitly, warn the user if the runtime isn't actually being shut down + if (keepRuntimeAlive() && !implicit) { + var msg = 'program exited (with status: ' + status + '), but EXIT_RUNTIME is not set, so halting execution but not exiting the runtime or preventing further async execution (build with EXIT_RUNTIME=1, if you want a true shutdown)'; + err(msg); + } + + procExit(status); +} + +function procExit(code) { + EXITSTATUS = code; + if (!keepRuntimeAlive()) { + if (Module['onExit']) Module['onExit'](code); + ABORT = true; + } + quit_(code, new ExitStatus(code)); +} + +if (Module['preInit']) { + if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']]; + while (Module['preInit'].length > 0) { + Module['preInit'].pop()(); + } +} + +// shouldRunNow refers to calling main(), not run(). +var shouldRunNow = true; + +if (Module['noInitialRun']) shouldRunNow = false; + +run(); + + + + + diff --git a/build-em/mariokart.wasm b/build-em/mariokart.wasm new file mode 100755 index 0000000000000000000000000000000000000000..e1000228a3df57cbb687abf705f189c2c2b3da69 GIT binary patch literal 557264 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
EC7ar(-xxT7{C#=O%5~Gg!rH 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≠#iN~B)wZjyGqc8{_JM6@dq$~wjQXnU8tS7q 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 diff --git a/cmake_install.cmake b/cmake_install.cmake new file mode 100644 index 0000000..dafc980 --- /dev/null +++ b/cmake_install.cmake @@ -0,0 +1,54 @@ +# Install script for directory: /home/heath/mk-gint + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +# Set default install directory permissions. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/usr/bin/objdump") +endif() + +if(CMAKE_INSTALL_COMPONENT) + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +file(WRITE "/home/heath/mk-gint/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") diff --git a/compile_commands.json b/compile_commands.json new file mode 120000 index 0000000..8684ce8 --- /dev/null +++ b/compile_commands.json @@ -0,0 +1 @@ +./build-cg/compile_commands.json \ No newline at end of file diff --git a/credits.txt b/credits.txt deleted file mode 100644 index d1312ff..0000000 --- a/credits.txt +++ /dev/null @@ -1,2 +0,0 @@ -https://www.spriters-resource.com/fullview/5477/ -https://www.spriters-resource.com/game_boy_advance/mariokartsupercircuit/sheet/5490/ diff --git a/cut.png b/cut.png new file mode 100644 index 0000000000000000000000000000000000000000..5c3b296ccb90d1c69b77d1c50821a662e65cc1da GIT binary patch literal 6567 zcmV;Y8Cd3tP)Dy8eV_B5o!R$dcL6L20t5(<1Ro+Pk|HQd)YGD5 zDRC*WE9G)NC~>J0CzVR_Axf316x&k8R!LSAM~-aEkt`{+ELo-`K15QYND&VbAc*Gz zyNiAA&hE_4^S-+CVFnNtrz)!|u&btK_U^6QeSUqqZ=e4;f^D`>e(o#g`K<{OBQVAw zg!ttf3>ZKdgFs_R0T>bu#()%HD}z81MGza%!T{ap7-P@|gaC=@JxgHA?)BJoyOBbp zjX(>51>}U_4?i|RLw5M_{4#4HoIS6pRuzfqjsXEe$lf3YQg*u)(CzTeX7p@(?Nbl` zUk3iao3&kl|8neS9Ih_#)zv%LjD3XYg1pu#2*maA2ofzZ&_y8(u`whuSi&HsKyZ(HYgcRu8CPN1&Sh;zV?x z-5Zy@-lzP9ac_bs<(sZ=qiq|YFow71=Gg62`0Dx*PPRrdLSBb>-FgHVg%PGV`2u4= z2!%lt8&E-wYTp=xPq_$@I0U}LSJ(rgfQ2Qj(}IzVvK+U!PX*d z)(p4Yt>_zob0-X)KwL+r1f-Qf3PUXx7|{iM4V*wA>? z(Or(xz`k&kyh&Je(#*(occKs=3<5(g1qa>+j-z<}Co%O#7f?#V!@C5Y4L_WQ%|s%k zL_IdLv=Jb5&uoE`-H+DYNmy8K0raj*i~(1N+&A+Icg-HdZ*PI;GUlgPn7V^M=)a4) zP~C|zf<_xIyaW%tSMt8cQ~c~l9Tr!vE#>a>gcPWr$4M!XQeoQ`sg%E6ENpwhw`0Yt z7guPu1GLtl684U@_^%&+g-<+i3Ezo-F^fWANkEG0v)dh@L@9+*3ZW!ID1;CwrMP_} z%YXQ_{S4$C64Qe&B(WA~z>Nbw^4yoW_4wZquFVp@?N<8V`wskn{m;qIzs9E*evIlZ z$L_NwVIbH#uNf~|9DT&6oR=6Od2wFy%vD9=xeWK`=qqH&WKyJ39)sl^qvh=b+_ndn z3m&bGW@fdHXG@^!QzT-F-jWbl=H$9{VP#<%^6A?;s94)aq+AvZK`g+ZS=~ zyPM1tKjfX|eLR&J2V;-|Tq)REG&C;;?7G?KgAZ!H`>df7D=g1tu$*P@KpM}n5WKfj9?E4x`-5hx|Q zZ`_^-I*w$roW)X-nbkV=R)9`4eH*7}z4#{_mzu>^o@d;H?2coyd+XG!0z-C4bou8@ z>n2w&pXD8sH*sHTluKGs?axs=bB4$C4>mrDyB zPR~0yzKfEAwN`=`#@xTFK%5v>8W9<9+gP>_u+fYd9Q3iIpj=4Pe^-H8v%!VMDieG9 zaeW&n>hOvC7kGGci$8qs0ISUc#k^16caX}E^BvwcQJ|d|ZrPD%X1&Gbl{&jtr7GY9pc^Y9gIbX@v*`ca5eQ%h@*` zV5Qn&=Rmgm$`=B!&n4wLl$#;vPOp$Hrzqt5$d+>4o>}BeAKB!onfobZ_K}8E(bFzQV0PdX?Gd&m&w5DN+RW z7IAR|d*~(xcJJhWoZiH{bc~UyGRK#;=-)TNvsdT1TNY`?A=BA1x9-gI&~P0UZ}QmQ zVTMQgXb8bpGbCvkMtp^z6NEL5R1$3rjZm}Nj0iP!QtBT>CpQFOF5_}AJw&q=FuSsX zcd1SPWQn*P;pcKFufSBkpVs1WDr+qY6aBPn9auO*smLgyHk&PT|A>fAGiycpv>ZKl$75^QASPPd+%x zVBag8et8zxz=OZ>K0bPMoaN<3Dp%JS-8oFhXp#tuuEJFU*@Q3$og}8-G*mk=^+>bP zNmywFSVBGdX`O+G+LQ?rWsGT6zNDpPvOPc!n2J5pS87qV6 ztP`L4bJ~R?#CzUN$M#T4qlCbc-4M>!lH2!9aR0#(o;!Jkd}EVeUpvOw&`u7QUD8RN z#-$Umlw;_~5suU^vrBJ~6!KhkVs3ln5o%+@oO$&nqz<^{(AyApiXbs)V^E@d&TNE+ zhK^a*33F>5LIWm-rAEMfwcR^HZNI7Q-uSy8zT-cM-eK7uNhpqG$(FNt#Wd^lZGznG zc;+HPX@Yu_{AddgCfPM4L`?iFLKbQPo2`&HN0yhK_`;{Q!)4nZ_}cUwlS2czu7#J8 zfCdD%XEU^CgtksG_v&TRec(FX|0$#BA1g64yM~l4vc)W_xk&cH7f9dxE*3fuqK$)X zz`GU-BKhsdA0hLXf69<@NFu|@rp@BqCZAcal26&p)nhCv`P~mZ#5-=gg_MEgS60|@ z#|}E3I?D^^X?NO`M{XjWv9N_i_Cm-ohDKZC48=IMq1Nh!o}#;*TnhxY+qMnx?A0aC z%r8K>!0|HY3>| zlS?gdYUL=)%|VnDq-}+xB&`!a=Z;pDv}f_Wu~GADJT%tFQoX_c$r3pUqoYHV_GQ_z ze;=(~@1R$^ygV0}M_~;N=HMOcl=+ARS6m!zAsHQ$M_l(k`B3;o6G9fjn#L zHJZ(kpbgp79Cwz!%9D%t^W^jaN-3LNIj~z5ivQ??v|c&M_hy%T_ZPBUShBl< z$F-#^t|^;07$8EE^#xKT*j}3?mV^Ox@X=Np<%|(5tg>ABK7-?BOstSv;@FCjkpe5L zbrx1OurUbBkWM*}_vlm`G!hS~9Lla_Z^1?<3G2;}BL{Z#JGnZ4<|;m1x`TAGOn~kx zK3b4yjn)a42}!gj)bg4Sf`mf5MYgp{q%;vRv5{ykX|xkm6f$ME8FW3?=&CZjl>iSO zxR2G#BnBZnNLl06%S-GUDw6ZP?s?CaH%OnQDX*SmtS?LKrKq)Atgg)Pm9PE{!@u!+LrPQ=Jw{_Hpt*99P68d{(5@%Mag1e41Qt5cY-}~CHJiA$#nrVcQ=?_3b~#8# zlJ4^fI|_Aal7D~Y7_u*q{>}-4M{eVdXP@CYV>of*RqlLu4Ve~5OCXZ?nzoHLkQf6x zCTklii6WtwloEzc>|w$HV?va0x?HtJ7)@eJ;!ebfim}o7N>Frd#xoY<*|$KA0T5P+ zeZE8q$=&=xjv(#_t5=@bp$fz3K1Zlhh7u-;@?gybB_;Xa3y6liUj-FhoR zIb&$i*F7qj?(AnQLBVQ6m_Rm1K3nEseuTH}e*|qu)Wi&%`U0!<3)EZdNCzyXXoewg zoLRzeREf`RG5`EGFc@rQQ*u4_4Uci}J%^a~C4Zjs**h^nX3K)0yO(yCr06E8l9)~c z2L>$?+vS;+kZPnc2DGsVl)_3NkqHt3N?{y@aSKGcN+D@c@)eE%fhK`&jBvvNYM6@( zv}16TCTlBf34OI1*b?2}N90Ll+!awRm7(k$rtI9qRKH})sZx>4v}2D-;IsUhKchLj zMi6fh>XbSo2h6^D zie{@xm_)<|+Cos37TLZ5ZnY#Q!w#>Vd!6j1^9-DPg~?ojokJs}9>0msE}O)F)Ll<> zO~guN1M)*%fkH`49I?56ktY^T;Ww7(_i_wphbTD(On(7ELflL+Iw5Nb7Gi}j!IhBP zwnFeL0Bput66K?jGsUaIQFqII4!i)}}DhnW>V>FpenpUlW$QRj66zeTR&X#P= z%@H{slcPKNPO-%0D_1F6E`w6Ar&Qvh{v5kM_FH`E+fQL#KE<8GE>HjbC9K6c9?}7q zK5&GnQ)gifYRv{1!#m%##NoSdA*}>)Mc0N)O8Cy5D-#@|?CwY|a3-}wvvg_Gw$7gDVB zk23a=1I&H>%WTds@yd&voV|L9LZOVZBtjToJ$-?j?>x%#)mQkzxBnH5W|gFF&{d5{ z1XkKc?nu$vl_8TIWNYCJek&mI0{Wv4iyc2}2k* zP&!5j2D7$~7})`1{g}lDo)WORfoHqWXb`3IphJXZ)7q?%w41zMs}RQ#NgR^I5lI}A zBnfW-sVnCg+OdmDyTw|4nNODc$=&}Dogm=&Kp&?s2eewX-kHyE;oMoS)~fu`Uw?{b zvr4?GiI)w!qY*};?HFyrzTJoMG5qNZPtXV(WH$PE=j0^!r9E$8Ou*zGMD;b$0^*RTUq8=xPhDVbtB#`#+5Ud! z)>pV=b)L3Pz|Rmm4ox>j;QDkd3#BAu)pgcpFLB86DXc8;m(w-_sWfHZ=WLW9k^m9+ zhOafNb2I$##qY4RK7)!aQYuH?s)B1sbcp4+l!p767`&O8#wC9I(hJD6$LNkjto-=f zJdj%Eqqj)1*?^#@~H|tyUc?3|Y3PY1Pj%n61!sJ9t|$hyCrpMYavFTAwC}V!|juN{d=+6V(bi zQOvMRhf-gbTUX{uxJ7hf%!VW>GC=(Ng9lS6g>pCns3S~(!1|1t(YgNcVpd%s^BeI(1 z#(DauN<8wxN4fXleXOot;_sjO5e7jV2UJ!UNCNmtJ?2rd#-UqNU~k=cfI9~dP-`|g zTYnkX%8<%Vk(zs%y|o(a6N5uO1Xe#*$Aaj zS|9=&?P-kNjgd`OkrEymzd$KHOfl>8U%v81n(YosNYD``?qD>mC5A80_&n}vmWtcv zw|#)myzn%gPMZx&Q*go66_(?W6T>?(Nt41x8~s&>Dg)8(y-MEi5g4PT^~!w&}w0{rjDi^#k7o}?Rs2Pf`vksdrN%` zCYm`5;s~@BBuR{@1`PGPta}AC0hyf5@W23vrVem;|3O}T;}kEx_8Q(m5vv*CBq3S~ zB5g<#!%6LN@>Pv7Z$T(`e(9&A(jH5d1jJ^?`dx?c0gPXQ#?ko}vOyVUK`dXSD zx!ZX3=sWrP*Z&vu^K&R^*jQQNo_p@)?gRTtl%f2d_i^HDe*syGSY}B)kK2!w8BWHT zK6#wJTOx*bSloGgnSA0ivd2NRpuU!1WQ2ZVh39@&!BX8l%OLsehxYO5Z%?y0HqNf0 zJd+2fc;vPRFmcTP{=qj;1rKSbITD5(8W|#!k;DOX0?3pkjkX~%@bA8LWm{afePVpy z?;kaeZ&B!XDUYP+>-R`yEG(<5)DBXJTsA0L#Su-tRxREjHT*_#a>Rm?@M!+>C`(*Q(+SNup^sVm7D2zT}e) z2MJ7`l$+-0{r7SB_FIV1oY}a{i5HI3Tx}zjLWpk6yl{1v<1fEJ7=>82$L)9C$NpOm zfUuCgf=BtL@;ITyFJ13`cYoWCAlILwR2U{wA*5rZgsW#N1kJdceKXw(#qQ5*Wn#Kp zqpdY@6p|zf|M>ln-Pi)lfywmsWJ{toNu+7DVzy==HCv=uD-ei0ZE2&FAV?yf{prgz z8zJ|;{V=!oO_6z zwbI=rF*KVojTwnL>ym8`5?UqN(&~DLl-)91C5c7E@z+n&=>$CZ@SW^V4KjE~kqhI~ zOusQrZKa9sY7f_Isp<72L{~O57>qVun8F}?*>8RQV^4Hdio+OYn$AE-(kilhq-NFACsjW%xzp{abce7N|T@+V+qg+nAlLpFla+l zL(4#=2NT;MeSyegutP*)h28yj1k>xTKI<$d#e}m%igH3mnCnn Z{U3q#LZC0z;S>M>002ovPDHLkV1n + + + + + Mario Kart + + + +
Downloading...
+
+ +
+
+ +
+
+
+     + +
+ +
+ +
+ + {{{ SCRIPT }}} + + diff --git a/fxcg-mock/include/fxcg/display.c b/fxcg-mock/include/fxcg/display.c deleted file mode 100644 index 1db4c1c..0000000 --- a/fxcg-mock/include/fxcg/display.c +++ /dev/null @@ -1,73 +0,0 @@ -#include -#include - -unsigned short screen[384 * 216]; - -#define false 0 -#define true 1 - -#define byte unsigned char - -void setup() { - EM_ASM_({ - window.canvasContext = Module['canvas'].getContext('2d'); - window.canvasImageData = canvasContext.getImageData(0, 0, 384, 216); - }); -} - -void Copy_ToCanvas(uint32_t* ptr) { /*, int w, int h) {*/ - EM_ASM_({ - let data = Module.HEAPU8.slice($0, $0 + 384 * 216 * 4); - canvasImageData.data.set(data); - canvasContext.putImageData(canvasImageData, 0, 0); - }, ptr); -} - -/* static void main_loop() -{ - // memset(screen, 0, 320*320*4); // Clear screen - int screen[320*320],idx=0; - for (int x=0; x<320*320; x++) - screen[idx++] = 0xff000000; - for (int x=0; x<320; x++) - for (int y=0; y<320; y++) - screen[320*(x|y) + (x&y)]= 0xffffffff; // set pixel(x or y, x and y) to white... (will draw a serpinsky triangle) - Copy_ToCanvas(screen, 320, 320); -} */ - -void* GetVRAMAddress(void) { - // TODO: move setup to the init thing - setup(); - emscripten_set_canvas_size(384, 216); - return &screen; -} - -void PrintXY(int x, int y, const char *string, int mode, int color) { - printf("%s\n", string + 2); -} - -void Bdisp_EnableColor(int n) {} - -void Bdisp_PutDisp_DD(void) { - unsigned int screencopy[384 * 216]; - for (int i = 0; i < (384 * 216); i++) { - int c = screen[i]; - // https://gist.github.com/companje/11deb82e807f2cf927b3a0da1646e795#file-rgb565-pde-L8 - byte r = (byte)(((c & 0xF800) >> 11) << 3); - byte g = (byte)(((c & 0x7E0) >> 5) << 2); - byte b = (byte)(((c & 0x1F)) << 3); - unsigned int argb = 0xff000000 | ((int)b << 16) | ((int)g << 8) | (int)r; - screencopy[i] = argb; - } - Copy_ToCanvas(screencopy); -} - -void Bdisp_PutDisp_DD_stripe(int y1, int y2) { - Bdisp_PutDisp_DD(); -} - -void Bdisp_AllClr_VRAM(void) { - for (int i = 0; i < (384 * 216); i++) { - screen[i] = 0xffffffff; - } -} diff --git a/fxcg-mock/include/fxcg/display.h b/fxcg-mock/include/fxcg/display.h deleted file mode 100644 index b81d593..0000000 --- a/fxcg-mock/include/fxcg/display.h +++ /dev/null @@ -1,376 +0,0 @@ -#ifndef __FXCG_DISPLAY_H -#define __FXCG_DISPLAY_H - -#ifdef __cplusplus -extern "C" { -#endif - -#define LCD_WIDTH_PX 384 -#define LCD_HEIGHT_PX 216 - -typedef unsigned short color_t; - -//General display manipulating syscalls: -struct display_fill { - int x1; - int y1; - int x2; - int y2; - unsigned char mode; -}; -void Bdisp_AreaClr( struct display_fill *area, unsigned char P2, unsigned short color ); -void Bdisp_EnableColor( int n ); -//Frame control: -void DrawFrame( int color ); -unsigned short FrameColor( int mode, unsigned short color ); -void DrawFrameWorkbench( int, int, int, int, int ); -//VRAM general display manipulating syscalls: -void* GetVRAMAddress(void); // Return a pointer to the system's video memory. -void* GetSecondaryVRAMAddress(void); // Return a pointer the system's secondary video memory. -void Bdisp_AllClr_VRAM( void ); -void Bdisp_SetPoint_VRAM( int x, int y, int color ); -void Bdisp_SetPointWB_VRAM( int x, int y, int color ); -unsigned short Bdisp_GetPoint_VRAM( int x, int y ); -void SaveVRAM_1( void ); -void LoadVRAM_1( void ); -void Bdisp_Fill_VRAM( int color, int mode ); -//DD display manipulating syscalls: -void Bdisp_AreaClr_DD_x3( void*p1 ); -void Bdisp_DDRegisterSelect( int registerno ); -void Bdisp_PutDisp_DD( void ); -void Bdisp_PutDisp_DD_stripe( int y1, int y2 ); -void Bdisp_SetPoint_DD( int x, int y, int color ); -unsigned short Bdisp_GetPoint_DD_Workbench( int x, int y ); -unsigned short Bdisp_GetPoint_DD( int x, int y ); -void DirectDrawRectangle( int x1, int y1, int x2, int y2, unsigned short color ); -void HourGlass( void ); -void Bdisp_DefineDMARange(int x1, int x2, int y1, int y2); -unsigned short Bdisp_WriteDDRegister3_bit7(int value); - -// Graphic writing: -struct display_graph { - int x; - int y; - int xofs; - int yofs; - int width; - int height; - char colormode; - char zero4; - char P20_1; - char P20_2; - int bitmap; - char color_idx1; - char color_idx2; - char color_idx3; - char P20_3; - char writemodify; - char writekind; - char zero6; - char one1; - int transparency; -}; - -void Bdisp_WriteGraphVRAM(struct display_graph* gd); -void Bdisp_WriteGraphDD_WB(struct display_graph* gd); - -//Shape drawing: -struct display_shape { - int dx; - int dy; - int wx; - int wy; - int color; - struct display_fill saved; -}; -void Bdisp_ShapeBase3XVRAM( void*shape ); -void Bdisp_ShapeBase( unsigned char*work, struct display_shape *shape, int color, int line_width, int zero1, int zero2 ); -void Bdisp_ShapeToVRAM16C( void*, int color ); -void Bdisp_ShapeToDD( void*shape, int color ); -//Background-related syscalls -void SetBackGround( int ); -void WriteBackground( void*target, int width, int height, void*source, int, int, int ); - -//Message boxes, error messages, dialogs and the like: -void Box( int, int, int, int, int ); -void BoxInnerClear( int ); -void Box2( int, int ); -void BoxYLimits( int lines, int*top, int*bottom ); -void AUX_DisplayErrorMessage( int msgno ); -void MsgBoxPush( int lines ); -void MsgBoxPop( void ); -void DisplayMessageBox( unsigned char*message ); -short CharacterSelectDialog( void ); -unsigned char ColorIndexDialog1( unsigned char initial_index, unsigned short disable_mask ); -void MsgBoxMoveWB( void*buffer, int x0, int y0, int x1, int y1, int direction ); //it's more general purpose, works not only for MsgBoxes but for any VRAM contents. - -//Cursor manipulating syscalls: -void locate_OS( int X, int y ); -void Cursor_SetFlashOn( unsigned char cursor_type ); -void Cursor_SetFlashOff( void ); -int SetCursorFlashToggle( int ); -void Keyboard_CursorFlash( void ); - -//Character printing syscalls: -enum -{ - TEXT_COLOR_BLACK = 0, - TEXT_COLOR_BLUE = 1, - TEXT_COLOR_GREEN = 2, - TEXT_COLOR_CYAN = 3, - TEXT_COLOR_RED = 4, - TEXT_COLOR_PURPLE = 5, - TEXT_COLOR_YELLOW = 6, - TEXT_COLOR_WHITE = 7 -}; - -enum -{ - TEXT_MODE_NORMAL = 0x00, - TEXT_MODE_INVERT = 0x01, - TEXT_MODE_TRANSPARENT_BACKGROUND = 0x20, - TEXT_MODE_AND = 0x21 -}; -void PrintLine(const char *msg, int imax); -void PrintLine2(int, int, const char *, int, int, int, int, int); -void PrintXY_2( int mode, int x, int y, int msgno, int color ); -void PrintXY( int x, int y, const char *string, int mode, int color ); -void PrintCXY( int, int, const char *, int, int, int, int, int, int ); -void PrintGlyph( int, int, unsigned char*glyph, int, int color, int back_color, int ); -void*GetMiniGlyphPtr( unsigned short mb_glyph_no, unsigned short*glyph_info ); -void PrintMiniGlyph(int x, int y, void*glyph, int mode_flags, int glyph_width, int, int, int, int, int color, int back_color, int ); -void PrintMini( int *x, int *y, const char *MB_string, int mode_flags, unsigned int xlimit, int P6, int P7, int color, int back_color, int writeflag, int P11 ); -void PrintMiniMini( int *x, int *y, const char *MB_string, int mode1, char color, int mode2 ); -void Print_OS( const char*msg, int mode, int zero2 ); -void Bdisp_WriteSystemMessage( int x, int y, int msgno, int mode, char color3 ); - -//Progressbars and scrollbars: -struct scrollbar -{ - unsigned int I1; // unknown changes indicator height, set to 0 - unsigned int indicatormaximum; // max logical indicator range - unsigned int indicatorheight; // height of the indicator in units - unsigned int indicatorpos; // indicator position in units of max - unsigned int I5; // unknown, set to 0 - unsigned short barleft; // x position of bar - unsigned short bartop; // y position of bar - unsigned short barheight; // height of bar - unsigned short barwidth; // width of bar -} ; -void Scrollbar(struct scrollbar *scrollbar); -void StandardScrollbar( void* ); -void ProgressBar(int, int ); -void ProgressBar0(int P1, int P2, int P3, int current, int max); -void ProgressBar2(unsigned char *heading, int current, int max); - -//Status area/header related syscalls: -// define status area -#define DSA_CLEAR 0 -#define DSA_SETDEFAULT 1 -// status area flags -#define SAF_BATTERY 0x0001 -#define SAF_ALPHA_SHIFT 0x0002 -#define SAF_SETUP_INPUT_OUTPUT 0x0004 -#define SAF_SETUP_FRAC_RESULT 0x0008 -#define SAF_SETUP_ANGLE 0x0010 -#define SAF_SETUP_COMPLEX_MODE 0x0020 -#define SAF_SETUP_DISPLAY 0x0040 -#define SAF_TEXT 0x0100 -#define SAF_GLYPH 0x0200 -int DefineStatusAreaFlags( int, int, void*, void* ); -void DefineStatusGlyph( int, void* ); -void DefineStatusMessage( char*msg, short P2, char P3, char P4 ); -void DisplayStatusArea( void ); -void DrawHeaderLine( void ); -void EnableStatusArea( int ); -void Bdisp_HeaderFill( unsigned char color_idx1, unsigned char color_idx2 ); -void Bdisp_HeaderFill2( unsigned int, unsigned int, unsigned char, unsigned char ); -void Bdisp_HeaderText( void ); -void Bdisp_HeaderText2( void ); -void EnableDisplayHeader( int, int ); -//Status area icon syscalls: (it may be more appropriate to use the status area flags) -void APP_EACT_StatusIcon( int ); //not sure what this is exactly for, if it displays something on screen it's here, otherwise in app.h. will test some day (gbl08ma) -void SetupMode_StatusIcon( void ); //not sure what this does, doesn't seem to be documented anywhere. will test some day (gbl08ma) -void d_c_Icon( unsigned int ); -void BatteryIcon( unsigned int ); -void KeyboardIcon( unsigned int ); -void LineIcon( unsigned int ); -void NormIcon( unsigned int ); -void RadIcon( unsigned int ); -void RealIcon( unsigned int ); - -//Other: -void FKey_Display( int, void* ); -void GetFKeyPtr( int, void* ); -void DispInt( int, int ); //not sure what this does, doesn't seem to be documented anywhere. will test some day (gbl08ma) -int LocalizeMessage1( int msgno, char*result ); -int SMEM_MapIconToExt( unsigned char*filename, unsigned short*foldername, unsigned int*msgno, unsigned short*iconbuffer ); // despite starting with SMEM, this is mostly a graphical function used to get icons for different file types. - -//Not syscalls (defined within libfxcg): -void VRAM_CopySprite(const color_t* data, int x, int y, int width, int height); -void VRAM_XORSprite(const color_t* data, int x, int y, int width, int height); - -// Original Author, Shaun McFall (Merthsoft) -// Used with permission - -#define COLOR_ALICEBLUE (color_t)0xF7DF -#define COLOR_ANTIQUEWHITE (color_t)0xFF5A -#define COLOR_AQUA (color_t)0x07FF -#define COLOR_AQUAMARINE (color_t)0x7FFA -#define COLOR_AZURE (color_t)0xF7FF -#define COLOR_BEIGE (color_t)0xF7BB -#define COLOR_BISQUE (color_t)0xFF38 -#define COLOR_BLACK (color_t)0x0000 -#define COLOR_BLANCHEDALMOND (color_t)0xFF59 -#define COLOR_BLUE (color_t)0x001F -#define COLOR_BLUEVIOLET (color_t)0x895C -#define COLOR_BROWN (color_t)0xA145 -#define COLOR_BURLYWOOD (color_t)0xDDD0 -#define COLOR_CADETBLUE (color_t)0x5CF4 -#define COLOR_CHARTREUSE (color_t)0x7FE0 -#define COLOR_CHOCOLATE (color_t)0xD343 -#define COLOR_CORAL (color_t)0xFBEA -#define COLOR_CORNFLOWERBLUE (color_t)0x64BD -#define COLOR_CORNSILK (color_t)0xFFDB -#define COLOR_CRIMSON (color_t)0xD8A7 -#define COLOR_CYAN (color_t)0x07FF -#define COLOR_DARKBLUE (color_t)0x0011 -#define COLOR_DARKCYAN (color_t)0x0451 -#define COLOR_DARKGOLDENROD (color_t)0xBC21 -#define COLOR_DARKGRAY (color_t)0xAD55 -#define COLOR_DARKGREEN (color_t)0x0320 -#define COLOR_DARKKHAKI (color_t)0xBDAD -#define COLOR_DARKMAGENTA (color_t)0x8811 -#define COLOR_DARKOLIVEGREEN (color_t)0x5345 -#define COLOR_DARKORANGE (color_t)0xFC60 -#define COLOR_DARKORCHID (color_t)0x9999 -#define COLOR_DARKRED (color_t)0x8800 -#define COLOR_DARKSALMON (color_t)0xECAF -#define COLOR_DARKSEAGREEN (color_t)0x8DF1 -#define COLOR_DARKSLATEBLUE (color_t)0x49F1 -#define COLOR_DARKSLATEGRAY (color_t)0x2A69 -#define COLOR_DARKTURQUOISE (color_t)0x067A -#define COLOR_DARKVIOLET (color_t)0x901A -#define COLOR_DEEPPINK (color_t)0xF8B2 -#define COLOR_DEEPSKYBLUE (color_t)0x05FF -#define COLOR_DIMGRAY (color_t)0x6B4D -#define COLOR_DODGERBLUE (color_t)0x1C9F -#define COLOR_FIREBRICK (color_t)0xB104 -#define COLOR_FLORALWHITE (color_t)0xFFDE -#define COLOR_FORESTGREEN (color_t)0x2444 -#define COLOR_FUCHSIA (color_t)0xF81F -#define COLOR_GAINSBORO (color_t)0xDEFB -#define COLOR_GHOSTWHITE (color_t)0xFFDF -#define COLOR_GOLD (color_t)0xFEA0 -#define COLOR_GOLDENROD (color_t)0xDD24 -#define COLOR_GRAY (color_t)0x8410 -#define COLOR_GREEN (color_t)0x0400 -#define COLOR_GREENYELLOW (color_t)0xAFE5 -#define COLOR_HONEYDEW (color_t)0xF7FE -#define COLOR_HOTPINK (color_t)0xFB56 -#define COLOR_INDIANRED (color_t)0xCAEB -#define COLOR_INDIGO (color_t)0x4810 -#define COLOR_IVORY (color_t)0xFFFE -#define COLOR_KHAKI (color_t)0xF731 -#define COLOR_LAVENDER (color_t)0xE73F -#define COLOR_LAVENDERBLUSH (color_t)0xFF9E -#define COLOR_LAWNGREEN (color_t)0x7FE0 -#define COLOR_LEMONCHIFFON (color_t)0xFFD9 -#define COLOR_LIGHTBLUE (color_t)0xAEDC -#define COLOR_LIGHTCORAL (color_t)0xF410 -#define COLOR_LIGHTCYAN (color_t)0xE7FF -#define COLOR_LIGHTGOLDENRODYELLOW (color_t)0xFFDA -#define COLOR_LIGHTGRAY (color_t)0xD69A -#define COLOR_LIGHTGREEN (color_t)0x9772 -#define COLOR_LIGHTPINK (color_t)0xFDB8 -#define COLOR_LIGHTSALMON (color_t)0xFD0F -#define COLOR_LIGHTSEAGREEN (color_t)0x2595 -#define COLOR_LIGHTSKYBLUE (color_t)0x867F -#define COLOR_LIGHTSLATEGRAY (color_t)0x7453 -#define COLOR_LIGHTSTEELBLUE (color_t)0xB63B -#define COLOR_LIGHTYELLOW (color_t)0xFFFC -#define COLOR_LIME (color_t)0x07E0 -#define COLOR_LIMEGREEN (color_t)0x3666 -#define COLOR_LINEN (color_t)0xFF9C -#define COLOR_MAGENTA (color_t)0xF81F -#define COLOR_MAROON (color_t)0x8000 -#define COLOR_MEDIUMAQUAMARINE (color_t)0x6675 -#define COLOR_MEDIUMBLUE (color_t)0x0019 -#define COLOR_MEDIUMORCHID (color_t)0xBABA -#define COLOR_MEDIUMPURPLE (color_t)0x939B -#define COLOR_MEDIUMSEAGREEN (color_t)0x3D8E -#define COLOR_MEDIUMSLATEBLUE (color_t)0x7B5D -#define COLOR_MEDIUMSPRINGGREEN (color_t)0x07D3 -#define COLOR_MEDIUMTURQUOISE (color_t)0x4E99 -#define COLOR_MEDIUMVIOLETRED (color_t)0xC0B0 -#define COLOR_MIDNIGHTBLUE (color_t)0x18CE -#define COLOR_MINTCREAM (color_t)0xF7FF -#define COLOR_MISTYROSE (color_t)0xFF3C -#define COLOR_MOCCASIN (color_t)0xFF36 -#define COLOR_NAVAJOWHITE (color_t)0xFEF5 -#define COLOR_NAVY (color_t)0x0010 -#define COLOR_OLDLACE (color_t)0xFFBC -#define COLOR_OLIVE (color_t)0x8400 -#define COLOR_OLIVEDRAB (color_t)0x6C64 -#define COLOR_ORANGE (color_t)0xFD20 -#define COLOR_ORANGERED (color_t)0xFA20 -#define COLOR_ORCHID (color_t)0xDB9A -#define COLOR_PALEGOLDENROD (color_t)0xEF55 -#define COLOR_PALEGREEN (color_t)0x9FD3 -#define COLOR_PALETURQUOISE (color_t)0xAF7D -#define COLOR_PALEVIOLETRED (color_t)0xDB92 -#define COLOR_PAPAYAWHIP (color_t)0xFF7A -#define COLOR_PEACHPUFF (color_t)0xFED7 -#define COLOR_PERU (color_t)0xCC27 -#define COLOR_PINK (color_t)0xFE19 -#define COLOR_PLUM (color_t)0xDD1B -#define COLOR_POWDERBLUE (color_t)0xB71C -#define COLOR_PURPLE (color_t)0x8010 -#define COLOR_RED (color_t)0xF800 -#define COLOR_ROSYBROWN (color_t)0xBC71 -#define COLOR_ROYALBLUE (color_t)0x435C -#define COLOR_SADDLEBROWN (color_t)0x8A22 -#define COLOR_SALMON (color_t)0xFC0E -#define COLOR_SANDYBROWN (color_t)0xF52C -#define COLOR_SEAGREEN (color_t)0x2C4A -#define COLOR_SEASHELL (color_t)0xFFBD -#define COLOR_SIENNA (color_t)0xA285 -#define COLOR_SILVER (color_t)0xC618 -#define COLOR_SKYBLUE (color_t)0x867D -#define COLOR_SLATEBLUE (color_t)0x6AD9 -#define COLOR_SLATEGRAY (color_t)0x7412 -#define COLOR_SNOW (color_t)0xFFDF -#define COLOR_SPRINGGREEN (color_t)0x07EF -#define COLOR_STEELBLUE (color_t)0x4416 -#define COLOR_TAN (color_t)0xD5B1 -#define COLOR_TEAL (color_t)0x0410 -#define COLOR_THISTLE (color_t)0xDDFB -#define COLOR_TOMATO (color_t)0xFB08 -#define COLOR_TURQUOISE (color_t)0x471A -#define COLOR_VIOLET (color_t)0xEC1D -#define COLOR_WHEAT (color_t)0xF6F6 -#define COLOR_WHITE (color_t)0xFFFF -#define COLOR_WHITESMOKE (color_t)0xF7BE -#define COLOR_YELLOW (color_t)0xFFE0 -#define COLOR_YELLOWGREEN (color_t)0x9E66 - -// TW : So far this appears to be the most reliable way to determine model -typedef enum { - DT_CG20, // or CG10 - DT_CG50, - DT_Winsim -} DeviceType; - -inline DeviceType getDeviceType() { -#if TARGET_PRIZM - return (unsigned int)GetVRAMAddress() == 0xAC000000 ? DT_CG50 : DT_CG20; -#else - return DT_Winsim; -#endif -} - -#ifdef __cplusplus -} -#endif - -#endif /* __FXCG_DISPLAY_H */ diff --git a/fxcg-mock/include/fxcg/keyboard.c b/fxcg-mock/include/fxcg/keyboard.c deleted file mode 100644 index 5b80f77..0000000 --- a/fxcg-mock/include/fxcg/keyboard.c +++ /dev/null @@ -1,50 +0,0 @@ -#include -#include -#include - -// Listen to EMSCRIPTEN_EVENT_KEYDOWN and EMSCRIPTEN_EVENT_KEYUP -// and print the key code to the console. - -unsigned char keysPressed[256] = {0}; - -int setKeyState(unsigned char key, unsigned char state) { - switch (key) { - case 37: // left arrow - keysPressed[38] = state; - break; - case 39: // right arrow - keysPressed[27] = state; - break; - case 88: // x - keysPressed[78] = state; - break; - case 90: // z - keysPressed[77] = state; - break; - case 68: // d - keysPressed[31] = state; - break; - } - return 0; -} - -int keyDownEvent(int eventType, const EmscriptenKeyboardEvent *keyEvent, void *userData) { - // printf("keyDownEvent: %d\n", (int) keyEvent->keyCode); - setKeyState(keyEvent->keyCode, 1); - return 0; -} - -int keyUpEvent(int eventType, const EmscriptenKeyboardEvent *keyEvent, void *userData) { - // printf("keyUpEvent: %d\n", (int) keyEvent->keyCode); - setKeyState(keyEvent->keyCode, 0); - return 0; -} - -int keydown(int basic_keycode) { - return keysPressed[basic_keycode]; -} - -void setupKeyboard() { - emscripten_set_keydown_callback("html", 0, 0, keyDownEvent); - emscripten_set_keyup_callback("html", 0, 0, keyUpEvent); -} diff --git a/fxcg-mock/include/fxcg/keyboard.h b/fxcg-mock/include/fxcg/keyboard.h deleted file mode 100644 index 1d81497..0000000 --- a/fxcg-mock/include/fxcg/keyboard.h +++ /dev/null @@ -1,235 +0,0 @@ -#ifndef __KEYBOARD_H__ -#define __KEYBOARD_H__ - -// Character codes -#define KEY_CHAR_0 0x30 -#define KEY_CHAR_1 0x31 -#define KEY_CHAR_2 0x32 -#define KEY_CHAR_3 0x33 -#define KEY_CHAR_4 0x34 -#define KEY_CHAR_5 0x35 -#define KEY_CHAR_6 0x36 -#define KEY_CHAR_7 0x37 -#define KEY_CHAR_8 0x38 -#define KEY_CHAR_9 0x39 -#define KEY_CHAR_DP 0x2e -#define KEY_CHAR_EXP 0x0f -#define KEY_CHAR_PMINUS 0x87 -#define KEY_CHAR_PLUS 0x89 -#define KEY_CHAR_MINUS 0x99 -#define KEY_CHAR_MULT 0xa9 -#define KEY_CHAR_DIV 0xb9 -#define KEY_CHAR_FRAC 0xbb -#define KEY_CHAR_LPAR 0x28 -#define KEY_CHAR_RPAR 0x29 -#define KEY_CHAR_COMMA 0x2c -#define KEY_CHAR_STORE 0x0e -#define KEY_CHAR_LOG 0x95 -#define KEY_CHAR_LN 0x85 -#define KEY_CHAR_SIN 0x81 -#define KEY_CHAR_COS 0x82 -#define KEY_CHAR_TAN 0x83 -#define KEY_CHAR_SQUARE 0x8b -#define KEY_CHAR_POW 0xa8 -#define KEY_CHAR_IMGNRY 0x7f50 -#define KEY_CHAR_LIST 0x7f51 -#define KEY_CHAR_MAT 0x7f40 -#define KEY_CHAR_EQUAL 0x3d -#define KEY_CHAR_PI 0xd0 -#define KEY_CHAR_ANS 0xc0 -#define KEY_CHAR_LBRCKT 0x5b -#define KEY_CHAR_RBRCKT 0x5d -#define KEY_CHAR_LBRACE 0x7b -#define KEY_CHAR_RBRACE 0x7d -#define KEY_CHAR_CR 0x0d -#define KEY_CHAR_CUBEROOT 0x96 -#define KEY_CHAR_RECIP 0x9b -#define KEY_CHAR_ANGLE 0x7f54 -#define KEY_CHAR_EXPN10 0xb5 -#define KEY_CHAR_EXPN 0xa5 -#define KEY_CHAR_ASIN 0x91 -#define KEY_CHAR_ACOS 0x92 -#define KEY_CHAR_ATAN 0x93 -#define KEY_CHAR_ROOT 0x86 -#define KEY_CHAR_POWROOT 0xb8 -#define KEY_CHAR_SPACE 0x20 -#define KEY_CHAR_DQUATE 0x22 -#define KEY_CHAR_VALR 0xcd -#define KEY_CHAR_THETA 0xce -#define KEY_CHAR_A 0x41 -#define KEY_CHAR_B 0x42 -#define KEY_CHAR_C 0x43 -#define KEY_CHAR_D 0x44 -#define KEY_CHAR_E 0x45 -#define KEY_CHAR_F 0x46 -#define KEY_CHAR_G 0x47 -#define KEY_CHAR_H 0x48 -#define KEY_CHAR_I 0x49 -#define KEY_CHAR_J 0x4a -#define KEY_CHAR_K 0x4b -#define KEY_CHAR_L 0x4c -#define KEY_CHAR_M 0x4d -#define KEY_CHAR_N 0x4e -#define KEY_CHAR_O 0x4f -#define KEY_CHAR_P 0x50 -#define KEY_CHAR_Q 0x51 -#define KEY_CHAR_R 0x52 -#define KEY_CHAR_S 0x53 -#define KEY_CHAR_T 0x54 -#define KEY_CHAR_U 0x55 -#define KEY_CHAR_V 0x56 -#define KEY_CHAR_W 0x57 -#define KEY_CHAR_X 0x58 -#define KEY_CHAR_Y 0x59 -#define KEY_CHAR_Z 0x5a -/* non-capital char keys, possible in the emulator when writing with the computer keyboard - and eventually in some text-entry modes. Note that one only needs to add 0x20 to the - uppercase char key codes to get the codes for the lowercase keys. -*/ -#define KEY_CHAR_LOWER_A 0x61 -#define KEY_CHAR_LOWER_B 0x62 -#define KEY_CHAR_LOWER_C 0x63 -#define KEY_CHAR_LOWER_D 0x64 -#define KEY_CHAR_LOWER_E 0x65 -#define KEY_CHAR_LOWER_F 0x66 -#define KEY_CHAR_LOWER_G 0x67 -#define KEY_CHAR_LOWER_H 0x68 -#define KEY_CHAR_LOWER_I 0x69 -#define KEY_CHAR_LOWER_J 0x6A -#define KEY_CHAR_LOWER_K 0x6B -#define KEY_CHAR_LOWER_L 0x6C -#define KEY_CHAR_LOWER_M 0x6D -#define KEY_CHAR_LOWER_N 0x6E -#define KEY_CHAR_LOWER_O 0x6F -#define KEY_CHAR_LOWER_P 0x70 -#define KEY_CHAR_LOWER_Q 0x71 -#define KEY_CHAR_LOWER_R 0x72 -#define KEY_CHAR_LOWER_S 0x73 -#define KEY_CHAR_LOWER_T 0x74 -#define KEY_CHAR_LOWER_U 0x75 -#define KEY_CHAR_LOWER_V 0x76 -#define KEY_CHAR_LOWER_W 0x77 -#define KEY_CHAR_LOWER_X 0x78 -#define KEY_CHAR_LOWER_Y 0x79 -#define KEY_CHAR_LOWER_Z 0x7A - -// Control codes -#define KEY_CTRL_NOP 0 -#define KEY_CTRL_EXE 30004 -#define KEY_CTRL_DEL 30025 -#define KEY_CTRL_AC 30015 -#define KEY_CTRL_FD 30046 -#define KEY_CTRL_UNDO 30045 -#define KEY_CTRL_XTT 30001 -#define KEY_CTRL_EXIT 30002 -#define KEY_CTRL_SHIFT 30006 -#define KEY_CTRL_ALPHA 30007 -#define KEY_CTRL_OPTN 30008 -#define KEY_CTRL_VARS 30016 -#define KEY_CTRL_UP 30018 -#define KEY_CTRL_DOWN 30023 -#define KEY_CTRL_LEFT 30020 -#define KEY_CTRL_RIGHT 30021 -#define KEY_CTRL_F1 30009 -#define KEY_CTRL_F2 30010 -#define KEY_CTRL_F3 30011 -#define KEY_CTRL_F4 30012 -#define KEY_CTRL_F5 30013 -#define KEY_CTRL_F6 30014 -#define KEY_CTRL_CATALOG 30100 -#define KEY_CTRL_FORMAT 30101 -#define KEY_CTRL_CAPTURE 30055 -#define KEY_CTRL_CLIP 30050 -#define KEY_CTRL_PASTE 30036 -#define KEY_CTRL_INS 30033 -#define KEY_CTRL_MIXEDFRAC 30054 -#define KEY_CTRL_FRACCNVRT 30026 -#define KEY_CTRL_QUIT 30029 -#define KEY_CTRL_PRGM 30028 -#define KEY_CTRL_SETUP 30037 -#define KEY_CTRL_PAGEUP 30052 -#define KEY_CTRL_PAGEDOWN 30053 -#define KEY_CTRL_MENU 30003 -#define KEY_SHIFT_OPTN 30059 -#define KEY_CTRL_RESERVE1 30060 -#define KEY_CTRL_RESERVE2 30061 -#define KEY_SHIFT_LEFT 30062 -#define KEY_SHIFT_RIGHT 30063 - -#define KEY_PRGM_ACON 10 -#define KEY_PRGM_DOWN 37 -#define KEY_PRGM_EXIT 47 -#define KEY_PRGM_F1 79 -#define KEY_PRGM_F2 69 -#define KEY_PRGM_F3 59 -#define KEY_PRGM_F4 49 -#define KEY_PRGM_F5 39 -#define KEY_PRGM_F6 29 -#define KEY_PRGM_LEFT 38 -#define KEY_PRGM_NONE 0 -#define KEY_PRGM_RETURN 31 -#define KEY_PRGM_RIGHT 27 -#define KEY_PRGM_UP 28 -#define KEY_PRGM_0 71 -#define KEY_PRGM_1 72 -#define KEY_PRGM_2 62 -#define KEY_PRGM_3 52 -#define KEY_PRGM_4 73 -#define KEY_PRGM_5 63 -#define KEY_PRGM_6 53 -#define KEY_PRGM_7 74 -#define KEY_PRGM_8 64 -#define KEY_PRGM_9 54 -#define KEY_PRGM_A 76 -#define KEY_PRGM_F 26 -#define KEY_PRGM_ALPHA 77 -#define KEY_PRGM_SHIFT 78 -#define KEY_PRGM_OPTN 68 -#define KEY_PRGM_MENU 48 - -// in Bkey_GetKeyWait function -#define KEYWAIT_HALTON_TIMEROFF 0 -#define KEYWAIT_HALTOFF_TIMEROFF 1 -#define KEYWAIT_HALTON_TIMERON 2 - -#define KEYREP_NOEVENT 0 -#define KEYREP_KEYEVENT 1 -#define KEYREP_TIMEREVENT 2 - -#ifdef __cplusplus -extern "C" { -#endif - -void Set_FKeys2( unsigned int p1 ); -void Set_FKeys1( unsigned int p1, unsigned int*P2 ); -void PRGM_GetKey_OS( unsigned char*p ); -int GetKey(int*key); -int GetKeyWait_OS(int*column, int*row, int type_of_waiting, int timeout_period, int menu, unsigned short*keycode ); -int PRGM_GetKey(); -void DisplayMBString(unsigned char *MB_string, int start, int xpos, int x, int y); -void DisplayMBString2( int P1, unsigned char*MB_string, int start, int xpos, int x, int y, int pos_to_clear, int P8, int P9 ); -void EditMBStringCtrl(unsigned char *MB_string, int posmax, int *start, int *xpos, int *key, int x, int y); -void EditMBStringCtrl2( unsigned char*MB_string, int xposmax, int*P3, int*xpos, int*key, int x, int y, int enable_pos_to_clear, int pos_to_clear ); -void EditMBStringCtrl3( unsigned char*, int xposmax, void*, void*, void*, int, int, int, int, int ); -void EditMBStringCtrl4( unsigned char*, int xposmax, void*, void*, void*, int, int, int, int, int, int ); -int EditMBStringChar(unsigned char *MB_string, int posmax, int xpos, int char_to_insert); -void Bkey_ClrAllFlags( void ); -void Bkey_SetFlag(short flagpattern); -int Keyboard_PutKeycode( int X, int Y, int Keycode); -int Keyboard_SpyMatrixCode(char*column, char*row); -void Bkey_SetAllFlags(short flags); -short Bkey_GetAllFlags( void ); - -// Mock functions -int keydown(int basic_keycode); -void setupKeyboard( void ); - -/* whether user can get into Main Menu with GetKey. 1=menu enabled, 0=menu locked. - * "Set" syscall doesn't exist, must be done through address trickery. */ -int GetGetkeyToMainFunctionReturnFlag( void ); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/fxcg-mock/include/fxcg/mock.c b/fxcg-mock/include/fxcg/mock.c deleted file mode 100644 index cb5144f..0000000 --- a/fxcg-mock/include/fxcg/mock.c +++ /dev/null @@ -1,6 +0,0 @@ -#include -#include "keyboard.h" - -void initMock() { - setupKeyboard(); -} \ No newline at end of file diff --git a/fxcg-mock/include/fxcg/mock.h b/fxcg-mock/include/fxcg/mock.h deleted file mode 100644 index 23f511e..0000000 --- a/fxcg-mock/include/fxcg/mock.h +++ /dev/null @@ -1 +0,0 @@ -void initMock(void); \ No newline at end of file diff --git a/fxcg-mock/include/fxcg/system.c b/fxcg-mock/include/fxcg/system.c deleted file mode 100644 index 0ecea5a..0000000 --- a/fxcg-mock/include/fxcg/system.c +++ /dev/null @@ -1,3 +0,0 @@ -void PowerOff(int displayLogo) { - // nop -} diff --git a/fxcg-mock/include/fxcg/system.h b/fxcg-mock/include/fxcg/system.h deleted file mode 100644 index dcaa0a2..0000000 --- a/fxcg-mock/include/fxcg/system.h +++ /dev/null @@ -1,56 +0,0 @@ -#ifdef __cplusplus -extern "C" { -#endif - -// This adds in syscalls for interfacing with the OS and hardware. - -void SetAutoPowerOffTime(int durationInMinutes); -int GetAutoPowerOffTime(); //returns duration in minutes - -void SetBacklightDuration(char durationInHalfMinutes); -char GetBacklightDuration(); //returns duration in half-minutes - -void SetBatteryType(int type); -int GetBatteryType(void); - -int GetMainBatteryVoltage(int one); //parameter should be 1 -void PowerOff(int displayLogo); -void Restart(); -void SpecialMatrixcodeProcessing(int*col, int*row); -void TestMode(int); -void*GetStackPtr(void); - -void SetSetupSetting(unsigned int SystemParameterNo, unsigned char SystemParameterValue); -unsigned char GetSetupSetting(unsigned int SystemParameterNo); - -int Timer_Install(int InternalTimerID, void (*hander)(void), int elapse); -int Timer_Deinstall(int InternalTimerID); -int Timer_Start(int InternalTimerID); -int Timer_Stop(int InternalTimerID); - -void TakeScreenshot(void); -void TakeScreenshot2(void); //seems to be the same as the one above - -void DisplayMainMenu(void); - -//Hold program execution: -void OS_InnerWait_ms(int); - -void CMT_Delay_100micros(int); //does CMT stand for Composable Memory Transactions? Couldn't find documentation on this -void CMT_Delay_micros(int); // nor on this (gbl08ma) - -void SetQuitHandler(void (*)()); // sets callback to be run when user exits through the main menu from one app to another. eActivity uses this in the "Save file?" dialog - -void Alpha_SetData( char VarName, void* Src ); -void Alpha_GetData( char VarName, void* Dest ); - -int CLIP_Store( unsigned char*buffer, int length ); // stores buffer of length length in the system clipboard. - -int MB_ElementCount(char* buf); // like strlen but for the graphical length of multibyte strings -int MB_IsLead(char c); // returns 1 if the character is the first byte of a multibyte char - -int GlibGetOSVersionInfo(char *major, char *minor, short int *c, short int *d); - -#ifdef __cplusplus -} -#endif diff --git a/icon-sel.png b/icon-sel.png new file mode 100644 index 0000000000000000000000000000000000000000..7137b504cfd44f62f3105ce7a203b9100a557d0f GIT binary patch literal 8388 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 ag#Q8hHNm}t`+-sb0000OKR!=d->gd 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 BR~Y~R diff --git a/src/3d.c b/src/3d.c index ba7808d..c25e800 100644 --- a/src/3d.c +++ b/src/3d.c @@ -1,42 +1,46 @@ #include "./3d.h" -#include - +#include "./platform.h" #include "./main.h" #include "./tilemap.h" #include "./maths.h" #include "../data-headers/generated_lut.h" -#define LCD_WIDTH_PX 384 -#define LCD_HEIGHT_PX 216 - inline void setPixel(int x, int y, color_t color) { VRAM[y * LCD_WIDTH_PX + x] = color; } -unsigned short getScreenPixel(unsigned short x, unsigned short y) { - // __builtin_expect(x == (int)(LUT_WIDTH / 2), 0); - // if (x < (int)(LUT_WIDTH / 2)) { - // y = distortion_correction[x][y - horizon]; - // } else if (x == (int)(LUT_WIDTH / 2)) { - // y = y - 1; - // } else { - // y = distortion_correction[(int)(LUT_WIDTH / 2) + ((int)(LUT_WIDTH / 2) - x)][y - horizon]; - // } +int hFovModifier = 1 << 12; - int distance = newLut[y - horizon]; - - // Rotate by x - // Fixed point multiplication - x += angle; - short xPos = ((distance * fpsin(x)) >> 15); - short yPos = ((distance * fpcos(x)) >> 15); +void changedFov() { + int angleCos = fpcos(angle); + int angleSin = fpsin(angle); + for (unsigned short y = horizon + 2; y < LCD_HEIGHT_PX; y++) { + int dist = newLut[y - horizon]; + int dx = (dist * hFovModifier) >> 12; + int wx = -(LCD_WIDTH_PX / 2) / 2; + wx *= dx; + for (unsigned short x = 0; x < LCD_WIDTH_PX / 2; x++) { + wx += dx; - return samplePixel(xPos, yPos); + int x2 = wx >> 6; + int y2 = dist; + + // Rotate by angle + int newX = ((x2 * angleCos) >> 15) + ((y2 * angleSin) >> 15); + int newY = ((y2 * angleCos) >> 15) - ((x2 * angleSin) >> 15); + + color_t col = samplePixel(newX >> 1, newY >> 1); + // setPixel(x * 2, y, col); + // setPixel(x * 2 + 1, y, col); + // Cast to an unsigned int array so two pixels are stored at once. + ((unsigned int *)VRAM)[y * (LCD_WIDTH_PX / 2) + x] = (col << 16 | col); + } + } } -void new3D() { +void normalFov() { int angleCos = fpcos(angle); int angleSin = fpsin(angle); for (unsigned short y = horizon + 2; y < LCD_HEIGHT_PX; y++) { @@ -60,3 +64,11 @@ void new3D() { } } } + +void draw3D() { + if (hFovModifier == 1 << 12) { + normalFov(); + } else { + changedFov(); + } +} diff --git a/src/3d.h b/src/3d.h index 0ed08a2..8877be8 100644 --- a/src/3d.h +++ b/src/3d.h @@ -2,6 +2,7 @@ #define _3D_H_ unsigned short getScreenPixel(unsigned short x, unsigned short y); -void new3D(); +void draw3D(); +extern int hFovModifier; #endif // _3D_H_ diff --git a/src/buttons.c b/src/buttons.c index 4c36311..8697e21 100644 --- a/src/buttons.c +++ b/src/buttons.c @@ -1,30 +1,22 @@ #include "./buttons.h" -#include +#include "./platform.h" +#include "./main.h" ButtonState buttons = {0}; ButtonState lastButtons = {0}; -// https://www.cemetech.net/forum/viewtopic.php?p=173836&sid=9eabb0dbeddeeb6507c19c8a65dbe249 -#ifndef FXCG_MOCK -int keydown(int basic_keycode) { - const unsigned short* keyboard_register = (unsigned short*)0xA44B0000; - int row, col, word, bit; - row = basic_keycode % 10; - col = basic_keycode / 10 - 1; - word = row >> 1; - bit = col + 8 * (row & 1); - return (0 != (keyboard_register[word] & 1 << bit)); -} -#endif - void scanButtons() { + updateKeys(); lastButtons = buttons; - buttons.up = keydown(KEY_PRGM_UP); - buttons.down = keydown(KEY_PRGM_DOWN); - buttons.left = keydown(KEY_PRGM_LEFT); - buttons.right = keydown(KEY_PRGM_RIGHT); - buttons.accel = keydown(KEY_PRGM_SHIFT); - buttons.hop = keydown(KEY_PRGM_ALPHA); - buttons.debug = keydown(KEY_PRGM_RETURN); + buttons.up = check_key(BUTTON_UP); + buttons.down = check_key(BUTTON_DOWN); + buttons.left = check_key(BUTTON_LEFT); + buttons.right = check_key(BUTTON_RIGHT); + buttons.accel = check_key(BUTTON_ACCEL); + buttons.hop = check_key(BUTTON_HOP_1) || check_key(BUTTON_HOP_2); + buttons.debug = check_key(BUTTON_DEBUG); + buttons.save = check_key(BUTTON_SAVE); + buttons.load = check_key(BUTTON_LOAD); + buttons.debug_boost = check_key(BUTTON_DEBUG_BOOST); } diff --git a/src/buttons.h b/src/buttons.h index 2f3ff62..5baa2e5 100644 --- a/src/buttons.h +++ b/src/buttons.h @@ -14,6 +14,9 @@ typedef struct { bool accel; bool hop; bool debug; + bool save; + bool load; + bool debug_boost; } ButtonState; extern ButtonState buttons; diff --git a/src/debugHud.c b/src/debugHud.c index 605dc35..dddd6e7 100644 --- a/src/debugHud.c +++ b/src/debugHud.c @@ -1,12 +1,11 @@ -#ifndef FXCG_MOCK - #include "./debugHud.h" -#include -#include +#include +#include "./platform.h" #include "./main.h" #include "./buttons.h" +#include "./state.h" int lastTime = 0; int debugType = 0; @@ -19,40 +18,30 @@ void handleDebugHud() { debugType = debugType % 3; if (!debugType) { // Put the sky back - fillSky(24, 34); - Bdisp_PutDisp_DD_stripe(24, 34); + fillSky(8, 20); } } - int currentTime = RTC_GetTicks(); + int currentTime = getTimeMS(); + char buffer[17]; if (debugType == 1) { - int x = 8; - int y = 0; - - char buffer[17] = "FPS: "; - itoa(currentFps, (unsigned char*)buffer + 5); - - PrintMiniMini(&x, &y, buffer, 0, COLOR_BLACK, 0); - Bdisp_PutDisp_DD_stripe(24, 34); + char buffer[17]; + snprintf(buffer, 17, "FPS: %d", currentFps); } else if (debugType == 2) { - int x = 8; - int y = 0; + snprintf(buffer, 17, "Time: %d", (state.totalFrameCount / 60)); + } - char buffer[17] = "Time: "; - itoa((totalFrameCount / 38), (unsigned char*)buffer + 6); - - PrintMiniMini(&x, &y, buffer, 0, COLOR_BLACK, 0); - Bdisp_PutDisp_DD_stripe(24, 34); + if (debugType) { + // Draw the text + drawText(8, 8, buffer); } // If 1 second has passed - if (currentTime - lastTime >= 128) { + if (currentTime - lastTime >= 1000) { lastTime = currentTime; currentFps = fpsCount; fpsCount = 0; } fpsCount++; } - -#endif // FXCG_MOCK diff --git a/src/main.c b/src/main.c index 58f9e19..2cd00ce 100644 --- a/src/main.c +++ b/src/main.c @@ -1,22 +1,7 @@ #include "./main.h" -#include -#include -#include -#ifndef FXCG_MOCK -#include -#include - -#define debug_printf(...) -#else -#include -#ifdef EMSCRIPTEN -#include -#include -#define debug_printf(...) printf(__VA_ARGS__) -#endif -#endif - +#include "./platform.h" +#include "./state.h" #include "./3d.h" #include "./tilemap.h" #include "./sprites.h" @@ -26,22 +11,23 @@ #include "./particles.h" #include "../data-headers/images.h" +#include "platforms/gint.h" #define MIN(X, Y) (((X) < (Y)) ? (X) : (Y)) #define MAX(X, Y) (((X) < (Y)) ? (Y) : (X)) -#define LCD_WIDTH_PX 384 -#define LCD_HEIGHT_PX 216 - // TODO : no duplication with the LUT #define angleWidth 192 -#define horizon 108 +#define horizon (LCD_HEIGHT_PX / 2) + +#define offX(amount) (LCD_WIDTH_PX / 2 + amount) +#define offY(amount) (LCD_HEIGHT_PX / 2 + amount) #define scale 4 short angle = 0; short xOffset = 0; -short yOffset = 0; +short yOffset = 0; // https://stackoverflow.com/a/19288271/4012708 int mod(int a, int b) { @@ -86,19 +72,12 @@ int abs_int(int x) { short index2; unsigned short element; -color_t* VRAM; +// color_t* VRAM; void setPixel(int x, int y, color_t color) { VRAM[y * LCD_WIDTH_PX + x] = color; } -// https://prizm.cemetech.net/index.php?title=PRGM_GetKey -int PRGM_GetKey(void) { - unsigned char buffer[12]; - PRGM_GetKey_OS(buffer); - return (buffer[1] & 0x0F) * 10 + ((buffer[2] & 0xF0) >> 4); -} - #define PI 3.14159265358979323846 void cameraBehind(short x, short y, short objectAngle, short distance) { @@ -107,7 +86,9 @@ void cameraBehind(short x, short y, short objectAngle, short distance) { xOffset = x - cos(-objectAngle) * distance; } -// TODO: max and mix +// #include + +// TODO: max and min void fillSky(unsigned short yMin, unsigned short yMax) { /* for (unsigned short x = 0; x < LCD_WIDTH_PX; x++) { for (unsigned short y = yMin; y < yMax; y++) { @@ -115,8 +96,10 @@ void fillSky(unsigned short yMin, unsigned short yMax) { } } */ draw(img_bg, 0, 0); + // extern bopti_image_t img_bg; + // dimage(0, 0, &img_bg); // draw_loop_x(img_loop, 0, 0, 0, LCD_WIDTH_PX); - Bdisp_PutDisp_DD(); + displayUpdate(yMin, yMax); } // https://prizm.cemetech.net/index.php?title=Useful_Routines @@ -160,189 +143,247 @@ void drawLine(int x1, int y1, int x2, int y2, unsigned short color) { unsigned short kartX = 3730; unsigned short kartY = 2300; -signed char kartSteerAnim = 0; float kartVel = 0; float kartAngle = 90; #define kartSpeed 2 // For framerate counter -int totalFrameCount = 0; +// int state.totalFrameCount = 0; int jitter = 0; -int hopStage = 0; const int hopAnim[15] = { 1, 1, 2, 3, 4, 4, 5, 5, 5, 4, 4, 3, 2, 1, 1, }; -bool drifting = false; -int driftDir = 0; -Car kart; +State savedState; + +void draw_time(char* str, int x, int y) { + // Loop through each character in the string + for (int i = 0; str[i] != '\0'; i++) { + // If it's a number + int character = 10; + if (str[i] >= '0' && str[i] <= '9') { + character = str[i] - '0'; + } + draw(imgs_font[character], x + ((12 - imgs_font[character][0]) / 2), y); + x += 10; + } +} + +#include void main_loop() { // Main game loop scanButtons(); - #ifndef FXCG_MOCK - handleDebugHud(); - #endif - - unsigned char currentTile = getTileType(kartX / scale, kartY / scale); - if (currentTile == 0 || currentTile == 3 || currentTile == 4 || currentTile == 7 || currentTile == 8 || - currentTile == 9 || currentTile == 10 || currentTile == 12 || currentTile == 13 || currentTile == 14 || - currentTile == 15 || currentTile == 17 || currentTile == 33 || currentTile == 48 || currentTile == 49 || currentTile == 50 || currentTile == 51 || - currentTile == 52 || currentTile == 53 || currentTile == 64 || currentTile == 67 || currentTile == 68 || - currentTile == 69 || currentTile == 80 || currentTile == 96 || currentTile == 152 || currentTile == 168 || currentTile == 200 || currentTile == 201 || currentTile == 218) { - drag = 0.7; - } else { - drag = 0.9; - } - - // turnSpeed = drifting ? 0.003: 0.002; - - if (!buttons.hop) { - drifting = false; - } - - if (buttons.hop && !lastButtons.hop && hopStage == 0) { - hopStage = 1; - if (buttons.left || buttons.right) { - drifting = true; - driftDir = buttons.left ? -1 : 1; + if (state.totalFrameCount > 180) { + if (buttons.save) { + savedState = state; } - } - - if (hopStage != 0) { - hopStage++; - if (hopStage >= 15) { - hopStage = 0; - if (!drifting && (buttons.left || buttons.right)) { - drifting = true; - driftDir = buttons.left ? -1 : 1; - } + if (buttons.load) { + state = savedState; } - } - /* if (drifting) { - // debug_printf("driftDir: %d\n", driftDir); - if (driftDir == 1) { - buttons.right = true; - buttons.left = false; - } else { - buttons.left = true; - buttons.right = false; - } - } */ + handleDebugHud(); - double oldKartY = kart.y; - double oldKartX = kart.x; + // turnSpeed = state.drifting ? 0.003: 0.002; - updateWithControls(&kart, buttons); + unsigned char currentTile = getTileType(kartX / scale, kartY / scale); + bool isOffRoad = + (currentTile == 0 || currentTile == 3 || currentTile == 4 || currentTile == 7 || currentTile == 8 || + currentTile == 9 || currentTile == 10 || currentTile == 12 || currentTile == 13 || currentTile == 14 || + currentTile == 15 || currentTile == 17 || currentTile == 33 || currentTile == 48 || currentTile == 49 || currentTile == 50 || currentTile == 51 || + currentTile == 52 || currentTile == 53 || currentTile == 64 || currentTile == 67 || currentTile == 68 || + currentTile == 69 || currentTile == 80 || currentTile == 96 || currentTile == 152 || currentTile == 168 || currentTile == 200 || currentTile == 201 || currentTile == 218); - unsigned char newTile = getTileType(kart.x * 12 / scale, kart.y * 12 / scale); - if (newTile >= 240 && newTile <= 243) { // Barrier - kart.x = oldKartX; - kart.y = oldKartY; - } - - kartX = kart.x * 12; - kartY = kart.y * 12; - - // Radians to degrees - kartAngle = -kart.angle * 180 / 3.1415926; - kartAngle += 90; - - // TODO: no / 2 when lower FOV? - cameraBehind(kartX, kartY, kartAngle, 150 / 2); // TODO: calculate this rather than guessing - - // maxSteerAnim = drifting ? 20 : 10; - #define maxSteerAnim 10 - /* if (buttons.left && !buttons.right) { - kartAngle -= kartVel / 10; - - kartSteerAnim++; - if (kartSteerAnim > maxSteerAnim) { - kartSteerAnim = maxSteerAnim; - } - } else if (buttons.right && !buttons.left) { - kartAngle += kartVel / 10; - - kartSteerAnim--; - if (kartSteerAnim < -maxSteerAnim) { - kartSteerAnim = -maxSteerAnim; - } - } else { - if (kartSteerAnim > 0) { - kartSteerAnim--; - if (kartSteerAnim < 0) { - kartSteerAnim = 0; + if (state.drifting && !isOffRoad) { + if ((buttons.left && state.driftDir == -1) || (buttons.right && state.driftDir == 1)) { + state.driftCharge += 2; + } else { + state.driftCharge++; } } else { - kartSteerAnim++; - if (kartSteerAnim > 0) { - kartSteerAnim = 0; + state.driftCharge = 0; + /* for (int x = 0; x < LCD_WIDTH_PX / 2; x++) { + for (int y = 0; y < 4; y++) { + // setPixel(i, j, 0xF800); + ((unsigned int *)VRAM)[y * (LCD_WIDTH_PX / 2) + x] = (0x0CDF << 16) | 0x0CDF; + } + } */ + } + + if (state.driftCharge > 60) { + state.driftCharge = 60; + } + + /* if (state.driftCharge > 0) { + // Draw a 4px red bar at the top of the screen + int barWidth = state.driftCharge * LCD_WIDTH_PX / 60 / 2; + for (int x = 0; x < barWidth; x++) { + for (int y = 0; y < 4; y++) { + // setPixel(i, j, 0xF800); + ((unsigned int *)VRAM)[y * (LCD_WIDTH_PX / 2) + x] = (0xF800 << 16) | 0xF800; + } + } + } */ + + if (!buttons.hop) { + if (state.drifting && state.driftCharge >= 60) { + state.boostTime = 30; + addParticle(1, LCD_WIDTH_PX / 2 - 28, LCD_HEIGHT_PX - 70, 0, 0); + } + state.drifting = false; + } + + if (buttons.hop && !lastButtons.hop && state.hopStage == 0) { + state.hopStage = 1; + if (buttons.left || buttons.right) { + state.drifting = true; + state.driftDir = buttons.left ? -1 : 1; } } - } */ - // Control the distance - /* if (keydown(KEY_PRGM_UP)) { - distance += 2; - } - if (keydown(KEY_PRGM_DOWN)) { - distance -= 2; - } */ - - #ifndef FXCG_MOCK - if (keydown(KEY_PRGM_MENU)) { - // Allow the OS to handle exiting to the menu - int key; - GetKey(&key); - Bdisp_EnableColor(1); - fillSky(0, LCD_HEIGHT_PX); - } - #endif - - if (keydown(KEY_PRGM_ACON)) { - #ifndef FXCG_MOCK - PowerOff(1); - #endif - fillSky(0, LCD_HEIGHT_PX); - } - - kartAngle = fmod(kartAngle, 360); - - angle = fmod(kartAngle + 90, 360) * angleWidth / 90; - - /* for (unsigned short x = 0; x < LCD_WIDTH_PX / 2; x++) { - index2 = x + angle; - index2 = mod(index2, (angleWidth * 4)); - element = mod(index2, angleWidth); - // TODO: Plus 2? - for (unsigned short y = horizon + 2; y < LCD_HEIGHT_PX; y += 1) { - unsigned short thing = getScreenPixel(x, y); - setPixel(x * 2, y, thing); - setPixel(x * 2 + 1, y, thing); + if (state.hopStage != 0) { + state.hopStage++; + if (state.hopStage >= 15) { + state.hopStage = 0; + if (!state.drifting && (buttons.left || buttons.right)) { + state.drifting = true; + state.driftDir = buttons.left ? -1 : 1; + } + } } - } */ - new3D(); + /* if (state.drifting) { + // debug_printf("state.driftDir: %d\n", state.driftDir); + if (state.driftDir == 1) { + buttons.right = true; + buttons.left = false; + } else { + buttons.left = true; + buttons.right = false; + } + } */ - if (abs_double(kart.xVelocity) + abs_double(kart.yVelocity) < 0.02) { + if (buttons.debug_boost) { + state.boostTime = 30; + addParticle(1, LCD_WIDTH_PX / 2 - 28, LCD_HEIGHT_PX - 70, 0, 0); + } + + bool boosting = false; + if (state.boostTime >= 0) { + state.boostTime--; + boosting = true; + } + + if (boosting) { + maxPower = 0.15; + powerFactor = 0.002; + state.player.power = maxPower; + buttons.accel = true; + + // hFovModifier = (1 << 12) * 1.2; + if (hFovModifier < (1 << 12) * 1.2) { + hFovModifier += (1 << 12) * 0.05; + } + } else { + maxPower = 0.1; + powerFactor = 0.001; + + // hFovModifier = 1 << 12; + if (hFovModifier > 1 << 12) { + hFovModifier -= (1 << 12) * 0.02; + } + } + + if (!boosting && isOffRoad) { + drag = 0.7; + } else { + drag = 0.9; + } + + double oldKartY = state.player.y; + double oldKartX = state.player.x; + + updateWithControls(&state.player, buttons); + + unsigned char newTile = getTileType(state.player.x * 12 / scale, state.player.y * 12 / scale); + if (newTile >= 240 && newTile <= 243) { // Barrier + state.player.x = oldKartX; + state.player.y = oldKartY; + } + + kartX = state.player.x * 12; + kartY = state.player.y * 12; + + // Radians to degrees + kartAngle = -state.player.angle * 180 / 3.1415926; + kartAngle += 90; + + // TODO: no / 2 when lower FOV? + cameraBehind(kartX, kartY, kartAngle, 150 / 2); // TODO: calculate this rather than guessing + + kartAngle = fmod(kartAngle, 360); + + angle = fmod(kartAngle + 90, 360) * angleWidth / 90; + + /* for (unsigned short x = 0; x < LCD_WIDTH_PX / 2; x++) { + index2 = x + angle; + index2 = mod(index2, (angleWidth * 4)); + element = mod(index2, angleWidth); + // TODO: Plus 2? + for (unsigned short y = horizon + 2; y < LCD_HEIGHT_PX; y += 1) { + unsigned short thing = getScreenPixel(x, y); + setPixel(x * 2, y, thing); + setPixel(x * 2 + 1, y, thing); + } + } */ + } + + draw3D(); + + if (state.driftCharge >= 60) { + // Draw fire effect on the wheels + int sign = state.kartSteerAnim < 0 ? -1 : 1; + sign *= -1; + int x = LCD_WIDTH_PX / 2 - (44 * sign) - 8; + x += 2; + int y = LCD_HEIGHT_PX - 50; + int positive = abs_int(state.kartSteerAnim); + int v = positive - 10; + if (v < 0) { + v = 0; + } + v *= sign; + x -= v / 2; + x += (state.totalFrameCount / 2) % 3 * sign; + y += (state.totalFrameCount / 2) % 2; + if (sign == 1) { + draw(img_fire, x, y); + draw(img_fire, x + (state.totalFrameCount / 2) % 2 * 3, y + 5); + } else { + draw_flipped(img_fire, x, y); + draw_flipped(img_fire, x - (state.totalFrameCount / 2) % 2 * 3, y + 5); + } + } + + if (abs_double(state.player.xVelocity) + abs_double(state.player.yVelocity) < 0.02) { jitter = 0; - } else if (abs_double(kart.xVelocity) + abs_double(kart.yVelocity) < 0.30) { - jitter = (totalFrameCount / 4) % 4; - } else if (abs_double(kart.xVelocity) + abs_double(kart.yVelocity) < 0.50) { - jitter = (totalFrameCount / 3) % 4; - } else if (abs_double(kart.xVelocity) + abs_double(kart.yVelocity) < 1) { - jitter = (totalFrameCount / 2) % 4; + } else if (abs_double(state.player.xVelocity) + abs_double(state.player.yVelocity) < 0.30) { + jitter = (state.totalFrameCount / 4) % 4; + } else if (abs_double(state.player.xVelocity) + abs_double(state.player.yVelocity) < 0.50) { + jitter = (state.totalFrameCount / 3) % 4; + } else if (abs_double(state.player.xVelocity) + abs_double(state.player.yVelocity) < 1) { + jitter = (state.totalFrameCount / 2) % 4; } else { - jitter = totalFrameCount % 4; + jitter = state.totalFrameCount % 4; } - // debug_printf("totalFrameCount: %d\n", totalFrameCount); + // debug_printf("state.totalFrameCount: %d\n", state.totalFrameCount); + #define maxSteerAnim 10 int targetAnim = 0; if (buttons.left && !buttons.right) { targetAnim = maxSteerAnim; @@ -352,106 +393,160 @@ void main_loop() { targetAnim = 0; } - if (drifting) { - targetAnim += (driftDir == -1) ? 10 : -10; - if (driftDir == 1 && targetAnim > -7) { + if (state.drifting) { + targetAnim += (state.driftDir == -1) ? 10 : -10; + if (state.driftDir == 1 && targetAnim > -7) { targetAnim = -7; } - if (driftDir == -1 && targetAnim < 7) { + if (state.driftDir == -1 && targetAnim < 7) { targetAnim = 7; } - // debug_printf("driftDir: %d, targetAnim: %d\n", driftDir, targetAnim); - if (totalFrameCount % 8 == 0) { - addParticle(0, 192 + -32 * driftDir, 180, -5 * driftDir, totalFrameCount % 16 == 0 ? -1 : 1); + // debug_printf("state.driftDir: %d, targetAnim: %d\n", state.driftDir, targetAnim); + if (state.totalFrameCount % 8 == 0) { + addParticle(0, 192 + -32 * state.driftDir, 180, -5 * state.driftDir, state.totalFrameCount % 16 == 0 ? -1 : 1); } } - if (kartSteerAnim != targetAnim) { - if (kartSteerAnim > targetAnim) { - kartSteerAnim--; + if (state.kartSteerAnim != targetAnim) { + if (state.kartSteerAnim > targetAnim) { + state.kartSteerAnim--; } else { - kartSteerAnim++; + state.kartSteerAnim++; } } - int animNo = abs_int(kartSteerAnim) / 2; + int animNo = abs_int(state.kartSteerAnim) / 2; int newAnimNo = animNo + ((jitter / 2) * 11); // debug_printf("animNo: %d\n", animNo); // draw_alpha(img_shadow, (LCD_WIDTH_PX / 2) - (96 / 2), 116, 2); - // if (totalFrameCount % 2 == 0) { + // if (state.totalFrameCount % 2 == 0) { // draw(img_shadow1, (LCD_WIDTH_PX / 2) - (96 / 2), 112); // } else { // draw(img_shadow2, (LCD_WIDTH_PX / 2) - (96 / 2), 112); // } - if (hopStage != 0) { + if (state.hopStage != 0) { draw(img_shadow1, (LCD_WIDTH_PX / 2) - (96 / 2), 112); } - if (kartSteerAnim >= 0) { - // CopySpriteMasked(/*mksprites[kartSteerAnim / 2]*/sprite, (LCD_WIDTH_PX / 2) - 39, 128, 78, 81, 0x07e0); - // CopySpriteMasked(mksprites[kartSteerAnim / 4], (LCD_WIDTH_PX / 2) - 36, 128, 72, 80, 0x4fe0); - draw(imgs_kart[animNo], (LCD_WIDTH_PX / 2) - (96 / 2), 112 + (jitter % 2) - (hopAnim[hopStage] * 3)); + if (state.kartSteerAnim >= 0) { + // CopySpriteMasked(/*mksprites[state.kartSteerAnim / 2]*/sprite, (LCD_WIDTH_PX / 2) - 39, 128, 78, 81, 0x07e0); + // CopySpriteMasked(mksprites[state.kartSteerAnim / 4], (LCD_WIDTH_PX / 2) - 36, 128, 72, 80, 0x4fe0); + draw(imgs_kart[animNo], (LCD_WIDTH_PX / 2) - (96 / 2), horizon + 4 + (jitter % 2) - (hopAnim[state.hopStage] * 3)); if (newAnimNo != animNo) { - draw(imgs_kart[newAnimNo], (LCD_WIDTH_PX / 2) - (96 / 2), 112 + (jitter % 2) - (hopAnim[hopStage] * 3)); + draw(imgs_kart[newAnimNo], (LCD_WIDTH_PX / 2) - (96 / 2), horizon + 4 + (jitter % 2) - (hopAnim[state.hopStage] * 3)); } } else { - // CopySpriteMaskedFlipped(/*mksprites[-kartSteerAnim / 2]*/sprite, (LCD_WIDTH_PX / 2) - 39, 128, 78, 81, 0x07e0); - // CopySpriteMaskedFlipped(mksprites[-kartSteerAnim / 4], (LCD_WIDTH_PX / 2) - 36, 128, 72, 80, 0x4fe0); - draw_flipped(imgs_kart[animNo], (LCD_WIDTH_PX / 2) - (96 / 2), 112 + (jitter % 2) - (hopAnim[hopStage] * 3)); + // CopySpriteMaskedFlipped(/*mksprites[-state.kartSteerAnim / 2]*/sprite, (LCD_WIDTH_PX / 2) - 39, 128, 78, 81, 0x07e0); + // CopySpriteMaskedFlipped(mksprites[-state.kartSteerAnim / 4], (LCD_WIDTH_PX / 2) - 36, 128, 72, 80, 0x4fe0); + draw_flipped(imgs_kart[animNo], (LCD_WIDTH_PX / 2) - (96 / 2), horizon + 4 + (jitter % 2) - (hopAnim[state.hopStage] * 3)); if (newAnimNo != animNo) { - draw_flipped(imgs_kart[newAnimNo], (LCD_WIDTH_PX / 2) - (96 / 2), 112 + (jitter % 2) - (hopAnim[hopStage] * 3)); + draw_flipped(imgs_kart[newAnimNo], (LCD_WIDTH_PX / 2) - (96 / 2), horizon + 4 + (jitter % 2) - (hopAnim[state.hopStage] * 3)); } } tickParticles(); - Bdisp_PutDisp_DD_stripe(horizon + 2, LCD_HEIGHT_PX); + // Bdisp_PutDisp_DD_stripe(horizon + 2, LCD_HEIGHT_PX); + // dupdate(); + + // const int fontWidths[] = {10, 5, 10, 9, 11, }; + + // Blank out the box that contains the time + for (int x = (LCD_WIDTH_PX - 90) / 2; x < LCD_WIDTH_PX / 2; x++) { + for (int y = 8; y < 20; y++) { + ((unsigned int *)VRAM)[y * (LCD_WIDTH_PX / 2) + x] = (0x0CDF << 16) | 0x0CDF; + } + } + + static int lastStage = -1; + if (state.totalFrameCount < 240) { + int stage = state.totalFrameCount / 60; + // TODO: max and min + if (stage != lastStage) { + fillSky(0, horizon); + } + draw(imgs_countdown[3 - stage], offX(-152 / 2), offY(-66 / 2)); + if (stage != lastStage) { + displayUpdate(0, horizon + 2); + } + lastStage = stage; + } + if (state.totalFrameCount == 180) { + state.boostTime = 30; + addParticle(1, LCD_WIDTH_PX / 2 - 28, LCD_HEIGHT_PX - 70, 0, 0); + } + if (state.totalFrameCount == 240) { + fillSky(0, horizon); + displayUpdate(0, horizon + 2); + } + + // Calculate the total time in mm:ss:xx format + int timerFrames = state.totalFrameCount - 180; + if (timerFrames >= 0) { + int minutes = timerFrames / 60 / 60; + int seconds = (timerFrames / 60) % 60; + int milliseconds = ((timerFrames % 60) * 16667) / 1000; + if (milliseconds >= 1000) { + milliseconds = 999; + } + char timeStr[9]; + sprintf(timeStr, "%02d:%02d:%02d", minutes, seconds, milliseconds / 10); + // Draw text + draw_time(timeStr, LCD_WIDTH_PX - 90, 8); + } + + // Update timer on screen + displayUpdate(8, 20); + + // Update track on screen + displayUpdate(horizon + 2, LCD_HEIGHT_PX); + + // displayUpdate(0, LCD_HEIGHT_PX); // draw_loop_x(img_loop, 0, 0, angle, LCD_WIDTH_PX); // draw_loop_x(img_castle, 0, 0, angle * 1.5, LCD_WIDTH_PX); // draw_loop_x(img_bush, 0, 0, angle * 2, LCD_WIDTH_PX); // Bdisp_PutDisp_DD(); - totalFrameCount += 1; + state.totalFrameCount += 1; } int main() { - #ifdef FXCG_MOCK - initMock(); - #endif + platformInit(); - VRAM = (color_t*)GetVRAMAddress(); - - Bdisp_EnableColor(1); fillSky(0, LCD_HEIGHT_PX); - kart.x = 3565 / 12; - kart.y = 2600 / 12; - kart.xVelocity = 0; - kart.yVelocity = 0; - kart.power = 0; - kart.reverse = 0; - kart.angle = 0; - kart.angularVelocity = 0; - kart.isThrottling = false; - kart.isReversing = false; - kart.isShooting = false; - kart.isTurningLeft = false; - kart.isTurningRight = false; + /* state.player.x = 3565.0 / 12; + state.player.y = 2600.0 / 12; + state.player.xVelocity = 0; + state.player.yVelocity = 0; + state.player.power = 0; + state.player.reverse = 0; + state.player.angle = 0; + state.player.angularVelocity = 0; + state.player.isThrottling = false; + state.player.isReversing = false; + state.player.isShooting = false; + state.player.isTurningLeft = false; + state.player.isTurningRight = false; */ + initState(); + kartX = state.player.x * 12; + kartY = state.player.y * 12; + // Radians to degrees + kartAngle = -state.player.angle * 180 / 3.1415926; + kartAngle += 90; + + // TODO: no / 2 when lower FOV? + cameraBehind(kartX, kartY, kartAngle, 150 / 2); // TODO: calculate this rather than guessing + + kartAngle = fmod(kartAngle, 360); + + angle = fmod(kartAngle + 90, 360) * angleWidth / 90; + savedState = state; initParticles(); - #ifdef FXCG_MOCK - #ifdef EMSCRIPTEN - emscripten_set_main_loop(main_loop, 60, 1); - #else - set_main_loop(main_loop); - #endif - #else - while (1) { - main_loop(); - } - #endif + runMainLoop(main_loop, 60); /* color_t* VRAM = (color_t*)0xA8000000; // emu address of VRAM VRAM += (LCD_WIDTH_PX*y + x); diff --git a/src/main.h b/src/main.h index 9e5fdd9..643ddda 100644 --- a/src/main.h +++ b/src/main.h @@ -3,22 +3,15 @@ #include -extern int totalFrameCount; - extern short angle; extern short xOffset; extern short yOffset; -extern bool drifting; -extern int driftDir; - extern short index2; extern unsigned short element; extern int debugType; -extern unsigned short* VRAM; - int mod(int a, int b); float sin(int angle); float cos(int angle); diff --git a/src/particles.c b/src/particles.c index 216b6b0..b556c93 100644 --- a/src/particles.c +++ b/src/particles.c @@ -12,7 +12,14 @@ ParticleType types[] = { .animLength = 3, .animDelay = 4, .animFrames = imgs_smoke - } + }, + // Boost fire + { + .maxAge = 20, + .animLength = 5, + .animDelay = 4, + .animFrames = imgs_boost + }, }; ParticleState particles[MAX_PARTICLES]; diff --git a/src/physics.c b/src/physics.c index 35b893f..db6fc69 100644 --- a/src/physics.c +++ b/src/physics.c @@ -3,14 +3,17 @@ #include "./main.h" #include "./maths.h" #include "./buttons.h" +#include "./state.h" #define angleWidth 192 // #define maxPower 0.075 // #define maxPower 0.125 -#define maxPower 0.1 +// #define maxPower 0.1 +double maxPower = 0.1; #define maxReverse 0.0375 -#define powerFactor 0.001 +// #define powerFactor 0.001 +double powerFactor = 0.001; #define reverseFactor 0.0005 // #define drag 0.9 @@ -42,88 +45,49 @@ double dmod(double a, double b) { return a - (int)(a / b) * b; } -void updateCar (Car *car) { - if (car->isThrottling) { - car->power += powerFactor * car->isThrottling; +void updateWithControls(Kart *kart, ButtonState controls) { + bool canTurn = kart->power > 0.0025/* || car->reverse*/; + + // Controls are reversed for now + bool isTurningLeft = canTurn && /*controls.left*/ controls.right; + bool isTurningRight = canTurn && /*controls.right*/ controls.left; + + if (controls.accel) { + kart->power += powerFactor; } else { - car->power -= powerFactor; + kart->power -= powerFactor; } - if (car->isReversing) { + /* if (car->isReversing) { car->reverse += reverseFactor; } else { car->reverse -= reverseFactor; - } + } */ - car->power = fmax(0, fmin(maxPower, car->power)); - car->reverse = fmax(0, fmin(maxReverse, car->reverse)); + kart->power = fmax(0, fmin(maxPower, kart->power)); + // car->reverse = fmax(0, fmin(maxReverse, car->reverse)); - double direction = car->power > car->reverse ? 1 : -1; + // double direction = car->power > car->reverse ? 1 : -1; + int direction = 1; - double change = car->isTurningLeft ? -1 : car->isTurningRight ? 1 : 0; - if (drifting) { - if (driftDir == -1) { + double change = isTurningLeft ? -1 : isTurningRight ? 1 : 0; + if (state.drifting) { + if (state.driftDir == -1) { change += 0.7; } else { change -= 0.7; } } change *= direction * turnSpeed; - car->angularVelocity += change; + kart->angularVelocity += change; - car->xVelocity += sin2(car->angle) * (car->power - car->reverse); - car->yVelocity += cos2(car->angle) * (car->power - car->reverse); + kart->xVelocity += sin2(kart->angle) * (kart->power /* - kart->reverse */); + kart->yVelocity += cos2(kart->angle) * (kart->power /* - kart->reverse */); - car->x += car->xVelocity; - car->y -= car->yVelocity; - car->xVelocity *= drag; - car->yVelocity *= drag; - car->angle += car->angularVelocity; - car->angle = dmod(car->angle, 3.1415926 * 2); - car->angularVelocity *= angularDrag; -} - -// Car localCar = { -// x: WIDTH / 2, -// y: HEIGHT / 2, -// xVelocity: 0, -// yVelocity: 0, -// power: 0, -// reverse: 0, -// angle: 0, -// angularVelocity: 0, -// isThrottling: false, -// isReversing: false, -// isShooting: false, -// isTurningLeft: false, -// isTurningRight: false, -// }; - -void updateWithControls(Car *car, ButtonState controls) { - bool changed; - - bool canTurn = car->power > 0.0025 || car->reverse; - - double throttle = controls.accel ? 1 : 0; - // double reverse = controls.down ? 1 : 0; - double reverse = 0; - - if (car->isThrottling != throttle || car->isReversing != reverse) { - changed = true; - car->isThrottling = throttle; - car->isReversing = reverse; - } - // Controls are reversed for now - bool turnLeft = canTurn && /*controls.left*/ controls.right; - bool turnRight = canTurn && /*controls.right*/ controls.left; - - if (car->isTurningLeft != turnLeft) { - changed = true; - car->isTurningLeft = turnLeft; - } - if (car->isTurningRight != turnRight) { - changed = true; - car->isTurningRight = turnRight; - } - - updateCar(car); + kart->x += kart->xVelocity; + kart->y -= kart->yVelocity; + kart->xVelocity *= drag; + kart->yVelocity *= drag; + kart->angle += kart->angularVelocity; + kart->angle = dmod(kart->angle, 3.1415926 * 2); + kart->angularVelocity *= angularDrag; } diff --git a/src/physics.h b/src/physics.h index 4858656..086993d 100644 --- a/src/physics.h +++ b/src/physics.h @@ -11,19 +11,16 @@ typedef struct { double xVelocity; double yVelocity; double power; - double reverse; + // double reverse; double angle; double angularVelocity; - bool isThrottling; - bool isReversing; - bool isShooting; - bool isTurningLeft; - bool isTurningRight; -} Car; +} Kart; extern double drag; extern double turnSpeed; +extern double maxPower; +extern double powerFactor; -void updateWithControls(Car *car, ButtonState controls); +void updateWithControls(Kart *car, ButtonState controls); #endif // _PHYSICS_H diff --git a/src/platform.h b/src/platform.h new file mode 100644 index 0000000..a0c9987 --- /dev/null +++ b/src/platform.h @@ -0,0 +1,5 @@ +#ifdef __EMSCRIPTEN__ +#include "./platforms/emscripten.h" +#else +#include "./platforms/gint.h" +#endif // __EMSCRIPTEN__ diff --git a/src/platforms/emscripten.c b/src/platforms/emscripten.c new file mode 100644 index 0000000..ebebf8c --- /dev/null +++ b/src/platforms/emscripten.c @@ -0,0 +1,120 @@ +#include + +#include "./emscripten.h" +#include "gint.h" + +color_t VRAM[LCD_HEIGHT_PX * LCD_WIDTH_PX]; + +EM_JS(void, logInit, (), { + console.log("platformInit"); +}); + + + + + + +#include +#include + +// Listen to EMSCRIPTEN_EVENT_KEYDOWN and EMSCRIPTEN_EVENT_KEYUP +// and print the key code to the console. + +unsigned char keysPressed[256] = {0}; + +int setKeyState(unsigned char key, unsigned char state) { + /* switch (key) { + case 37: // left arrow + keysPressed[38] = state; + break; + case 39: // right arrow + keysPressed[27] = state; + break; + case 88: // x + keysPressed[78] = state; + break; + case 90: // z + keysPressed[77] = state; + break; + case 68: // d + keysPressed[31] = state; + break; + } */ + keysPressed[key] = state; + return 0; +} + +int keyDownEvent(int eventType, const EmscriptenKeyboardEvent *keyEvent, void *userData) { + // printf("keyDownEvent: %d\n", (int) keyEvent->keyCode); + setKeyState(keyEvent->keyCode, 1); + return 0; +} + +int keyUpEvent(int eventType, const EmscriptenKeyboardEvent *keyEvent, void *userData) { + // printf("keyUpEvent: %d\n", (int) keyEvent->keyCode); + setKeyState(keyEvent->keyCode, 0); + return 0; +} + +int keydown(int basic_keycode) { + return keysPressed[basic_keycode]; +} + +void setupKeyboard() { + emscripten_set_keydown_callback("html", 0, 0, keyDownEvent); + emscripten_set_keyup_callback("html", 0, 0, keyUpEvent); +} + + + + + + +void platformInit() { + logInit(); + setupKeyboard(); + emscripten_set_canvas_size(LCD_WIDTH_PX, LCD_HEIGHT_PX); + EM_ASM_({ + window.canvasContext = Module['canvas'].getContext('2d'); + window.canvasImageData = canvasContext.getImageData(0, 0, 396, 224); + }); +} + +void runMainLoop(void (*loop)(), int fps) { + emscripten_set_main_loop(loop, fps, 1); +} + +void updateKeys() {} + + +void Copy_ToCanvas(uint32_t* ptr) { /*, int w, int h) {*/ + EM_ASM_({ + let data = Module.HEAPU8.slice($0, $0 + 396 * 224 * 4); + canvasImageData.data.set(data); + canvasContext.putImageData(canvasImageData, 0, 0); + }, ptr); +} + +void displayUpdate(int minY, int maxY) { + static unsigned int screencopy[LCD_WIDTH_PX * LCD_HEIGHT_PX]; + for (int i = (minY * LCD_WIDTH_PX); i < (LCD_WIDTH_PX * maxY); i++) { + int c = VRAM[i]; + // https://gist.github.com/companje/11deb82e807f2cf927b3a0da1646e795#file-rgb565-pde-L8 + unsigned char r = (unsigned char)(((c & 0xF800) >> 11) << 3); + unsigned char g = (unsigned char)(((c & 0x7E0) >> 5) << 2); + unsigned char b = (unsigned char)(((c & 0x1F)) << 3); + unsigned int argb = 0xff000000 | ((int)b << 16) | ((int)g << 8) | (int)r; + screencopy[i] = argb; + } + Copy_ToCanvas(screencopy); +} + +void drawText(int x, int y, const char *text) {} + +EM_JS(int, getTimeMS, (), { + return Date.now() - 1657104690407; +}); + +int check_key(int key) { + return keysPressed[key]; +} diff --git a/src/platforms/emscripten.h b/src/platforms/emscripten.h new file mode 100644 index 0000000..8902336 --- /dev/null +++ b/src/platforms/emscripten.h @@ -0,0 +1,31 @@ +#ifndef _PLATFORM_H +#define _PLATFORM_H + +#define LCD_WIDTH_PX 396 +#define LCD_HEIGHT_PX 224 + +// #define VRAM gint_vram +typedef unsigned short color_t; +extern color_t VRAM[LCD_HEIGHT_PX * LCD_WIDTH_PX]; + +#define BUTTON_UP 38 +#define BUTTON_DOWN 40 +#define BUTTON_LEFT 37 +#define BUTTON_RIGHT 39 +#define BUTTON_ACCEL 88 +#define BUTTON_HOP_1 90 +#define BUTTON_HOP_2 90 +#define BUTTON_DEBUG 13 +#define BUTTON_SAVE 113 +#define BUTTON_LOAD 119 +#define BUTTON_DEBUG_BOOST 66 + +void platformInit(void); +void runMainLoop(void (*loop)(), int fps); +void updateKeys(void); +void displayUpdate(int minY, int maxY); +void drawText(int x, int y, const char *text); +int getTimeMS(void); +int check_key(int key); + +#endif // _PLATFORM_H diff --git a/src/platforms/gint.c b/src/platforms/gint.c new file mode 100644 index 0000000..1ce69f5 --- /dev/null +++ b/src/platforms/gint.c @@ -0,0 +1,68 @@ +#include "./gint.h" + +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "../main.h" + +void platformInit() { + // clock_set_speed(CLOCK_SPEED_F5); +} + +static int callback_tick(volatile int *newFrameNeeded) { + *newFrameNeeded = 1; + return TIMER_CONTINUE; +} + +void runMainLoop(void (*loop)(), int fps) { + static volatile int newFrameNeeded = false; + + int t = timer_configure(TIMER_ANY, 1000000 / fps, GINT_CALL(callback_tick, &newFrameNeeded)); + + if (t >= 0) timer_start(t); + + while (1) { + while (!newFrameNeeded) sleep(); + newFrameNeeded = 0; + loop(); + } +} + +void updateKeys() { + clearevents(); + if (keydown(KEY_MENU)) { + gint_osmenu(); + fillSky(0, LCD_HEIGHT_PX); + } +} + +// Align to a multiple of 4, rounding down. +#define alignTo4Down(n) ((n) & ~3) +// Align to a multiple of 4, rounding up. +#define alignTo4Up(n) (((n) + 3) & ~3) + +void displayUpdate(int minY, int maxY) { + minY = alignTo4Down(minY); + r61524_display(gint_vram, minY, alignTo4Up(maxY - minY), R61524_DMA); +} + +void drawText(int x, int y, const char *text) { + dtext_opt(x, y, C_BLACK, C_WHITE, DTEXT_LEFT, DTEXT_TOP, text, -1); + displayUpdate(y, y + 12); +} + +int getTimeMS(void) { + return rtc_ticks() * 1000 / 128; +} + +int check_key(int key) { + if (key == -1) return 0; + return keydown(key); +} diff --git a/src/platforms/gint.h b/src/platforms/gint.h new file mode 100644 index 0000000..3853450 --- /dev/null +++ b/src/platforms/gint.h @@ -0,0 +1,32 @@ +#ifndef _PLATFORM_H +#define _PLATFORM_H + +#include +#include + +#define LCD_WIDTH_PX /*384*/ 396 +#define LCD_HEIGHT_PX /*216*/ 224 + +#define VRAM gint_vram + +#define BUTTON_UP KEY_UP +#define BUTTON_DOWN KEY_DOWN +#define BUTTON_LEFT KEY_LEFT +#define BUTTON_RIGHT KEY_RIGHT +#define BUTTON_ACCEL KEY_SHIFT +#define BUTTON_HOP_1 KEY_ALPHA +#define BUTTON_HOP_2 KEY_7 +#define BUTTON_DEBUG KEY_EXE +#define BUTTON_SAVE KEY_F1 +#define BUTTON_LOAD KEY_F2 +#define BUTTON_DEBUG_BOOST -1 + +void platformInit(void); +void runMainLoop(void (*loop)(), int fps); +void updateKeys(void); +void displayUpdate(int minY, int maxY); +void drawText(int x, int y, const char *text); +int getTimeMS(void); +int check_key(int key); + +#endif // _PLATFORM_H diff --git a/src/sprites.c b/src/sprites.c index 7fdddf3..b0b6b2f 100644 --- a/src/sprites.c +++ b/src/sprites.c @@ -1,7 +1,6 @@ #include "./sprites.h" -#include - +#include "./platform.h" #include "./main.h" // From https://www.cemetech.net/forum/viewtopic.php?t=6114&postdays=0&postorder=asc&start=100 @@ -24,18 +23,18 @@ void CopySpriteMasked(const void* datar, int x, int y, int width, int height, in void CopySpriteMaskedAlpha(const void*datar, int x, int y, int width, int height, color_t maskcolor, int alpha) { color_t*data = (color_t*) datar; - color_t* VRAM = (color_t*)GetVRAMAddress(); - VRAM += LCD_WIDTH_PX*y + x; + color_t* VRAM2 = (color_t*) VRAM; + VRAM2 += LCD_WIDTH_PX*y + x; alpha %= 32; for(int j=y; j> 5) & 0xf81f) | - (color_t)((((int)(*data & 0x07e0) * alpha + (int)(*VRAM & 0x07e0) * (32-alpha) + 0x0400) >> 6) & 0x07e0); - VRAM++; data++; - } else { VRAM++; data++; } + *(VRAM2) = (color_t)((((int)(*data & 0xf81f) * alpha + (int)(*VRAM2 & 0xf81f) * (32-alpha) + 0x8010) >> 5) & 0xf81f) | + (color_t)((((int)(*data & 0x07e0) * alpha + (int)(*VRAM2 & 0x07e0) * (32-alpha) + 0x0400) >> 6) & 0x07e0); + VRAM2++; data++; + } else { VRAM2++; data++; } } - VRAM += LCD_WIDTH_PX-width; + VRAM2 += LCD_WIDTH_PX-width; } } @@ -60,8 +59,38 @@ void CopySpriteMaskedFlipped(const void* datar, int x, int y, int width, int hei } } +// void CopySpritePartial(const void* datar, int x, int y, int width, int height, color_t maskcolor, int maxX, int maxY) { +// color_t* data = (color_t*)datar; +// color_t* VRAM2 = (color_t*) VRAM; +// VRAM2 += LCD_WIDTH_PX * y + x; +// for (int j = y; j < y + maxY; j++) { +// for (int i = x; i < x + maxX; i++) { +// *(VRAM2++) = *(data++); +// } +// data += width - maxX; +// VRAM2 += LCD_WIDTH_PX - maxX; +// } +// } + +void CopySpritePartial(const void* datar, int x, int y, int width, int height, int minX, int minY, int maxX, int maxY) { + color_t* data = (color_t*)datar; + color_t* VRAM2 = (color_t*) VRAM; + VRAM2 += LCD_WIDTH_PX * (y + minY) + x; + data += width * minY; + for (int j = y + minY; j < y + maxY; j++) { + data += minX; + VRAM2 += minX; + for (int i = x + minX; i < x + maxX; i++) { + *(VRAM2++) = *(data++); + } + data += width - maxX; + VRAM2 += LCD_WIDTH_PX - maxX; + } +} + + // Copy a sprite that loops around with an X offset -void CopySpriteLoopX(const void* datar, int x, int y, int width, int height, int xOffset, int drawWidth, int maskcolor) { +/* void CopySpriteLoopX(const void* datar, int x, int y, int width, int height, int xOffset, int drawWidth, int maskcolor) { color_t* data = (color_t*)datar; // color_t* VRAM2 = (color_t*)VRAM; // Loop over all the y positions @@ -76,8 +105,21 @@ void CopySpriteLoopX(const void* datar, int x, int y, int width, int height, int } } } -} +} */ +// New version that uses CopySpritePartial which is faster +void CopySpriteLoopX(const void* datar, int x, int y, int width, int height, int xOffset, int drawWidth, int maskcolor) { + xOffset -= 384; + int copies = drawWidth / width; + int remainder = drawWidth % width; + for (int i = 0; i < copies; i++) { + CopySpritePartial(datar, x + i * width - xOffset, y, width, height, xOffset, 0, width, height); + } + // Copy the remainder + if (remainder > 0) { + CopySpritePartial(datar, x + (copies * width) - xOffset, y, width, height, xOffset, 0, remainder, height); + } +} void draw(const unsigned short* data, int x, int y) { // The height and width of the sprite are the first two elements in the data array diff --git a/src/state.c b/src/state.c new file mode 100644 index 0000000..d9f6cc3 --- /dev/null +++ b/src/state.c @@ -0,0 +1,43 @@ +#include "./state.h" + +/* +typedef struct { + double x; + double y; + double xVelocity; + double yVelocity; + double power; + double angle; + double angularVelocity; +} Kart; + +typedef struct { + Kart player; + + // TODO: Put these in Kart + int kartSteerAnim; + int hopStage; + bool drifting; + int driftDir; + + int totalFrameCount; +} State; +*/ + +State state; + +void initState() { + state.player.x = 3565.0 / 12; + state.player.y = 2600.0 / 12; + state.player.xVelocity = 0; + state.player.yVelocity = 0; + state.player.power = 0; + state.player.angle = 0; + state.player.angularVelocity = 0; + state.hopStage = 0; + state.drifting = false; + state.driftDir = 0; + state.driftCharge = 0; + state.boostTime = -1; + state.totalFrameCount = 0; +} diff --git a/src/state.h b/src/state.h new file mode 100644 index 0000000..63d18d2 --- /dev/null +++ b/src/state.h @@ -0,0 +1,24 @@ +#ifndef _STATE_H +#define _STATE_H + +#include "./physics.h" + +// Contains important state that needs to be restored when the program is restarted. +typedef struct { + Kart player; + + // TODO: Put these in Kart + int kartSteerAnim; + int hopStage; + bool drifting; + int driftDir; + int driftCharge; + int boostTime; + + int totalFrameCount; +} State; + +extern State state; +void initState(); + +#endif // _STATE_H diff --git a/src/test.c b/src/test.c new file mode 100644 index 0000000..ba50b3a --- /dev/null +++ b/src/test.c @@ -0,0 +1,7 @@ +// Calculate the total time in mm:ss:xx format +int minutes = state.totalFrameCount / 60 / 60; +int seconds = (state.totalFrameCount / 60) % 60; +int milliseconds = ((state.totalFrameCount % 60) * 16667) / 1000; +if (milliseconds >= 1000) { + milliseconds = 999 +} \ No newline at end of file diff --git a/unselected.png b/unselected.png deleted file mode 100644 index b10d02d2320e7697ce6d88b6ab6662c8e664b40d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2908 zcmbuB`8U)L7so&L!IXU&DU5xIv6W)2)xS+Y&`?VH_*Ffp=A z_K=~JuPE7-eR-VcUwF>B@AvDRd(QpwzV9Vim>FDR5nurT;F6Ic-0Fgk7t#UIUO0bF z{3ZafiWsTk%+{se|??g({wfRHg7}L4!#bN>5!w37uJ$L*_{5K zse3rMuuXwH7+QaP{u?+GS_d2Vjucw2UEr+aEPa0~zk*8~Y(Rx1qM&1CEAk%6+S+X z^<0o?bh+YO4UMlx9GMNtVdQABo*n>2qY2p(;YO#tdIBA^EXqk7-;{leC83;aB680D zJe0h;ta|#?byPsGXYALJSl6wOYg$-fcz>GT`|Yp?3V4$Dt8H)ZsrtOaY*JaJQXPj# z9w(1ZPBwRG?fc#j8v&>D1l#2q!>bIxb_Q_EGoHb&>e0KmyswB z5!_yeXczqRIa(ANAC2`30Mo$x_`MLQB=LlEFf1ZD0!*V#(Rhcw319?5w*9%(@np$>y5Q5wl$`sSBN8Lx797hzIqKnmmb0|P;Y1XyK2gX`z z_vBw}!-tPwJ!SAR5>-l$%E2djUokq#xMt#^3@@F=<7Wj^Y6WcGxNcQB;ip$Yb^|t3 z8R>}eD+3(`$_Pn)9>)4GZ{W}Ar{?F1{Qc4jSdb}xfQnB{b^X-p2II2D2^TPePl^unp)-qSK+J+GIMCdCCZ`3m(zUJDI!Xg5V@JDGy`C!q183>fX=g{< z0M8shjgT<4H`BB(eUBa_6|uvTuhkFOv&j;sa3s*JnGvl(i=KUB_tfR8SOsHuNTFKA z)fBU(!Z5Ugynu(`W#sucT|7I6Pw^)(reYc}FM3s59hlBtM`8UMeyL-zvbjnMl;ehr zG)Qi1dc8{2z0RIm5FDEi=miQ%9cJh(n%~8BCA>oP_;>+-*qk@0o5X*|7dnKHXgq=! zO-Py`9pboUv74J(2i@)D&}nBUA2FYgaiDGVlM^+9ixJbnar+DL?jPog;sqF4XwPms zHwI3>Im~upw^j{7-e6NM3ikGx2DgA}QaZj(-66ZhIuw^0)B{|!y>EPK=G6fKLC2rj zU2}tSX;W=#YKlpfS3+Z@f76LbdZhKp_?Fg=ELM+Iu20kcJeHPMN~Y17w3xJw`~<)K z3^SD`QX_KNn^`r%K%~>w3ksbGDS6RP<$zn4*dEBEi2tndWs?|V(W4e64`>Y&c-wGj zWgipZD4u`^b}x1%pRn-mi?f!Odl2%#!@wY_98(Kl-m$|T7oqz8?sg{<=>QZaTxZ|U zO4oi|XQjT(;NeRf)t9rcHyShCwryCl%DM^lO(|etdIh^ zWY?qX2(I5ZEOldQRM$lx3UH0GjKt2=9eJ{(^7#q)%f|?>sLob)UQf4nJBTQf_FS3L zM(tH!8>@Wnw{bg6oB5m|2W%epnl3aqV@aM4jbH3LmAbJpFp5cz1Y?UQB4*HDDK04| z8WQK*^6cNA#Z-6?d4yI?(2Xd13tcV29fpgewZnXN)tCc|uiBbQSk=3C85gTo=7NH*^!px%XG`3FmuMNn>@_^KTLadryZ={) zQ(C^tIy3On@`tWp8A8$m?jl}FR7#Kw}#vhKuyI_=uN{R zb>@t{zvw_B^w6~k>c&11nV5L>^2XjNJ1w1rX32#9YIoYXDwH$1E!JjVdg0hQ2RDf( zyc=6u(l8lX3CzrfxOfPS&ucxRHhVgVDtx918ofBu*+=ox`NYX=N=!xt{n6_ml|I+I ztrLV~?fu?o1ez?fFTH9mPZUm5)RP|IMEV^W`j}9Ie+oIC3*Q>x7J1GOg=8?b3a9b6 z1@#+a(n0?6t{kcLX9WoNeNQ1sXT|$gE1eyF#hHwc$Pwr1_y#pUc1W>AJC91+r%CS{ z6lN1i&B4lQK|1ydtILKyhFK~3%6#-W5D;0&w4pyu+Q+N!{w$Uc=akiuATg9*u50<3 z;Fu;Z_Mt}?sOV=9*eC6K87RqDQaKzmRjT8uq1FWEeN)t;rGvw3Y2X!WnD!sGkzN0;{eX09o@ZHL{sHc4z!^@D$DJzx

~Qn?~3YQpkTSXBK`Z&e*l zO|FMF<>$EAaq_{Ut=@-vbB-JIG4p~Cp@({Z&Oy+3FX}lH2|F?G^ZCKmu+n)FQ&!81 z$U0KWVMDM_LQuZck(l~WzHPQqc^b(-ls`veFLh|h$Og-buHwVUK3T8yw9Im*G-17XVqcpx9lD*>*BU!&qq;nton zPPm(^K+2bNPYHMt#%u%90_^}2bbEk=B5+}{DWL%+2&4px12I52kWiNT1$lmP;Q2tp z-M++yM$?)`i@C!2SQH>7c#2v0S_1u;-AcDd^eYY;1P;-CoEFrLLw% fXQ|6+54cJj4{bQ$_5@0s{f^Q_J2yH6C!qWnibgWC literal 0 HcmV?d00001 diff --git a/build-em/CMakeFiles/mariokart.dir/src/buttons.c.o.d b/build-em/CMakeFiles/mariokart.dir/src/buttons.c.o.d new file mode 100644 index 0000000..a4434d3 --- /dev/null +++ b/build-em/CMakeFiles/mariokart.dir/src/buttons.c.o.d @@ -0,0 +1,6 @@ +CMakeFiles/mariokart.dir/src/buttons.c.o: \ + /home/heath/mk-gint/src/buttons.c /home/heath/mk-gint/src/./buttons.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdbool.h \ + /home/heath/mk-gint/src/./platform.h \ + /home/heath/mk-gint/src/./platforms/emscripten.h \ + /home/heath/mk-gint/src/./main.h diff --git a/build-em/CMakeFiles/mariokart.dir/src/debugHud.c.o b/build-em/CMakeFiles/mariokart.dir/src/debugHud.c.o new file mode 100644 index 0000000000000000000000000000000000000000..5b21874ce836bda4f74c0a1681bf92a09fcfbc7b GIT binary patch literal 4200 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 literal 0 HcmV?d00001 diff --git a/build-em/CMakeFiles/mariokart.dir/src/debugHud.c.o.d b/build-em/CMakeFiles/mariokart.dir/src/debugHud.c.o.d new file mode 100644 index 0000000..5956b4e --- /dev/null +++ b/build-em/CMakeFiles/mariokart.dir/src/debugHud.c.o.d @@ -0,0 +1,18 @@ +CMakeFiles/mariokart.dir/src/debugHud.c.o: \ + /home/heath/mk-gint/src/debugHud.c \ + /home/heath/mk-gint/src/./debugHud.h \ + /home/heath/.emscripten_cache/sysroot/include/stdio.h \ + /home/heath/.emscripten_cache/sysroot/include/wasi/api.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/stddef.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/__stddef_max_align_t.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdint.h \ + /home/heath/.emscripten_cache/sysroot/include/stdint.h \ + /home/heath/.emscripten_cache/sysroot/include/bits/alltypes.h \ + /home/heath/.emscripten_cache/sysroot/include/bits/stdint.h \ + /home/heath/.emscripten_cache/sysroot/include/features.h \ + /home/heath/mk-gint/src/./platform.h \ + /home/heath/mk-gint/src/./platforms/emscripten.h \ + /home/heath/mk-gint/src/./main.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdbool.h \ + /home/heath/mk-gint/src/./buttons.h /home/heath/mk-gint/src/./state.h \ + /home/heath/mk-gint/src/./physics.h diff --git a/build-em/CMakeFiles/mariokart.dir/src/images.c.o b/build-em/CMakeFiles/mariokart.dir/src/images.c.o new file mode 100644 index 0000000000000000000000000000000000000000..523130c51c353945028c684eb7a05234c42f8da6 GIT binary patch literal 612624 zcmd3v30ze5`u`_Srsgn%iiTb7H+Hq8vV_j-Lje&=wO=RD{6 zE@$R>pUMw-ep{?^mp2&UF#7V|GHlIpH{6Gw{?2#$J*f#BiF7)>$`iFY8s@U9in=14h z{oGdm?UQ?a-75B_v6(&p@tkVdFHXHb8=Seg+dpp1et4Kl{qVsKsSm+yRi`f(w0(X4 zq}RQd8~cCSW^PQIx$|CMFyr<9ypbkCw9${|8y?N!$p zDm_-H&I+YH-f0`=uw8|iZi^NAg(}}qI>&zYW0zFyLAPm{*6@1bU*Ga9ZxyOi>99go z^^j|X;m5~kJ(TuYtM;Xt?K8jY9J6<6ysE6n8*l!*-3}F+fOM#yQEuCFAF~`P^;oO+ zr?0lpyxb+`;v+Luz5ZkR=YYjR?+dNF{P+28`b&S?qSBnhbqwp;Oa1UH)uSra!#JOA zU~2bc2X!Y*?e!0-QptkdZA^zAYCW@eo6rnR@3(h(r~a0r&+S(FP}(=bqvw}vGP^wy z>h<~@RnoQ8R^Fcqy}xMVbU3%WzU#nDo#rRi{_2O8%%0aK^tiV72ZCSfZ;K2MbwB%1 z^6Q@r8v1zK-xQAcpy#~M*XOIUdgt!)IV$u{X!k_vM^EV61z$a?xd9_z>6P!Wc!9-8 z)f*12mi+D0hgDzdRjSWNwNkl1v8G$s4#CUcZuivR_dNWJ4p9X;{}TOH_@pHp z9x}JP{q)rjO^aGRNM%T&7G;m3@HG#3*yh{)@sI##UPcD!Mp=sUNO8SmNPy}=JkSiL z4((HG@Q{jMZE9d`YH)341Qk^9(cmZkRqs)&YKFUZzczOqE;$n}W&Z3P8Q>Zl;5vp% z@8|%0gp-xNbsYZZxVIrwy~YOU69V+(0=(kMa$AFk2mBcZXI~exuNw3ZOmyZsNf@3;!oHB zo9!>w2B8$ukj;<7k9iNx|DL-VO9SLXFj`+EH9#6Tq_KlW5dKlQMp{|V$YS@7+A=6( z@a2OtABfpUy6@6T8n0O~G_V2R7?Fl}vulu0NGs45bGdf`^7_7r+)TV(O^9_vbsACNV7k9QnN2}4C&s$nx9-{31 zc;AI3`Y~S6r}474NGlh4rMww-Q5GB%{h_^jzsJqSTX&3GZ*b>`6FhljS9o5W9aXV8 zlFd@NJ*$hZF0K(CH&eOi4!Nl(zHjar*P4x^%|id%LiYIvjjv-^Jr}6hMm&yNg)pGj z_=*{)5Z=4f%*GGhV9xx(Y}jr#MVbwP)%rfS&;w9W^a;xTp~*USWJkbps!ea-Qq3_N z{!6FOuQxaIgV>ut2CVrdV0lGAYFU7O+CazQ{)#ftF$6_1iEX%!&1mD{R!0b35U}jW zfaMqH6sR=w1Md&j+VUFh*&3~(Mtl6Kc6XR<2@KbYWtDbFof5c8`fIrDjzLk{(ZA7Q zad4ahCu-iNy7BlyA-dMMnu_pPt?^i~kX=-NDJT-^Ee&jMTy>n{oF6&5)`$}|Z##XX z`!AV&D^31?m_p1by0R)ma22BT0ZZo8DnsjQ{Fo;H8k{1v`!CHL>aEN$9*52Bdo9zm zCbd_kuI!Q_xI*u7Mc?N>E};rL8sdJ`U#Y;Ma6lXu2e*gW>>IPvY>ix^Ts3>5gptqr z?bG=c>pgzddt9Qc5HAGRq9}a5M}^L#Oy^gi^2=5EJnz?6F7*pS%Ik~nhb+I>dW0U6TBc4f^-uhg#H>IY½K+Emmk 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 literal 0 HcmV?d00001 diff --git a/build-em/CMakeFiles/mariokart.dir/src/images.c.o.d b/build-em/CMakeFiles/mariokart.dir/src/images.c.o.d new file mode 100644 index 0000000..1752bf1 --- /dev/null +++ b/build-em/CMakeFiles/mariokart.dir/src/images.c.o.d @@ -0,0 +1,2 @@ +CMakeFiles/mariokart.dir/src/images.c.o: /home/heath/mk-gint/src/images.c \ + /home/heath/mk-gint/src/../data-headers/images.c diff --git a/build-em/CMakeFiles/mariokart.dir/src/main.c.o b/build-em/CMakeFiles/mariokart.dir/src/main.c.o new file mode 100644 index 0000000000000000000000000000000000000000..6a9ef974e920955ade898a7756c1f6f5118a23d7 GIT binary patch literal 19432 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 R)PqT>ljfk&MurWa{{?QWRuljL literal 0 HcmV?d00001 diff --git a/build-em/CMakeFiles/mariokart.dir/src/main.c.o.d b/build-em/CMakeFiles/mariokart.dir/src/main.c.o.d new file mode 100644 index 0000000..18c533e --- /dev/null +++ b/build-em/CMakeFiles/mariokart.dir/src/main.c.o.d @@ -0,0 +1,22 @@ +CMakeFiles/mariokart.dir/src/main.c.o: /home/heath/mk-gint/src/main.c \ + /home/heath/mk-gint/src/./main.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdbool.h \ + /home/heath/mk-gint/src/./platform.h \ + /home/heath/mk-gint/src/./platforms/emscripten.h \ + /home/heath/mk-gint/src/./state.h /home/heath/mk-gint/src/./physics.h \ + /home/heath/mk-gint/src/./buttons.h /home/heath/mk-gint/src/./3d.h \ + /home/heath/mk-gint/src/./tilemap.h \ + /home/heath/mk-gint/src/./sprites.h \ + /home/heath/mk-gint/src/./debugHud.h \ + /home/heath/mk-gint/src/./particles.h \ + /home/heath/mk-gint/src/../data-headers/images.h \ + /home/heath/mk-gint/src/platforms/gint.h \ + /home/heath/.emscripten_cache/sysroot/include/stdio.h \ + /home/heath/.emscripten_cache/sysroot/include/wasi/api.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/stddef.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/__stddef_max_align_t.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdint.h \ + /home/heath/.emscripten_cache/sysroot/include/stdint.h \ + /home/heath/.emscripten_cache/sysroot/include/bits/alltypes.h \ + /home/heath/.emscripten_cache/sysroot/include/bits/stdint.h \ + /home/heath/.emscripten_cache/sysroot/include/features.h diff --git a/build-em/CMakeFiles/mariokart.dir/src/maths.c.o b/build-em/CMakeFiles/mariokart.dir/src/maths.c.o new file mode 100644 index 0000000000000000000000000000000000000000..4e9201a713cbfc853aa41d37723fbaadb5366c31 GIT binary patch literal 2932 zcma(TZB!Fi_JxE@ieWM+Dk+mV1E^7}8AAC;1E-LnjVo?rMVDHv2_cv$gdqtKknIKn z9o&s=^l&OYwQe}JJ=;&Qb*-y*`AD=tQx~;XRw)ZBC@LZrP}UFFH`tGJ_Se2M_ulvJ zym#Nd?|!_e*0lB|MgkBD0LT+kaqD0Hd%?R8kG>e)5tqqPgaT3sfI9?$IUyu~1T27n zRLAbk=-{p8V+!RyPOWfps6Z^`{VC6dtqxJ|o1?D96p<-{sC8iqb-k7jkg=I_84s4R zFC@Q1a3qq@tf?nDISO@c)NOT^{Z5FaW-wAI{pK?Ij$=jo{zuwaC%T>w`CuptV71W2QGF;g?Jaj4K% z5l8{kzzf2Lx$XEMiC=EQF9T^GDe0}2c4bIGxf3auAucoHpqV5+V@qLZJ(JYT*rJe1 zCsJW{@6sYRAL0Q0fao2NTy{yJkbaKze4FHKQ}|^PALd9vrI)FMLK=}u0aKF0B)O0Z zCsHY6N_#4-Rd+U3%+4*@bQP z|4dy(FPyVqaxy$&yNiuA)*K3GK5Bvnv5w=hb^*R#TNlX%fCGSQmeC5dg_x{L27os- z1lS=@A%)Qpk>&L~wd92}Jk3XQWwjCDLGt*zD-;LpiOA-S;T00kgQmAB-lbH+WZ{0+{e5AB)!NQ!aITi7fp^@S=(_rITJ6{+bU6g(N?wuvm@7#5m zFOfytMnjlOs7_Pb`}E%}DkalizN6&OYv${KD~_Hv87gd)`RA_pKpr+R#NO$4AV69ltW_ zQSBccJo)kDXQL;@6aD8lu75Ert!gso(zxO9yI*~EFRRyGdgoeN-~HFd9-jWk(v}|{ z?U>kku{giw00e8UT<(AjD3=pZ+(LzCv=rUjiI2aW6!AQf7MrjbgTTjpeFf)NKJ&=D^>K#8oB z=;|0crb833fTWMadq_#UL0UlVR-JOIx;4t9+|*O<)LO18I2Ku^M|PQ!WHV!f*u~IZ zSPqaf8B#VC3dNSYm~Ak_qZnHwQ_)!c%;*?8+K*1Qq9YVHucHYcY{G-HxYvMpk$9k5 z(q-U(@6{+fG|I+VeB7VXph>Ccsv7)qxap%B)puM~vtRhNg`sm`32-~ih*J-%0ORm6 z;Hnx16CvjNCdi(Lg0m)5{v><9jO0(v<18!AN z7x$APdIlCaXXA#f39pDf0qG8DmjNFpC4Fs@*EmvEVNx&4*j0fVbD^h9O@%r3yZC>I`=AujlpTI(V`@-)v_ybFtx9G~r1;7ibVM(@-4CmfXowOG5u$rK)QX{3 zDHIOJ`}sHe(Lo(LMaBMm#DKR~OL_(tj*yaTq$EH}pa+M^MFqsWs#BV@<6LEfTN%tb z1-%cAt%Q1NnR1#De{&tZLx~1p$x0X9@QH>%1p&ZX7;`qMmeAA-#ZTE3S|YaEvv=>g zOdlr8PmNco-|&)$oJ0Yqi~OhhZYBWbMzg`T&2FhQWt%P5tn3$8TMc=Irj2x=#Q{f~ ztQLo{&|uw8l$mUHOR<%RPh3TNr+lkzBI!ZN$L*yboMvRde3hso+7SUomcis(WU zp^9m-Tse1^u7^b2@Hdsa1b?8L1 zs~V}0&1R94ff2yQP!4^-pK_F=de5EK;1Age6B6$ozd!OMg|nB~E3Yr{vU1pFAOOH2{hvKUQ*={vPH)pqhh#%M zH3u+JbhSa;AWRm7J?+!ES{)in;1B1h`OA2@t=atf{&00Hzef;H{eTJ8`VRPP)9Lj>GA6Sgi&wvd zVll?rz$qg0_4U^Ia7nV8- zXuHK)KpTtgPx5uU<^NC3a)Z4nL9w#by3<-*Ze3|AvKws{8YZdSTwG+5n@t9XSzfer W<#vnJA-CI%@*>EvuQIY*gZ}~nYY6NB literal 0 HcmV?d00001 diff --git a/build-em/CMakeFiles/mariokart.dir/src/maths.c.o.d b/build-em/CMakeFiles/mariokart.dir/src/maths.c.o.d new file mode 100644 index 0000000..4158332 --- /dev/null +++ b/build-em/CMakeFiles/mariokart.dir/src/maths.c.o.d @@ -0,0 +1,3 @@ +CMakeFiles/mariokart.dir/src/maths.c.o: /home/heath/mk-gint/src/maths.c \ + /home/heath/mk-gint/src/./maths.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdbool.h diff --git a/build-em/CMakeFiles/mariokart.dir/src/particles.c.o b/build-em/CMakeFiles/mariokart.dir/src/particles.c.o new file mode 100644 index 0000000000000000000000000000000000000000..0fbc3f5bea6bae51af85e39c9637d3219ff2a1ce GIT binary patch literal 5548 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 Am;e9( literal 0 HcmV?d00001 diff --git a/build-em/CMakeFiles/mariokart.dir/src/particles.c.o.d b/build-em/CMakeFiles/mariokart.dir/src/particles.c.o.d new file mode 100644 index 0000000..5986110 --- /dev/null +++ b/build-em/CMakeFiles/mariokart.dir/src/particles.c.o.d @@ -0,0 +1,6 @@ +CMakeFiles/mariokart.dir/src/particles.c.o: \ + /home/heath/mk-gint/src/particles.c \ + /home/heath/mk-gint/src/./particles.h \ + /home/heath/mk-gint/src/./sprites.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdbool.h \ + /home/heath/mk-gint/src/../data-headers/images.h diff --git a/build-em/CMakeFiles/mariokart.dir/src/physics.c.o b/build-em/CMakeFiles/mariokart.dir/src/physics.c.o new file mode 100644 index 0000000000000000000000000000000000000000..69b9026f8613dc1ccf4993723b03851b66712d72 GIT binary patch literal 5012 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 literal 0 HcmV?d00001 diff --git a/build-em/CMakeFiles/mariokart.dir/src/platforms/emscripten.c.o.d b/build-em/CMakeFiles/mariokart.dir/src/platforms/emscripten.c.o.d new file mode 100644 index 0000000..28b2048 --- /dev/null +++ b/build-em/CMakeFiles/mariokart.dir/src/platforms/emscripten.c.o.d @@ -0,0 +1,29 @@ +CMakeFiles/mariokart.dir/src/platforms/emscripten.c.o: \ + /home/heath/mk-gint/src/platforms/emscripten.c \ + /home/heath/.emscripten_cache/sysroot/include/emscripten.h \ + /home/heath/.emscripten_cache/sysroot/include/emscripten/emscripten.h \ + /home/heath/.emscripten_cache/sysroot/include/emscripten/em_asm.h \ + /home/heath/.emscripten_cache/sysroot/include/emscripten/em_macros.h \ + /home/heath/.emscripten_cache/sysroot/include/emscripten/em_types.h \ + /home/heath/.emscripten_cache/sysroot/include/emscripten/em_js.h \ + /home/heath/.emscripten_cache/sysroot/include/emscripten/wget.h \ + /home/heath/.emscripten_cache/sysroot/include/emscripten/version.h \ + /home/heath/mk-gint/src/platforms/./emscripten.h \ + /home/heath/mk-gint/src/platforms/gint.h \ + /home/heath/.emscripten_cache/sysroot/include/emscripten/html5.h \ + /home/heath/.emscripten_cache/sysroot/include/pthread.h \ + /home/heath/.emscripten_cache/sysroot/include/features.h \ + /home/heath/.emscripten_cache/sysroot/include/bits/alltypes.h \ + /home/heath/.emscripten_cache/sysroot/include/sched.h \ + /home/heath/.emscripten_cache/sysroot/include/compat/time.h \ + /home/heath/.emscripten_cache/sysroot/include/time.h \ + /home/heath/.emscripten_cache/sysroot/include/emscripten/eventloop.h \ + /home/heath/.emscripten_cache/sysroot/include/emscripten/console.h \ + /home/heath/.emscripten_cache/sysroot/include/emscripten/html5_webgl.h \ + /home/heath/.emscripten_cache/sysroot/include/stdio.h \ + /home/heath/.emscripten_cache/sysroot/include/wasi/api.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/stddef.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/__stddef_max_align_t.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdint.h \ + /home/heath/.emscripten_cache/sysroot/include/stdint.h \ + /home/heath/.emscripten_cache/sysroot/include/bits/stdint.h diff --git a/build-em/CMakeFiles/mariokart.dir/src/sprites.c.o b/build-em/CMakeFiles/mariokart.dir/src/sprites.c.o new file mode 100644 index 0000000000000000000000000000000000000000..68ebe88421a83ca9f45324f0367c4feb0ec098b1 GIT binary patch literal 5780 zcma)AdsG|OnZGlVW(F9f0gG5*Nf`l76dT(@*gOh2BZ)Y2LN@Xv369xD0z|;(AqxT+ zr#+(wNOnk8re2pc=~?0U?7G>U9um8$yX(zC5^)KpS?qXI$0a_(kA!5Mlq7VIyW4Yi zzdJ%(H~FV?bm!jt&7C{n@AtiCWVKCR+oDEDfe>n9O~sGxd8hTK|8wT?HPgj)gjsw~G~+((@oTbEb#6dSW(5#5i_n5ZVg;n!3U}{|g7PBtuH^K~x;q-ZW^h zj%%+X{WXJb-lw0j=u!Uw-EXADwotDpRPGFUD?=Vj`-ypf`H44+~_G4}`myzwzJZ$zcLEo4|9v9TBM(|3w1+9AP5EDAs7OIK_%1_b# z4RrrN=nxQN4E2qL4uEzdz@q!Fm@;q8QC~!9I4?!%9-an(UKn$ljVi<}{+W!io;M<@!u*RDA? z_xrv-4s8s5w)oVckH7a%A20v5aqAC%v+(uif2-+#vEPmi400gEVLOt z5R8U*?{=rIGLnRwjI7K4`M1|ZIUPa}8VLK6w9kIIf(Z6! z)0Q0wneYvgh;iC)DeFlj5G(qC7PfUiXn-J7!UB-OK}N3djywMVE3)7&8YE`@7?+<@ z9~sHG@8R=uTj5#qiTJ>@4q1slHLRuDBGb^i|w$+ZvYG(&VdOh?ZhCXNyc|7!>N7gqG^6;Vj*&OBV zh;qTC>N2TrEGd^9$}()^V$j81`c~87>T`kWIa}2kSwI*M0-I75&U2F7;OFGp0E0sTJxj7z&{&|Qn^en{xC!Uo-vi`qRD zsGLnyPuOaKkUzz1ZrZBDFiniSn+Zrm{h$wngT*`MYrMfJZ%-<3Ih5a+iei^6`kM=@ zuPo@UfdcmY>WM(@nZTN0qH@GmHJhk88>^a50LGeG`a(QsrbBthRCN8eOB?s;t}Lv+ZP0yU&`lY1V8KPh zy{-IDtIyeL&&sNf1*&En&Vls->>%iA5A}OO`4>J_{@$cofG`wPpG8%-&_N!dr@-gD zdOL3mv-ufbvz;&UjT}9Cu`bFPTWU(p)|VoN*TVes#Eju1>sNL6p#J7Im-m^T_CfdV zw)U?2-H$)i-%VRxuwRd_t+`Mg*ZT)(Fx7A|7TW{>>?)Gf#e6FV#p7E^L z-P2RV1kHY-q==E1`Ik2DVqUBmN)GH|{;pyO9o)qntr+5=`%%S^0NvkLBqH(|)>c?j z#=aMs<+w8Wui3zOX&L+O`B{@kTV@ld?M}bBsrmH&p7ujU|J=O3r?fe%`js{AQ*W%# zD=+`o@*i)0%Utmn(9a;Q*Fv9_=`}*U(1Q)0F|bhrJhN&p;r~Q?emr~8g2Ne1 znexMXHs5e6KXrh6t8QW^SAFVGE>DO)`k+yYzJU;U4)(nU&#Q^bGeq^tK<%*vxgP>q zJHMcv=e0Lo_`K-T$6eaFaqV=Q^BMWwp^j z4FqH)fpeIPPbIxo^6e!!JK~&Km-zvl5vo-4rg_2GYP!JjL;=IF721(}r!P2J5)heF znnIC~k+n>t=}{BAoBMb?LzXA>adAPx>6-Z2Tuzo3)UZcO9fT&)#O_AtCp2pLQR48z zus{a(P_Hq=+2JNm+(W)bk0%GYBg!0=e0U9+k=>dfE?Ttkg}reE0)G|=sNy+MBfSUh zr5;GW%|1EVnO}MMBeUqcENPm;u^q-~92j%m%<4Zy#RoG_nX)t0k*GS8I{}tL=*ODj z5gD1t{!I&Ynk90Rt9+9l+3uH#jSn%&!Xb=~wU-u(J_Vp_DNQm-&c6P3CYA-+FB4Q`*vmut%Tw*=IhF`^IFs|LBZ zYK50ng7d7QQnq=_&A$|-eMXr&@F4On42#)w&f_kD%nlQhz4ub_@Fkm}~)nr^XkNDK7LM&n0 zEMa>1JAQ2BF($SR{8&TivzTZMWAa7`vz!s@={>i%6^`HI3kKtE7%3!Pob#`1(^r^i zT?J|j{@iIpOpXPud_rdA}G2!y3VhC#aPBc7)af=HKD~o$MKiOMW|$Xa?E&h!mT}5Sswd zg^jW;hh4)3d30L7O+}7VwaipOGA8+O9rj_ZMMV;>ZzO>e1SZ}`O`%NCeeW<%Gj-s< zF9Gx#-~a_+Fk%78C86nUwv*oi%cR4_!+IE{xnN+N=Hie3d(}%16M6q=$vI~6k-5jL zgjEerU(0Y0rMMZ(UE$^zE8LisFR*gYw2(B4+uw{Cs1!-zScE<=D4cAM6O(14Q#|cU@pMwS z?%(2IOLC$`V1>pdO3LnUfCuy9q@qJyJ?Fb-rH>Gr@Z{RQsHUS(v}r{|kxV0eKE?El zYh$gP^NKi45@TykklS}JTBdgszj^{E^CX*2geO=B+eqLvSRn-V3=vO`v1AJnMtE#(6-r%vaJlXP=-Aj~H?N zs%0(@DHLR-1Cj;_39McL{$l5nHXpi&1Cs3;O>`|(Pgx-|&{!y1a7O7&Wt6FY2UN`o z9p<-@zJHmQ&)nsP(|_THE#Gm&i{OTJ`N^*&ud}bXVZ0QiL&1O7;((3d>>|nwI9bXU zDNKM3m>2;{iqqU2!`yr*_}^wd{6j#6bhvngd@x!iPvzGYUcwS37Da($4S~+2c)9OH ziWeax#f$6d6<(ek9s*t(c<~-Nyv+D|o)T6w-aU|yWg5tCHjjKjfc(XGy2QPC~ zX+GN6X8M?Gn<@!-;aDfnJ4TW`KuGG3y$rUySr_S+p!{MCVuSG83y7OtSuqC(-<+?@?gC0R~so#gz zN&OLImipJxPnz)c88j%(KSyS1o=J>K^L0dSGrmq`^+D}F0J`A3YKF%JiI?TZiF#3X zTw$MR6cs+I&D1T@Z_{DZVKL()oIa()4PPTqz$jOC>=ed?-xY?SnW5D~gKbd*G<@J5 z?{CLKIDQEY*PuCQm;)RK_()&JW4s<8_!{Os-Q)l0P%-3ikmW&3_i6b9AX^PB-KXUO z$a0{i`?MVXhk^gs;D5lCJ}q~`96vMNr{ygm!@8yWw7d&s_yaB7r{#kn!!)yBxUHkz zQ=8k>+qS85|AuGVyLvbEc$+u%Nceg-HUnmS F{2x6LvFQK+ literal 0 HcmV?d00001 diff --git a/build-em/CMakeFiles/mariokart.dir/src/sprites.c.o.d b/build-em/CMakeFiles/mariokart.dir/src/sprites.c.o.d new file mode 100644 index 0000000..276339d --- /dev/null +++ b/build-em/CMakeFiles/mariokart.dir/src/sprites.c.o.d @@ -0,0 +1,6 @@ +CMakeFiles/mariokart.dir/src/sprites.c.o: \ + /home/heath/mk-gint/src/sprites.c /home/heath/mk-gint/src/./sprites.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdbool.h \ + /home/heath/mk-gint/src/./platform.h \ + /home/heath/mk-gint/src/./platforms/emscripten.h \ + /home/heath/mk-gint/src/./main.h diff --git a/build-em/CMakeFiles/mariokart.dir/src/state.c.o b/build-em/CMakeFiles/mariokart.dir/src/state.c.o new file mode 100644 index 0000000000000000000000000000000000000000..18da9f5d4ea35f45ab3a7901be18460f81c2ee89 GIT binary patch literal 2780 zcma(TZBQG>bx#sHflsHy(ZtA{lsmwQY{%vhAVYu_>98%QbRvIrhNkXVLK2Z;5JHmq za@si|*(Xo2M^2emZJmzPxF1PBhNNzi>3CX%6h|hCOPowX9EO1!9Gu{kByQ_W(~oy@ zJ^kCAdmsDW?z{JP-`ia)Kef=PMW_TJ)JTihWAT)ciCSBes;NbOyzDx&>;t%=+{OYm72!n^YBFDKlB)wm^=p z?${`fQ0&1#Kl``FX5WBr5 zNwHf1=^i3ZoKHBc?!!!tdrWwaMTgIC{YmWdLlN(zdpkNh3gtqE#>U1Qc297huPHh^ ztnQONJ$q26Bcw=id#U8Kz~PenXnzGltw1a7Rd@ak4dY6tG^h#v3nhdvp;Z_*q7ny< zqFE4!Z1_-03?}d?{X#}RgE7}w{d`(Im!_|<^juoKmZmR73=0;+wME0#2)&Bw!H#NZ zSTv`=2tF)`;eZ(OMh8{+Xge+#meU3>awB4xcGB;p)r%IxLc}oRq*s^p%V~8kZ75{u z8L;LsT(vwfgH6eWlo&{eAtOHOjSdLnD7uoS=hO5utG|TJO{paJzl{3O9gM-gg=RBK zmr5u}Mb!!mdTKJVRVHYKdX=okCU1av_d(opp!bbArWqm^OG*5T$5rBpS8Ps1&A-5h zx^VFQctA88#lfUFkPyQHK5E2==D4zzS>>%14tPCk@J$vNVv5(FTzI7z@`JKj}i#I**4vPxy2|K1h#gw!o{`snAgj5g`h@h1@ zY%8`hs;Dgr+A&)%Wh`t#C{ZFqYLJ->Nv*EDGcjKJ;ND9L{)Zclv2rwBE{quyV_Q>W z+a|}hUz8EXoG?Zh3xZ6Y+KizWU=4o+bL&+Com--Nv{+l5Z;EBdtpYwWjE9l~#0{jm zMUl4!vYxOSrZalju^z6ZI4oLOkhkUewsCn|VR$?oz>ll&5t|qY;G+Tg;IJ5AL|vhr zTuYEkoW{>-uCJ5pcCwzz=@%f~SpBrq(8HZ-xfpGk<(n_aTQ5diWAc{5x^~ckANS(B zykZcrAf-&efe#w-!8;{jc1RG9sKkK^F_;ubl97i$UMD|ZB>y@^u5t42JY-XvE)?;+ zlb&JeTtq+PRKAnooAZ2gvWQ>FHcjwNae2!`wibT+#aPSR@|MXg@tRKzbcw-0H0;HP z9b&jb45vihm4lj(k>*o7xtt)cw`-Odat)$jjQaVEVcKH2%F^=@!~7z>yrlmSGxSvK zZ<^#EITvjy*lYe9h(jD2#)p&pJ8vg6(h3-!ELI6CRpGZWC?mSS>erphLnoq5g>1_t z-v$fv#dPa3-x7yzcKp>ch*TT`f1vV=crY0`e4QfKrpOgL`59N8xoR;iFKwDz(l3Am zHeJhPwCzH)GL~%`=bH=J)>ksk`7FfPTCiOhP~qU!04!jasC)ksx#rN^T7+!ZtZ8Hr+90}de7L_*_$z?lvhpYbcnv)2YQ%iS}yW! zugIGxqRoY_i?I6;>?rtY6Ndt#?)4AIzi^r*D2;Z_&6H*ZjW7s30y!5n*cd)e=t_eo z8&e$_KYRAgjud5dx7L}gXAG+{H(`0!dh}EM!UZYAU+C*eE&5rd&mI0Uy3LREY7iT#`7dSH?8Ne3_a zz$_1{ zY$i+lM5*k>PKxRo6B-N2St8oLBQ&7!cRVPZ1{5?2MyYeuj9&w4PslpG!t6Y?aD-D(cHRlkzm*vn2%Zdx@HJ?+YclNlnv2p3pZnbWBhTyMJ(!-z`iR0T0LiA6X`LU(hZ zjdpx2mk8Uew9^P>7=$(geO7VVj#WL6SW_%cvDTdG)aLd$!B%y|sXFTclB#mW zau=D7lkxJ6p9+-Ddf;)Y${pK=4mif)Vj@tPQn^8TfDC{==^i%0loz*;rstjl_6)SuimudnE$B1f5^WBjJblo0OWA3x4+L*>-9Lp-rByS WJDz~#tqlcT(jgZ1>~w)M(EbAiFND_s literal 0 HcmV?d00001 diff --git a/build-em/CMakeFiles/mariokart.dir/src/state.c.o.d b/build-em/CMakeFiles/mariokart.dir/src/state.c.o.d new file mode 100644 index 0000000..4fdcfa9 --- /dev/null +++ b/build-em/CMakeFiles/mariokart.dir/src/state.c.o.d @@ -0,0 +1,4 @@ +CMakeFiles/mariokart.dir/src/state.c.o: /home/heath/mk-gint/src/state.c \ + /home/heath/mk-gint/src/./state.h /home/heath/mk-gint/src/./physics.h \ + /opt/emscripten-llvm/lib/clang/15.0.0/include/stdbool.h \ + /home/heath/mk-gint/src/./buttons.h diff --git a/build-em/CMakeFiles/mariokart.dir/src/tilemap.c.o b/build-em/CMakeFiles/mariokart.dir/src/tilemap.c.o new file mode 100644 index 0000000000000000000000000000000000000000..d3e7b9f6fc011246d1f67938d6f20ce0410302b6 GIT binary patch literal 106912 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 + + + + + Mario Kart + + + +