CC = zig cc -target x86_64-linux-musl CFLAGS = -Wall -O2 -Iluajit/src -Ilibev -Icjson -Icurl/include -Iwolfssl -Iwolfssl/build -Isqlite -Ijinjac/libjinjac/include -Ijinjac/libjinjac/src -Iiniparser/src -DCURL_STATICLIB LIBS = luajit/src/libluajit.a libev/.libs/libev.a curl/build/lib/libcurl.a wolfssl/build/libwolfssl.a jinjac/build/libjinjac/src/liblibjinjac_static.a iniparser/build/libiniparser.a -lm -ldl -lpthread -lunwind SRCS = main.c core.c json.c http.c util.c log.c assert.c request.c env.c crypto.c sqlite.c fs.c process.c template.c ini.c path.c stash.c sqlite/sqlite3.c cjson/cJSON.c OBJS = $(SRCS:.c=.o) MEX_ASSURE = zig make cmake flex bison MEX_DESCRIPTION = "Lightweight Lua runtime powered by LuaJIT and libev" include makext.mk help: .help build: .assure luna # Statically compiles luna binary luna: $(OBJS) $(CC) $(CFLAGS) -static -o $@ $^ $(LIBS) %.o: %.c $(CC) $(CFLAGS) -c -o $@ $< requirements: .assure # Compiles all required libraries cd luajit/src && \ make clean && \ make -j`nproc` CC="zig cc -target x86_64-linux-musl" HOST_CC="gcc" BUILDMODE=static TARGET_LDFLAGS="-lunwind" cd libev && \ make clean && \ ./configure CC="zig cc -target x86_64-linux-musl" --host=x86_64-linux-musl --enable-static --disable-shared && \ make -j`nproc` mkdir -p wolfssl/build && cd wolfssl/build && \ rm -rf * && \ CC="zig cc -target x86_64-linux-musl" cmake .. \ -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SHARED_LIBS=OFF \ -DWOLFSSL_CURL=yes \ -DWOLFSSL_EXAMPLES=no \ -DWOLFSSL_CRYPT_TESTS=no && \ make -j`nproc` mkdir -p curl/build && cd curl/build && \ rm -rf * && \ CC="zig cc -target x86_64-linux-musl" cmake .. \ -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SHARED_LIBS=OFF \ -DBUILD_CURL_EXE=OFF \ -DBUILD_TESTING=OFF \ -DCURL_USE_LIBPSL=OFF \ -DCURL_USE_LIBSSH2=OFF \ -DCURL_USE_GSSAPI=OFF \ -DCURL_USE_OPENSSL=OFF \ -DCURL_USE_MBEDTLS=OFF \ -DCURL_USE_WOLFSSL=ON \ -DCURL_USE_GNUTLS=OFF \ -DCURL_ZLIB=OFF \ -DCURL_BROTLI=OFF \ -DCURL_ZSTD=OFF \ -DHTTP_ONLY=ON \ -DWOLFSSL_INCLUDE_DIR="$(CURDIR)/wolfssl;$(CURDIR)/wolfssl/build" \ -DWOLFSSL_LIBRARY=$(CURDIR)/wolfssl/build/libwolfssl.a && \ make -j`nproc` mkdir -p jinjac/build && cd jinjac/build && \ rm -rf * && \ CC="zig cc -target x86_64-linux-musl" cmake .. \ -DCMAKE_BUILD_TYPE=Release \ -DTRACE=OFF \ -DCOVERAGE=OFF && \ make -j`nproc` libjinjac_static mkdir -p iniparser/build && cd iniparser/build && \ rm -rf * && \ CC="zig cc -target x86_64-linux-musl" cmake .. \ -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SHARED_LIBS=OFF \ -DBUILD_STATIC_LIBS=ON && \ make -j`nproc` clean: # Cleans up build artefacts rm -f luna *.o .PHONY: clean requirements