invidious/Makefile

119 lines
2.2 KiB
Makefile

# -----------------------
# Compilation options
# -----------------------
RELEASE := 1
STATIC := 0
DISABLE_LSQUIC := 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_LSQUIC), 1)
FLAGS += -Ddisable_lsquic
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 librariess tatically (Default: 1)"
echo ""
echo "DISABLE_LSQUIC Don't use lsquic (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