50 lines
No EOL
1.6 KiB
Makefile
50 lines
No EOL
1.6 KiB
Makefile
# --- Détection de l'OS et Chemins ---
|
|
ifeq ($(OS),Windows_NT)
|
|
# Chemins Windows pour les outils (utilisés par WSL)
|
|
WATCOM := D:/WatCom
|
|
NASM := C:/Program Files/NASM/nasm.exe
|
|
CC := $(WATCOM)/binnt64/wcc386.exe
|
|
AS := $(NASM)
|
|
LINK := $(WATCOM)/binnt64/wlink.exe
|
|
FIX_PATH = $(subst /,\,$1)
|
|
else
|
|
# Chemins Debian (à adapter selon ton install Linux)
|
|
WATCOM := /opt/watcom
|
|
CC := $(WATCOM)/binl64/wcc386
|
|
AS := nasm
|
|
LINK := $(WATCOM)/binl64/wlink
|
|
FIX_PATH = $1
|
|
endif
|
|
|
|
# --- Configuration ---
|
|
INC_DIRS := -i="$(WATCOM)/h" -i="$(WATCOM)/CustomH"
|
|
LIB_DIRS := libpath "$(WATCOM)/lib386" libpath "$(WATCOM)/lib386/dos" libpath "$(WATCOM)/CustomLib"
|
|
CFLAGS := -bt=dos -6r -fp6 -ox -oh -ot -ei -zp8 $(INC_DIRS)
|
|
LFLAGS := system dos4g $(LIB_DIRS)
|
|
|
|
# --- Détection AUTOMATIQUE des sources ---
|
|
# Cherche récursivement tous les .cpp, .c et .asm dans src/
|
|
SRC_CPP := $(shell find src -name "*.cpp")
|
|
SRC_ASM := $(shell find src -name "*.asm")
|
|
|
|
# Génère la liste des objets correspondants dans build/
|
|
OBJS := $(patsubst src/%.cpp, build/%.obj, $(SRC_CPP))
|
|
OBJS += $(patsubst src/%.asm, build/%.obj, $(SRC_ASM))
|
|
|
|
# --- Règles ---
|
|
all: build/app.exe
|
|
|
|
# Création du dossier build miroir de src
|
|
build/%.obj: src/%.cpp
|
|
@mkdir -p $(dir $@)
|
|
$(CC) $(CFLAGS) $< -fo=$(call FIX_PATH,$@)
|
|
|
|
build/%.obj: src/%.asm
|
|
@mkdir -p $(dir $@)
|
|
$(AS) -f obj $< -o $(call FIX_PATH,$@)
|
|
|
|
build/app.exe: $(OBJS)
|
|
$(LINK) $(LFLAGS) name $(call FIX_PATH,$@) file {$(foreach f,$(OBJS),$(call FIX_PATH,$f))}
|
|
|
|
clean:
|
|
rm -rf build/*
|