diff --git a/games-strategy/openxcom/additional-files/openxcom.rdef b/games-strategy/openxcom/additional-files/openxcom.rdef new file mode 100644 index 000000000..c10bc5b86 --- /dev/null +++ b/games-strategy/openxcom/additional-files/openxcom.rdef @@ -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" +}; diff --git a/games-strategy/openxcom/openxcom-1.0.recipe b/games-strategy/openxcom/openxcom-1.0.recipe new file mode 100644 index 000000000..c0082ea51 --- /dev/null +++ b/games-strategy/openxcom/openxcom-1.0.recipe @@ -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 +} diff --git a/games-strategy/openxcom/patches/openxcom-1.0.patchset b/games-strategy/openxcom/patches/openxcom-1.0.patchset new file mode 100644 index 000000000..801444dbb --- /dev/null +++ b/games-strategy/openxcom/patches/openxcom-1.0.patchset @@ -0,0 +1,118 @@ +From c965aec6b307f3b6bc614a1ee3733ef23fd8e17a Mon Sep 17 00:00:00 2001 +From: Mikolaj 'lich' Halber +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 + #include + #include ++#ifdef __HAIKU__ ++#include ++#include ++#endif + + namespace OpenXcom + { +@@ -144,7 +148,10 @@ std::vector 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 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 +