summaryrefslogtreecommitdiffstats
path: root/Makefile
blob: c14dfc6edb63ca6b3db9c7660c619fb0795cd161 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
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