Merge pull request #2622 from SamantazFox/add-makefile

Add a makefile
This commit is contained in:
Samantaz Fox 2021-11-26 20:28:03 +01:00 committed by GitHub
commit 6876f88f43
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 118 additions and 0 deletions

118
Makefile Normal file
View File

@ -0,0 +1,118 @@
# -----------------------
# 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