# Makefile - GNU make only. # # Copyright (C) 2021 Bruno Raoult ("br") # Licensed under the GNU General Public License v3.0 or later. # Some rights reserved. See COPYING. # * You should have received a copy of the GNU General Public License along with this # program. If not, see . # # SPDX-License-Identifier: GPL-3.0-or-later # BINDIR := ./bin SRCDIR := ./src OBJDIR := ./obj DEPS := make.deps SRC=$(wildcard $(SRCDIR)/*.c) INC=$(wildcard $(SRCDIR)/*.h) SRC_S=$(notdir $(SRC)) CC=gcc .SECONDEXPANSION: OBJ=$(addprefix $(OBJDIR)/,$(SRC_S:.c=.o)) BIN=fen pool piece move debug CFLAGS += -std=gnu99 FLAGS += -O2 CFLAGS += -g CFLAGS += -Wall CFLAGS += -Wextra CFLAGS += -march=native #CFLAGS += -pedantic #CFLAGS += -Wno-pointer-arith #CFLAGS += -Werror CFLAGS += -Wmissing-declarations ##################################### DEBUG flags CFLAGS += -DDEBUG # global CFLAGS += -DDEBUG_POOL # memory pools management CFLAGS += -DDEBUG_FEN # FEN decoding CFLAGS += -DDEBUG_MOVE # move generation #CFLAGS += -DDEBUG_MAINSLEEP # sleep 1 sec within main loop (SIGINTR test) #CFLAGS += -DDEBUG_EVAL2 # eval 2 #CFLAGS += -DDEBUG_EVAL3 # eval 3 #CFLAGS += -DDEBUG_MEM # malloc all: $(OBJ) $(BIN) @echo CFLAGS used: $(CFLAGS) $(DEPS): $(SRC) $(INC) @echo generating dependancies. @$(CC) -MM $(SRC) > $@ @sed -i "s|\(.*\.o\):|${OBJDIR}/\0:|" $@ include $(DEPS) .PHONY: clean clean: rm -rf $(OBJ) core $(BIN) $(DEPS) #$(OBJ): $(OBJDIR)/%.o: $(SRCDIR)/%.c # @mkdir -p $(@D) # $(CC) -c $(CFLAGS) -o $@ $< $(OBJDIR)/%.o: $(SRCDIR)/%.c @mkdir -p $(@D) @echo compiling $@. @$(CC) -c $(CFLAGS) -o $@ $< #fen: CFLAGS+=-DBIN_$$@ $(BIN): $$(subst $(OBJDIR)/$$@.o,,$(OBJ)) $(SRCDIR)/$$@.c @echo compiling $@. @$(CC) -DBIN_$@ $(CFLAGS) $^ -o $@ #pool: CFLAGS+=-DPOOLBIN #pool: $$(subst $(OBJDIR)/$$@.o,,$(OBJ)) $(SRCDIR)/$$@.c # $(CC) $(CFLAGS) $^ -o $@ # piece: CFLAGS+=-DPIECEBIN # piece: $$(subst $(OBJDIR)/$$@.o,,$(OBJ)) $(SRCDIR)/$$@.c # $(CC) $(CFLAGS) $^ -o $@ # move: CFLAGS+=-DMOVEBIN # move: $$(subst $(OBJDIR)/$$@.o,,$(OBJ)) $(SRCDIR)/$$@.c # $(CC) $(CFLAGS) $^ -o $@ # debug: CFLAGS+=-DDEBUGBIN # debug: $$(subst $(OBJDIR)/$$@.o,,$(OBJ)) $(SRCDIR)/$$@.c # $(CC) $(CFLAGS) $^ -o $@ .PHONY: bits bits: test/bits.c $(CC) $(CFLAGS) -S $^ -o $@.s $(CC) -DFOO $(CFLAGS) $^ -o $@