From ef612dcc19314e5d81d9e20a65fc77d3d29759b8 Mon Sep 17 00:00:00 2001 From: Matthew Date: Sat, 7 Feb 2026 17:23:14 +1100 Subject: [PATCH] first commit --- .gitignore | 2 ++ .gitmodules | 3 +++ .ignore | 5 ++++ SDL | 1 + build.sh | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++ main.cpp | 32 ++++++++++++++++++++++++ 6 files changed, 113 insertions(+) create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 .ignore create mode 160000 SDL create mode 100755 build.sh create mode 100644 main.cpp diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..db06fe5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +build +include/SDL3 diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..b21aa1f --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "SDL"] + path = SDL + url = https://github.com/libsdl-org/SDL.git diff --git a/.ignore b/.ignore new file mode 100644 index 0000000..c50fdc5 --- /dev/null +++ b/.ignore @@ -0,0 +1,5 @@ +.git +.gitmodules +SDL +include/SDL3 +build diff --git a/SDL b/SDL new file mode 160000 index 0000000..3dc48a4 --- /dev/null +++ b/SDL @@ -0,0 +1 @@ +Subproject commit 3dc48a4890d37560e4159f50b7a6eadc9b9c1936 diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..9a929e6 --- /dev/null +++ b/build.sh @@ -0,0 +1,70 @@ +#!/bin/bash +set -eu + +for arg in "$@"; do declare $arg="1"; done + +if [ ! -v release ]; then debug=1; fi +if [ ! -v clang ]; then gcc=1; fi + +if [ -v release ]; then + build_mode="-g" + echo "[Release Mode]" +fi +if [ -v debug ]; + build_mode="-O2" + then echo "[Debug Mode]" +fi + +script_dir="$(dirname -- "${BASH_SOURCE[0]}" )" +cd $script_dir + +mkdir -p build +mkdir -p include + +# SDL +if ! [ -f "build/libSDL3.a" ]; then + cmake -S SDL -B SDL/build -DSDL_STATIC=ON -DSDL_SHARED=OFF + + cd SDL/build + make + cd ../.. + + cp SDL/build/libSDL3.a build + cp -r SDL/include/SDL3 include +fi + +if [ -v gcc ]; then + if ! [ -x "$(command -v g++)" ]; then + echo "Unable to find gcc compiler, try again with the clang flag or install gcc." + exit 1 + fi + + compiler_flags="-fzero-init-padding-bits=unions" + compiler="g++" +elif [ -v clang ]; then + if ! [ -x "$(command -v clang++)" ]; then + echo "Unable to find clang compiler, try again with the gcc flag or install clang" + exit 1 + fi + + compiler_flags="" + compiler="clang++" +fi + +if [ -x "$(command -v mold)" ]; then + linker="mold"; +elif [ -x "$(command -v lld)" ]; then + linker="lld"; +elif [ -x "$(command -v ld)" ]; then + linker="ld" +else + echo "Unable to find a linker, please install mold, lld or ld" + exit 1 +fi + +src="main.cpp" +out="build/Renderer" +linker_flags="-lGL -Lbuild -l:libSDL3.a" +flags="-std=c++23 ${build_mode} ${compiler_flags} -Iinclude -fuse-ld=${linker} -o${out}" + +$compiler $src $linker_flags $flags diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..475075e --- /dev/null +++ b/main.cpp @@ -0,0 +1,32 @@ +#include + +#include +#include + +bool +Init() +{ + const char* error = NULL; + + SDL_SetAppMetadata("Renderer", "0.0", "com.sleepyday.renderer"); + + if(!SDL_Init(SDL_INIT_VIDEO)) + { + error = SDL_GetError(); + goto InitFailure; + } + + return true; + +InitFailure: + printf("Failed to initialize: [%s]", error); + + return false; +} + +int +main(int argc, char** argv) +{ + Init(); + +}