diff options
| author | Samantaz Fox <coding@samantaz.fr> | 2021-11-15 23:08:48 +0100 |
|---|---|---|
| committer | Samantaz Fox <coding@samantaz.fr> | 2021-11-15 23:08:48 +0100 |
| commit | 19bb26a789c24bed153c9575277b4d80b320cc59 (patch) | |
| tree | 61f88603e75d8d51aeff98d299d46bd46ef9060f | |
| parent | 49407596278c2977511eab8df4b86dad0a0c22b2 (diff) | |
| download | invidious-19bb26a789c24bed153c9575277b4d80b320cc59.tar.gz invidious-19bb26a789c24bed153c9575277b4d80b320cc59.tar.bz2 invidious-19bb26a789c24bed153c9575277b4d80b320cc59.zip | |
Add a makefile
| -rw-r--r-- | Makefile | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..c14dfc6e --- /dev/null +++ b/Makefile @@ -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 |
