pastfetch/Makefile
randogoth 19991bee2a init
2026-08-31 16:01:14 +03:00

45 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