Teeworlds: fix build.

Fixes #142.
This commit is contained in:
Adrien Destugues
2016-03-26 15:54:12 +01:00
parent c42a31ed4d
commit 9363d97610
2 changed files with 107 additions and 39 deletions

View File

@@ -1,7 +1,14 @@
diff -ur teeworlds-0.6.3-src-orig/bam.lua teeworlds-0.6.3-src/bam.lua
--- teeworlds-0.6.3-src-orig/bam.lua 2014-11-20 00:08:23.059768832 +0200
+++ teeworlds-0.6.3-src/bam.lua 2014-12-17 00:47:27.678428672 +0200
@@ -184,6 +184,12 @@
From e907b27752dc5569fee6d7e91f7138762d433683 Mon Sep 17 00:00:00 2001
From: Adrien Destugues <pulkomandy@pulkomandy.tk>
Date: Sat, 26 Mar 2016 12:14:46 +0100
Subject: applying patch teeworlds-0.6.3.patch
diff --git a/bam.lua b/bam.lua
index 11ac7b9..487a672 100644
--- a/bam.lua
+++ b/bam.lua
@@ -184,6 +184,12 @@ function build(settings)
settings.link.libs:Add("ws2_32")
settings.link.libs:Add("ole32")
settings.link.libs:Add("shell32")
@@ -14,9 +21,10 @@ diff -ur teeworlds-0.6.3-src-orig/bam.lua teeworlds-0.6.3-src/bam.lua
end
-- compile zlib if needed
diff -ur teeworlds-0.6.3-src-orig/src/base/detect.h teeworlds-0.6.3-src/src/base/detect.h
--- teeworlds-0.6.3-src-orig/src/base/detect.h 2014-11-20 00:08:22.046137344 +0200
+++ teeworlds-0.6.3-src/src/base/detect.h 2014-12-16 21:31:00.576192512 +0200
diff --git a/src/base/detect.h b/src/base/detect.h
index 0e2ef86..948d3aa 100644
--- a/src/base/detect.h
+++ b/src/base/detect.h
@@ -68,7 +68,7 @@
#endif
@@ -26,9 +34,10 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/detect.h teeworlds-0.6.3-src/src/base
#define CONF_FAMILY_BEOS 1
#define CONF_FAMILY_STRING "beos"
#define CONF_PLATFORM_BEOS 1
diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base/system.c
--- teeworlds-0.6.3-src-orig/src/base/system.c 2014-11-20 00:08:22.047448064 +0200
+++ teeworlds-0.6.3-src/src/base/system.c 2014-12-17 18:20:36.652738560 +0200
diff --git a/src/base/system.c b/src/base/system.c
index 53af5d0..0974b6b 100644
--- a/src/base/system.c
+++ b/src/base/system.c
@@ -9,7 +9,7 @@
#include "system.h"
@@ -38,7 +47,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base
#include <sys/time.h>
#include <unistd.h>
@@ -372,7 +372,7 @@
@@ -372,7 +372,7 @@ int io_flush(IOHANDLE io)
void *thread_create(void (*threadfunc)(void *), void *u)
{
@@ -47,7 +56,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base
pthread_t id;
pthread_create(&id, NULL, (void *(*)(void*))threadfunc, u);
return (void*)id;
@@ -385,7 +385,7 @@
@@ -385,7 +385,7 @@ void *thread_create(void (*threadfunc)(void *), void *u)
void thread_wait(void *thread)
{
@@ -56,7 +65,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base
pthread_join((pthread_t)thread, NULL);
#elif defined(CONF_FAMILY_WINDOWS)
WaitForSingleObject((HANDLE)thread, INFINITE);
@@ -396,7 +396,7 @@
@@ -396,7 +396,7 @@ void thread_wait(void *thread)
void thread_destroy(void *thread)
{
@@ -65,7 +74,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base
void *r = 0;
pthread_join((pthread_t)thread, &r);
#else
@@ -406,7 +406,7 @@
@@ -406,7 +406,7 @@ void thread_destroy(void *thread)
void thread_yield()
{
@@ -74,7 +83,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base
sched_yield();
#elif defined(CONF_FAMILY_WINDOWS)
Sleep(0);
@@ -417,7 +417,7 @@
@@ -417,7 +417,7 @@ void thread_yield()
void thread_sleep(int milliseconds)
{
@@ -83,7 +92,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base
usleep(milliseconds*1000);
#elif defined(CONF_FAMILY_WINDOWS)
Sleep(milliseconds);
@@ -428,7 +428,7 @@
@@ -428,7 +428,7 @@ void thread_sleep(int milliseconds)
void thread_detach(void *thread)
{
@@ -92,7 +101,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base
pthread_detach((pthread_t)(thread));
#elif defined(CONF_FAMILY_WINDOWS)
CloseHandle(thread);
@@ -440,7 +440,7 @@
@@ -440,7 +440,7 @@ void thread_detach(void *thread)
@@ -101,7 +110,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base
typedef pthread_mutex_t LOCKINTERNAL;
#elif defined(CONF_FAMILY_WINDOWS)
typedef CRITICAL_SECTION LOCKINTERNAL;
@@ -452,7 +452,7 @@
@@ -452,7 +452,7 @@ LOCK lock_create()
{
LOCKINTERNAL *lock = (LOCKINTERNAL*)mem_alloc(sizeof(LOCKINTERNAL), 4);
@@ -110,7 +119,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base
pthread_mutex_init(lock, 0x0);
#elif defined(CONF_FAMILY_WINDOWS)
InitializeCriticalSection((LPCRITICAL_SECTION)lock);
@@ -464,7 +464,7 @@
@@ -464,7 +464,7 @@ LOCK lock_create()
void lock_destroy(LOCK lock)
{
@@ -119,7 +128,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base
pthread_mutex_destroy((LOCKINTERNAL *)lock);
#elif defined(CONF_FAMILY_WINDOWS)
DeleteCriticalSection((LPCRITICAL_SECTION)lock);
@@ -476,7 +476,7 @@
@@ -476,7 +476,7 @@ void lock_destroy(LOCK lock)
int lock_try(LOCK lock)
{
@@ -128,7 +137,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base
return pthread_mutex_trylock((LOCKINTERNAL *)lock);
#elif defined(CONF_FAMILY_WINDOWS)
return !TryEnterCriticalSection((LPCRITICAL_SECTION)lock);
@@ -487,7 +487,7 @@
@@ -487,7 +487,7 @@ int lock_try(LOCK lock)
void lock_wait(LOCK lock)
{
@@ -137,7 +146,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base
pthread_mutex_lock((LOCKINTERNAL *)lock);
#elif defined(CONF_FAMILY_WINDOWS)
EnterCriticalSection((LPCRITICAL_SECTION)lock);
@@ -498,7 +498,7 @@
@@ -498,7 +498,7 @@ void lock_wait(LOCK lock)
void lock_release(LOCK lock)
{
@@ -146,7 +155,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base
pthread_mutex_unlock((LOCKINTERNAL *)lock);
#elif defined(CONF_FAMILY_WINDOWS)
LeaveCriticalSection((LPCRITICAL_SECTION)lock);
@@ -508,7 +508,7 @@
@@ -508,7 +508,7 @@ void lock_release(LOCK lock)
}
#if !defined(CONF_PLATFORM_MACOSX)
@@ -155,7 +164,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base
void semaphore_init(SEMAPHORE *sem) { sem_init(sem, 0, 0); }
void semaphore_wait(SEMAPHORE *sem) { sem_wait(sem); }
void semaphore_signal(SEMAPHORE *sem) { sem_post(sem); }
@@ -527,7 +527,7 @@
@@ -527,7 +527,7 @@ void lock_release(LOCK lock)
/* ----- time ----- */
int64 time_get()
{
@@ -164,7 +173,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base
struct timeval val;
gettimeofday(&val, NULL);
return (int64)val.tv_sec*(int64)1000000+(int64)val.tv_usec;
@@ -546,7 +546,7 @@
@@ -546,7 +546,7 @@ int64 time_get()
int64 time_freq()
{
@@ -173,7 +182,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base
return 1000000;
#elif defined(CONF_FAMILY_WINDOWS)
int64 t;
@@ -1354,6 +1354,16 @@
@@ -1354,6 +1354,16 @@ int fs_storage_path(const char *appname, char *path, int max)
return -1;
_snprintf(path, max, "%s/%s", home, appname);
return 0;
@@ -190,7 +199,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base
#else
char *home = getenv("HOME");
#if !defined(CONF_PLATFORM_MACOSX)
@@ -1795,7 +1805,7 @@
@@ -1795,7 +1805,7 @@ void gui_messagebox(const char *title, const char *message)
&theItem);
RunStandardAlert(theItem, NULL, &itemIndex);
@@ -199,10 +208,11 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base
static char cmd[1024];
int err;
/* use xmessage which is available on nearly every X11 system */
diff -ur teeworlds-0.6.3-src-orig/src/base/system.h teeworlds-0.6.3-src/src/base/system.h
--- teeworlds-0.6.3-src-orig/src/base/system.h 2014-11-20 00:08:22.046137344 +0200
+++ teeworlds-0.6.3-src/src/base/system.h 2014-12-16 21:31:00.580124672 +0200
@@ -411,7 +411,7 @@
diff --git a/src/base/system.h b/src/base/system.h
index ae37c1a..d59e43b 100644
--- a/src/base/system.h
+++ b/src/base/system.h
@@ -411,7 +411,7 @@ void lock_release(LOCK lock);
/* Group: Semaphores */
#if !defined(CONF_PLATFORM_MACOSX)
@@ -211,9 +221,10 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.h teeworlds-0.6.3-src/src/base
#include <semaphore.h>
typedef sem_t SEMAPHORE;
#elif defined(CONF_FAMILY_WINDOWS)
diff -ur teeworlds-0.6.3-src-orig/src/engine/client/backend_sdl.cpp teeworlds-0.6.3-src/src/engine/client/backend_sdl.cpp
--- teeworlds-0.6.3-src-orig/src/engine/client/backend_sdl.cpp 2014-11-20 00:08:22.004980736 +0200
+++ teeworlds-0.6.3-src/src/engine/client/backend_sdl.cpp 2014-12-16 23:45:27.095944704 +0200
diff --git a/src/engine/client/backend_sdl.cpp b/src/engine/client/backend_sdl.cpp
index 37d1019..ec6887f 100644
--- a/src/engine/client/backend_sdl.cpp
+++ b/src/engine/client/backend_sdl.cpp
@@ -1,6 +1,6 @@
-#include "SDL.h"
@@ -223,9 +234,10 @@ diff -ur teeworlds-0.6.3-src-orig/src/engine/client/backend_sdl.cpp teeworlds-0.
#include <base/tl/threading.h>
diff -ur teeworlds-0.6.3-src-orig/src/engine/client/backend_sdl.h teeworlds-0.6.3-src/src/engine/client/backend_sdl.h
--- teeworlds-0.6.3-src-orig/src/engine/client/backend_sdl.h 2014-11-20 00:08:22.005767168 +0200
+++ teeworlds-0.6.3-src/src/engine/client/backend_sdl.h 2014-12-17 18:21:15.679215104 +0200
diff --git a/src/engine/client/backend_sdl.h b/src/engine/client/backend_sdl.h
index e90f945..676141c 100644
--- a/src/engine/client/backend_sdl.h
+++ b/src/engine/client/backend_sdl.h
@@ -1,12 +1,12 @@
-#include "SDL.h"
@@ -281,3 +293,54 @@ diff -ur teeworlds-0.6.3-src-orig/src/engine/client/backend_sdl.h teeworlds-0.6.
#else
#error missing implementation
#endif
--
2.7.0
From 23887287bf14a4cb0395dd8ac40218dc425b2c2f Mon Sep 17 00:00:00 2001
From: Adrien Destugues <pulkomandy@pulkomandy.tk>
Date: Sat, 26 Mar 2016 12:21:33 +0100
Subject: Fix the build.
- including an header in the middle of a function usually isn't a good
idea.
- use find_path instead of find_directory so the app can find the data
where the package is installed.
diff --git a/src/base/system.c b/src/base/system.c
index 0974b6b..e4843e8 100644
--- a/src/base/system.c
+++ b/src/base/system.c
@@ -48,6 +48,10 @@
#include <sys/filio.h>
#endif
+#if defined(CONF_FAMILY_BEOS)
+ #include <FindDirectory.h>
+#endif
+
#if defined(__cplusplus)
extern "C" {
#endif
@@ -1355,14 +1359,10 @@ int fs_storage_path(const char *appname, char *path, int max)
_snprintf(path, max, "%s/%s", home, appname);
return 0;
#elif defined(CONF_FAMILY_BEOS)
- #include <FindDirectory.h>
-
- dev_t device = (dev_t)-1;
- char *datadir;
-
- status_t status = find_directory(B_USER_DATA_DIRECTORY, device, false, datadir, max);
- if (status < B_OK) return -1;
- snprintf(path, max, "%s/%s", datadir, appname);
+ status_t status = find_path(fs_storage_path, B_FIND_PATH_DATA_DIRECTORY,
+ appname, path, max);
+ if (status < B_OK)
+ return -1;
return 0;
#else
char *home = getenv("HOME");
--
2.7.0

View File

@@ -10,7 +10,7 @@ REVISION="1"
SOURCE_URI="https://downloads.teeworlds.com/teeworlds-0.6.3-src.tar.gz"
CHECKSUM_SHA256="490ee7c372898761c609af8d7b0c6bd55942c6c6fcd7f361eefa00abfc70077b"
SOURCE_DIR="teeworlds-0.6.3-src"
PATCHES="teeworlds-0.6.3.patch"
PATCHES="teeworlds_0.6.3.patchset"
ARCHITECTURES="!x86_gcc2 ?x86"
SECONDARY_ARCHITECTURES="?x86"
@@ -23,6 +23,8 @@ REQUIRES="
haiku$secondaryArchSuffix >= $haikuVersion
lib:libGL$secondaryArchSuffix
lib:libGLU$secondaryArchSuffix
lib:libfreetype$secondaryArchSuffix
lib:libSDL_1.2$secondaryArchSuffix
"
BUILD_REQUIRES="
@@ -34,7 +36,7 @@ BUILD_PREREQUIRES="
devel:libfreetype$secondaryArchSuffix
devel:libglu$secondaryArchSuffix
cmd:gcc$secondaryArchSuffix
cmd:bam$secondaryArchSuffix
cmd:bam
cmd:python
"
@@ -47,4 +49,7 @@ INSTALL()
{
mkdir -p $binDir
cp teeworlds $binDir
mkdir -p $dataDir
cp -r data $dataDir/Teeworlds
}