# /!\ Warning /!\ # Parallel build doesn't work with w64devkit OUTNAME = flisp CFLAGS = -O0 -Wall -Wextra -g -pipe -Wno-cast-function-type CC = gcc LDFLAGS_UNIX = -lm LDFLAGS_WIN = -lm # ===== End of what should be edited ===== OUTPUT = "${OUTNAME}.amd64" LDFLAGS = $(LDFLAGS_UNIX) BUILD_DIR = build SRC_DIR = src OBJS = $(patsubst $(SRC_DIR)/%.c,build-tmp/%.o,$(wildcard $(SRC_DIR)/*.c)) all: | builddir yacc build builddir2 windef: $(eval OUTPUT = "$(OUTNAME).exe") $(eval BUILD_DIR = build-win) $(eval LDFLAGS = $(LDFLAGS_WIN)) $(eval CFLAGS += -mno-ms-bitfields -D win) builddir: @- mkdir $(BUILD_DIR) @- mkdir build-tmp @- rm -rf $(wildcard build-tmp/*) @- mv $(wildcard $(BUILD_DIR)/*.o) build-tmp/ yacc: src/parser.y src/parser.l cd src && yacc -d -g parser.y && lex parser.l $(CC) -c src/y.tab.c -o build-tmp/y.tab.o $(CFLAGS) $(CC) -c src/lex.yy.c -o build-tmp/lex.yy.o $(CFLAGS) build-tmp/%.o : $(SRC_DIR)/%.c ${CC} -c $< -o $@ ${CFLAGS} build: $(OBJS) ${CC} ${CFLAGS} -o ${OUTPUT} $(OBJS) ${LDFLAGS} builddir2: @mv $(OBJS) $(BUILD_DIR) @rm -rf build-tmp win: | windef all testwin: win ./$(OUTPUT) test: all @echo "===== Program output =====" @./${OUTPUT} clean: - rm -rf ${BUILD_DIR} - rm -rf build-win - rm -rf build-tmp - rm "$(OUTNAME).amd64" "$(OUTNAME).exe" - rm src/lex.yy.c src/y.tab.c src/y.tab.h .NOTPARALLEL: builddir yacc builddir2 .PHONY: all test clean win windef builddir builddir2 testwin yacc