Fix physfs & ruby bugs and build for steam

This commit is contained in:
Eliza Velasquez 2018-10-11 00:23:18 +00:00
parent d24677129e
commit 4a0cb0b453
5 changed files with 44 additions and 170 deletions

View file

@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 2.8.11)
Project(oneshot)
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup()
conan_basic_setup(TARGETS)
## Setup options ##
@ -14,34 +14,6 @@ option(DEBUG "Debug mode" OFF)
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 ##
set(MAIN_HEADERS
@ -308,46 +280,29 @@ add_executable(${PROJECT_NAME} MACOSX_BUNDLE WIN32
target_compile_definitions(${PROJECT_NAME} PRIVATE ${DEFINES})
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)
add_custom_command(TARGET ${target} POST_BUILD COMMAND cmake -P "${CMAKE_SOURCE_DIR}/patches/mac/CompleteBundle.cmake" VERBATIM)
ENDIF()
# Steamshim
IF(STEAM)
IF(NOT WIN32)
set(STEAMSHIM_SOURCES
steamshim_parent/steamshim_parent.cpp
)
if(STEAM)
add_subdirectory(steamshim_parent)
include_directories(${STEAMWORKS_PATH}/public)
add_definitions(-DGAME_LAUNCH_NAME="${GAME_LAUNCH_NAME}")
IF(DEBUG)
add_definitions(-DSTEAMSHIM_DEBUG)
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()
# steam_appid.txt
configure_file(
"${CMAKE_SOURCE_DIR}/steam_appid.txt"
"${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/steam_appid.txt"
COPYONLY)
endif()

View file

@ -3,7 +3,7 @@ import os.path
class MkxpConan(ConanFile):
name = "mkxp"
name = "oneshot"
version = "0.0.0"
license = "GPLv2"
url = "https://github.com/elizagamedev/mkxp-oneshot"
@ -14,7 +14,7 @@ class MkxpConan(ConanFile):
requires = (
"boost/1.68.0@conan/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",
"ruby/2.3.7@eliza/stable",
"sdl2/2.0.8@bincrafters/stable",
@ -36,6 +36,10 @@ class MkxpConan(ConanFile):
if tools.os_info.is_windows:
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):
cmake = CMake(self)
if self.options.platform == "steam":

View file

@ -470,7 +470,7 @@ fontSetEnumCB (void *data, const char *dir, const char *fname)
const char *ext = findExt(fname);
if (!ext)
return PHYSFS_ENUM_STOP;
return PHYSFS_ENUM_OK;
char lowExt[8];
size_t i;
@ -480,7 +480,7 @@ fontSetEnumCB (void *data, const char *dir, const char *fname)
lowExt[i] = '\0';
if (strcmp(lowExt, "ttf") && strcmp(lowExt, "otf") && strcmp(lowExt, "ttc"))
return PHYSFS_ENUM_STOP;
return PHYSFS_ENUM_OK;
char filename[512];
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;
}
/* 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)
{
FontSetsCBData d = { p, &sfs };
PHYSFS_enumerate("", findFontsFolderCB, &d);
PHYSFS_enumerate("Fonts", fontSetEnumCB, &d);
}
struct OpenReadEnumData

View file

@ -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")
set(GAME_LAUNCH_NAME "oneshot" CACHE STRING "Game launch name")
option(DEBUG "Debug mode" OFF)
target_compile_definitions(steamshim PRIVATE
-DGAME_LAUNCH_NAME="oneshot")
set(SOURCES
steamshim_parent.cpp
)
if(DEBUG)
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}")
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()
target_link_libraries(steamshim PRIVATE
CONAN_PKG::steamworks)

View file

@ -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