mirror of
https://github.com/yann64/haikuports.git
synced 2026-04-22 11:40:06 +02:00
Openxcom: Added recipe, patches and icon for 1.0
Running OpenXcom in Haiku requires a workaround as there is system locale problem which causes game to crash with an error: terminate called after throwing an instance of 'std::runtime_error' what(): locale::facet::_S_create_c_locale name not valid Abort Abort The problem is only happening when there is no config file generated to fix it, game has to be run once like this: LC_ALL=C exec /system/apps/OpenXcom Then game creates config and can be run from menu. I am not including the fix in recipe as this would hide this system locale bug. Also the game data subfolders (GEODATA, GEOGRAPH, MAPS, ROUTES, SOUND, TERRAIN, UFOGRAPH, UFOINTRO, UNITS) should be provided to /settings/OpenXcom.
This commit is contained in:
69
games-strategy/openxcom/additional-files/openxcom.rdef
Normal file
69
games-strategy/openxcom/additional-files/openxcom.rdef
Normal file
@@ -0,0 +1,69 @@
|
||||
|
||||
resource app_flags B_SINGLE_LAUNCH | B_ARGV_ONLY;
|
||||
|
||||
resource app_version {
|
||||
major = 1,
|
||||
middle = 0,
|
||||
minor = 0,
|
||||
|
||||
variety = B_APPV_FINAL,
|
||||
internal = 0,
|
||||
|
||||
short_info = "OpenXcom",
|
||||
long_info = "Open-source clone of original X-Com"
|
||||
};
|
||||
|
||||
resource app_signature "application/x-vnd.openxcom";
|
||||
|
||||
resource vector_icon {
|
||||
$"6E636966020364CCBC03254C47070437A6FFFEA7FFFEFBFFAF7FFAEBBF3EC26F"
|
||||
$"C608C613C27CC62EC344C6D0C58FC84DC58FC84DC687C7C6C7ABC801C73AC7AD"
|
||||
$"C81DC854C83EC8EEC84EC8A3C82CC93AC7FDC98CC816C96FC7FDC98CC7ECC9AB"
|
||||
$"C78CC9F7C78CC9F7C71BCA2EC57BCA01C66BCA31C55DCADDC310CB22C48FCB3D"
|
||||
$"C234CA78C306C952C231C9DEC306C952C93DBFC3C756BC83C93DBC83C952BC83"
|
||||
$"C952BD52C9DEBC72CB22BD4CCA78BAF4CB3DBA08CA01BA26CADDB917CA31B7F3"
|
||||
$"C9F7B866CA2EB7F3C9F7B797C9ABB785C98CB785C98CB76AC96FB744C8EEB754"
|
||||
$"C93AB739C8A3B7D8C801B76AC854B84DC7ADB9F3C84DB900C7C6B9F3C84DBC38"
|
||||
$"C6D0BC3FC6D0BC3FC6D0BCD1C676BD1BC613BD1BC637BD1BC613BD06C5EDBD06"
|
||||
$"C5EDBCE8C5C4BC38C54BBCA4C58EBC38C54BB9F0C3CEB9F0C3CEB8F8C450B7D1"
|
||||
$"C41AB843C46AB75EC3C7B744C329B72FC377B752C2E0B77EC28EB765C2ACB77E"
|
||||
$"C28EB793C269B7F046BA04C216BA04C216BA20C13DBC6FC0F9BAEEC0DDBD48C1"
|
||||
$"9EBC76C2C2BD4BC236BC76C2C2C2DDBFB9C4C2C302C2DDC302C2C2C302C2C2C2"
|
||||
$"2DC236C309C0F9C230C19EC48AC0DDC57BC216C55AC13DC57BC216C78846C7E5"
|
||||
$"C269C7FDC28EC7FDC28EC814C2ACC837C329C827C2E0C84AC377C7A7C41AC81A"
|
||||
$"C3C7C730C46AC588C3CEC67BC450C588C3CEC34EC548C340C54BC2E7C589C2E7"
|
||||
$"C589C297C5C0C26FC608C26FC5EAC26FC6080437AFFFFAA7BFFEFFF3EF7FFAEF"
|
||||
$"BF1AC26FC608C26FC608C26FC5EAC2E7C589C297C5C0C2E7C589C340C54BC34E"
|
||||
$"C548C588C3CEC588C3CEC67BC450C7A7C41AC730C46AC81AC3C7C837C329C84A"
|
||||
$"C377C827C2E0C7FDC28EC814C2ACC7FDC28EC7E5C269C78846C57BC216C57BC2"
|
||||
$"16C55AC13DC309C0F9C48AC0DDC230C19EC302C2C2C22DC236C302C2C2C2DDBF"
|
||||
$"B9C4C2BC76C2DDBC76C2C2BC76C2C2BD4BC236BC6FC0F9BD48C19EBAEEC0DDBA"
|
||||
$"04C216BA20C13DBA04C216B7F046B793C269B77EC28EB77EC28EB765C2ACB744"
|
||||
$"C329B752C2E0B72FC377B7D1C41AB75EC3C7B843C46AB9F0C3CEB8F8C450B9F0"
|
||||
$"C3CEBC38C54BBC38C54BBCA4C58EBD06C5EDBCE8C5C4BD06C5EDBD1BC613BD1B"
|
||||
$"C613BD1BC637BC3FC6D0BCD1C676BC3FC6D0BC38B9F3C84DB9F3C84DB900C7C6"
|
||||
$"B7D8C801B84DC7ADB76AC854B744C8EEB739C8A3B754C93AB785C98CB76AC96F"
|
||||
$"B785C98CB797C9ABB7F3C9F7B7F3C9F7B866CA2EBA08CA01B917CA31BA26CADD"
|
||||
$"BC72CB22BAF4CB3DBD4CCA78BC83C952BD52C9DEBC83C952C93DBFC3C756C306"
|
||||
$"C93DC306C952C306C952C231C9DEC310CB22C234CA78C48FCB3DC57BCA01C55D"
|
||||
$"CADDC66BCA31C78CC9F7C71BCA2EC78CC9F7C7ECC9ABC7FDC98CC7FDC98CC816"
|
||||
$"C96FC83EC8EEC82CC93AC84EC8A3C7ABC801C81DC854C73AC7ADC58FC84DC687"
|
||||
$"C7C6C58FC84DC344C6D0C27CC62EC26FC613C6080411FABFFEFF03B982B911B9"
|
||||
$"7BB90AB985B8B1B985B8B1B995B803B9ECB6A0B9B8B753BA88B496BFC3B391BC"
|
||||
$"7AB391C30CB391C59DB6A0C4FFB496C5CFB753C604B8B1C5F2B803C604B8B1C6"
|
||||
$"0BB90AC607B911C60BB911C60BB911C622BA3BC5B2BC7DC604BB5FC3FCBFE2BF"
|
||||
$"C3C19EC202C197BD84C197B9D8BC7DBB8BBFE2B985BB5FB97BB911B966BA3BB9"
|
||||
$"7BB911B982B911B982B911BA00BAFBBDCDBB7FBB6EBBCBBD4DB99AB982B911BB"
|
||||
$"DFB8CAB982B9110003C607B911C607B911C3ADB8CAC1BFBB7FC240B99AC41EBB"
|
||||
$"CBC607B911C58CBAFBC607B9110003C607B911C607B911C58CBAFBC1BFBB7FC4"
|
||||
$"1EBBCBC240B99AC607B911C3ADB8CAC607B9110003B982B911B982B911BBDFB8"
|
||||
$"CABDCDBB7FBD4DB99ABB6EBBCBB982B911BA00BAFBB982B9110413FABFFFFF3F"
|
||||
$"C607B911C60BB90AC604B8B1C604B8B1C5F2B803C59DB6A0C5CFB753C4FFB496"
|
||||
$"BFC3B391C30CB391BC7AB391B9ECB6A0BA88B496B9B8B753B985B8B1B995B803"
|
||||
$"B985B8B1B97BB90AB982B911B982B911BBDFB8CABDCDBB7FBD4DB99ABB6EBBCB"
|
||||
$"B982B911BA00BAFBB982B911B97BB911B97BB911B966BA3BB9D8BC7DB985BB5F"
|
||||
$"BB8BBFE2BFC3C19EBD84C197C202C197C5B2BC7DC3FCBFE2C604BB5FC60BB911"
|
||||
$"C622BA3BC60BB911C607B911C607B911C58CBAFBC1BFBB7FC41EBBCBC240B99A"
|
||||
$"C607B911C3ADB8CAC607B911050A000100000A0101011001178122040A000202"
|
||||
$"03000A01020405000A010106100117812204"
|
||||
};
|
||||
69
games-strategy/openxcom/openxcom-1.0.recipe
Normal file
69
games-strategy/openxcom/openxcom-1.0.recipe
Normal file
@@ -0,0 +1,69 @@
|
||||
SUMMARY="Open-source clone of the original X-Com"
|
||||
DESCRIPTION="OpenXcom is an open-source clone of the original UFO: Enemy \
|
||||
Unknown (X-Com: UFO Defense in USA), licensed under the GPL and written in \
|
||||
C++ / SDL. It was originally founded by SupSuper in February 2010, and has \
|
||||
since grown into a small development team surrounded by a very supporting \
|
||||
community."
|
||||
HOMEPAGE="http://openxcom.org/"
|
||||
COPYRIGHT="2010-2014 OpenXcom Developers"
|
||||
LICENSE="GNU GPL v3"
|
||||
REVISION="1"
|
||||
SOURCE_URI="https://codeload.github.com/SupSuper/OpenXcom/tar.gz/v$portVersion"
|
||||
CHECKSUM_SHA256="45acb280010a01d60506b1c5f2951ae501c012cc6161aac470bd15c1e6981246"
|
||||
SOURCE_DIR="OpenXcom-$portVersion"
|
||||
PATCHES="openxcom-$portVersion.patchset"
|
||||
ADDITIONAL_FILES="openxcom.rdef"
|
||||
|
||||
ARCHITECTURES="!x86_gcc2 ?x86_64 ?x86"
|
||||
SECONDARY_ARCHITECTURES="x86"
|
||||
|
||||
PROVIDES="
|
||||
openxcom = $portVersion
|
||||
app:OpenXcom
|
||||
"
|
||||
REQUIRES="
|
||||
haiku$secondaryArchSuffix
|
||||
lib:libgl$secondaryArchSuffix
|
||||
lib:libglu$secondaryArchSuffix
|
||||
lib:libsdl$secondaryArchSuffix
|
||||
lib:libsdl_gfx$secondaryArchSuffix
|
||||
lib:libsdl_image$secondaryArchSuffix
|
||||
lib:libsdl_mixer$secondaryArchSuffix
|
||||
lib:libyaml_cpp$secondaryArchSuffix
|
||||
"
|
||||
|
||||
BUILD_REQUIRES="
|
||||
haiku${secondaryArchSuffix}_devel
|
||||
devel:libgl$secondaryArchSuffix
|
||||
devel:libglu$secondaryArchSuffix
|
||||
devel:libsdl$secondaryArchSuffix
|
||||
devel:libsdl_gfx$secondaryArchSuffix
|
||||
devel:libsdl_image$secondaryArchSuffix
|
||||
devel:libsdl_mixer$secondaryArchSuffix
|
||||
devel:libyaml_cpp$secondaryArchSuffix
|
||||
"
|
||||
BUILD_PREREQUIRES="
|
||||
cmd:cmake
|
||||
cmd:gcc$secondaryArchSuffix
|
||||
cmd:make
|
||||
cmd:pkg_config$secondaryArchSuffix
|
||||
"
|
||||
|
||||
GLOBAL_WRITABLE_FILES="
|
||||
settings/OpenXcom directory keep-old
|
||||
"
|
||||
BUILD()
|
||||
{
|
||||
cmake .
|
||||
make $jobArgs
|
||||
}
|
||||
|
||||
INSTALL()
|
||||
{
|
||||
mkdir -p $appsDir
|
||||
mkdir -p $settingsDir
|
||||
cp $sourceDir/bin/openxcom $appsDir/OpenXcom
|
||||
cp -r $sourceDir/bin/data $settingsDir/OpenXcom
|
||||
addResourcesToBinaries $portDir/additional-files/openxcom.rdef $appsDir/OpenXcom
|
||||
addAppDeskbarSymlink $appsDir/OpenXcom OpenXcom
|
||||
}
|
||||
118
games-strategy/openxcom/patches/openxcom-1.0.patchset
Normal file
118
games-strategy/openxcom/patches/openxcom-1.0.patchset
Normal file
@@ -0,0 +1,118 @@
|
||||
From c965aec6b307f3b6bc614a1ee3733ef23fd8e17a Mon Sep 17 00:00:00 2001
|
||||
From: Mikolaj 'lich' Halber <lich@opmbx.org>
|
||||
Date: Sun, 3 Jan 2016 21:31:07 +0000
|
||||
Subject: Added Haiku support
|
||||
|
||||
|
||||
diff --git a/cmake/modules/FindSDL2.cmake b/cmake/modules/FindSDL2.cmake
|
||||
index b407bef..7764974 100644
|
||||
--- a/cmake/modules/FindSDL2.cmake
|
||||
+++ b/cmake/modules/FindSDL2.cmake
|
||||
@@ -78,7 +78,7 @@
|
||||
FIND_PATH(SDL_INCLUDE_DIR SDL.h
|
||||
HINTS
|
||||
$ENV{SDLDIR}
|
||||
- PATH_SUFFIXES include/SDL include
|
||||
+ PATH_SUFFIXES include/SDL include SDL
|
||||
PATHS
|
||||
~/Library/Frameworks
|
||||
/Library/Frameworks
|
||||
@@ -219,7 +219,7 @@ macro ( FindSDL_component _component )
|
||||
HINTS
|
||||
$ENV{SDL${UPPERCOMPONENT}DIR}
|
||||
$ENV{SDLDIR}
|
||||
- PATH_SUFFIXES include/SDL include
|
||||
+ PATH_SUFFIXES include/SDL include SDL
|
||||
PATHS
|
||||
~/Library/Frameworks
|
||||
/Library/Frameworks
|
||||
diff --git a/cmake/modules/FindSDL_gfx.cmake b/cmake/modules/FindSDL_gfx.cmake
|
||||
index 2e09b9b..c4c0633 100644
|
||||
--- a/cmake/modules/FindSDL_gfx.cmake
|
||||
+++ b/cmake/modules/FindSDL_gfx.cmake
|
||||
@@ -28,7 +28,7 @@ FIND_PATH(SDLGFX_INCLUDE_DIR SDL_gfx.h
|
||||
HINTS
|
||||
$ENV{SDLGFXDIR}
|
||||
$ENV{SDLDIR}
|
||||
- PATH_SUFFIXES include
|
||||
+ PATH_SUFFIXES include SDL
|
||||
PATHS
|
||||
~/Library/Frameworks
|
||||
/Library/Frameworks
|
||||
@@ -72,7 +72,7 @@ IF(NOT SDLGFX_INCLUDE_DIR)
|
||||
HINTS
|
||||
$ENV{SDLGFXDIR}
|
||||
$ENV{SDLDIR}
|
||||
- PATH_SUFFIXES include
|
||||
+ PATH_SUFFIXES include SDL
|
||||
PATHS
|
||||
~/Library/Frameworks
|
||||
/Library/Frameworks
|
||||
|
||||
diff --git a/cmake/modules/FindYaml_cpp.cmake b/cmake/modules/FindYaml_cpp.cmake
|
||||
index 64ccc2f..27a0f4b 100644
|
||||
--- a/cmake/modules/FindYaml_cpp.cmake
|
||||
+++ b/cmake/modules/FindYaml_cpp.cmake
|
||||
@@ -29,7 +29,7 @@ FIND_PATH(YAMLCPP_INCLUDE_DIR yaml.h
|
||||
${PC_YAMLCPP_INCLUDEDIR}
|
||||
${PC_YAMLCPP_INCLUDE_DIRS}
|
||||
$ENV{YAMLCPPDIR}
|
||||
- PATH_SUFFIXES include/yaml-cpp include
|
||||
+ PATH_SUFFIXES include/yaml-cpp include yaml-cpp
|
||||
PATHS
|
||||
~/Library/Frameworks
|
||||
/Library/Frameworks
|
||||
diff --git a/src/Engine/CrossPlatform.cpp b/src/Engine/CrossPlatform.cpp
|
||||
index a5704f4..53823e6 100644
|
||||
--- a/src/Engine/CrossPlatform.cpp
|
||||
+++ b/src/Engine/CrossPlatform.cpp
|
||||
@@ -59,6 +59,10 @@
|
||||
#include <SDL.h>
|
||||
#include <SDL_syswm.h>
|
||||
#include <SDL_image.h>
|
||||
+#ifdef __HAIKU__
|
||||
+#include <FindDirectory.h>
|
||||
+#include <StorageDefs.h>
|
||||
+#endif
|
||||
|
||||
namespace OpenXcom
|
||||
{
|
||||
@@ -144,7 +148,10 @@ std::vector<std::string> findDataFolders()
|
||||
#else
|
||||
char const *home = getHome();
|
||||
#ifdef __HAIKU__
|
||||
- list.push_back("/boot/apps/OpenXcom/data/");
|
||||
+ char data_path[B_PATH_NAME_LENGTH];
|
||||
+ find_directory(B_SYSTEM_SETTINGS_DIRECTORY, 0, true, data_path, sizeof(data_path)-strlen("/OpenXcom/"));
|
||||
+ strcat(data_path,"/OpenXcom/");
|
||||
+ list.push_back(data_path);
|
||||
#endif
|
||||
char path[MAXPATHLEN];
|
||||
|
||||
@@ -237,7 +244,10 @@ std::vector<std::string> findUserFolders()
|
||||
}
|
||||
#else
|
||||
#ifdef __HAIKU__
|
||||
- list.push_back("/boot/apps/OpenXcom/");
|
||||
+ char user_path[B_PATH_NAME_LENGTH];
|
||||
+ find_directory(B_USER_SETTINGS_DIRECTORY, 0, true, user_path, sizeof(user_path)-strlen("/OpenXcom/"));
|
||||
+ strcat(user_path,"/OpenXcom/");
|
||||
+ list.push_back(user_path);
|
||||
#endif
|
||||
char const *home = getHome();
|
||||
char path[MAXPATHLEN];
|
||||
@@ -281,7 +291,10 @@ std::string findConfigFolder()
|
||||
#if defined(_WIN32) || defined(__APPLE__)
|
||||
return "";
|
||||
#elif defined (__HAIKU__)
|
||||
- return "/boot/home/config/settings/openxcom/";
|
||||
+ char settings_path[B_PATH_NAME_LENGTH];
|
||||
+ find_directory(B_USER_SETTINGS_DIRECTORY, 0, true, settings_path, sizeof(settings_path)-strlen("/OpenXcom/"));
|
||||
+ strcat(settings_path,"/OpenXcom/");
|
||||
+ return settings_path;
|
||||
#else
|
||||
char const *home = getHome();
|
||||
char path[MAXPATHLEN];
|
||||
--
|
||||
2.2.2
|
||||
|
||||
Reference in New Issue
Block a user