commit 03eb8afc2a5ee69d6903aafc2ad399127afc86f8 Author: Zed A. Shaw Date: Sat May 16 11:15:49 2026 -0400 First commit. diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7999676 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +.*.sw* +.DS_Store +*.sqlite3 +*.sqlite3-wal +*.sqlite3-shm +debug +coverage/ +.coverage +builddir +subprojects diff --git a/.vimrc_proj b/.vimrc_proj new file mode 100644 index 0000000..2b745b4 --- /dev/null +++ b/.vimrc_proj @@ -0,0 +1 @@ +set makeprg=meson\ compile\ -C\ . diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..269ee6b --- /dev/null +++ b/LICENSE @@ -0,0 +1 @@ +Copyright (c) Zed. A. Shaw. All Rights Reserved. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..5616a65 --- /dev/null +++ b/Makefile @@ -0,0 +1,27 @@ +all: build + +reset: + powershell -executionpolicy bypass .\scripts\reset_build.ps1 + +build: + meson compile -j 4 -C builddir + +release_build: + meson --wipe builddir -Db_ndebug=true --buildtype release + meson compile -j 4 -C builddir + +debug_build: + meson setup --wipe builddir -Db_ndebug=true --buildtype debugoptimized + meson compile -j 4 -C builddir + +run: build + ./builddir/chip8.exe + +debug: build + gdb --nx -x .gdbinit --ex run --args builddir/runtests.exe + +debug_run: build + gdb --nx -x .gdbinit --batch --ex run --ex bt --ex q --args builddir/chip8.exe + +clean: + meson compile --clean -C builddir diff --git a/README.md b/README.md new file mode 100644 index 0000000..4bb2a10 --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +# chip-8 Interpreter + +Just a little fun project. I based the first version on this really great blog post https://austinmorlan.com/posts/chip8_emulator/ + +Other resources from trapexit at: + +https://github.com/trapexit/chip-8_documentation diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..13f9478 --- /dev/null +++ b/meson.build @@ -0,0 +1,92 @@ +project('chip8', 'cpp', + version: '0.1.0', + default_options: [ + 'cpp_std=c++23', + 'cpp_args=-D_GLIBCXX_DEBUG=1 -D_GLIBCXX_DEBUG_PEDANTIC=1', + ]) + +# use this for common options only for our executables +cpp_args=[ + '-Wno-unused-parameter', + '-Wno-unused-function', + '-Wno-unused-variable', + '-Wno-unused-but-set-variable', + '-Wno-deprecated-declarations', +] +link_args=[] +# these are passed as override_defaults +exe_defaults = [ 'warning_level=2' ] + +cc = meson.get_compiler('cpp') +dependencies = [] + +if build_machine.system() == 'windows' + add_global_link_arguments( + '-static-libgcc', + '-static-libstdc++', + '-static', + language: 'cpp', + ) + + sfml_main = dependency('sfml_main') + opengl32 = cc.find_library('opengl32', required: true) + winmm = cc.find_library('winmm', required: true) + gdi32 = cc.find_library('gdi32', required: true) + + dependencies += [ + opengl32, winmm, gdi32, sfml_main + ] + exe_defaults += ['werror=true'] + +elif build_machine.system() == 'darwin' + add_global_link_arguments( + language: 'cpp', + ) + + opengl = dependency('OpenGL') + corefoundation = dependency('CoreFoundation') + carbon = dependency('Carbon') + cocoa = dependency('Cocoa') + iokit = dependency('IOKit') + corevideo = dependency('CoreVideo') + + link_args += ['-ObjC'] + exe_defaults += ['werror=false'] + dependencies += [ + opengl, corefoundation, carbon, cocoa, iokit, corevideo + ] +endif + +catch2 = subproject('catch2').get_variable('catch2_with_main_dep') +fmt = subproject('fmt').get_variable('fmt_dep') +freetype2 = subproject('freetype2').get_variable('freetype_dep') + +flac = subproject('flac').get_variable('flac_dep') +ogg = subproject('ogg').get_variable('libogg_dep') +vorbis = subproject('vorbis').get_variable('vorbis_dep') +vorbisfile = subproject('vorbis').get_variable('vorbisfile_dep') +vorbisenc = subproject('vorbis').get_variable('vorbisenc_dep') +sfml_audio = subproject('sfml').get_variable('sfml_audio_dep') +sfml_graphics = subproject('sfml').get_variable('sfml_graphics_dep') +sfml_network = subproject('sfml').get_variable('sfml_network_dep') +sfml_system = subproject('sfml').get_variable('sfml_system_dep') +sfml_window = subproject('sfml').get_variable('sfml_window_dep') + +dependencies += [ + fmt, freetype2, + flac, ogg, vorbis, vorbisfile, vorbisenc, + sfml_audio, sfml_graphics, + sfml_network, sfml_system, + sfml_window +] + +sources = [ + 'src/dbc.cpp', +] + +executable('chip8', + sources + [ 'src/main.cpp' ], + cpp_args: cpp_args, + link_args: link_args, + override_options: exe_defaults, + dependencies: dependencies) diff --git a/scripts/reset_build.ps1 b/scripts/reset_build.ps1 new file mode 100644 index 0000000..975852d --- /dev/null +++ b/scripts/reset_build.ps1 @@ -0,0 +1,7 @@ +mv .\subprojects\packagecache . +rm -recurse -force .\subprojects\,.\builddir\ +mkdir subprojects +mv .\packagecache .\subprojects\ +mkdir builddir +cp wraps\*.wrap subprojects\ +meson setup --default-library=static --prefer-static builddir diff --git a/scripts/reset_build.sh b/scripts/reset_build.sh new file mode 100644 index 0000000..89931e7 --- /dev/null +++ b/scripts/reset_build.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +mv -f ./subprojects/packagecache . +rm -rf subprojects builddir +mkdir subprojects +mv -f packagecache ./subprojects/ && true +mkdir builddir +cp wraps/*.wrap subprojects/ +# on OSX you can't do this with static +meson setup --default-library=static --prefer-static builddir diff --git a/scripts/setup.ps1 b/scripts/setup.ps1 new file mode 100644 index 0000000..050d716 --- /dev/null +++ b/scripts/setup.ps1 @@ -0,0 +1,4 @@ +mkdir builddir +mkdir subprojects +cp wraps/*.wrap subprojects +meson setup -Ddefault_library=static builddir diff --git a/scripts/setup.sh b/scripts/setup.sh new file mode 100644 index 0000000..7881736 --- /dev/null +++ b/scripts/setup.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +set -ex + +mkdir subprojects +mkdir builddir +cp wraps/*.wrap subprojects/ +meson setup builddir diff --git a/scripts/watch_build.sh b/scripts/watch_build.sh new file mode 100644 index 0000000..44a5516 --- /dev/null +++ b/scripts/watch_build.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +set -e + +fswatch -o *.cpp | while read num +do echo ">>>>>>>>>>>>>>>>>>>>>> `date`" + if meson compile -C builddir + then + ./builddir/sfmldemo + else + echo "^^^^^^^^^^^^^^^^^^^^^ ERROR `date`" + fi +done diff --git a/scripts/windows_setup.ps1 b/scripts/windows_setup.ps1 new file mode 100644 index 0000000..73ed4d1 --- /dev/null +++ b/scripts/windows_setup.ps1 @@ -0,0 +1,255 @@ +function Test-WinUtilPackageManager { + <# + + .SYNOPSIS + Checks if Winget and/or Choco are installed + + .PARAMETER winget + Check if Winget is installed + + .PARAMETER choco + Check if Chocolatey is installed + + #> + + Param( + [System.Management.Automation.SwitchParameter]$winget, + [System.Management.Automation.SwitchParameter]$choco + ) + + $status = "not-installed" + + if ($winget) { + # Check if Winget is available while getting it's Version if it's available + $wingetExists = $true + try { + $wingetVersionFull = winget --version + } catch [System.Management.Automation.CommandNotFoundException], [System.Management.Automation.ApplicationFailedException] { + Write-Warning "Winget was not found due to un-availablity reasons" + $wingetExists = $false + } catch { + Write-Warning "Winget was not found due to un-known reasons, The Stack Trace is:`n$($psitem.Exception.StackTrace)" + $wingetExists = $false + } + + # If Winget is available, Parse it's Version and give proper information to Terminal Output. + # If it isn't available, the return of this funtion will be "not-installed", indicating that + # Winget isn't installed/available on The System. + if ($wingetExists) { + # Check if Preview Version + if ($wingetVersionFull.Contains("-preview")) { + $wingetVersion = $wingetVersionFull.Trim("-preview") + $wingetPreview = $true + } else { + $wingetVersion = $wingetVersionFull + $wingetPreview = $false + } + + # Check if Winget's Version is too old. + $wingetCurrentVersion = [System.Version]::Parse($wingetVersion.Trim('v')) + # Grabs the latest release of Winget from the Github API for version check process. + $response = Invoke-RestMethod -Uri "https://api.github.com/repos/microsoft/Winget-cli/releases/latest" -Method Get -ErrorAction Stop + $wingetLatestVersion = [System.Version]::Parse(($response.tag_name).Trim('v')) #Stores version number of latest release. + $wingetOutdated = $wingetCurrentVersion -lt $wingetLatestVersion + Write-Host "===========================================" -ForegroundColor Green + Write-Host "--- Winget is installed ---" -ForegroundColor Green + Write-Host "===========================================" -ForegroundColor Green + Write-Host "Version: $wingetVersionFull" -ForegroundColor White + + if (!$wingetPreview) { + Write-Host " - Winget is a release version." -ForegroundColor Green + } else { + Write-Host " - Winget is a preview version. Unexpected problems may occur." -ForegroundColor Yellow + } + + if (!$wingetOutdated) { + Write-Host " - Winget is Up to Date" -ForegroundColor Green + $status = "installed" + } + else { + Write-Host " - Winget is Out of Date" -ForegroundColor Red + $status = "outdated" + } + } else { + Write-Host "===========================================" -ForegroundColor Red + Write-Host "--- Winget is not installed ---" -ForegroundColor Red + Write-Host "===========================================" -ForegroundColor Red + $status = "not-installed" + } + } + + if ($choco) { + if ((Get-Command -Name choco -ErrorAction Ignore) -and ($chocoVersion = (Get-Item "$env:ChocolateyInstall\choco.exe" -ErrorAction Ignore).VersionInfo.ProductVersion)) { + Write-Host "===========================================" -ForegroundColor Green + Write-Host "--- Chocolatey is installed ---" -ForegroundColor Green + Write-Host "===========================================" -ForegroundColor Green + Write-Host "Version: v$chocoVersion" -ForegroundColor White + $status = "installed" + } else { + Write-Host "===========================================" -ForegroundColor Red + Write-Host "--- Chocolatey is not installed ---" -ForegroundColor Red + Write-Host "===========================================" -ForegroundColor Red + $status = "not-installed" + } + } + + return $status +} + +function Get-WinUtilWingetPrerequisites { + <# + .SYNOPSIS + Downloads the Winget Prereqs. + .DESCRIPTION + Downloads Prereqs for Winget. Version numbers are coded as variables and can be updated as uncommonly as Microsoft updates the prereqs. + #> + + # I don't know of a way to detect the prereqs automatically, so if someone has a better way of defining these, that would be great. + # Microsoft.VCLibs version rarely changes, but for future compatibility I made it a variable. + $versionVCLibs = "14.00" + $fileVCLibs = "https://aka.ms/Microsoft.VCLibs.x64.${versionVCLibs}.Desktop.appx" + # Write-Host "$fileVCLibs" + # Microsoft.UI.Xaml version changed recently, so I made the version numbers variables. + $versionUIXamlMinor = "2.8" + $versionUIXamlPatch = "2.8.6" + $fileUIXaml = "https://github.com/microsoft/microsoft-ui-xaml/releases/download/v${versionUIXamlPatch}/Microsoft.UI.Xaml.${versionUIXamlMinor}.x64.appx" + # Write-Host "$fileUIXaml" + + Try{ + Write-Host "Downloading Microsoft.VCLibs Dependency..." + Invoke-WebRequest -Uri $fileVCLibs -OutFile $ENV:TEMP\Microsoft.VCLibs.x64.Desktop.appx + Write-Host "Downloading Microsoft.UI.Xaml Dependency...`n" + Invoke-WebRequest -Uri $fileUIXaml -OutFile $ENV:TEMP\Microsoft.UI.Xaml.x64.appx + } + Catch{ + throw [WingetFailedInstall]::new('Failed to install prerequsites') + } +} + +function Get-WinUtilWingetLatest { + <# + .SYNOPSIS + Uses GitHub API to check for the latest release of Winget. + .DESCRIPTION + This function grabs the latest version of Winget and returns the download path to Install-WinUtilWinget for installation. + #> + # Invoke-WebRequest is notoriously slow when the byte progress is displayed. The following lines disable the progress bar and reset them at the end of the function + $PreviousProgressPreference = $ProgressPreference + $ProgressPreference = "silentlyContinue" + Try{ + # Grabs the latest release of Winget from the Github API for the install process. + $response = Invoke-RestMethod -Uri "https://api.github.com/repos/microsoft/Winget-cli/releases/latest" -Method Get -ErrorAction Stop + $latestVersion = $response.tag_name #Stores version number of latest release. + $licenseWingetUrl = $response.assets.browser_download_url | Where-Object {$_ -like "*License1.xml"} #Index value for License file. + Write-Host "Latest Version:`t$($latestVersion)`n" + Write-Host "Downloading..." + $assetUrl = $response.assets.browser_download_url | Where-Object {$_ -like "*Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle"} + Invoke-WebRequest -Uri $licenseWingetUrl -OutFile $ENV:TEMP\License1.xml + # The only pain is that the msixbundle for winget-cli is 246MB. In some situations this can take a bit, with slower connections. + Invoke-WebRequest -Uri $assetUrl -OutFile $ENV:TEMP\Microsoft.DesktopAppInstaller.msixbundle + } + Catch{ + throw [WingetFailedInstall]::new('Failed to get latest Winget release and license') + } + $ProgressPreference = $PreviousProgressPreference +} + +function Install-WinUtilWinget { + <# + + .SYNOPSIS + Installs Winget if it is not already installed. + + .DESCRIPTION + This function will download the latest version of Winget and install it. If Winget is already installed, it will do nothing. + #> + $isWingetInstalled = Test-WinUtilPackageManager -winget + + Try { + if ($isWingetInstalled -eq "installed") { + Write-Host "`nWinget is already installed.`r" -ForegroundColor Green + return + } elseif ($isWingetInstalled -eq "outdated") { + Write-Host "`nWinget is Outdated. Continuing with install.`r" -ForegroundColor Yellow + } else { + Write-Host "`nWinget is not Installed. Continuing with install.`r" -ForegroundColor Red + } + + # Gets the computer's information + if ($null -eq $sync.ComputerInfo){ + $ComputerInfo = Get-ComputerInfo -ErrorAction Stop + } else { + $ComputerInfo = $sync.ComputerInfo + } + + if (($ComputerInfo.WindowsVersion) -lt "1809") { + # Checks if Windows Version is too old for Winget + Write-Host "Winget is not supported on this version of Windows (Pre-1809)" -ForegroundColor Red + return + } + + # Install Winget via GitHub method. + # Used part of my own script with some modification: ruxunderscore/windows-initialization + Write-Host "Downloading Winget Prerequsites`n" + Get-WinUtilWingetPrerequisites + Write-Host "Downloading Winget and License File`r" + Get-WinUtilWingetLatest + Write-Host "Installing Winget w/ Prerequsites`r" + Add-AppxProvisionedPackage -Online -PackagePath $ENV:TEMP\Microsoft.DesktopAppInstaller.msixbundle -DependencyPackagePath $ENV:TEMP\Microsoft.VCLibs.x64.Desktop.appx, $ENV:TEMP\Microsoft.UI.Xaml.x64.appx -LicensePath $ENV:TEMP\License1.xml + Write-Host "Manually adding Winget Sources, from Winget CDN." + Add-AppxPackage -Path https://cdn.winget.microsoft.com/cache/source.msix #Seems some installs of Winget don't add the repo source, this should makes sure that it's installed every time. + Write-Host "Winget Installed" -ForegroundColor Green + Write-Host "Enabling NuGet and Module..." + Install-PackageProvider -Name NuGet -Force + Install-Module -Name Microsoft.WinGet.Client -Force + # Winget only needs a refresh of the environment variables to be used. + Write-Output "Refreshing Environment Variables...`n" + $ENV:PATH = [System.Environment]::GetEnvironmentVariable("Path", "Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path", "User") + } Catch { + Write-Host "Failure detected while installing via GitHub method. Continuing with Chocolatey method as fallback." -ForegroundColor Red + # In case install fails via GitHub method. + Try { + # Install Choco if not already present + Install-WinUtilChoco + Start-Process -Verb runas -FilePath powershell.exe -ArgumentList "choco install winget-cli" + Write-Host "Winget Installed" -ForegroundColor Green + Write-Output "Refreshing Environment Variables...`n" + $ENV:PATH = [System.Environment]::GetEnvironmentVariable("Path", "Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path", "User") + } Catch { + throw [WingetFailedInstall]::new('Failed to install!') + } + } +} + + +$isAdmin = [System.Security.Principal.WindowsPrincipal]::new( + [System.Security.Principal.WindowsIdentity]::GetCurrent()). + IsInRole('Administrators') + +if(-not $isAdmin) { + $params = @{ + FilePath = 'powershell' # or pwsh if Core + Verb = 'RunAs' + ArgumentList = @( + '-ExecutionPolicy ByPass' + '-File "{0}"' -f $PSCommandPath + ) + } + + Start-Process -Wait @params + Write-Host "Admin stuff done..." +} else { + Write-Host "In Admin stuff..." + Install-WinUtilWinget + return +} + +Start-Process -NoNewWindow -Wait winget -ArgumentList 'install','chocolatey' +Start-Process -NoNewWindow -Wait winget -ArgumentList 'install','Git.Git' +Start-Process -NoNewWindow -Wait winget -ArgumentList 'install','Microsoft.WindowsTerminal' +Start-Process -NoNewWindow -Wait winget -ArgumentList 'install','Python.Python.3.12' +Start-Process -NoNewWindow -Wait winget -ArgumentList 'install','AntibodySoftware.WizFile' +Start-Process -NoNewWindow -Wait winget -ArgumentList 'install','Kitware.CMake' +Start-Process -NoNewWindow -Wait winget -ArgumentList 'install','Microsoft.VCRedist.2015+.x64' + +Start-Process -Verb RunAs -Wait powershell -argumentlist 'C:\ProgramData\chocolatey\bin\choco.exe','install','geany','geany-plugins','winlibs','conan','meson' diff --git a/src/dbc.cpp b/src/dbc.cpp new file mode 100644 index 0000000..be045c9 --- /dev/null +++ b/src/dbc.cpp @@ -0,0 +1,47 @@ +#include "dbc.hpp" +#include + +void dbc::log(const string &message, const std::source_location location) { + std::cout << '[' << location.file_name() << ':' + << location.line() << "|" + << location.function_name() << "] " + << message << std::endl; +} + +void dbc::sentinel(const string &message, const std::source_location location) { + string err = $F("[SENTINEL!] {}", message); + dbc::log(err, location); + throw dbc::SentinelError{err}; +} + +void dbc::pre(const string &message, bool test, const std::source_location location) { + if(!test) { + string err = $F("[PRE!] {}", message); + dbc::log(err, location); + throw dbc::PreCondError{err}; + } +} + +void dbc::pre(const string &message, std::function tester, const std::source_location location) { + dbc::pre(message, tester(), location); +} + +void dbc::post(const string &message, bool test, const std::source_location location) { + if(!test) { + string err = $F("[POST!] {}", message); + dbc::log(err, location); + throw dbc::PostCondError{err}; + } +} + +void dbc::post(const string &message, std::function tester, const std::source_location location) { + dbc::post(message, tester(), location); +} + +void dbc::check(bool test, const string &message, const std::source_location location) { + if(!test) { + string err = $F("[CHECK!] {}\n", message); + dbc::log(err, location); + throw dbc::CheckError{err}; + } +} diff --git a/src/dbc.hpp b/src/dbc.hpp new file mode 100644 index 0000000..b2d054a --- /dev/null +++ b/src/dbc.hpp @@ -0,0 +1,53 @@ +#pragma once + +#include +#include +#include +#include + +// AKA the Fuckit macro +#define $F(FMT, ...) fmt::format(FMT, ##__VA_ARGS__) + +namespace dbc { + using std::string; + + class Error { + public: + const string message; + Error(string m) : message{m} {} + Error(const char *m) : message{m} {} + }; + + class CheckError : public Error {}; + class SentinelError : public Error {}; + class PreCondError : public Error {}; + class PostCondError : public Error {}; + + void log(const string &message, + const std::source_location location = + std::source_location::current()); + + [[noreturn]] void sentinel(const string &message, + const std::source_location location = + std::source_location::current()); + + void pre(const string &message, bool test, + const std::source_location location = + std::source_location::current()); + + void pre(const string &message, std::function tester, + const std::source_location location = + std::source_location::current()); + + void post(const string &message, bool test, + const std::source_location location = + std::source_location::current()); + + void post(const string &message, std::function tester, + const std::source_location location = + std::source_location::current()); + + void check(bool test, const string &message, + const std::source_location location = + std::source_location::current()); +} diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..6bf523c --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,27 @@ +#define _USE_MATH_DEFINES +#include +#include +#include +#include +#include +#include +#include +#include +#include "dbc.hpp" + +int main() { + fmt::print("Setting up a window for you...\n"); + + sf::RenderWindow window(sf::VideoMode({1280, 720}), "Simple Game Demo"); + window.setFramerateLimit(60); + window.setVerticalSyncEnabled(true); + + sf::Clock deltaClock; + sf::Clock clock; + sf::Time tick = clock.getElapsedTime(); + + while (window.isOpen()) { + window.clear(); + window.display(); + } +} diff --git a/wraps/catch2.wrap b/wraps/catch2.wrap new file mode 100644 index 0000000..f9bf436 --- /dev/null +++ b/wraps/catch2.wrap @@ -0,0 +1,11 @@ +[wrap-file] +directory = Catch2-3.7.1 +source_url = https://github.com/catchorg/Catch2/archive/v3.7.1.tar.gz +source_filename = Catch2-3.7.1.tar.gz +source_hash = c991b247a1a0d7bb9c39aa35faf0fe9e19764213f28ffba3109388e62ee0269c +source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/catch2_3.7.1-1/Catch2-3.7.1.tar.gz +wrapdb_version = 3.7.1-1 + +[provide] +catch2 = catch2_dep +catch2-with-main = catch2_with_main_dep diff --git a/wraps/flac.wrap b/wraps/flac.wrap new file mode 100644 index 0000000..ee36479 --- /dev/null +++ b/wraps/flac.wrap @@ -0,0 +1,13 @@ +[wrap-file] +directory = flac-1.4.3 +source_url = https://github.com/xiph/flac/releases/download/1.4.3/flac-1.4.3.tar.xz +source_filename = flac-1.4.3.tar.xz +source_hash = 6c58e69cd22348f441b861092b825e591d0b822e106de6eb0ee4d05d27205b70 +patch_filename = flac_1.4.3-2_patch.zip +patch_url = https://wrapdb.mesonbuild.com/v2/flac_1.4.3-2/get_patch +patch_hash = 3eace1bd0769d3e0d4ff099960160766a5185d391c8f583293b087a1f96c2a9c +source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/flac_1.4.3-2/flac-1.4.3.tar.xz +wrapdb_version = 1.4.3-2 + +[provide] +flac = flac_dep diff --git a/wraps/fmt.wrap b/wraps/fmt.wrap new file mode 100644 index 0000000..fd50847 --- /dev/null +++ b/wraps/fmt.wrap @@ -0,0 +1,13 @@ +[wrap-file] +directory = fmt-11.0.2 +source_url = https://github.com/fmtlib/fmt/archive/11.0.2.tar.gz +source_filename = fmt-11.0.2.tar.gz +source_hash = 6cb1e6d37bdcb756dbbe59be438790db409cdb4868c66e888d5df9f13f7c027f +patch_filename = fmt_11.0.2-1_patch.zip +patch_url = https://wrapdb.mesonbuild.com/v2/fmt_11.0.2-1/get_patch +patch_hash = 90c9e3b8e8f29713d40ca949f6f93ad115d78d7fb921064112bc6179e6427c5e +source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/fmt_11.0.2-1/fmt-11.0.2.tar.gz +wrapdb_version = 11.0.2-1 + +[provide] +fmt = fmt_dep diff --git a/wraps/freetype2.wrap b/wraps/freetype2.wrap new file mode 100644 index 0000000..acad6f4 --- /dev/null +++ b/wraps/freetype2.wrap @@ -0,0 +1,11 @@ +[wrap-file] +directory = freetype-2.13.3 +source_url = https://download.savannah.gnu.org/releases/freetype/freetype-2.13.3.tar.xz +source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/freetype2_2.13.3-1/freetype-2.13.3.tar.xz +source_filename = freetype-2.13.3.tar.xz +source_hash = 0550350666d427c74daeb85d5ac7bb353acba5f76956395995311a9c6f063289 +wrapdb_version = 2.13.3-1 + +[provide] +freetype2 = freetype_dep +freetype = freetype_dep diff --git a/wraps/libpng.wrap b/wraps/libpng.wrap new file mode 100644 index 0000000..06044a9 --- /dev/null +++ b/wraps/libpng.wrap @@ -0,0 +1,13 @@ +[wrap-file] +directory = libpng-1.6.44 +source_url = https://github.com/glennrp/libpng/archive/v1.6.44.tar.gz +source_filename = libpng-1.6.44.tar.gz +source_hash = 0ef5b633d0c65f780c4fced27ff832998e71478c13b45dfb6e94f23a82f64f7c +patch_filename = libpng_1.6.44-1_patch.zip +patch_url = https://wrapdb.mesonbuild.com/v2/libpng_1.6.44-1/get_patch +patch_hash = 394b07614c45fbd1beac8b660386216a490fe12f841a1a445799b676c9c892fb +source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/libpng_1.6.44-1/libpng-1.6.44.tar.gz +wrapdb_version = 1.6.44-1 + +[provide] +libpng = libpng_dep diff --git a/wraps/nlohmann_json.wrap b/wraps/nlohmann_json.wrap new file mode 100644 index 0000000..8c46676 --- /dev/null +++ b/wraps/nlohmann_json.wrap @@ -0,0 +1,11 @@ +[wrap-file] +directory = nlohmann_json-3.11.3 +lead_directory_missing = true +source_url = https://github.com/nlohmann/json/releases/download/v3.11.3/include.zip +source_filename = nlohmann_json-3.11.3.zip +source_hash = a22461d13119ac5c78f205d3df1db13403e58ce1bb1794edc9313677313f4a9d +source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/nlohmann_json_3.11.3-1/nlohmann_json-3.11.3.zip +wrapdb_version = 3.11.3-1 + +[provide] +nlohmann_json = nlohmann_json_dep diff --git a/wraps/ogg.wrap b/wraps/ogg.wrap new file mode 100644 index 0000000..e7f23eb --- /dev/null +++ b/wraps/ogg.wrap @@ -0,0 +1,13 @@ +[wrap-file] +directory = libogg-1.3.5 +source_url = https://downloads.xiph.org/releases/ogg/libogg-1.3.5.tar.xz +source_filename = libogg-1.3.5.tar.xz +source_hash = c4d91be36fc8e54deae7575241e03f4211eb102afb3fc0775fbbc1b740016705 +patch_filename = ogg_1.3.5-6_patch.zip +patch_url = https://wrapdb.mesonbuild.com/v2/ogg_1.3.5-6/get_patch +patch_hash = 8be6dcd5f93bbf9c0b9c8ec1fa29810226a60f846383074ca05b313a248e78b2 +source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/ogg_1.3.5-6/libogg-1.3.5.tar.xz +wrapdb_version = 1.3.5-6 + +[provide] +ogg = libogg_dep diff --git a/wraps/sfml.wrap b/wraps/sfml.wrap new file mode 100644 index 0000000..577ed1e --- /dev/null +++ b/wraps/sfml.wrap @@ -0,0 +1,14 @@ +[wrap-git] +directory=SFML-3.0.0 +url=https://github.com/SFML/SFML.git +revision=3.0.0 +depth=1 +method=cmake + +[provide] +sfml_audio = sfml_audio_dep +sfml_graphics = sfml_graphics_dep +sfml_main = sfml_main_dep +sfml_network = sfml_network_dep +sfml_system = sfml_system_dep +sfml_window = sfml_window_dep diff --git a/wraps/vorbis.wrap b/wraps/vorbis.wrap new file mode 100644 index 0000000..7425c11 --- /dev/null +++ b/wraps/vorbis.wrap @@ -0,0 +1,14 @@ +[wrap-file] +directory = libvorbis-1.3.7 +source_url = https://downloads.xiph.org/releases/vorbis/libvorbis-1.3.7.tar.xz +source_filename = libvorbis-1.3.7.tar.xz +source_hash = b33cc4934322bcbf6efcbacf49e3ca01aadbea4114ec9589d1b1e9d20f72954b +patch_filename = vorbis_1.3.7-4_patch.zip +patch_url = https://wrapdb.mesonbuild.com/v2/vorbis_1.3.7-4/get_patch +patch_hash = 979e22b24b16c927040700dfd8319cd6ba29bf52a14dbc66b1cb4ea60504f14a +wrapdb_version = 1.3.7-4 + +[provide] +vorbis = vorbis_dep +vorbisfile = vorbisfile_dep +vorbisenc = vorbisenc_dep