You've already forked RSDKv5-Decompilation
mirror of
https://github.com/izzy2lost/RSDKv5-Decompilation.git
synced 2026-03-26 16:42:45 -07:00
284 lines
6.2 KiB
Makefile
284 lines
6.2 KiB
Makefile
.DEFAULT_GOAL := all
|
|
|
|
PKGCONFIG = pkg-config
|
|
STRIP ?= strip
|
|
|
|
STATIC ?= 1
|
|
DEBUG ?= 1
|
|
VERBOSE ?= 0
|
|
PROFILE ?= 0
|
|
|
|
RSDK_ONLY ?= 0
|
|
|
|
RETRO_REVISION ?= 3
|
|
RSDK_REVISION ?= $(RETRO_REVISION)
|
|
|
|
ifeq ($(RSDK_REVISION),3)
|
|
RSDK_NAME = RSDKv5U
|
|
else
|
|
RSDK_NAME = RSDKv5
|
|
endif
|
|
RSDK_SUFFIX =
|
|
USERTYPE ?= Dummy
|
|
|
|
RSDK_CFLAGS =
|
|
RSDK_LDFLAGS =
|
|
RSDK_LIBS =
|
|
|
|
RSDK_PREBUILD =
|
|
RSDK_PRELINK =
|
|
|
|
STATICGAME ?= 0
|
|
|
|
ifeq ($(RSDK_ONLY),0)
|
|
GAME_NAME ?= Game
|
|
GAME_SUFFIX ?= .so
|
|
GAME_ALLC ?= 1
|
|
|
|
GAME_CFLAGS =
|
|
GAME_LDFLAGS = -shared
|
|
GAME_LIBS =
|
|
|
|
GAME_PREBUILD =
|
|
GAME_PRELINK =
|
|
endif
|
|
|
|
DEFINES ?=
|
|
|
|
ifneq ($(AUTOBUILD),)
|
|
DEFINES += -DRSDK_AUTOBUILD
|
|
endif
|
|
|
|
|
|
# =============================================================================
|
|
# 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
|
|
|
|
# =============================================================================
|
|
|
|
RSDK_SOURCES =
|
|
|
|
ifneq ("$(wildcard makefiles/$(PLATFORM).cfg)","")
|
|
include makefiles/$(PLATFORM).cfg
|
|
endif
|
|
|
|
DEFINES += -DRSDK_USE_$(SUBSYSTEM)
|
|
|
|
OUTDIR = bin/$(PLATFORM)/$(SUBSYSTEM)
|
|
RSDK_OBJDIR = bin/obj/$(PLATFORM)/$(SUBSYSTEM)/RSDKv5
|
|
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
|
|
|
|
ifeq ($(STATICGAME),0)
|
|
DEFINES += -DRETRO_STANDALONE=1
|
|
else
|
|
DEFINES += -DRETRO_STANDALONE=0
|
|
endif
|
|
|
|
DEFINES += -DRETRO_REVISION=$(RSDK_REVISION)
|
|
|
|
ifeq ($(RSDK_REVISION),1)
|
|
DEFINES += -DMANIA_PREPLUS=1
|
|
endif
|
|
|
|
CFLAGS_ALL += $(CFLAGS) \
|
|
-fsigned-char
|
|
|
|
CXXFLAGS_ALL += $(CXXFLAGS) \
|
|
-std=c++17 \
|
|
-fsigned-char \
|
|
-fpermissive
|
|
|
|
LDFLAGS_ALL = $(LDFLAGS)
|
|
|
|
RSDK_INCLUDES += \
|
|
-I./RSDKv5/ \
|
|
-I./dependencies/all/ \
|
|
-I./dependencies/all/tinyxml2/ \
|
|
-I./dependencies/all/iniparser/
|
|
|
|
# Main Sources
|
|
RSDK_SOURCES += \
|
|
RSDKv5/main \
|
|
RSDKv5/RSDK/Core/RetroEngine \
|
|
RSDKv5/RSDK/Core/Math \
|
|
RSDKv5/RSDK/Core/Reader \
|
|
RSDKv5/RSDK/Core/Link \
|
|
RSDKv5/RSDK/Core/ModAPI \
|
|
RSDKv5/RSDK/Dev/Debug \
|
|
RSDKv5/RSDK/Storage/Storage \
|
|
RSDKv5/RSDK/Storage/Text \
|
|
RSDKv5/RSDK/Graphics/Drawing \
|
|
RSDKv5/RSDK/Graphics/Scene3D \
|
|
RSDKv5/RSDK/Graphics/Animation \
|
|
RSDKv5/RSDK/Graphics/Sprite \
|
|
RSDKv5/RSDK/Graphics/Palette \
|
|
RSDKv5/RSDK/Graphics/Video \
|
|
RSDKv5/RSDK/Audio/Audio \
|
|
RSDKv5/RSDK/Input/Input \
|
|
RSDKv5/RSDK/Scene/Scene \
|
|
RSDKv5/RSDK/Scene/Collision \
|
|
RSDKv5/RSDK/Scene/Object \
|
|
RSDKv5/RSDK/Scene/Objects/DefaultObject \
|
|
RSDKv5/RSDK/Scene/Objects/DevOutput \
|
|
RSDKv5/RSDK/User/Core/UserAchievements \
|
|
RSDKv5/RSDK/User/Core/UserCore \
|
|
RSDKv5/RSDK/User/Core/UserLeaderboards \
|
|
RSDKv5/RSDK/User/Core/UserPresence \
|
|
RSDKv5/RSDK/User/Core/UserStats \
|
|
RSDKv5/RSDK/User/Core/UserStorage \
|
|
dependencies/all/tinyxml2/tinyxml2 \
|
|
dependencies/all/iniparser/iniparser \
|
|
dependencies/all/iniparser/dictionary \
|
|
dependencies/all/miniz/miniz
|
|
|
|
ifeq ($(RSDK_ONLY),0)
|
|
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
|
|
endif
|
|
|
|
RSDK_PATH = $(OUTDIR)/$(RSDK_NAME)$(RSDK_SUFFIX)
|
|
|
|
PKG_NAME ?= $(RSDK_NAME)
|
|
PKG_SUFFIX ?= $(RSDK_SUFFIX)
|
|
PKG_PATH = $(OUTDIR)/$(PKG_NAME)$(PKG_SUFFIX)
|
|
|
|
RSDK_OBJECTS += $(addprefix $(RSDK_OBJDIR)/, $(addsuffix .o, $(RSDK_SOURCES)))
|
|
|
|
$(shell mkdir -p $(OUTDIR))
|
|
$(shell mkdir -p $(RSDK_OBJDIR))
|
|
|
|
ifeq ($(RSDK_ONLY),0)
|
|
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 $<
|
|
endif
|
|
|
|
$(RSDK_OBJDIR)/%.o: %.c
|
|
@mkdir -p $(@D)
|
|
@echo compiling $<...
|
|
$(CC) -c $(CFLAGS_ALL) $(RSDK_CFLAGS) $(RSDK_INCLUDES) $(DEFINES) $< -o $@
|
|
@echo done $<
|
|
|
|
$(RSDK_OBJDIR)/%.o: $(RSDK_PREBUILD) %.cpp
|
|
@mkdir -p $(@D)
|
|
@echo compiling $<...
|
|
$(CXX) -c $(CXXFLAGS_ALL) $(RSDK_CFLAGS) $(RSDK_INCLUDES) $(DEFINES) $< -o $@
|
|
@echo done $<
|
|
|
|
ifeq ($(STATICGAME),1)
|
|
$(RSDK_PATH): $(RSDK_PRELINK) $(RSDK_OBJECTS) $(GAME_OBJECTS)
|
|
@echo linking...
|
|
$(CXX) $(CXXFLAGS_ALL) $(LDFLAGS_ALL) $(RSDK_LDFLAGS) $(RSDK_OBJECTS) $(GAME_OBJECTS) $(RSDK_LIBS) $(GAME_LIBS) -o $@
|
|
$(STRIP) $@
|
|
@echo done
|
|
else # STATICGAME
|
|
$(RSDK_PATH): $(RSDK_PRELINK) $(RSDK_OBJECTS)
|
|
@echo linking RSDK...
|
|
$(CXX) $(CXXFLAGS_ALL) $(LDFLAGS_ALL) $(RSDK_LDFLAGS) $(RSDK_OBJECTS) $(RSDK_LIBS) -o $@
|
|
$(STRIP) $@
|
|
@echo done linking RSDK
|
|
ifeq ($(RSDK_ONLY),0)
|
|
$(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
|
|
endif # RSDK_ONLY
|
|
endif # STATICGAME
|
|
|
|
|
|
ifeq ($(RSDK_PATH),$(PKG_PATH))
|
|
|
|
ifeq ($(STATICGAME),1)
|
|
all: $(RSDK_PATH)
|
|
else # STATICGAME
|
|
|
|
ifeq ($(RSDK_ONLY),0)
|
|
all: $(RSDK_PATH) $(GAME_PATH)
|
|
else # RSDK_ONLY
|
|
all: $(RSDK_PATH)
|
|
endif # RSDK_ONLY
|
|
|
|
endif # STATICGAME
|
|
|
|
else # PKGPATH
|
|
all: $(PKG_PATH)
|
|
endif # PKGPATH
|
|
|
|
clean-rsdk:
|
|
rm -rf $(RSDK_PATH) && rm -rf $(RSDK_OBJDIR)
|
|
|
|
clean-game:
|
|
rm -rf $(GAME_PATH) && rm -rf $(GAME_OBJDIR)
|
|
|
|
ifeq ($(RSDK_PATH),$(PKG_PATH))
|
|
clean: clean-rsdk clean-game
|
|
else
|
|
clean: clean-rsdk clean-game
|
|
rm -rf $(PKG_PATH)
|
|
endif
|