# ----------------------- # Compilation options # ----------------------- RELEASE := 1 STATIC := 0 DISABLE_QUIC := 0 NO_DBG_SYMBOLS := 0 FLAGS ?= ifeq ($(RELEASE), 1) FLAGS += --release endif ifeq ($(STATIC), 1) FLAGS += --static endif ifeq ($(NO_DBG_SYMBOLS), 1) FLAGS += --no-debug else FLAGS += --debug endif ifeq ($(DISABLE_QUIC), 1) FLAGS += -Ddisable_quic endif # ----------------------- # Main # ----------------------- all: invidious get-libs: shards install --production # TODO: add support for ARM64 via cross-compilation invidious: get-libs crystal build src/invidious.cr $(FLAGS) --progress --stats --error-trace run: invidious ./invidious # ----------------------- # Development # ----------------------- format: crystal tool format test: crystal spec verify: crystal build src/invidious.cr --no-codegen --progress --stats --error-trace # ----------------------- # (Un)Install # ----------------------- # TODO # ----------------------- # Cleaning # ----------------------- clean: rm invidious distclean: clean rm -rf libs # ----------------------- # Help page # ----------------------- help: echo "Targets available in this Makefile:" echo "" echo "get-libs Fetch Crystal libraries" echo "invidious Build Invidious" echo "run Launch Invidious" echo "" echo "format Run the Crystal formatter" echo "test Run tests" echo "verify Just make sure that the code compiles, but without" echo " generating any binaries. Useful to search for errors" echo "" echo "clean Remove build artifacts" echo "distclean Remove build artifacts and libraries" echo "" echo "" echo "Build options available for this Makefile:" echo "" echo "RELEASE Make a release build (Default: 1)" echo "STATIC Link libraries statically (Default: 0)" echo "" echo "DISABLE_QUIC Disable support for QUIC (Default: 0)" echo "NO_DBG_SYMBOLS Strip debug symbols (Default: 0)" # No targets generates an output named after themselves .PHONY: all get-libs build amd64 run .PHONY: format test verify clean distclean help