vieter/Makefile

112 lines
2.1 KiB
Makefile
Raw Normal View History

# =====CONFIG=====
SRC_DIR := src
SRCS != find '$(SRC_DIR)' -iname '*.v'
V_PATH ?= v
2022-12-22 23:10:10 +01:00
V := $(V_PATH) -showcc -gc boehm -W -d use_openssl -skip-unused
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=====
.PHONY: libvieter
libvieter:
CFLAGS='-O3' make -C '$(SRC_DIR)/libvieter'
2022-01-13 12:35:05 +01:00
# Regular binary
vieter: $(SOURCES) libvieter
2022-01-13 12:35:05 +01:00
$(V) -g -o vieter $(SRC_DIR)
# Debug build using gcc
# 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) libvieter
$(V_PATH) -showcc -keepc -cg -o dvieter $(SRC_DIR)
# Run the debug build inside gdb
.PHONY: gdb
gdb: dvieter
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) libvieter
2022-01-13 12:35:05 +01:00
$(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
c: $(SOURCES) libvieter
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=====
# 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-12 21:22:23 +01:00
.PHONY: run-prod
run-prod: prod
./pvieter -f vieter.toml server
2022-04-14 23:15:19 +02:00
2022-04-30 23:24:07 +02: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 .
.PHONY: man
man: vieter
rm -rf man
./vieter man man
2022-04-30 23:24:07 +02:00
2022-01-12 18:54:13 +01:00
# =====OTHER=====
2023-01-15 18:01:26 +01:00
# Linting
2022-01-13 14:33:06 +01:00
.PHONY: lint
lint:
2022-01-13 14:33:06 +01:00
$(V) fmt -verify $(SRC_DIR)
$(V) vet -W $(SRC_DIR)
$(V_PATH) missdoc -p $(SRC_DIR)
@ [ $$($(V_PATH) missdoc -p $(SRC_DIR) | wc -l) = 0 ]
2022-01-13 14:33:06 +01:00
2023-01-15 18:01:26 +01:00
# Formatting
.PHONY: fmt
fmt:
2022-01-13 14:33:06 +01:00
$(V) fmt -w $(SRC_DIR)
2022-01-09 23:02:55 +01:00
2023-01-15 18:01:26 +01:00
# Testing
.PHONY: test
2023-01-18 18:10:47 +01:00
test: libvieter
$(V) -g test $(SRC_DIR)
2023-01-15 18:01:26 +01:00
# Cleaning
.PHONY: clean
clean:
rm -rf 'data' 'vieter' 'dvieter' 'pvieter' 'vieter.c' 'pkg' 'src/vieter' *.pkg.tar.zst 'suvieter' 'afvieter' '$(SRC_DIR)/_docs' 'docs/public'
make -C '$(SRC_DIR)/libvieter' clean
2022-04-14 23:15:19 +02:00
# =====EXPERIMENTAL=====
.PHONY: autofree
autofree: afvieter
afvieter: $(SOURCES)
$(V) -showcc -autofree -o afvieter $(SRC_DIR)
2022-04-14 23:15:19 +02:00
.PHONY: skip-unused
skip-unused: suvieter
suvieter: $(SOURCES)
$(V) -skip-unused -o suvieter $(SRC_DIR)