46 lines
1.3 KiB
Makefile
46 lines
1.3 KiB
Makefile
|
|
SRC := src/main.c src/util.c src/detect.c src/render.c
|
||
|
|
BUILD_DIR := build
|
||
|
|
BIN_NAME := pf.exe
|
||
|
|
BIN := $(BUILD_DIR)/$(BIN_NAME)
|
||
|
|
|
||
|
|
CC := wcl
|
||
|
|
|
||
|
|
# wcl glues the output name to -fe=; every other front-end takes "-o name".
|
||
|
|
# Compilation happens inside $(BUILD_DIR), hence the ../ prefixes.
|
||
|
|
ifeq ($(CC),wcl)
|
||
|
|
# -k4096: the default 2 KB stack overflows. SystemInfo is a ~900-byte
|
||
|
|
# local in main(), and load_logo/wrap_info_lines each add a 512-byte
|
||
|
|
# buffer beneath it. Small model shares one 64 KB DGROUP between the
|
||
|
|
# logo string literals, the stack and the near heap, so this is
|
||
|
|
# doubled rather than raised further.
|
||
|
|
CFLAGS ?= -q -bt=dos -ms -ox -k4096 -I../include
|
||
|
|
OUT := -fe=$(BIN_NAME)
|
||
|
|
else ifeq ($(CC),owcc)
|
||
|
|
CFLAGS ?= -bcl=dos -ms -O2 -I../include
|
||
|
|
OUT := -o $(BIN_NAME)
|
||
|
|
else
|
||
|
|
CFLAGS ?= -O2 -I../include
|
||
|
|
OUT := -o $(BIN_NAME)
|
||
|
|
endif
|
||
|
|
|
||
|
|
LDFLAGS ?=
|
||
|
|
|
||
|
|
.PHONY: all clean djgpp
|
||
|
|
|
||
|
|
all: $(BIN)
|
||
|
|
|
||
|
|
$(BUILD_DIR):
|
||
|
|
@mkdir -p $(BUILD_DIR)
|
||
|
|
|
||
|
|
$(BIN): $(SRC) | $(BUILD_DIR)
|
||
|
|
@cd $(BUILD_DIR) && $(CC) $(CFLAGS) $(addprefix ../,$(SRC)) $(LDFLAGS) $(OUT)
|
||
|
|
|
||
|
|
djgpp:
|
||
|
|
# No CFLAGS override: the fallback branch above already supplies
|
||
|
|
# -O2 -I../include, and the include path is required because the
|
||
|
|
# compile runs inside $(BUILD_DIR).
|
||
|
|
$(MAKE) CC=i586-pc-msdosdjgpp-gcc
|
||
|
|
|
||
|
|
clean:
|
||
|
|
@rm -rf $(BUILD_DIR) src/*.obj *.obj
|