2022-01-12 18:18:23 +01:00
|
|
|
# =====CONFIG=====
|
2022-01-12 20:54:54 +01:00
|
|
|
SRC_DIR := src
|
|
|
|
SOURCES != find '$(SRC_DIR)' -iname '*.v'
|
|
|
|
|
2022-04-15 10:59:05 +02:00
|
|
|
V_PATH ?= v
|
2022-04-21 16:48:35 +02:00
|
|
|
V := $(V_PATH) -showcc -gc boehm -d dynamic_boehm
|
2022-01-09 21:45:48 +01:00
|
|
|
|
2022-01-13 12:35:05 +01:00
|
|
|
all: vieter
|
2022-01-12 18:54:13 +01:00
|
|
|
|
2022-04-14 23:15:19 +02:00
|
|
|
|
2022-01-12 18:54:13 +01:00
|
|
|
# =====COMPILATION=====
|
2022-04-21 16:12:37 +02:00
|
|
|
# We force the boehm gc to be compiled dynamically because otherwise, our CI
|
|
|
|
# build breaks.
|
2022-01-12 20:54:54 +01:00
|
|
|
vieter: $(SOURCES)
|
2022-04-21 16:48:35 +02:00
|
|
|
$(V) -g -o vieter $(SRC_DIR)
|
2022-01-13 12:35:05 +01:00
|
|
|
|
|
|
|
# Debug build using gcc
|
2022-02-22 08:14:20 +01:00
|
|
|
# The debug build can't use the boehm garbage collector, as that is
|
|
|
|
# multi-threaded and causes issues when running vieter inside gdb.
|
2022-01-13 12:35:05 +01:00
|
|
|
.PHONY: debug
|
|
|
|
debug: dvieter
|
|
|
|
dvieter: $(SOURCES)
|
2022-04-21 09:58:54 +02:00
|
|
|
$(V_PATH) -showcc -keepc -cg -o dvieter $(SRC_DIR)
|
2022-02-21 22:22:36 +01:00
|
|
|
|
2022-02-22 08:14:20 +01:00
|
|
|
# Run the debug build inside gdb
|
2022-02-21 22:22:36 +01:00
|
|
|
.PHONY: gdb
|
|
|
|
gdb: dvieter
|
2022-04-06 18:17:33 +02:00
|
|
|
gdb --args './dvieter -f vieter.toml server'
|
2022-01-12 18:54:13 +01:00
|
|
|
|
2022-01-13 12:35:05 +01:00
|
|
|
# Optimised production build
|
2022-01-12 18:54:13 +01:00
|
|
|
.PHONY: prod
|
2022-01-13 12:35:05 +01:00
|
|
|
prod: pvieter
|
|
|
|
pvieter: $(SOURCES)
|
|
|
|
$(V) -o pvieter -prod $(SRC_DIR)
|
2022-01-12 18:54:13 +01:00
|
|
|
|
2022-01-27 21:47:25 +01:00
|
|
|
# Only generate C code
|
2022-01-12 21:50:17 +01:00
|
|
|
.PHONY: c
|
2022-04-14 23:15:19 +02:00
|
|
|
c: $(SOURCES)
|
2022-01-12 21:50:17 +01:00
|
|
|
$(V) -o vieter.c $(SRC_DIR)
|
|
|
|
|
2022-04-14 23:15:19 +02:00
|
|
|
|
2022-01-12 18:54:13 +01:00
|
|
|
# =====EXECUTION=====
|
2022-01-12 18:18:23 +01:00
|
|
|
# Run the server in the default 'data' directory
|
|
|
|
.PHONY: run
|
2022-01-13 12:35:05 +01:00
|
|
|
run: vieter
|
2022-04-14 23:15:19 +02:00
|
|
|
./vieter -f vieter.toml server
|
2022-01-11 18:19:41 +01:00
|
|
|
|
2022-01-12 21:22:23 +01:00
|
|
|
.PHONY: run-prod
|
|
|
|
run-prod: prod
|
2022-04-06 18:17:33 +02:00
|
|
|
./pvieter -f vieter.toml server
|
2022-01-09 09:29:11 +01:00
|
|
|
|
2022-04-14 23:15:19 +02:00
|
|
|
|
2022-01-12 18:54:13 +01:00
|
|
|
# =====OTHER=====
|
2022-01-13 14:33:06 +01:00
|
|
|
.PHONY: lint
|
|
|
|
lint:
|
|
|
|
$(V) fmt -verify $(SRC_DIR)
|
|
|
|
|
2022-01-12 18:18:23 +01:00
|
|
|
# Format the V codebase
|
2022-01-09 09:29:11 +01:00
|
|
|
.PHONY: fmt
|
|
|
|
fmt:
|
2022-01-13 14:33:06 +01:00
|
|
|
$(V) fmt -w $(SRC_DIR)
|
2022-01-09 23:02:55 +01:00
|
|
|
|
2022-01-14 21:02:34 +01:00
|
|
|
.PHONY: vet
|
|
|
|
vet:
|
|
|
|
$(V) vet -W $(SRC_DIR)
|
|
|
|
|
2022-04-10 16:17:50 +02:00
|
|
|
.PHONY: test
|
|
|
|
test:
|
2022-04-21 16:48:35 +02:00
|
|
|
$(V) test $(SRC_DIR)
|
2022-04-10 16:17:50 +02:00
|
|
|
|
2022-01-27 19:18:11 +01:00
|
|
|
# Build & patch the V compiler
|
|
|
|
.PHONY: v
|
2022-02-19 15:27:41 +01:00
|
|
|
v: v/v
|
|
|
|
v/v:
|
2022-04-15 10:59:05 +02:00
|
|
|
git clone --single-branch https://git.rustybever.be/Chewing_Bever/v v
|
2022-02-19 15:27:41 +01:00
|
|
|
make -C v
|
2022-01-12 18:18:23 +01:00
|
|
|
|
|
|
|
clean:
|
2022-04-15 11:54:56 +02:00
|
|
|
rm -rf 'data' 'vieter' 'dvieter' 'pvieter' 'vieter.c' 'dvieterctl' 'vieterctl' 'pkg' 'src/vieter' *.pkg.tar.zst 'suvieter' 'afvieter'
|
2022-04-14 23:15:19 +02:00
|
|
|
|
|
|
|
|
|
|
|
# =====EXPERIMENTAL=====
|
|
|
|
.PHONY: autofree
|
|
|
|
autofree: afvieter
|
|
|
|
afvieter: $(SOURCES)
|
|
|
|
$(V_PATH) -showcc -autofree -o afvieter $(SRC_DIR)
|
2022-04-21 09:58:54 +02:00
|
|
|
|
|
|
|
.PHONY: skip-unused
|
|
|
|
skip-unused: suvieter
|
|
|
|
skip-unused: $(SOURCES)
|
|
|
|
$(V_PATH) -showcc -skip-unused -o afvieter $(SRC_DIR)
|