mirror of
https://github.com/yann64/haikuports.git
synced 2026-05-04 22:18:55 +02:00
459 lines
14 KiB
Plaintext
459 lines
14 KiB
Plaintext
From 52160fdf8796197a09e63a393ca9911cdf3983bd Mon Sep 17 00:00:00 2001
|
|
From: Jerome Duval <jerome.duval@gmail.com>
|
|
Date: Sat, 6 Jun 2015 10:06:04 +0000
|
|
Subject: Haiku patch
|
|
|
|
|
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|
index b52dd05..6ffe6fb 100644
|
|
--- a/CMakeLists.txt
|
|
+++ b/CMakeLists.txt
|
|
@@ -183,7 +183,7 @@ endif()
|
|
# Options
|
|
|
|
# First platform spesific non-cached vars
|
|
-if(UNIX AND NOT APPLE)
|
|
+if(UNIX AND NOT (APPLE OR HAIKU))
|
|
set(WITH_X11 ON)
|
|
endif()
|
|
|
|
@@ -1104,7 +1104,8 @@ if(UNIX AND NOT APPLE)
|
|
endif()
|
|
|
|
# OpenSuse needs lutil, ArchLinux not, for now keep, can avoid by using --as-needed
|
|
- list(APPEND PLATFORM_LINKLIBS -lutil -lc -lm)
|
|
+ #list(APPEND PLATFORM_LINKLIBS -lutil -lc -lm)
|
|
+ list(APPEND PLATFORM_LINKLIBS -lnetwork)
|
|
|
|
find_package(Threads REQUIRED)
|
|
list(APPEND PLATFORM_LINKLIBS ${CMAKE_THREAD_LIBS_INIT})
|
|
diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake
|
|
index 33c7644..1457f65 100644
|
|
--- a/build_files/cmake/macros.cmake
|
|
+++ b/build_files/cmake/macros.cmake
|
|
@@ -1390,6 +1390,7 @@ macro(find_python_package
|
|
PATH_SUFFIXES
|
|
site-packages
|
|
dist-packages
|
|
+ vendor-packages
|
|
NO_DEFAULT_PATH
|
|
)
|
|
|
|
@@ -1399,6 +1400,8 @@ macro(find_python_package
|
|
"'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/site-packages/${package}', "
|
|
"'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/dist-packages/${package}', "
|
|
"'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/dist-packages/${package}', "
|
|
+ "'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/vendor-packages/${package}', "
|
|
+ "'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/vendor-packages/${package}', "
|
|
"WITH_PYTHON_INSTALL_${_upper_package} option will be ignored when installing python")
|
|
set(WITH_PYTHON_INSTALL_${_upper_package} OFF)
|
|
else()
|
|
diff --git a/extern/libmv/libmv/numeric/numeric.h b/extern/libmv/libmv/numeric/numeric.h
|
|
index 55d4c7d..d8ebd72 100644
|
|
--- a/extern/libmv/libmv/numeric/numeric.h
|
|
+++ b/extern/libmv/libmv/numeric/numeric.h
|
|
@@ -35,7 +35,7 @@
|
|
|
|
#if !defined(__MINGW64__)
|
|
# if defined(_WIN32) || defined(__APPLE__) || \
|
|
- defined(__FreeBSD__) || defined(__NetBSD__)
|
|
+ defined(__FreeBSD__) || defined(__NetBSD__) || defined(__HAIKU__)
|
|
static void sincos(double x, double *sinx, double *cosx) {
|
|
*sinx = sin(x);
|
|
*cosx = cos(x);
|
|
diff --git a/extern/libmv/third_party/glog/src/config.h b/extern/libmv/third_party/glog/src/config.h
|
|
index f5c9c0b..2703b7b 100644
|
|
--- a/extern/libmv/third_party/glog/src/config.h
|
|
+++ b/extern/libmv/third_party/glog/src/config.h
|
|
@@ -14,4 +14,6 @@
|
|
#include "windows/config.h"
|
|
#elif defined(__GNU__)
|
|
#include "config_hurd.h"
|
|
+#elif defined(__HAIKU__)
|
|
+ #include "config_haiku.h"
|
|
#endif
|
|
diff --git a/extern/libmv/third_party/glog/src/config_haiku.h b/extern/libmv/third_party/glog/src/config_haiku.h
|
|
new file mode 100644
|
|
index 0000000..7d19272
|
|
--- /dev/null
|
|
+++ b/extern/libmv/third_party/glog/src/config_haiku.h
|
|
@@ -0,0 +1,172 @@
|
|
+/* src/config.h. Generated from config.h.in by configure. */
|
|
+/* src/config.h.in. Generated from configure.ac by autoheader. */
|
|
+
|
|
+/* Namespace for Google classes */
|
|
+#define GOOGLE_NAMESPACE google
|
|
+
|
|
+/* Define if you have the `dladdr' function */
|
|
+/* #undef HAVE_DLADDR */
|
|
+
|
|
+/* Define to 1 if you have the <dlfcn.h> header file. */
|
|
+#define HAVE_DLFCN_H 1
|
|
+
|
|
+/* Define to 1 if you have the <execinfo.h> header file. */
|
|
+#undef HAVE_EXECINFO_H
|
|
+
|
|
+/* Define if you have the `fcntl' function */
|
|
+#define HAVE_FCNTL 1
|
|
+
|
|
+/* Define to 1 if you have the <glob.h> header file. */
|
|
+#define HAVE_GLOB_H 1
|
|
+
|
|
+/* Define to 1 if you have the <inttypes.h> header file. */
|
|
+#define HAVE_INTTYPES_H 1
|
|
+
|
|
+/* Define to 1 if you have the `pthread' library (-lpthread). */
|
|
+/* #undef HAVE_LIBPTHREAD */
|
|
+
|
|
+/* Define to 1 if you have the <libunwind.h> header file. */
|
|
+/* #undef HAVE_LIBUNWIND_H */
|
|
+
|
|
+/* define if you have google gflags library */
|
|
+#define HAVE_LIB_GFLAGS 1
|
|
+
|
|
+/* define if you have google gmock library */
|
|
+/* #undef HAVE_LIB_GMOCK */
|
|
+
|
|
+/* define if you have google gtest library */
|
|
+/* #undef HAVE_LIB_GTEST */
|
|
+
|
|
+/* define if you have libunwind */
|
|
+/* #undef HAVE_LIB_UNWIND */
|
|
+
|
|
+/* Define to 1 if you have the <memory.h> header file. */
|
|
+#define HAVE_MEMORY_H 1
|
|
+
|
|
+/* define if the compiler implements namespaces */
|
|
+#define HAVE_NAMESPACES 1
|
|
+
|
|
+/* Define if you have the 'pread' function */
|
|
+#define HAVE_PREAD 1
|
|
+
|
|
+/* Define if you have POSIX threads libraries and header files. */
|
|
+#define HAVE_PTHREAD 1
|
|
+
|
|
+/* Define to 1 if you have the <pwd.h> header file. */
|
|
+#define HAVE_PWD_H 1
|
|
+
|
|
+/* Define if you have the 'pwrite' function */
|
|
+#define HAVE_PWRITE 1
|
|
+
|
|
+/* define if the compiler implements pthread_rwlock_* */
|
|
+#define HAVE_RWLOCK 1
|
|
+
|
|
+/* Define if you have the `sigaltstack' function */
|
|
+#define HAVE_SIGALTSTACK 1
|
|
+
|
|
+/* Define to 1 if you have the <stdint.h> header file. */
|
|
+#define HAVE_STDINT_H 1
|
|
+
|
|
+/* Define to 1 if you have the <stdlib.h> header file. */
|
|
+#define HAVE_STDLIB_H 1
|
|
+
|
|
+/* Define to 1 if you have the <strings.h> header file. */
|
|
+#define HAVE_STRINGS_H 1
|
|
+
|
|
+/* Define to 1 if you have the <string.h> header file. */
|
|
+#define HAVE_STRING_H 1
|
|
+
|
|
+/* Define to 1 if you have the <syscall.h> header file. */
|
|
+/* #undef HAVE_SYSCALL_H */
|
|
+
|
|
+/* Define to 1 if you have the <syslog.h> header file. */
|
|
+#define HAVE_SYSLOG_H 1
|
|
+
|
|
+/* Define to 1 if you have the <sys/stat.h> header file. */
|
|
+#define HAVE_SYS_STAT_H 1
|
|
+
|
|
+/* Define to 1 if you have the <sys/syscall.h> header file. */
|
|
+/* #undef HAVE_SYS_SYSCALL_H */
|
|
+
|
|
+/* Define to 1 if you have the <sys/time.h> header file. */
|
|
+#define HAVE_SYS_TIME_H 1
|
|
+
|
|
+/* Define to 1 if you have the <sys/types.h> header file. */
|
|
+#define HAVE_SYS_TYPES_H 1
|
|
+
|
|
+/* Define to 1 if you have the <sys/ucontext.h> header file. */
|
|
+/* #undef HAVE_SYS_UCONTEXT_H */
|
|
+
|
|
+/* Define to 1 if you have the <sys/utsname.h> header file. */
|
|
+#define HAVE_SYS_UTSNAME_H 1
|
|
+
|
|
+/* Define to 1 if you have the <ucontext.h> header file. */
|
|
+/* #undef HAVE_UCONTEXT_H */
|
|
+
|
|
+/* Define to 1 if you have the <unistd.h> header file. */
|
|
+#define HAVE_UNISTD_H 1
|
|
+
|
|
+/* define if the compiler supports using expression for operator */
|
|
+#define HAVE_USING_OPERATOR 1
|
|
+
|
|
+/* define if your compiler has __attribute__ */
|
|
+#define HAVE___ATTRIBUTE__ 1
|
|
+
|
|
+/* define if your compiler has __builtin_expect */
|
|
+#define HAVE___BUILTIN_EXPECT 1
|
|
+
|
|
+/* define if your compiler has __sync_val_compare_and_swap */
|
|
+/* #undef HAVE___SYNC_VAL_COMPARE_AND_SWAP */
|
|
+
|
|
+/* Name of package */
|
|
+#define PACKAGE "glog"
|
|
+
|
|
+/* Define to the address where bug reports for this package should be sent. */
|
|
+#define PACKAGE_BUGREPORT "opensource@google.com"
|
|
+
|
|
+/* Define to the full name of this package. */
|
|
+#define PACKAGE_NAME "glog"
|
|
+
|
|
+/* Define to the full name and version of this package. */
|
|
+#define PACKAGE_STRING "glog 0.3.2"
|
|
+
|
|
+/* Define to the one symbol short name of this package. */
|
|
+#define PACKAGE_TARNAME "glog"
|
|
+
|
|
+/* Define to the version of this package. */
|
|
+#define PACKAGE_VERSION "0.3.2"
|
|
+
|
|
+/* How to access the PC from a struct ucontext */
|
|
+/* #define PC_FROM_UCONTEXT uc_mcontext.gregs[REG_RIP] */
|
|
+
|
|
+/* Define to necessary symbol if this constant uses a non-standard name on
|
|
+ your system. */
|
|
+/* #undef PTHREAD_CREATE_JOINABLE */
|
|
+
|
|
+/* The size of `void *', as computed by sizeof. */
|
|
+#define SIZEOF_VOID_P 8
|
|
+
|
|
+/* Define to 1 if you have the ANSI C header files. */
|
|
+/* #undef STDC_HEADERS */
|
|
+
|
|
+#define STDC_HEADERS 1
|
|
+/* the namespace where STL code like vector<> is defined */
|
|
+#define STL_NAMESPACE std
|
|
+
|
|
+/* location of source code */
|
|
+#define TEST_SRC_DIR "."
|
|
+
|
|
+/* Version number of package */
|
|
+#define VERSION "0.3.2"
|
|
+
|
|
+/* Stops putting the code inside the Google namespace */
|
|
+#define _END_GOOGLE_NAMESPACE_ }
|
|
+
|
|
+/* Puts following code inside the Google namespace */
|
|
+#define _START_GOOGLE_NAMESPACE_ namespace google {
|
|
+
|
|
+/* isn't getting defined by configure script when clang compilers are used
|
|
+ and cuases compilation errors in stactrace/unwind modules */
|
|
+#ifdef __clang__
|
|
+# define NO_FRAME_POINTER
|
|
+#endif
|
|
diff --git a/intern/guardedalloc/intern/mallocn_intern.h b/intern/guardedalloc/intern/mallocn_intern.h
|
|
index 6cab1f0..95dcf55 100644
|
|
--- a/intern/guardedalloc/intern/mallocn_intern.h
|
|
+++ b/intern/guardedalloc/intern/mallocn_intern.h
|
|
@@ -62,6 +62,9 @@
|
|
#elif defined(WIN32)
|
|
# include <malloc.h>
|
|
# define malloc_usable_size _msize
|
|
+#elif defined(__HAIKU__)
|
|
+# include <malloc.h>
|
|
+size_t malloc_usable_size(void *ptr);
|
|
#else
|
|
# error "We don't know how to use malloc_usable_size on your platform"
|
|
#endif
|
|
diff --git a/source/blender/blenkernel/intern/bvhutils.c b/source/blender/blenkernel/intern/bvhutils.c
|
|
index 1a4a4bd..36cebb2 100644
|
|
--- a/source/blender/blenkernel/intern/bvhutils.c
|
|
+++ b/source/blender/blenkernel/intern/bvhutils.c
|
|
@@ -48,6 +48,17 @@
|
|
|
|
static ThreadRWMutex cache_rwlock = BLI_RWLOCK_INITIALIZER;
|
|
|
|
+#ifdef __HAIKU__
|
|
+static pthread_once_t sInitOnce = PTHREAD_ONCE_INIT;
|
|
+
|
|
+static void
|
|
+init_cache_rwlock()
|
|
+{
|
|
+ pthread_rwlock_init(&cache_rwlock, NULL);
|
|
+}
|
|
+#endif
|
|
+
|
|
+
|
|
/* Math stuff for ray casting on mesh faces and for nearest surface */
|
|
|
|
float bvhtree_ray_tri_intersection(const BVHTreeRay *ray, const float UNUSED(m_dist), const float v0[3], const float v1[3], const float v2[3])
|
|
@@ -812,6 +823,9 @@ void bvhcache_insert(BVHCache *cache, BVHTree *tree, int type)
|
|
|
|
void bvhcache_init(BVHCache *cache)
|
|
{
|
|
+#ifdef __HAIKU__
|
|
+ pthread_once(&sInitOnce, &init_cache_rwlock);
|
|
+#endif
|
|
*cache = NULL;
|
|
}
|
|
|
|
diff --git a/source/blender/blenkernel/intern/font.c b/source/blender/blenkernel/intern/font.c
|
|
index 2adf8eb..06d2807 100644
|
|
--- a/source/blender/blenkernel/intern/font.c
|
|
+++ b/source/blender/blenkernel/intern/font.c
|
|
@@ -64,6 +64,16 @@
|
|
|
|
static ThreadRWMutex vfont_rwlock = BLI_RWLOCK_INITIALIZER;
|
|
|
|
+#ifdef __HAIKU__
|
|
+static pthread_once_t sInitOnce = PTHREAD_ONCE_INIT;
|
|
+
|
|
+static void
|
|
+init_vfont_rwlock()
|
|
+{
|
|
+ pthread_rwlock_init(&vfont_rwlock, NULL);
|
|
+}
|
|
+#endif
|
|
+
|
|
/* The vfont code */
|
|
void BKE_vfont_free_data(struct VFont *vfont)
|
|
{
|
|
@@ -597,6 +607,11 @@ bool BKE_vfont_to_curve_ex(Main *bmain, Object *ob, int mode, ListBase *r_nubase
|
|
* because the cursor can be at that location */
|
|
|
|
BLI_assert(ob->type == OB_FONT);
|
|
+
|
|
+#ifdef __HAIKU__
|
|
+ pthread_once(&sInitOnce, &init_vfont_rwlock);
|
|
+#endif
|
|
+
|
|
|
|
/* Set font data */
|
|
vfont = cu->vfont;
|
|
diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c
|
|
index b7ebcfa..9fc872a 100644
|
|
--- a/source/blender/blenkernel/intern/particle_system.c
|
|
+++ b/source/blender/blenkernel/intern/particle_system.c
|
|
@@ -106,6 +106,16 @@
|
|
|
|
static ThreadRWMutex psys_bvhtree_rwlock = BLI_RWLOCK_INITIALIZER;
|
|
|
|
+#ifdef __HAIKU__
|
|
+static pthread_once_t sInitOnce = PTHREAD_ONCE_INIT;
|
|
+
|
|
+static void
|
|
+init_psys_bvhtree_rwlock()
|
|
+{
|
|
+ pthread_rwlock_init(&psys_bvhtree_rwlock, NULL);
|
|
+}
|
|
+#endif
|
|
+
|
|
/************************************************/
|
|
/* Reacting to system events */
|
|
/************************************************/
|
|
@@ -4034,6 +4044,11 @@ void particle_system_update(Scene *scene, Object *ob, ParticleSystem *psys)
|
|
ParticleSimulationData sim= {0};
|
|
ParticleSettings *part = psys->part;
|
|
float cfra;
|
|
+
|
|
+#ifdef __HAIKU__
|
|
+ pthread_once(&sInitOnce, &init_psys_bvhtree_rwlock);
|
|
+#endif
|
|
+
|
|
|
|
/* drawdata is outdated after ANY change */
|
|
if (psys->pdd) psys->pdd->flag &= ~PARTICLE_DRAW_DATA_UPDATED;
|
|
diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c
|
|
index 9519c7b..6e03981 100644
|
|
--- a/source/blender/blenkernel/intern/subsurf_ccg.c
|
|
+++ b/source/blender/blenkernel/intern/subsurf_ccg.c
|
|
@@ -80,6 +80,17 @@ extern GLubyte stipple_quarttone[128]; /* glutil.c, bad level data */
|
|
static ThreadRWMutex loops_cache_rwlock = BLI_RWLOCK_INITIALIZER;
|
|
static ThreadRWMutex origindex_cache_rwlock = BLI_RWLOCK_INITIALIZER;
|
|
|
|
+#ifdef __HAIKU__
|
|
+static pthread_once_t sInitOnce = PTHREAD_ONCE_INIT;
|
|
+
|
|
+static void
|
|
+init_cache_rwlock()
|
|
+{
|
|
+ pthread_rwlock_init(&loops_cache_rwlock, NULL);
|
|
+ pthread_rwlock_init(&origindex_cache_rwlock, NULL);
|
|
+}
|
|
+#endif
|
|
+
|
|
static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss,
|
|
int drawInteriorEdges,
|
|
int useSubsurfUv,
|
|
@@ -3392,6 +3403,10 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss,
|
|
MPoly *mpoly = NULL;
|
|
bool has_edge_cd;
|
|
|
|
+#ifdef __HAIKU__
|
|
+ pthread_once(&sInitOnce, &init_cache_rwlock);
|
|
+#endif
|
|
+
|
|
DM_from_template(&ccgdm->dm, dm, DM_TYPE_CCGDM,
|
|
ccgSubSurf_getNumFinalVerts(ss),
|
|
ccgSubSurf_getNumFinalEdges(ss),
|
|
diff --git a/source/blender/blenlib/BLI_threads.h b/source/blender/blenlib/BLI_threads.h
|
|
index 74291ca..9d031ba 100644
|
|
--- a/source/blender/blenlib/BLI_threads.h
|
|
+++ b/source/blender/blenlib/BLI_threads.h
|
|
@@ -126,7 +126,11 @@ void BLI_spin_end(SpinLock *spin);
|
|
#define THREAD_LOCK_READ 1
|
|
#define THREAD_LOCK_WRITE 2
|
|
|
|
+#ifdef __HAIKU__
|
|
+#define BLI_RWLOCK_INITIALIZER {}
|
|
+#else
|
|
#define BLI_RWLOCK_INITIALIZER PTHREAD_RWLOCK_INITIALIZER
|
|
+#endif
|
|
|
|
typedef pthread_rwlock_t ThreadRWMutex;
|
|
|
|
diff --git a/source/blender/blenlib/intern/fileops.c b/source/blender/blenlib/intern/fileops.c
|
|
index d6fe5e5..a81355d 100644
|
|
--- a/source/blender/blenlib/intern/fileops.c
|
|
+++ b/source/blender/blenlib/intern/fileops.c
|
|
@@ -583,6 +583,10 @@ static int recursive_operation(const char *startfrom, const char *startto,
|
|
|
|
for (i = 0; i < n; i++) {
|
|
const struct dirent * const dirent = dirlist[i];
|
|
+#ifdef __HAIKU__
|
|
+ struct stat st;
|
|
+ char filename[512];
|
|
+#endif
|
|
|
|
if (FILENAME_IS_CURRPAR(dirent->d_name))
|
|
continue;
|
|
@@ -591,7 +595,13 @@ static int recursive_operation(const char *startfrom, const char *startto,
|
|
if (to)
|
|
join_dirfile_alloc(&to_path, &to_alloc_len, to, dirent->d_name);
|
|
|
|
+#ifdef __HAIKU__
|
|
+ snprintf(filename, sizeof(filename), "%s/%s", startfrom, dirent->d_name);
|
|
+ lstat(filename, &st);
|
|
+ if (S_ISDIR(st.st_mode)) {
|
|
+#else
|
|
if (dirent->d_type == DT_DIR) {
|
|
+#endif
|
|
/* recursively dig into a subfolder */
|
|
ret = recursive_operation(from_path, to_path, callback_dir_pre, callback_file, callback_dir_post);
|
|
}
|
|
diff --git a/source/blender/blenlib/intern/storage.c b/source/blender/blenlib/intern/storage.c
|
|
index 46c5a11..a38bbb3 100644
|
|
--- a/source/blender/blenlib/intern/storage.c
|
|
+++ b/source/blender/blenlib/intern/storage.c
|
|
@@ -42,7 +42,7 @@
|
|
#include <time.h>
|
|
#include <sys/stat.h>
|
|
|
|
-#if defined(__NetBSD__) || defined(__DragonFly__) || defined(__sun__) || defined(__sun)
|
|
+#if defined(__NetBSD__) || defined(__DragonFly__) || defined(__sun__) || defined(__sun) || defined(__HAIKU__)
|
|
/* Other modern unix os's should probably use this also */
|
|
# include <sys/statvfs.h>
|
|
# define USE_STATFS_STATVFS
|
|
--
|
|
1.8.3.4
|
|
|