SHORT_PLATFORM = linux ifeq ($(PLATFORM),win64) CROSS_COMPILE = x86_64-w64-mingw32- EXTENSION = .exe SHORT_PLATFORM = win LDFLAGS += -lSDL2 else ifeq ($(PLATFORM),win32) CROSS_COMPILE = i686-w64-mingw32- EXTENSION = .exe SHORT_PLATFORM = win LDFLAGS += -lSDL2 else CFLAGS += $(shell sdl2-config --cflags) LDFLAGS += $(shell sdl2-config --libs) endif ifneq ($(PLATFORM),) PLAT_SUFFIX = -$(PLATFORM) endif CC = $(CROSS_COMPILE)gcc LD = $(CC) RFLAGS += -O3 -s RFLAGS += -DSTANDALONE DFLAGS += -g #DFLAGS += -DDEBUG_MAPPER #DFLAGS += -DDEBUG_RENDER #DFLAGS += -DDEBUG_PPU -DDEBUG_VRAM -DDEBUG_OAM #DFLAGS += -DDEBUG_APU #DFLAGS += -DDEBUG_INPUT #DFLAGS += -DE6502_DEBUG CFLAGS += -DE6502_ILLEGAL CFLAGS += $(PFLAGS) -Wall -Werror -Wshadow -Wunused -I../ -Isrc/ CFLAGS += -Iinc/$(PLATFORM)/SDL2 LDFLAGS += $(PFLAGS) LDFLAGS += -Llib/$(PLATFORM) OBJDIR = obj$(PLAT_SUFFIX) SRCDIR = src BINDIR = bin$(PLAT_SUFFIX) # nese TARGET_1 = nese$(EXTENSION) SRC_SRCS_1 = nese.c ines.c SRC_SRCS_1 += nes.c ppu.c input.c SRC_SRCS_1 += cart.c mapper.c SRC_SRCS_1 += apu.c audio.c SRC_SRCS_1 += file.c save.c SRC_SRCS_1 += overlay.c menu.c SRC_SRCS_1 += state.c ini.c SRC_SRCS_1 += compat.c SRC_SRCS_1 += sdl_render.c sdl_input.c sdl_audio.c sdl_timer.c SRC_SRCS_1 += sdl_overlay.c sdl_effect.c PLAT_SRCS_1 = filemap.c MAPDIR = src/map MAP_SRCS_1 = nrom.c mmc1.c uxrom.c cnrom.c mmc3.c EXT_SRCS_1 = e6502/e6502.c e6502/opcodes.c blip-buf/blip_buf.c SRCS_1 = $(SRC_SRCS_1:%=$(SRCDIR)/%) SRCS_1 += $(MAP_SRCS_1:%=$(MAPDIR)/%) SRCS_1 += $(PLAT_SRCS_1:%=src/$(SHORT_PLATFORM)/%) SRCS_1 += $(EXT_SRCS_1) OBJS_1 = $(SRCS_1:%.c=$(OBJDIR)/%.o) all: debug debug: EFLAGS=$(DFLAGS) release: EFLAGS=$(RFLAGS) debug release: $(BINDIR)/$(TARGET_1) clean: ; rm -rf obj*/ bin*/ $(BINDIR)/$(TARGET_1): $(OBJS_1) @mkdir -p $(@D) $(LD) $^ $(LDFLAGS) -o $@ $(OBJDIR)/%.o: %.c @mkdir -p $(@D) $(CC) $(EFLAGS) $(CFLAGS) -c $< -o $@ .PHONY: all debug release clean