From 6291643ff88e50579bdbd0823b2b1846c9fd6d09 Mon Sep 17 00:00:00 2001 From: EuAndreh Date: Thu, 16 May 2024 11:58:57 -0300 Subject: Initial implementation: include code from papod --- Makefile | 104 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 Makefile (limited to 'Makefile') diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..fdf1423 --- /dev/null +++ b/Makefile @@ -0,0 +1,104 @@ +.POSIX: +DATE = 1970-01-01 +VERSION = 0.1.0 +NAME = gobang +NAME_UC = $(NAME) +LANGUAGES = en +## Installation prefix. Defaults to "/usr". +PREFIX = /usr +BINDIR = $(PREFIX)/bin +LIBDIR = $(PREFIX)/lib +INCLUDEDIR = $(PREFIX)/include +LIBDDIR = $(PREFIX)/lib/$(NAME) +SRCDIR = $(PREFIX)/src/$(NAME) +SHAREDIR = $(PREFIX)/share +LOCALEDIR = $(SHAREDIR)/locale +MANDIR = $(SHAREDIR)/man +EXEC = ./ +## Where to store the installation. Empty by default. +DESTDIR = +LDLIBS = + + + +.SUFFIXES: +.SUFFIXES: .go .bin + + + +sources = \ + src/lib.go \ + src/cmd/main.go \ + + +derived-assets = \ + $(NAME).bin \ + tests/lib_test.bin \ + +side-assets = \ + + + +## Default target. Builds all artifacts required for testing +## and installation. +all: $(derived-assets) + + +$(NAME).bin: src/lib.go src/cmd/main.go Makefile + go build -o $@ -v src/cmd/main.go + +tests/lib_test.bin: src/lib.go tests/lib_test.go Makefile + go test -c -o $@ -v $*.go + + + +check-unit: tests/lib_test.bin + ./tests/lib_test.bin + + +integration-tests = \ + tests/cli-opts.sh \ + +$(integration-tests): $(NAME).bin ALWAYS + sh $@ $(EXEC)$(NAME).bin + +check-integration: $(integration-tests) + + +## Run all tests. Each test suite is isolated, so that a parallel +## build can run tests at the same time. The required artifacts +## are created if missing. +check: check-unit check-integration + + + +## Remove *all* derived artifacts produced during the build. +## A dedicated test asserts that this is always true. +clean: + rm -rf $(derived-assets) $(side-assets) + + +## Installs into $(DESTDIR)$(PREFIX). Its dependency target +## ensures that all installable artifacts are crafted beforehand. +install: all + mkdir -p \ + '$(DESTDIR)$(BINDIR)' \ + + cp $(NAME).bin '$(DESTDIR)$(BINDIR)'/$(NAME) + for f in $(sources); do \ + dir='$(DESTDIR)$(SRCDIR)'/"`dirname "$${f#src/}"`"; \ + mkdir -p "$$dir"; \ + cp -P "$$f" "$$dir"; \ + done + +## Uninstalls from $(DESTDIR)$(PREFIX). This is a perfect mirror +## of the "install" target, and removes *all* that was installed. +## A dedicated test asserts that this is always true. +uninstall: + rm -rf \ + '$(DESTDIR)$(BINDIR)'/$(NAME) \ + '$(DESTDIR)$(LIBDDIR)' \ + '$(DESTDIR)$(SRCDIR)' \ + + +ALWAYS: -- cgit v1.2.3