shithub: moonfish

ref: ba6a1b8703da4226a03f377f9f519162a1c05cab
dir: /makefile/

View raw version
# moonfish's license: 0BSD
# copyright 2025 zamfofex

.POSIX:
.PHONY: all check clean install
.SUFFIXES:
.SUFFIXES: .c .o

CFLAGS = -O3 -Wall -Wextra -Wpedantic
PREFIX = /usr/local
BINDIR = $(PREFIX)/bin
RM = rm -f

# hack for BSD Make
# (ideally, '$^' should be used directly instead)
.ALLSRC ?= $^

tool_obj = tools/utils.o tools/https.o tools/pgn.o tools/lichess.o tools/analyse.o tools/chat.o tools/perft.o
obj = chess.o search.o main.o

moonfish_libs = -lm -pthread -latomic
lichess_libs = -pthread -ltls -lssl -lcrypto -lcjson
analyse_libs = -pthread
chat_libs = -ltls -lssl -lcrypto

all: moonfish lichess analyse chat

moonfish: $(obj)
lichess analyse chat perft: chess.o tools/utils.o
lichess: tools/lichess.o tools/https.o
analyse: tools/analyse.o tools/pgn.o
chat: tools/chat.o tools/https.o
perft: tools/perft.o

$(obj): moonfish.h
$(tool_obj): moonfish.h tools/tools.h
tools/https.o: tools/https.h

moonfish lichess analyse chat perft:
	$(CC) $(LDFLAGS) -o $@ $(.ALLSRC) $($@_libs)

.c.o:
	$(CC) $(CFLAGS) -o $@ -c $<

check: moonfish perft
	scripts/check.sh

clean:
	git clean -fdx

install: all
	install -D -m 755 moonfish $(DESTDIR)$(BINDIR)/moonfish
	install -D -m 755 lichess $(DESTDIR)$(BINDIR)/moonfish-lichess
	install -D -m 755 analyse $(DESTDIR)$(BINDIR)/moonfish-analyse
	install -D -m 755 chat $(DESTDIR)$(BINDIR)/moonfish-chat