2022-01-12 17:18:23 +00:00
|
|
|
# =====CONFIG=====
|
2022-01-12 19:54:54 +00:00
|
|
|
SRC_DIR := src
|
2023-01-12 11:26:12 +00:00
|
|
|
SRCS != find '$(SRC_DIR)' -iname '*.v'
|
2022-01-12 19:54:54 +00:00
|
|
|
|
2022-04-15 08:59:05 +00:00
|
|
|
V_PATH ?= v
|
2023-02-08 10:09:18 +00:00
|
|
|
V := $(V_PATH) -showcc -gc boehm -d use_openssl -skip-unused
|
2022-01-09 20:45:48 +00:00
|
|
|
|
2022-01-13 11:35:05 +00:00
|
|
|
all: vieter
|
2022-01-12 17:54:13 +00:00
|
|
|
|
2022-04-14 21:15:19 +00:00
|
|
|
|
2022-01-12 17:54:13 +00:00
|
|
|
# =====COMPILATION=====
|
2023-01-12 11:26:12 +00:00
|
|
|
.PHONY: libvieter
|
|
|
|
libvieter:
|
2023-01-28 12:00:37 +00:00
|
|
|
make -C '$(SRC_DIR)/libvieter' CFLAGS='-O3'
|
2023-01-12 11:26:12 +00:00
|
|
|
|
2022-01-13 11:35:05 +00:00
|
|
|
# Regular binary
|
2023-01-12 11:26:12 +00:00
|
|
|
vieter: $(SOURCES) libvieter
|
2022-01-13 11:35:05 +00:00
|
|
|
$(V) -g -o vieter $(SRC_DIR)
|
|
|
|
|
|
|
|
# Debug build using gcc
|
2022-02-22 07:14:20 +00: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 11:35:05 +00:00
|
|
|
.PHONY: debug
|
|
|
|
debug: dvieter
|
2023-01-12 11:26:12 +00:00
|
|
|
dvieter: $(SOURCES) libvieter
|
2022-02-21 21:22:36 +00:00
|
|
|
$(V_PATH) -showcc -keepc -cg -o dvieter $(SRC_DIR)
|
|
|
|
|
2022-02-22 07:14:20 +00:00
|
|
|
# Run the debug build inside gdb
|
2022-02-21 21:22:36 +00:00
|
|
|
.PHONY: gdb
|
|
|
|
gdb: dvieter
|
2022-04-15 09:38:06 +00:00
|
|
|
gdb --args ./dvieter -f vieter.toml server
|
2022-01-12 17:54:13 +00:00
|
|
|
|
2022-01-13 11:35:05 +00:00
|
|
|
# Optimised production build
|
2022-01-12 17:54:13 +00:00
|
|
|
.PHONY: prod
|
2022-01-13 11:35:05 +00:00
|
|
|
prod: pvieter
|
2023-01-12 11:26:12 +00:00
|
|
|
pvieter: $(SOURCES) libvieter
|
2022-01-13 11:35:05 +00:00
|
|
|
$(V) -o pvieter -prod $(SRC_DIR)
|
2022-01-12 17:54:13 +00:00
|
|
|
|
2022-01-27 20:47:25 +00:00
|
|
|
# Only generate C code
|
2022-01-12 20:50:17 +00:00
|
|
|
.PHONY: c
|
2023-01-12 11:26:12 +00:00
|
|
|
c: $(SOURCES) libvieter
|
2022-01-12 20:50:17 +00:00
|
|
|
$(V) -o vieter.c $(SRC_DIR)
|
|
|
|
|
2022-04-14 21:15:19 +00:00
|
|
|
|
2022-01-12 17:54:13 +00:00
|
|
|
# =====EXECUTION=====
|
2022-01-12 17:18:23 +00:00
|
|
|
# Run the server in the default 'data' directory
|
|
|
|
.PHONY: run
|
2022-01-13 11:35:05 +00:00
|
|
|
run: vieter
|
2022-04-14 21:15:19 +00:00
|
|
|
./vieter -f vieter.toml server
|
2022-01-11 17:19:41 +00:00
|
|
|
|
2022-01-12 20:22:23 +00:00
|
|
|
.PHONY: run-prod
|
|
|
|
run-prod: prod
|
2022-04-06 16:17:33 +00:00
|
|
|
./pvieter -f vieter.toml server
|
2022-01-09 08:29:11 +00:00
|
|
|
|
2022-04-14 21:15:19 +00:00
|
|
|
|
2022-04-30 21:24:07 +00:00
|
|
|
# =====DOCS=====
|
|
|
|
.PHONY: docs
|
|
|
|
docs:
|
|
|
|
rm -rf 'docs/public'
|
|
|
|
cd docs && hugo
|
|
|
|
|
|
|
|
.PHONY: api-docs
|
|
|
|
api-docs:
|
|
|
|
rm -rf '$(SRC_DIR)/_docs'
|
|
|
|
cd '$(SRC_DIR)' && v doc -all -f html -m -readme .
|
|
|
|
|
2022-06-01 11:59:52 +00:00
|
|
|
.PHONY: man
|
|
|
|
man: vieter
|
|
|
|
rm -rf man
|
|
|
|
./vieter man man
|
|
|
|
|
2022-04-30 21:24:07 +00:00
|
|
|
|
2022-01-12 17:54:13 +00:00
|
|
|
# =====OTHER=====
|
2023-01-12 11:26:12 +00:00
|
|
|
# Linting
|
2022-01-13 13:33:06 +00:00
|
|
|
.PHONY: lint
|
|
|
|
lint:
|
|
|
|
$(V) fmt -verify $(SRC_DIR)
|
2022-04-30 14:41:12 +00:00
|
|
|
$(V) vet -W $(SRC_DIR)
|
|
|
|
$(V_PATH) missdoc -p $(SRC_DIR)
|
|
|
|
@ [ $$($(V_PATH) missdoc -p $(SRC_DIR) | wc -l) = 0 ]
|
2022-01-13 13:33:06 +00:00
|
|
|
|
2023-01-12 11:26:12 +00:00
|
|
|
|
|
|
|
# Formatting
|
2022-01-09 08:29:11 +00:00
|
|
|
.PHONY: fmt
|
|
|
|
fmt:
|
2022-01-13 13:33:06 +00:00
|
|
|
$(V) fmt -w $(SRC_DIR)
|
2022-01-09 22:02:55 +00:00
|
|
|
|
2023-01-12 11:26:12 +00:00
|
|
|
|
|
|
|
# Testing
|
2022-04-10 14:17:50 +00:00
|
|
|
.PHONY: test
|
2023-01-18 17:10:47 +00:00
|
|
|
test: libvieter
|
2023-01-12 11:26:12 +00:00
|
|
|
$(V) -g test $(SRC_DIR)
|
|
|
|
|
2022-04-10 14:17:50 +00:00
|
|
|
|
2023-01-12 11:26:12 +00:00
|
|
|
# Cleaning
|
2022-04-29 08:34:12 +00:00
|
|
|
.PHONY: clean
|
2022-01-12 17:18:23 +00:00
|
|
|
clean:
|
2022-06-22 07:33:48 +00:00
|
|
|
rm -rf 'data' 'vieter' 'dvieter' 'pvieter' 'vieter.c' 'pkg' 'src/vieter' *.pkg.tar.zst 'suvieter' 'afvieter' '$(SRC_DIR)/_docs' 'docs/public'
|
2023-01-12 11:26:12 +00:00
|
|
|
make -C '$(SRC_DIR)/libvieter' clean
|
2022-04-14 21:15:19 +00:00
|
|
|
|
|
|
|
|
|
|
|
# =====EXPERIMENTAL=====
|
|
|
|
.PHONY: autofree
|
|
|
|
autofree: afvieter
|
|
|
|
afvieter: $(SOURCES)
|
2022-11-02 17:25:49 +00:00
|
|
|
$(V) -showcc -autofree -o afvieter $(SRC_DIR)
|
2022-04-14 21:15:19 +00:00
|
|
|
|
|
|
|
.PHONY: skip-unused
|
|
|
|
skip-unused: suvieter
|
|
|
|
suvieter: $(SOURCES)
|
2022-11-02 17:25:49 +00:00
|
|
|
$(V) -skip-unused -o suvieter $(SRC_DIR)
|