# lua is required in the build process, in order to compile the bytecode lua := lua cc := gcc bundle = $(src_entry_dir)/bundle.lua dump_loader = $(src_entry_dir)/dump_loader.lua all_flags += -W -Wall -fPIC -std=gnu11 # requires lua, curl and zlib (in the future, lua will be statically linked) main_libraries += -llua -lcurl -lz main_cflags += $(all_flags) loader_libraries += -lfuse -lpthread -lsquashfuse loader_cflags += $(all_flags) loader_cflags += -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 loader_cflags += -I/usr/include/fuse dst_dir = dst src_main_dir = src/main src_entry_dir = src/entry src_loader_dir = src/loader # Uncomment to get debugging symbols # flags := -g main_sources += $(wildcard $(src_main_dir)/*.lua) main_sources += $(wildcard $(src_main_dir)/cli/*.lua) main_sources += $(wildcard $(src_main_dir)/formats/*.lua) main_sources += $(wildcard $(src_main_dir)/util/*.lua) entry_sources = $(wildcard $(src_entry_dir)/*.c) loader_sources = $(wildcard $(src_loader_dir)/*.c) main_target = $(dst_dir)/slimpack loader_target = $(dst_dir)/loader bytecode_h_target = $(dst_dir)/bytecode.h loader_h_target = $(dst_dir)/loader.h .PHONY: build build: $(main_target) $(dst_dir): mkdir -p $@ $(bytecode_h_target): $(dst_dir) $(bundle) $(main_sources) $(lua) $(bundle) $(src_main_dir) $@ $(main_sources) $(loader_h_target): $(dst_dir) $(dump_loader) $(loader_target) $(lua) $(dump_loader) $(loader_target) $@ $(loader_target): $(dst_dir) $(loader_sources) $(cc) $(loader_cflags) $(loader_libraries) $(loader_sources) -o $@ $(main_target): $(dst_dir) $(bytecode_h_target) $(loader_h_target) $(entry_sources) $(main_sources) $(cc) $(main_cflags) $(main_libraries) -include $(bytecode_h_target) -include $(loader_h_target) $(entry_sources) -o $@