summaryrefslogtreecommitdiff
path: root/build.sh
diff options
context:
space:
mode:
authorKonAki <konaki@anokonaki.org>2026-10-08 11:59:46 +0800
committerKonAki <konaki@anokonaki.org>2026-10-08 11:59:46 +0800
commitee4dee0e687bd9a6ae88736aac1fa112cbbde3bd (patch)
tree9bb0ccabeb56f048d9a56a1741f48467fedc2040 /build.sh
parent8788136530b389135487de52241979c1053c3f41 (diff)
Add konassets asset manager, image/audio modules, fix build
Diffstat (limited to 'build.sh')
-rwxr-xr-x[-rw-r--r--]build.sh43
1 files changed, 35 insertions, 8 deletions
diff --git a/build.sh b/build.sh
index 69eda5c..766f14f 100644..100755
--- a/build.sh
+++ b/build.sh
@@ -7,20 +7,22 @@ platform=native
mode=release
objdir=obj
modules=
+developer=0
usage()
{
- echo "usage: build.sh [-d] [-p platform] [-m module,...] [-o objdir] [target ...]"
- echo "modules: font toml tile"
+ echo "usage: build.sh [-d] [-D] [-p platform] [-m module,...] [-o objdir] [target ...]"
+ echo "modules: font toml tile pack assets image audio"
echo "platforms: native linux bsd windows"
- echo "targets: all run clean"
+ echo "targets: all run clean tools pack"
exit 1
}
-while getopts dm:o:p: opt; do
+while getopts dDm:o:p: opt; do
case $opt in
d) mode=debug ;;
- m) modules=$OPTARG ;;
+ D) developer=1 ;;
+ m) modules="$modules $(echo "$OPTARG" | tr ',' ' ')" ;;
o) objdir=$OPTARG ;;
p) platform=$OPTARG ;;
*) usage ;;
@@ -56,19 +58,44 @@ esac
if [ $mode = debug ]; then
MODEFLAGS="-g -O0 -DKON_DEBUG"
+ developer=1
else
MODEFLAGS="-O2 -DNDEBUG"
fi
+[ $developer = 1 ] && MODEFLAGS="$MODEFLAGS -DKON_DEVELOPER"
MODOBJS=
-for m in $(echo "$modules" | tr ',' ' '); do
+
+addobj()
+{
+ case " $MODOBJS " in
+ *" $objdir/$1.o "*) ;;
+ *) MODOBJS="$MODOBJS $objdir/$1.o" ;;
+ esac
+}
+
+for m in $modules; do
DEFS="$DEFS -DKON_MODULE_$(echo "$m" | tr 'a-z' 'A-Z')"
case $m in
- font|toml|tile) MODOBJS="$MODOBJS $objdir/kon$m.o" ;;
+ font|toml|tile|pack) addobj "kon$m" ;;
+ assets) addobj konassets ;;
+ image) addobj stb_image ;;
+ audio)
+ addobj miniaudio
+ addobj konaudio
+ case $platform in
+ linux) LDLIBS="$LDLIBS -lpthread -ldl" ;;
+ bsd) LDLIBS="$LDLIBS -lpthread" ;;
+ esac
+ ;;
*) echo "build.sh: unknown module '$m'" >&2; usage ;;
esac
done
+case " $modules " in
+*" assets "*) addobj konpack ;;
+esac
+
OBJDIR=$objdir
export CC EXE LDLIBS MODEFLAGS DEFS OBJDIR MODOBJS
@@ -79,5 +106,5 @@ if [ "$(cat "$OBJDIR/.flags" 2>/dev/null)" != "$flags" ]; then
echo "$flags" > "$OBJDIR/.flags"
fi
-echo "===> platform $platform, $mode build, modules: ${modules:-none}"
+echo "===> platform $platform, $mode build, modules:${modules:- none}"
exec ${MAKE:-make} ${*:-all}