diff --git a/.gitignore b/.gitignore index eaf63e1..0a3caee 100644 --- a/.gitignore +++ b/.gitignore @@ -45,9 +45,7 @@ generated/ overlay overlayhelper f256lib.h -/distro/llvm-mos -/distro/llvm-mos-f256.7z -/distro/llvm-mos-f256.tar.xz +/distro/f256dev.7z # These aren't for public use or aren't ready. build-foenix-ide.sh diff --git a/build-distro.sh b/build-distro.sh index 587b3f2..538345d 100755 --- a/build-distro.sh +++ b/build-distro.sh @@ -67,31 +67,38 @@ pushd distro fi mkdir -p .builddir pushd .builddir - mkdir -p llvm-mos/mos-platform/f256 - mkdir -p llvm-mos/bin + mkdir -p f256dev/llvm-mos/mos-platform/f256 + mkdir -p f256dev/llvm-mos/bin - cp -Rf ${INSTALL}/mos-platform/f256/* llvm-mos/mos-platform/f256/. - cp -f ${INSTALL}/bin/mos-f256.cfg llvm-mos/bin/. + pushd f256dev - cp -Rf ${ROOT}/tools . - cp -Rf ${ROOT}/examples . - cp -Rf ${ROOT}/f256lib . - cp -Rf ${ROOT}/include . - cp -f ${ROOT}/f256lib.h . - cp -f ${ROOT}/pgz-thunk.py . + cp -Rf ${INSTALL}/mos-platform/f256/* llvm-mos/mos-platform/f256/. + cp -f ${INSTALL}/bin/mos-f256.cfg llvm-mos/bin/. - cp -f ../README . - cp -f ../f256build.bat . - cp -f ../f256run.bat . - cp -f ../f256build.sh . - cp -f ../f256run.sh . + cp -Rf ${ROOT}/tools . + cp -Rf ${ROOT}/examples . + cp -Rf ${ROOT}/f256lib . + cp -Rf ${ROOT}/include . + cp -f ${ROOT}/f256lib.h . + cp -f ${ROOT}/pgz-thunk.py . - buildOverlayTool linux x86_64 $(pwd)/overlay.linux - buildOverlayTool macos aarch64 $(pwd)/overlay.macos - buildOverlayTool windows x86_64 $(pwd)/overlay.windows + cp -f ../../README . + cp -f ../../f256build.bat . + cp -f ../../f256run.bat . + cp -f ../../f256build.sh . + cp -f ../../f256run.sh . - tar cJf ../llvm-mos-f256.tar.xz . - 7z a ../llvm-mos-f256.7z . + buildOverlayTool linux x86_64 $(pwd)/overlay.linux + buildOverlayTool macos aarch64 $(pwd)/overlay.macos + buildOverlayTool windows x86_64 $(pwd)/overlay.windows + + popd + + if [[ -f ../f256dev.7z ]]; then + rm ../f256dev.7z + fi + + 7z a ../f256dev.7z . popd popd diff --git a/distro/README b/distro/README index 4c24ed8..e731eb0 100644 --- a/distro/README +++ b/distro/README @@ -76,7 +76,10 @@ USAGE ===== As shown above, f256build is used to build projects using the default linker -settings. If you do not have linker settings in your project already, the +settings. + + +***FIX*** If you do not have linker settings in your project already, the defaults will be added (in a file named f256.ld in your project directory). Unless you need to use embedded binary data in your project, the defaults are all you need. Embedded data examples are included. See SPRITES and TILEMAP in @@ -110,3 +113,15 @@ wiki: http://wiki.f256foenix.com/ As a last resort, you can email me, Scott Duensing, at scott@kangaroopunch.com and I'll probably ask you to join the Discord. :-) + + +HISTORY +======= + +* xx-MAY-2024 - Everything now installs into a single folder for safe updating. + Linker scripts not added to projects by default any longer. + +* 09-MAY-2024 - Updated MacOS and Linux installation script to also search for + 'pip3' as well as 'pip'. + +* 01-MAY-2024 - Initial release for Linux, MacOS, and Windows. diff --git a/distro/f256-install.bat b/distro/f256-install.bat index c7f437a..182a10e 100644 --- a/distro/f256-install.bat +++ b/distro/f256-install.bat @@ -3,25 +3,25 @@ goto top # -# Copyright (c) 2024 Scott Duensing, scott@kangaroopunch.com +# Copyright (c) 2024 Scott Duensing, scott@kangaroopunch.com # -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. # -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. # @@ -31,8 +31,8 @@ goto top set REMOTE1=https://github.com/llvm-mos/llvm-mos-sdk/releases/latest/download/llvm-mos-windows.7z set LOCAL1=llvm-mos-windows.7z -set REMOTE2=https://kangaroopunch.com/files/serve/shared/llvm-mos-f256.7z -set LOCAL2=llvm-mos-f256.7z +set REMOTE2=https://kangaroopunch.com/files/serve/shared/f256dev.7z +set LOCAL2=f256dev.7z set REMOTE3=https://aka.ms/vs/16/release/vc_redist.x64.exe set LOCAL3=vc_redist.x64.exe @@ -41,10 +41,7 @@ set REMOTE4=https://github.com/pweingar/FoenixMgr/archive/refs/heads/master.zip set LOCAL4=master.zip -if exist llvm-mos\ ( - echo You already have an llvm-mos directory. Exiting. - exit /B -) +if exist f256dev\ rd /s /q f256dev if exist "%ProgramFiles%\7-Zip\7z.exe" ( set UNPACK="%ProgramFiles%\7-Zip\7z.exe" @@ -89,36 +86,47 @@ if errorlevel 1 ( %LOCAL3% /install /passive -%UNPACK% x -y %LOCAL1% +md f256dev +pushd f256dev + %UNPACK% x -y ..\%LOCAL1% + %UNPACK% x -y ..\%LOCAL4% +popd + %UNPACK% x -y %LOCAL2% -%UNPACK% x -y %LOCAL4% del %LOCAL1% del %LOCAL2% del %LOCAL3% del %LOCAL4% -del overlay.linux -del overlay.macos -ren overlay.windows overlay.exe +pushd f256dev + del overlay.linux + del overlay.macos + ren overlay.windows overlay.exe -if exist *.sh del *.sh > NUL + if exist *.sh del *.sh > NUL -ren FoenixMgr-master FoenixMgr -pushd FoenixMgr - pip.exe install -r requirements.txt + ren FoenixMgr-master FoenixMgr + pushd FoenixMgr + pip.exe install -r requirements.txt + popd + + echo @"%%~dp0mos-clang++.exe" --config mos-f256.cfg %%* > llvm-mos\bin\mos-f256-clang++.bat + echo @"%%~dp0mos-clang-cpp.exe" --config mos-f256.cfg %%* > llvm-mos\bin\mos-f256-clang-cpp.bat + echo @"%%~dp0mos-clang.exe" --config mos-f256.cfg %%* > llvm-mos\bin\mos-f256-clang.bat popd -echo [DEFAULT] > foenixmgr.ini -echo port=COM3 >> foenixmgr.ini -echo labels=sample.lbl >> foenixmgr.ini -echo flash_address=380000 >> foenixmgr.ini -echo chunk_size=1024 >> foenixmgr.ini -echo cpu=65c02 >> foenixmgr.ini +echo @"%~dp0f256dev\f256build.bat" "%%~dp0" %%* > f256build.bat +echo @"%~dp0f256dev\f256run.bat" "%%~dp0" %%* > f256run.bat -echo @"%%~dp0mos-clang++.exe" --config mos-f256.cfg %%* > llvm-mos\bin\mos-f256-clang++.bat -echo @"%%~dp0mos-clang-cpp.exe" --config mos-f256.cfg %%* > llvm-mos\bin\mos-f256-clang-cpp.bat -echo @"%%~dp0mos-clang.exe" --config mos-f256.cfg %%* > llvm-mos\bin\mos-f256-clang.bat +if not exist foenixmgr.ini ( + echo [DEFAULT] > foenixmgr.ini + echo port=COM3 >> foenixmgr.ini + echo labels=sample.lbl >> foenixmgr.ini + echo flash_address=380000 >> foenixmgr.ini + echo chunk_size=1024 >> foenixmgr.ini + echo cpu=65c02 >> foenixmgr.ini +) echo. echo ----------------------------------------------------------------------------- diff --git a/distro/f256-install.sh b/distro/f256-install.sh index d1708cc..6bd98ea 100755 --- a/distro/f256-install.sh +++ b/distro/f256-install.sh @@ -1,25 +1,25 @@ #!/bin/bash # -# Copyright (c) 2024 Scott Duensing, scott@kangaroopunch.com +# Copyright (c) 2024 Scott Duensing, scott@kangaroopunch.com # -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. # -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. # # diff --git a/distro/f256build.bat b/distro/f256build.bat index d5a6744..2668dac 100644 --- a/distro/f256build.bat +++ b/distro/f256build.bat @@ -3,46 +3,50 @@ goto top # -# Copyright (c) 2024 Scott Duensing, scott@kangaroopunch.com +# Copyright (c) 2024 Scott Duensing, scott@kangaroopunch.com # -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. # -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. # :top -set ROOT=%cd% +setlocal EnableDelayedExpansion -if "%~1%" neq "" goto checkSrc +set ROOT=%~dp0 +if "%ROOT:~-1%" == "\" set "ROOT=%ROOT:~0,-1%" + +if "%~2" neq "" goto checkSrc echo. echo No project folder provided. exit /b :checkSrc -if exist "%1%\src\*.c" goto foundSrc +if exist "%~2\src\*.c" goto foundSrc echo. echo No src folder containing C files found. exit /b :foundSrc -set PROJECT=%ROOT%\%1% +set PROJECT=%~1%~2 set SOURCE=%PROJECT%\src set BUILD=%PROJECT%\.builddir + if "%PROJECT:~-1%" == "\" set "PROJECT=%PROJECT:~0,-1%" for %%f in ("%PROJECT%") do set "NAME=%%~nxf" pushd "%PROJECT%" @@ -50,10 +54,11 @@ pushd "%PROJECT%" mkdir .builddir cd .builddir "%ROOT%\overlay.exe" 5 "%BUILD%" "%SOURCE%" - if not exist "%PROJECT%\f256.ld" copy /y "%ROOT%\llvm-mos\mos-platform\f256\lib\link.ld" "%PROJECT%\f256.ld" > NUL + if exist "%PROJECT%\f256.ld" copy /y "%PROJECT%\f256.ld" f256.ld > NUL + if not exist f256.ld copy /y "%ROOT%\llvm-mos\mos-platform\f256\lib\link.ld" f256.ld > NUL set OLDPATH=%PATH% set PATH=%~dp0llvm-mos\bin;%PATH% - call mos-f256-clang.bat -T ..\f256.ld -Wl,-Map=%NAME%.map -o %NAME% -I"%ROOT%" -Os -Wall -lm *.c + call mos-f256-clang.bat -v *.c -o %NAME% -I"%ROOT%" -Tf256.ld -Wl,-Map=%NAME%.map -Os -Wall -lm if errorlevel 1 goto failed ren %NAME% %NAME%.pgz llvm-nm.exe %NAME%.elf > %NAME%.sym diff --git a/distro/f256build.sh b/distro/f256build.sh index 254bd67..999b7c8 100755 --- a/distro/f256build.sh +++ b/distro/f256build.sh @@ -1,25 +1,25 @@ #!/bin/bash # -# Copyright (c) 2024 Scott Duensing, scott@kangaroopunch.com +# Copyright (c) 2024 Scott Duensing, scott@kangaroopunch.com # -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. # -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. # # diff --git a/distro/f256run.bat b/distro/f256run.bat index e4fbcdf..6059d46 100644 --- a/distro/f256run.bat +++ b/distro/f256run.bat @@ -3,38 +3,41 @@ goto top # -# Copyright (c) 2024 Scott Duensing, scott@kangaroopunch.com +# Copyright (c) 2024 Scott Duensing, scott@kangaroopunch.com # -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. # -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. # :top -set ROOT=%cd% +setlocal EnableDelayedExpansion -if "%~1%" neq "" goto checkPgz +set ROOT=%~dp0 +if "%ROOT:~-1%" == "\" set "ROOT=%ROOT:~0,-1%" + +if "%~2%" neq "" goto checkPgz echo. echo No project folder provided. exit /b :checkPgz -set PROJECT=%ROOT%\%1% +set PROJECT=%~1%~2 if "%PROJECT:~-1%" == "\" set "PROJECT=%PROJECT:~0,-1%" for %%f in ("%PROJECT%") do set "NAME=%%~nxf" if exist "%PROJECT%\%NAME%.pgz" goto foundPgz diff --git a/distro/f256run.sh b/distro/f256run.sh index bb968da..ff34c19 100755 --- a/distro/f256run.sh +++ b/distro/f256run.sh @@ -1,25 +1,25 @@ #!/bin/bash # -# Copyright (c) 2024 Scott Duensing, scott@kangaroopunch.com +# Copyright (c) 2024 Scott Duensing, scott@kangaroopunch.com # -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. # -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. # #