Chuli 0f75401660 yippee!!!
fixes platform-itembox bugs and makes platform hurt use touch
also makes v5u the default i don't rmemeber doing that
2023-01-25 14:11:26 -06:00

137 lines
2.8 KiB
Makefile

.DEFAULT_GOAL := all
PKGCONFIG = pkg-config
STRIP ?= strip
STATIC ?= 0
DEBUG ?= 1
VERBOSE ?= 0
PROFILE ?= 0
GAME_NAME ?= SonicMania
GAME_SUFFIX ?= .so
GAME_ALLC ?= 1
GAME_CFLAGS =
GAME_LDFLAGS = -shared
GAME_LIBS =
GAME_PREBUILD =
GAME_PRELINK =
GAME_POSTLINK =
DEFINES =
RETRO_REVISION ?= 3
RSDK_REVISION ?= $(RETRO_REVISION)
# =============================================================================
# Detect default platform if not explicitly specified
# =============================================================================
ifeq ($(OS),Windows_NT)
PLATFORM ?= Windows
else
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Linux)
PLATFORM ?= Linux
endif
ifeq ($(UNAME_S),Darwin)
PLATFORM ?= macOS
endif
endif
PLATFORM ?= Unknown
# =============================================================================
ifneq ("$(wildcard makefiles/$(PLATFORM).cfg)","")
include makefiles/$(PLATFORM).cfg
endif
OUTDIR = bin/$(PLATFORM)
GAME_OBJDIR = bin/obj/$(PLATFORM)/$(GAME_NAME)
# =============================================================================
CFLAGS ?= $(CXXFLAGS)
DEFINES += -DBASE_PATH='"$(BASE_PATH)"'
ifeq ($(DEBUG),1)
CXXFLAGS += -g
CFLAGS += -g
STRIP = :
else
CXXFLAGS += -O3
CFLAGS += -O3
endif
ifeq ($(STATIC),1)
CXXFLAGS += -static
CFLAGS += -static
endif
ifeq ($(PROFILE),1)
CXXFLAGS += -pg -g -fno-inline-functions -fno-inline-functions-called-once -fno-optimize-sibling-calls -fno-default-inline
CFLAGS += -pg -g -fno-inline-functions -fno-inline-functions-called-once -fno-optimize-sibling-calls -fno-default-inline
endif
ifeq ($(VERBOSE),0)
CC := @$(CC)
CXX := @$(CXX)
endif
DEFINES += -DRETRO_STANDALONE=1
DEFINES += -DRETRO_REVISION=$(RSDK_REVISION)
CFLAGS_ALL += $(CFLAGS) \
-fsigned-char
CXXFLAGS_ALL += $(CXXFLAGS) \
-std=c++17 \
-fsigned-char \
-fpermissive
LDFLAGS_ALL = $(LDFLAGS)
GAME_INCLUDES = \
-I./$(GAME_NAME)/ \
-I./$(GAME_NAME)/Objects/
GAME_SOURCES = \
$(GAME_NAME)/Game
ifeq ($(GAME_ALLC),1)
GAME_SOURCES += $(GAME_NAME)/Objects/All
else
# execute Game/objectmake.py?
include $(GAME_NAME)/Objects.cfg
endif
$(shell mkdir -p $(OUTDIR))
GAME_OBJECTS += $(addprefix $(GAME_OBJDIR)/, $(addsuffix .o, $(GAME_SOURCES)))
GAME_PATH = $(OUTDIR)/$(GAME_NAME)$(GAME_SUFFIX)
$(shell mkdir -p $(GAME_OBJDIR))
$(GAME_OBJDIR)/%.o: $(GAME_PREBUILD) %.c
@mkdir -p $(@D)
@echo compiling $<...
$(CC) -c -fPIC $(CFLAGS_ALL) $(GAME_FLAGS) $(GAME_INCLUDES) $(DEFINES) $< -o $@
@echo done $<
$(GAME_PATH): $(GAME_PRELINK) $(GAME_OBJECTS)
@echo linking game...
$(CXX) $(CXXFLAGS_ALL) $(LDFLAGS_ALL) $(GAME_LDFLAGS) $(GAME_OBJECTS) $(GAME_LIBS) -o $@
$(STRIP) $@
@echo done linking game
all: $(GAME_POSTLINK) $(GAME_PATH)
clean:
rm -rf $(GAME_OBJDIR) && rm -rf $(GAME_PATH)