mirror of
https://forgejo.xatacraft.ru/Sunshine/mkxp-sunshine.git
synced 2026-08-19 13:29:54 +00:00
Fix physfs & ruby bugs and build for steam
This commit is contained in:
parent
d24677129e
commit
4a0cb0b453
5 changed files with 44 additions and 170 deletions
|
|
@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 2.8.11)
|
||||||
Project(oneshot)
|
Project(oneshot)
|
||||||
|
|
||||||
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
|
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
|
||||||
conan_basic_setup()
|
conan_basic_setup(TARGETS)
|
||||||
|
|
||||||
## Setup options ##
|
## Setup options ##
|
||||||
|
|
||||||
|
|
@ -14,34 +14,6 @@ option(DEBUG "Debug mode" OFF)
|
||||||
|
|
||||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||||
|
|
||||||
# IF("${CMAKE_SYSTEM}" MATCHES "Linux")
|
|
||||||
# SET(LINUX ON)
|
|
||||||
# ENDIF()
|
|
||||||
|
|
||||||
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.12)
|
|
||||||
|
|
||||||
# IF(LINUX)
|
|
||||||
# if(CMAKE_SIZEOF_VOID_P MATCHES "8" AND NOT(FORCE32) )
|
|
||||||
# set(CMAKE_EXECUTABLE_SUFFIX ".bin.x86_64")
|
|
||||||
# set(BIN_RPATH "\$ORIGIN/lib64")
|
|
||||||
# set(LIB_PATH "lib64")
|
|
||||||
# else()
|
|
||||||
# set(CMAKE_EXECUTABLE_SUFFIX ".bin.x86")
|
|
||||||
# set(BIN_RPATH "\$ORIGIN/lib")
|
|
||||||
# set(LIB_PATH "lib")
|
|
||||||
# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_FILE_OFFSET_BITS=64")
|
|
||||||
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_FILE_OFFSET_BITS=64")
|
|
||||||
# endif()
|
|
||||||
# elseif(APPLE)
|
|
||||||
# SET(BIN_RPATH "@executable_path/../Frameworks")
|
|
||||||
# set(LIB_PATH "lib")
|
|
||||||
# endif()
|
|
||||||
|
|
||||||
# set(CMAKE_SKIP_BUILD_RPATH TRUE)
|
|
||||||
# set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
|
|
||||||
# set(CMAKE_INSTALL_RPATH ${BIN_RPATH})
|
|
||||||
# set(CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE)
|
|
||||||
|
|
||||||
## Setup main source ##
|
## Setup main source ##
|
||||||
|
|
||||||
set(MAIN_HEADERS
|
set(MAIN_HEADERS
|
||||||
|
|
@ -308,46 +280,29 @@ add_executable(${PROJECT_NAME} MACOSX_BUNDLE WIN32
|
||||||
|
|
||||||
target_compile_definitions(${PROJECT_NAME} PRIVATE ${DEFINES})
|
target_compile_definitions(${PROJECT_NAME} PRIVATE ${DEFINES})
|
||||||
target_include_directories(${PROJECT_NAME} PRIVATE src)
|
target_include_directories(${PROJECT_NAME} PRIVATE src)
|
||||||
target_link_libraries(${PROJECT_NAME} ${CONAN_LIBS} ${PLATFORM_LIBRARIES})
|
target_link_libraries(${PROJECT_NAME}
|
||||||
|
CONAN_PKG::boost
|
||||||
|
CONAN_PKG::openal
|
||||||
|
CONAN_PKG::physfs
|
||||||
|
CONAN_PKG::pixman
|
||||||
|
CONAN_PKG::ruby
|
||||||
|
CONAN_PKG::sdl2
|
||||||
|
CONAN_PKG::sdl2_image
|
||||||
|
CONAN_PKG::sdl2_ttf
|
||||||
|
CONAN_PKG::sdl_sound-mkxp
|
||||||
|
CONAN_PKG::sigc++
|
||||||
|
${PLATFORM_LIBRARIES})
|
||||||
|
|
||||||
IF(APPLE)
|
IF(APPLE)
|
||||||
add_custom_command(TARGET ${target} POST_BUILD COMMAND cmake -P "${CMAKE_SOURCE_DIR}/patches/mac/CompleteBundle.cmake" VERBATIM)
|
add_custom_command(TARGET ${target} POST_BUILD COMMAND cmake -P "${CMAKE_SOURCE_DIR}/patches/mac/CompleteBundle.cmake" VERBATIM)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
# Steamshim
|
if(STEAM)
|
||||||
IF(STEAM)
|
add_subdirectory(steamshim_parent)
|
||||||
IF(NOT WIN32)
|
|
||||||
set(STEAMSHIM_SOURCES
|
|
||||||
steamshim_parent/steamshim_parent.cpp
|
|
||||||
)
|
|
||||||
|
|
||||||
include_directories(${STEAMWORKS_PATH}/public)
|
# steam_appid.txt
|
||||||
|
configure_file(
|
||||||
add_definitions(-DGAME_LAUNCH_NAME="${GAME_LAUNCH_NAME}")
|
"${CMAKE_SOURCE_DIR}/steam_appid.txt"
|
||||||
|
"${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/steam_appid.txt"
|
||||||
IF(DEBUG)
|
COPYONLY)
|
||||||
add_definitions(-DSTEAMSHIM_DEBUG)
|
endif()
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
IF(APPLE)
|
|
||||||
link_directories(${STEAMWORKS_PATH}/redistributable_bin/osx32)
|
|
||||||
ELSEIF(WIN32)
|
|
||||||
list(APPEND STEAMSHIM_SOURCES steamshim_parent/resources.rc)
|
|
||||||
link_directories(${STEAMWORKS_PATH}/redistributable_bin/win64)
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mwindows")
|
|
||||||
ELSEIF(LINUX)
|
|
||||||
link_directories(${STEAMWORKS_PATH}/redistributable_bin/linux64)
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m64")
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
add_executable(steamshim
|
|
||||||
${STEAMSHIM_SOURCES}
|
|
||||||
)
|
|
||||||
|
|
||||||
IF(WIN32)
|
|
||||||
target_link_libraries(steamshim steam_api64)
|
|
||||||
ELSE()
|
|
||||||
target_link_libraries(steamshim steam_api)
|
|
||||||
ENDIF()
|
|
||||||
ENDIF()
|
|
||||||
ENDIF()
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ import os.path
|
||||||
|
|
||||||
|
|
||||||
class MkxpConan(ConanFile):
|
class MkxpConan(ConanFile):
|
||||||
name = "mkxp"
|
name = "oneshot"
|
||||||
version = "0.0.0"
|
version = "0.0.0"
|
||||||
license = "GPLv2"
|
license = "GPLv2"
|
||||||
url = "https://github.com/elizagamedev/mkxp-oneshot"
|
url = "https://github.com/elizagamedev/mkxp-oneshot"
|
||||||
|
|
@ -14,7 +14,7 @@ class MkxpConan(ConanFile):
|
||||||
requires = (
|
requires = (
|
||||||
"boost/1.68.0@conan/stable",
|
"boost/1.68.0@conan/stable",
|
||||||
"openal/1.18.2@bincrafters/stable",
|
"openal/1.18.2@bincrafters/stable",
|
||||||
"physfs/3.0.1@eliza/stable",
|
"physfs/stable-3.0@eliza/stable",
|
||||||
"pixman/0.34.0@bincrafters/stable",
|
"pixman/0.34.0@bincrafters/stable",
|
||||||
"ruby/2.3.7@eliza/stable",
|
"ruby/2.3.7@eliza/stable",
|
||||||
"sdl2/2.0.8@bincrafters/stable",
|
"sdl2/2.0.8@bincrafters/stable",
|
||||||
|
|
@ -36,6 +36,10 @@ class MkxpConan(ConanFile):
|
||||||
if tools.os_info.is_windows:
|
if tools.os_info.is_windows:
|
||||||
self.build_requires("cygwin_installer/2.9.0@bincrafters/stable")
|
self.build_requires("cygwin_installer/2.9.0@bincrafters/stable")
|
||||||
|
|
||||||
|
def requirements(self):
|
||||||
|
if self.options.platform == "steam":
|
||||||
|
self.requires("steamworks/1.42@eliza/stable")
|
||||||
|
|
||||||
def build_configure(self):
|
def build_configure(self):
|
||||||
cmake = CMake(self)
|
cmake = CMake(self)
|
||||||
if self.options.platform == "steam":
|
if self.options.platform == "steam":
|
||||||
|
|
|
||||||
|
|
@ -470,7 +470,7 @@ fontSetEnumCB (void *data, const char *dir, const char *fname)
|
||||||
const char *ext = findExt(fname);
|
const char *ext = findExt(fname);
|
||||||
|
|
||||||
if (!ext)
|
if (!ext)
|
||||||
return PHYSFS_ENUM_STOP;
|
return PHYSFS_ENUM_OK;
|
||||||
|
|
||||||
char lowExt[8];
|
char lowExt[8];
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
@ -480,7 +480,7 @@ fontSetEnumCB (void *data, const char *dir, const char *fname)
|
||||||
lowExt[i] = '\0';
|
lowExt[i] = '\0';
|
||||||
|
|
||||||
if (strcmp(lowExt, "ttf") && strcmp(lowExt, "otf") && strcmp(lowExt, "ttc"))
|
if (strcmp(lowExt, "ttf") && strcmp(lowExt, "otf") && strcmp(lowExt, "ttc"))
|
||||||
return PHYSFS_ENUM_STOP;
|
return PHYSFS_ENUM_OK;
|
||||||
|
|
||||||
char filename[512];
|
char filename[512];
|
||||||
snprintf(filename, sizeof(filename), "%s/%s", dir, fname);
|
snprintf(filename, sizeof(filename), "%s/%s", dir, fname);
|
||||||
|
|
@ -500,31 +500,11 @@ fontSetEnumCB (void *data, const char *dir, const char *fname)
|
||||||
return PHYSFS_ENUM_OK;
|
return PHYSFS_ENUM_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Basically just a case-insensitive search
|
|
||||||
* for the folder "Fonts"... */
|
|
||||||
static PHYSFS_EnumerateCallbackResult
|
|
||||||
findFontsFolderCB(void *data, const char *, const char *fname)
|
|
||||||
{
|
|
||||||
size_t i = 0;
|
|
||||||
char buffer[512];
|
|
||||||
const char *s = fname;
|
|
||||||
|
|
||||||
while (s && i < sizeof(buffer))
|
|
||||||
buffer[i++] = tolower(*s++);
|
|
||||||
|
|
||||||
buffer[i] = '\0';
|
|
||||||
|
|
||||||
if (strcmp(buffer, "fonts") == 0)
|
|
||||||
PHYSFS_enumerate(fname, fontSetEnumCB, data);
|
|
||||||
|
|
||||||
return PHYSFS_ENUM_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
void FileSystem::initFontSets(SharedFontState &sfs)
|
void FileSystem::initFontSets(SharedFontState &sfs)
|
||||||
{
|
{
|
||||||
FontSetsCBData d = { p, &sfs };
|
FontSetsCBData d = { p, &sfs };
|
||||||
|
|
||||||
PHYSFS_enumerate("", findFontsFolderCB, &d);
|
PHYSFS_enumerate("Fonts", fontSetEnumCB, &d);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct OpenReadEnumData
|
struct OpenReadEnumData
|
||||||
|
|
|
||||||
|
|
@ -1,38 +1,18 @@
|
||||||
cmake_minimum_required(VERSION 2.8.11)
|
add_executable(steamshim WIN32
|
||||||
|
steamshim_parent.cpp)
|
||||||
|
|
||||||
set(STEAMWORKS_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../steamworks" CACHE PATH "Path to Steamworks folder")
|
target_compile_definitions(steamshim PRIVATE
|
||||||
set(GAME_LAUNCH_NAME "oneshot" CACHE STRING "Game launch name")
|
-DGAME_LAUNCH_NAME="oneshot")
|
||||||
option(DEBUG "Debug mode" OFF)
|
|
||||||
|
|
||||||
set(SOURCES
|
if(DEBUG)
|
||||||
steamshim_parent.cpp
|
target_compile_definitions(steamshim PRIVATE
|
||||||
)
|
-DSTEAMSHIM_DEBUG)
|
||||||
|
endif()
|
||||||
|
|
||||||
include_directories(${STEAMWORKS_PATH}/public)
|
if(WIN32)
|
||||||
|
target_sources(steamshim PRIVATE
|
||||||
|
resources.rc)
|
||||||
|
endif()
|
||||||
|
|
||||||
add_definitions(-DGAME_LAUNCH_NAME="${GAME_LAUNCH_NAME}")
|
target_link_libraries(steamshim PRIVATE
|
||||||
|
CONAN_PKG::steamworks)
|
||||||
IF(DEBUG)
|
|
||||||
add_definitions(-DSTEAMSHIM_DEBUG)
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
IF(APPLE)
|
|
||||||
link_directories(${STEAMWORKS_PATH}/redistributable_bin/osx32)
|
|
||||||
ELSEIF(WIN32)
|
|
||||||
list(APPEND SOURCES resources.rc)
|
|
||||||
link_directories(${STEAMWORKS_PATH}/redistributable_bin/win64)
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mwindows")
|
|
||||||
ELSEIF(LINUX)
|
|
||||||
link_directories(${STEAMWORKS_PATH}/redistributable_bin/linux64)
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m64")
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
add_executable(steamshim
|
|
||||||
${SOURCES}
|
|
||||||
)
|
|
||||||
|
|
||||||
IF(WIN32)
|
|
||||||
target_link_libraries(steamshim steam_api64)
|
|
||||||
ELSE()
|
|
||||||
target_link_libraries(steamshim steam_api)
|
|
||||||
ENDIF()
|
|
||||||
|
|
|
||||||
|
|
@ -1,45 +0,0 @@
|
||||||
TARGET := steamshim
|
|
||||||
GAME_LAUNCH_NAME ?= oneshot
|
|
||||||
|
|
||||||
CXX ?= clang++
|
|
||||||
WINDRES ?= windres
|
|
||||||
HOST ?= linux64
|
|
||||||
FLAGS := -I$(STEAMWORKS)/public -DGAME_LAUNCH_NAME=\"$(GAME_LAUNCH_NAME)\" -Wall
|
|
||||||
DEBUG ?= 0
|
|
||||||
|
|
||||||
ifeq ($(HOST),w32)
|
|
||||||
FLAGS += -L$(STEAMWORKS)/redistributable_bin
|
|
||||||
else ifeq ($(HOST),linux32)
|
|
||||||
FLAGS += -L$(STEAMWORKS)/redistributable_bin/linux32 -m32
|
|
||||||
else ifeq ($(HOST),linux64)
|
|
||||||
FLAGS += -L$(STEAMWORKS)/redistributable_bin/linux64 -m64
|
|
||||||
else ifeq ($(HOST),osx)
|
|
||||||
FLAGS += -L$(STEAMWORKS)/redistributable_bin/osx32
|
|
||||||
endif
|
|
||||||
|
|
||||||
FLAGS += -lsteam_api
|
|
||||||
|
|
||||||
ifeq ($(DEBUG),1)
|
|
||||||
FLAGS += -DSTEAMSHIM_DEBUG
|
|
||||||
else ifeq ($(HOST),w32)
|
|
||||||
FLAGS += -mwindows
|
|
||||||
endif
|
|
||||||
|
|
||||||
SRC := steamshim_parent.cpp
|
|
||||||
RES := resources.rc
|
|
||||||
RESOBJ := resources.o
|
|
||||||
|
|
||||||
ifeq ($(HOST),w32)
|
|
||||||
$(TARGET).exe: $(SRC) $(RESOBJ)
|
|
||||||
$(CXX) $^ -o $@ $(FLAGS)
|
|
||||||
$(RESOBJ): $(RES)
|
|
||||||
$(WINDRES) $< $@
|
|
||||||
else
|
|
||||||
$(TARGET): $(SRC)
|
|
||||||
$(CXX) $^ -o $@ $(FLAGS)
|
|
||||||
endif
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f $(TARGET) $(TARGET).exe $(RESOBJ)
|
|
||||||
|
|
||||||
.PHONY: clean
|
|
||||||
Loading…
Reference in a new issue