# -----------------------# Compilation options# ----------------------- RELEASE := 1STATIC := 0 NO_DBG_SYMBOLS := 0SKIP_VERSION_CHECK := 0 FLAGS ?= ifeq ($(RELEASE), 1) FLAGS += --releaseendif ifeq ($(STATIC), 1) FLAGS += --staticendif ifeq ($(NO_DBG_SYMBOLS), 1) FLAGS += --no-debugelse FLAGS += --debugendif ifeq ($(API_ONLY), 1) FLAGS += -Dapi_onlyendif ifeq ($(SKIP_VERSION_CHECK), 1) FLAGS += -Dskip_version_checkendif # -----------------------# Main# ----------------------- all: invidious get-libs: shards install --production # TODO: add support for ARM64 via cross-compilationinvidious: 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 -Dskip_videojs_download \ --no-codegen --progress --stats --error-trace # -----------------------# (Un)Install# ----------------------- # TODO # -----------------------# Cleaning# ----------------------- clean: rm invidious distclean: clean rm -rf libs rm -rf ~/.cache/{crystal,shards} # -----------------------# 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 " API_ONLY Build invidious without a GUI (Default: 0)" @echo " NO_DBG_SYMBOLS Strip debug symbols (Default: 0)" @echo " SKIP_VERSION_CHECK Skips the Crystal compiler version check (Default: 0)" # No targets generates an output named after themselves.PHONY: all get-libs build amd64 run.PHONY: format test verify clean distclean help
# -----------------------
# Compilation options
# -----------------------
RELEASE := 1
STATIC := 0
NO_DBG_SYMBOLS := 0
SKIP_VERSION_CHECK := 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 ($(API_ONLY), 1)
FLAGS += -Dapi_only
endif
ifeq ($(SKIP_VERSION_CHECK), 1)
FLAGS += -Dskip_version_check
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 -Dskip_videojs_download \
--no-codegen --progress --stats --error-trace
# -----------------------
# (Un)Install
# -----------------------
# TODO
# -----------------------
# Cleaning
# -----------------------
clean:
rm invidious
distclean: clean
rm -rf libs
rm -rf ~/.cache/{crystal,shards}
# -----------------------
# 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 " API_ONLY Build invidious without a GUI (Default: 0)"
@echo " NO_DBG_SYMBOLS Strip debug symbols (Default: 0)"
@echo " SKIP_VERSION_CHECK Skips the Crystal compiler version check (Default: 0)"
# No targets generates an output named after themselves
.PHONY: all get-libs build amd64 run
.PHONY: format test verify clean distclean help