aboutsummaryrefslogtreecommitdiff
path: root/Makefile
blob: 1b87677b42c38bf4481f3363055ed1d16c5247ed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
IDIR=include
CFLAGS=-O3 -ffast-math -Wall -Wextra -Wpedantic -std=c99 -D_DEFAULT_SOURCE $(DEFINES) -I$(IDIR)
NATIVE_FLAGS=-march=native

CAND_SRCS=$(wildcard include/cand_*.c)
SRCS=$(filter-out include/lcdlib.c $(CAND_SRCS),$(wildcard include/*.c))
OBJS=$(SRCS:.c=.o)

BUILDROOT_DIR=buildroot-2020.11.1
CROSS_CC=$(BUILDROOT_DIR)/output/host/bin/arm-linux-cc
CROSS_STRIP=$(BUILDROOT_DIR)/output/host/bin/arm-linux-strip

.DEFAULT_GOAL=native

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

geminict: src/geminict.o $(OBJS)
	$(CC) $(CFLAGS) src/geminict.o $(OBJS) -o geminict

ctlm: src/ctlm.o $(OBJS)
	$(CC) $(CFLAGS) src/ctlm.o $(OBJS) -o ctlm

cttei: src/cttei.o $(OBJS)
	$(CC) $(CFLAGS) src/cttei.o $(OBJS) -o cttei

clean:
	rm -f ctlm ct1986 cttei geminict selfplay*
	rm -f src/*.o include/*.o

native: CFLAGS += $(NATIVE_FLAGS)
native: ctlm cttei geminict

cand_a = $(word 1,$(subst -, ,$1))
cand_b = $(word 2,$(subst -, ,$1))

.PHONY: selfplay-%
selfplay-%:
	rm -f selfplay-%
	rm -f src/*.o include/*.o
	$(MAKE) SELFPLAY_OUT=$@ \
	  DEFINES="-DRECORD_PV -DCAND_A=$(call cand_a,$*) -DCAND_B=$(call cand_b,$*) \
				-DCAND_A_WEIGHTS_5='\"cand_$(call cand_a,$*)_weights_5.c\"' \
				-DCAND_B_WEIGHTS_5='\"cand_$(call cand_b,$*)_weights_5.c\"' \
				-DCAND_A_WEIGHTS_6='\"cand_$(call cand_a,$*)_weights_6.c\"' \
				-DCAND_B_WEIGHTS_6='\"cand_$(call cand_b,$*)_weights_6.c\"'" \
	  selfplay-bin

SELFPLAY_OUT ?= selfplay
selfplay-bin: CFLAGS += $(NATIVE_FLAGS)
selfplay-bin: src/selfplay.o $(OBJS)
	$(CC) $(CFLAGS) src/selfplay.o $(OBJS) -o $(SELFPLAY_OUT)

$(CROSS_CC):
	./resources/do_buildroot.sh $(BUILDROOT_DIR)

ct1986: CC=$(CROSS_CC)
ct1986: STRIP=$(CROSS_STRIP)
ct1986: $(CROSS_CC) clean src/ct1986.o include/lcdlib.o $(OBJS)
	$(CC) $(CFLAGS) src/ct1986.o $(OBJS) include/lcdlib.o -o ct1986 -lcurses
	$(STRIP) ct1986

pi: CC=$(CROSS_CC)
pi: STRIP=$(CROSS_STRIP)
pi: $(CROSS_CC) ct1986 ctlm
	mkdir -p $(BUILDROOT_DIR)/board/raspberrypi0/rootfs_overlay/usr/bin/
	cp ct1986 ctlm $(BUILDROOT_DIR)/board/raspberrypi0/rootfs_overlay/usr/bin/
	cp resources/ash-profile $(BUILDROOT_DIR)/board/raspberrypi0/rootfs_overlay/.profile
	make -C $(BUILDROOT_DIR)
	$(info Image ready in $(BUILDROOT_DIR)/output/images/sdcard.img)