Haiku patch

This commit is contained in:
Jerome Duval 2017-03-22 22:05:39 +01:00 committed by manongjohn
parent c87386309b
commit 75817ffe22
20 changed files with 86 additions and 22 deletions

View file

@ -188,7 +188,7 @@ elseif(BUILD_ENV_APPLE)
elseif(BUILD_ENV_UNIXLIKE)
# Needed for correct Qt detection
cmake_minimum_required(VERSION 2.8.12)
set(PRELOAD_VARIABLE "LD_LIBRARY_PATH")
if(CMAKE_SIZEOF_VOID_P MATCHES "8")
set(PLATFORM 64)
else()
@ -196,6 +196,9 @@ elseif(BUILD_ENV_UNIXLIKE)
endif()
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
add_definitions(-DLINUX)
elseif(CMAKE_SYSTEM_NAME MATCHES "Haiku")
add_definitions(-DHAIKU)
set(PRELOAD_VARIABLE "LIBRARY_PATH")
elseif(CMAKE_SYSTEM_NAME MATCHES "^.*BSD$|DragonFly")
set(BUILD_TARGET_BSD ON)
add_definitions(-D_BSD_SOURCE -DFREEBSD)
@ -528,6 +531,9 @@ elseif(BUILD_ENV_UNIXLIKE)
find_package(LZO REQUIRED)
message("LZO:" ${LZO_INCLUDE_DIR})
if(HAIKU)
find_library(EXECINFO_LIBRARY execinfo)
endif()
find_library(PTHREAD_LIBRARY pthread)
if(NOT BUILD_TARGET_WIN)

View file

@ -6,6 +6,7 @@
#include <QDir>
#include <QSettings>
#include <QStandardPaths>
#include <QCoreApplication>
#ifdef LEVO_MACOSX
@ -80,12 +81,16 @@ public:
settingsPath = QString::fromStdString(getApplicationFileName()) +
QString(".app") +
QString("/Contents/Resources/SystemVar.ini");
#else
#ifdef HAIKU
settingsPath = QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + "/SystemVar.ini";
#else /* Generic Unix */
// TODO: use QStandardPaths::ConfigLocation when we drop Qt4
settingsPath = QDir::homePath();
settingsPath.append("/.config/");
settingsPath.append(getApplicationName().c_str());
settingsPath.append("/SystemVar.ini");
#endif
#endif
QSettings settings(settingsPath, QSettings::IniFormat);

View file

@ -12,14 +12,14 @@
#ifdef _WIN32
#include <cstdlib>
#include <GL/glut.h>
#elif defined(LINUX) || defined(FREEBSD)
#elif defined(LINUX) || defined(FREEBSD) || defined(HAIKU)
#include <GL/glut.h>
#else
#include <GLUT/glut.h>
#endif
#endif
#if defined(MACOSX) || defined(LINUX) || defined(FREEBSD)
#if defined(MACOSX) || defined(LINUX) || defined(FREEBSD) || defined(HAIKU)
#include <QGLContext>
#endif
@ -617,7 +617,7 @@ void tglMakeCurrent(TGlContext context) {
void tglDoneCurrent(TGlContext) { wglMakeCurrent(NULL, NULL); }
#elif defined(LINUX) || defined(FREEBSD) || defined(__sgi) || defined(MACOSX)
#elif defined(LINUX) || defined(FREEBSD) || defined(__sgi) || defined(MACOSX) || defined(HAIKU)
TGlContext tglGetCurrentContext() {
return reinterpret_cast<TGlContext>(

View file

@ -18,7 +18,7 @@
#elif defined(MACOSX)
#include <sys/sysctl.h>
#include <unistd.h>
#elif defined(LINUX) || defined(FREEBSD)
#elif defined(LINUX) || defined(FREEBSD) || defined(HAIKU)
#include <sys/time.h>
#include <unistd.h>
#endif

View file

@ -20,12 +20,16 @@
#endif
#include <stdio.h>
#include <unistd.h>
#ifndef HAIKU
#include <sys/dir.h>
#endif
#include <sys/param.h> // for getfsstat
#ifdef MACOSX
#include <sys/ucred.h>
#endif
#ifndef HAIKU
#include <sys/mount.h>
#endif
#include <pwd.h>
#include <dlfcn.h>
#endif
@ -172,7 +176,7 @@ void TPluginManager::loadPlugin(const TFilePath &fp) {
void TPluginManager::loadPlugins(const TFilePath &dir) {
#if defined(_WIN32)
const std::string extension = "dll";
#elif defined(LINUX) || defined(FREEBSD) || defined(__sgi)
#elif defined(LINUX) || defined(FREEBSD) || defined(__sgi) || defined(HAIKU)
const std::string extension = "so";
#elif defined(MACOSX)
const std::string extension = "dylib";

View file

@ -123,6 +123,23 @@
#endif
#ifdef HAIKU
#define PLATFORM HAIKU
#include <grp.h>
#include <utime.h>
#include <sys/param.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
#include <dirent.h>
#include <pwd.h>
#include <dlfcn.h>
#include <utime.h>
#include <sys/time.h>
#endif
#ifndef PLATFORM
PLATFORM_NOT_SUPPORTED
#endif
@ -216,6 +233,11 @@ bool TSystem::memoryShortage() {
// to be done...
return false;
#elif defined(HAIKU)
// to be done...
return false;
#else
@ @ @ERROR : PLATFORM NOT SUPPORTED
@ -308,6 +330,11 @@ TINT64 TSystem::getFreeMemorySize(bool onlyPhysicalMemory) {
// to be done...
totalFree = 512 * 1024;
#elif defined(HAIKU)
// to be done...
totalFree = 512 * 1024;
#else
@ @ @ERROR : PLATFORM NOT SUPPORTED
#endif
@ -336,6 +363,9 @@ TINT64 TSystem::getDiskSize(const TFilePath &diskName) {
return 0;
}
#ifndef _WIN32
#ifdef HAIKU
size = 0;
#else
struct statfs buf;
#ifdef __sgi
statfs(::to_string(diskName).c_str(), &buf, sizeof(struct statfs), 0);
@ -343,6 +373,7 @@ TINT64 TSystem::getDiskSize(const TFilePath &diskName) {
statfs(::to_string(diskName).c_str(), &buf);
#endif
size = (TINT64)((buf.f_blocks * buf.f_bsize) >> 10);
#endif
#else
DWORD sectorsPerCluster; // sectors per cluster
DWORD bytesPerSector; // bytes per sector
@ -373,6 +404,9 @@ TINT64 TSystem::getFreeDiskSize(const TFilePath &diskName) {
return 0;
}
#ifndef _WIN32
#ifdef HAIKU
size = 0;
#else
struct statfs buf;
#ifdef __sgi
statfs(diskName.getWideString().c_str(), &buf, sizeof(struct statfs), 0);
@ -380,6 +414,7 @@ TINT64 TSystem::getFreeDiskSize(const TFilePath &diskName) {
statfs(::to_string(diskName).c_str(), &buf);
#endif
size = (TINT64)(buf.f_bfree * buf.f_bsize) >> 10;
#endif
#else
DWORD sectorsPerCluster; // sectors per cluster
DWORD bytesPerSector; // bytes per sector
@ -465,6 +500,11 @@ TINT64 TSystem::getMemorySize(bool onlyPhysicalMemory) {
// to be done...
return 512 * 1024;
#elif defined(HAIKU)
// to be done...
return 512 * 1024;
#else
@ @ @ERROR : PLATFORM NOT SUPPORTED
#endif

View file

@ -19,7 +19,7 @@
#include "tthread.h"
#elif defined(MACOSX)
#elif defined(MACOSX) || defined(HAIKU)
#include "qtofflinegl.h"
@ -500,7 +500,7 @@ static std::shared_ptr<TOfflineGL::Imp> defaultOfflineGLGenerator(
return std::make_shared<QtOfflineGL>(dim, shared);
}
#elif defined(MACOSX)
#elif defined(MACOSX) || defined(HAIKU)
std::shared_ptr<TOfflineGL::Imp> defaultOfflineGLGenerator(
const TDimension &dim, std::shared_ptr<TOfflineGL::Imp> shared) {

View file

@ -94,7 +94,7 @@ static void CALLBACK myCombine(GLdouble coords[3], GLdouble *d[4], GLfloat w[4],
typedef GLvoid(CALLBACK *GluCallback)(void);
#endif
#if defined(MACOSX) || defined(LINUX) || defined(FREEBSD)
#if defined(MACOSX) || defined(LINUX) || defined(FREEBSD) || defined(HAIKU)
typedef GLvoid (*GluCallback)();

View file

@ -58,7 +58,7 @@ char *convertWCHAR2CHAR(const wchar_t *wc) {
}
#endif
/*-----------------------------------*/
#if defined(MACOSX) || defined(LINUX) || defined(FREEBSD)
#if defined(MACOSX) || defined(LINUX) || defined(FREEBSD) || defined(HAIKU)
FILE *_wfopen(const wchar_t *fname, const wchar_t *mode) {
char *cfname = convertWCHAR2CHAR(fname);

View file

@ -19,7 +19,7 @@ extern "C" {
char *convertWCHAR2CHAR(const wchar_t *fname);
#if defined(MACOSX) || defined(LINUX) || defined(FREEBSD)
#if defined(MACOSX) || defined(LINUX) || defined(FREEBSD) || defined(HAIKU)
#include <sys/types.h>
#include <sys/stat.h>

View file

@ -34,7 +34,7 @@ TNZ_LITTLE_ENDIAN undefined !!
unsigned char b, g, r, m;
#elif defined(__sgi)
unsigned char m, b, g, r;
#elif defined(LINUX) || defined(FREEBSD)
#elif defined(LINUX) || defined(FREEBSD) || defined(HAIKU)
unsigned char r, g, b, m;
#elif defined(MACOSX)
unsigned char m, r, g, b;
@ -48,7 +48,7 @@ typedef struct SPIXEL {
unsigned short b, g, r, m;
#elif defined(__sgi)
unsigned short m, b, g, r;
#elif defined(LINUX) || defined(FREEBSD)
#elif defined(LINUX) || defined(FREEBSD) || defined(HAIKU)
unsigned short r, g, b, m;
#elif defined(MACOSX)
unsigned char m, r, g, b;

View file

@ -435,7 +435,7 @@ void ParsedPli::setMaxThickness(double maxThickness) {
};
/* indirect inclusion of <math.h> causes 'abs' to return double on Linux */
#if defined(LINUX) || defined(FREEBSD) || (defined(_WIN32) && defined(__GNUC__))
#if defined(LINUX) || defined(FREEBSD) || (defined(_WIN32) && defined(__GNUC__)) || defined(HAIKU)
template <typename T>
T abs_workaround(T a) {
return (a > 0) ? a : -a;

View file

@ -14,7 +14,7 @@
#include <GL/glu.h>
#elif defined(MACOSX)
#include <GLUT/glut.h>
#elif defined(LINUX) || defined(FREEBSD)
#elif defined(LINUX) || defined(FREEBSD) || defined(HAIKU)
#include <GL/glut.h>
#include <cstring>
#endif

View file

@ -21,7 +21,7 @@
#define GLUT_NO_WARNING_DISABLE
#endif
#if defined(LINUX) || defined(FREEBSD)
#if defined(LINUX) || defined(FREEBSD) || defined(HAIKU)
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>

View file

@ -7,7 +7,7 @@
#define TNZ_MACHINE_CHANNEL_ORDER_BGRM 1
#elif defined(__sgi)
#define TNZ_MACHINE_CHANNEL_ORDER_MBGR 1
#elif defined(LINUX) || defined(FREEBSD)
#elif defined(LINUX) || defined(FREEBSD) || defined(HAIKU)
#define TNZ_MACHINE_CHANNEL_ORDER_BGRM 1
#elif defined(MACOSX)
#define TNZ_MACHINE_CHANNEL_ORDER_MRGB 1

View file

@ -18,7 +18,7 @@ typedef uint32_t TUINT32;
typedef int64_t TINT64;
typedef uint64_t TUINT64;
#elif defined(__LP64__) && !(defined(LINUX) || defined(FREEBSD))
#elif defined(__LP64__) && !(defined(LINUX) || defined(FREEBSD) || defined(HAIKU))
#define TINT32 \
; \
@ -40,6 +40,13 @@ typedef int32_t TINT32;
typedef uint32_t TUINT32;
typedef int64_t TINT64;
typedef uint64_t TUINT64;
#elif defined(HAIKU)
#include <stdint.h>
#define TINT32 int32_t
typedef uint32_t TUINT32;
typedef int64_t TINT64;
typedef uint64_t TUINT64;
#endif
#endif

View file

@ -177,7 +177,7 @@ undefined machine order !!!!
TPixelRGBM64(int rr, int gg, int bb, int mm = maxChannelValue)
: r(rr), g(gg), b(bb), m(mm){};
#else
#if defined(LINUX) || defined(FREEBSD) || defined(MACOSX)
#if defined(LINUX) || defined(FREEBSD) || defined(MACOSX) || defined(HAIKU)
#ifdef powerpc

View file

@ -545,7 +545,7 @@ elseif(BUILD_ENV_UNIXLIKE)
#
set(EXTRA_LIBS ${EXTRA_LIBS} "$<TARGET_FILE:tnzstdfx>" "$<TARGET_FILE:tfarm>")
set(EXTRA_LIBS ${EXTRA_LIBS} ${Boost_LIBRARIES} ${OPENBLAS_LIB})
set(EXTRA_LIBS ${EXTRA_LIBS} ${Boost_LIBRARIES} ${OPENBLAS_LIB} ${EXECINFO_LIBRARY})
if(WITH_GPHOTO2)
set(EXTRA_LIBS ${EXTRA_LIBS} ${GPHOTO2_LIB} ${GPHOTO2_PORT_LIB})
@ -706,7 +706,7 @@ TAHOMA2DSTUDIOPALETTE=\"\$HOME/.config/Tahoma2D/stuff/studiopalette\"
EOF
fi
export LD_LIBRARY_PATH=\${TAHOMA2D_BASE}/lib/tahoma2d:\${LD_LIBRARY_PATH}
export ${PRELOAD_VARIABLE}=\${TAHOMA2D_BASE}/lib/tahoma2d:\${${PRELOAD_VARIABLE}}
exec \$TAHOMA2D_BASE/bin/Tahoma2D \"\$@\"
")

View file

@ -560,7 +560,9 @@ int main(int argc, char *argv[]) {
fmt.setStencil(true);
QGLFormat::setDefaultFormat(fmt);
#ifndef __HAIKU__
glutInit(&argc, argv);
#endif
splash.showMessage(offsetStr + QObject::tr("Initializing environment..."),
Qt::AlignRight | Qt::AlignBottom, Qt::black);

View file

@ -1,5 +1,5 @@
#if defined(LINUX) || defined(FREEBSD)
#if defined(LINUX) || defined(FREEBSD) || defined(HAIKU)
#define GL_GLEXT_PROTOTYPES
#endif