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 on the pattern alone does not force the recipe when the binary # already exists; the FORCE prerequisite does .PHONY: selfplay-% FORCE selfplay-%: FORCE rm -f selfplay-% rm -f src/*.o include/negamax.o include/pv.o include/tt.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)