diff --git a/build.sh b/build.sh index 308ebf94..f05e23de 100755 --- a/build.sh +++ b/build.sh @@ -1,22 +1,28 @@ -#!/bin/bash +#!/usr/bin/env bash cflags="-Wall -O3 -g -std=gnu11 -fno-strict-aliasing -Isrc" -lflags="-lSDL2 -lm" +lflags="-lm" if [[ $* == *windows* ]]; then platform="windows" outfile="lite.exe" compiler="x86_64-w64-mingw32-gcc" cflags="$cflags -DLUA_USE_POPEN -Iwinlib/SDL2-2.0.10/x86_64-w64-mingw32/include" - lflags="$lflags -Lwinlib/SDL2-2.0.10/x86_64-w64-mingw32/lib" + lflags="$lflags -lSDL2 -Lwinlib/SDL2-2.0.10/x86_64-w64-mingw32/lib" lflags="-lmingw32 -lSDL2main $lflags -mwindows -o $outfile res.res" x86_64-w64-mingw32-windres res.rc -O coff -o res.res else platform="unix" outfile="lite" - compiler="gcc" + compiler="cc" cflags="$cflags -DLUA_USE_POSIX" lflags="$lflags -o $outfile" + if command -v pkgconf >/dev/null; then + cflags="$cflags $(pkgconf --cflags --silence-errors sdl2)" + lflags="$lflags $(pkgconf --libs --silence-errors sdl2)" + else + lflags="$lflags -lSDL2" + fi fi if command -v ccache >/dev/null; then diff --git a/src/main.c b/src/main.c index 1c6872f9..53c08cdd 100644 --- a/src/main.c +++ b/src/main.c @@ -9,6 +9,9 @@ #include #elif __APPLE__ #include +#elif __FreeBSD__ + #include + #include #endif @@ -38,6 +41,17 @@ static void get_exe_filename(char *buf, int sz) { #elif __APPLE__ unsigned size = sz; _NSGetExecutablePath(buf, &size); +#elif __FreeBSD__ + int items[] = { + CTL_KERN, + KERN_PROC, + KERN_PROC_PATHNAME, + getpid() + }; + + size_t len; + (void) sysctl(items, 4, buf, &len, NULL, 0); + buf[len] = '\0'; #else strcpy(buf, "./lite"); #endif @@ -111,7 +125,12 @@ int main(int argc, char **argv) { lua_pushnumber(L, get_scale()); lua_setglobal(L, "SCALE"); +#ifdef __FreeBSD__ + char exename[PATH_MAX]; +#else char exename[2048]; +#endif + get_exe_filename(exename, sizeof(exename)); lua_pushstring(L, exename); lua_setglobal(L, "EXEFILE");