diff options
| author | Peter Fors <peter.fors@mindkiller.com> | 2025-03-29 20:11:56 +0100 |
|---|---|---|
| committer | Peter Fors <peter.fors@mindkiller.com> | 2025-03-29 20:11:56 +0100 |
| commit | d5486a5af100fb37fac08b60d862ac14943853ce (patch) | |
| tree | e2206f620745ba49c94f0f29d180587e03bc9fda /base/build.sh | |
| parent | ee4f15400998ca704c6ad8fc537f0d924930fabd (diff) | |
add base code for windowing and opengl crt-shader.
Diffstat (limited to 'base/build.sh')
| -rwxr-xr-x | base/build.sh | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/base/build.sh b/base/build.sh new file mode 100755 index 0000000..b415041 --- /dev/null +++ b/base/build.sh @@ -0,0 +1,77 @@ +#!/bin/bash +export PATH="$(git rev-parse --show-toplevel)/bin:$PATH" + +# Project name +PROJECT_NAME="base" + +# Base configuration common to all builds +CFLAGS="-mavx2 -mtune=native -std=gnu11 " +CFLAGS+="-msse4.1 -mfunction-return=keep -mindirect-branch=keep " +CFLAGS+="-fwrapv -ffast-math -fno-trapping-math -fwhole-program " +CFLAGS+="-fno-stack-protector -fno-PIE -no-pie -fno-strict-aliasing -ffunction-sections -fdata-sections " +CFLAGS+="-U_FORTIFY_SOURCE " +CFLAGS+="-Wall -Wextra " +CFLAGS+="-Wno-unused-parameter -Wno-sign-compare -Wno-trigraphs -Wno-maybe-uninitialized " +CFLAGS+="-Wno-unused-variable -Wno-unused-const-variable -Wno-unused-function " + +LDFLAGS="-Wl,--gc-sections " + +# Base include paths +INCLUDE_PATHS="-I../include -I../base -I../.." + +# Linux-specific includes and libraries +LINUX_INCLUDE="-I/usr/include/pipewire-0.3 -I/usr/include/spa-0.2" +LINUX_LIBS="-lpipewire-0.3 -lXi -lX11 -lGL -lm -ldl -pthread" + +# Windows-specific includes and libraries +WINDOWS_INCLUDE="" +WINDOWS_LIBS="-lwinmm -lksuser -lole32 -lmmdevapi -lavrt -lgdi32 -lopengl32 -luuid" + +# Determine build type +BUILD_TYPE=$1 +if [ -z "$BUILD_TYPE" ]; then + BUILD_TYPE="normal" +fi + +case "$BUILD_TYPE" in + "normal") + CFLAGS+=" -g -O2 -DDEBUG_INTERNAL" + ;; + "debug") + CFLAGS+=" -g -O0" + LDFLAGS+=" -fno-pie -no-pie" + ;; + "release") + CFLAGS+=" -s -O2" + ;; + *) + echo "Unknown build type: $BUILD_TYPE" + exit 1 + ;; +esac + +# Make sure shaders are up to date +shader2h 330 vertex_shader vertex_shader.glsl data/vertex_shader.h +shader2h 330 fragment_shader shader.h fragment_shader.glsl data/fragment_shader.h + +# Stop on first error +set -e + +# Common compile commands +gcc_cmd="gcc $CFLAGS ${PROJECT_NAME}.c -o ${PROJECT_NAME} $INCLUDE_PATHS $LDFLAGS" +mingw_cmd="x86_64-w64-mingw32-gcc $CFLAGS ${PROJECT_NAME}.c -o ${PROJECT_NAME}.exe -mwindows $INCLUDE_PATHS $LDFLAGS" + +# Run Linux and Windows builds in parallel +( + ctime -begin .${PROJECT_NAME}_linux + $gcc_cmd $LINUX_INCLUDE $LINUX_LIBS + ctime -end .${PROJECT_NAME}_linux $? +) & + +( + ctime -begin .${PROJECT_NAME}_windows + $mingw_cmd $WINDOWS_INCLUDE $WINDOWS_LIBS + ctime -end .${PROJECT_NAME}_windows $? +) & +wait + |
