emulator/Makefile

41 lines
982 B
Makefile

PREFIX=
CXX = $(PREFIX)g++
BUILD = .build
TARGET = emulator
OPT = g -g
DEFINE = -DCPU_Z80_STATIC -DCPU_Z80_USE_LOCAL_HEADER
CFLAGS = -Wall -Wextra -std=c++20 -flto -O$(OPT) $(DEFINE) -Iinclude `$(PREFIX)pkg-config --cflags sdl2` -Ilibs/z80/API/emulation/CPU -Ilibs/z/API
LDFLAGS = -Wall -Wextra -flto -O$(OPT) `$(PREFIX)pkg-config --libs sdl2` `$(PREFIX)pkg-config --libs SDL2_image`
SRC = \
src/main.cpp \
libs/z80/sources/Z80.c \
OBJ_1 = $(notdir $(SRC:.cpp=.o))
OBJ_2 = $(notdir $(OBJ_1:.c=.o))
OBJ = $(addprefix $(BUILD)/, $(OBJ_2))
# We can't use this as it will use the wrong main
# vpath %.c $(sort $(dir $(SRC)))
vpath %.cpp $(dir $(SRC))
vpath %.c $(dir $(SRC))
.PHONY: all clean
all: $(BUILD) $(BUILD)/$(TARGET)
$(BUILD)/%.o: %.cpp Makefile | $(BUILD)
$(CXX) -c $(CFLAGS) $< -o $@
$(BUILD)/%.o: %.c Makefile | $(BUILD)
$(CXX) -c $(CFLAGS) $< -o $@
$(BUILD)/$(TARGET): $(OBJ) Makefile
$(CXX) $(OBJ) -o $@ $(LDFLAGS)
$(BUILD):
mkdir $@
clean:
rm -fr $(BUILD)