Browse Source

Complete Haiku platform support. (#10311)

Fixing linkage/libraries missing issue.
Implements missing platform specifics.
David CARLIER 3 years ago
parent
commit
cf5547227d
6 changed files with 24 additions and 5 deletions
  1. 4 0
      src/CMakeLists.txt
  2. 0 5
      src/network/CMakeLists.txt
  3. 10 0
      src/porting.cpp
  4. 2 0
      src/porting.h
  5. 4 0
      src/threading/thread.cpp
  6. 4 0
      src/threading/thread.h

+ 4 - 0
src/CMakeLists.txt

@@ -351,6 +351,10 @@ else()
 	if (ICONV_LIBRARY)
 		set(PLATFORM_LIBS ${PLATFORM_LIBS} ${ICONV_LIBRARY})
 	endif()
+	if (HAIKU)
+		set(PLATFORM_LIBS ${PLATFORM_LIBS} intl network)
+	endif()
+
 endif()
 
 check_include_files(endian.h HAVE_ENDIAN_H)

+ 0 - 5
src/network/CMakeLists.txt

@@ -16,8 +16,3 @@ if (BUILD_CLIENT)
 		PARENT_SCOPE
 	)
 endif()
-
-# Haiku networking support
-if(HAIKU)
-	set(PLATFORM_LIBS -lnetwork ${PLATFORM_LIBS})
-endif()

+ 10 - 0
src/porting.cpp

@@ -56,6 +56,10 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 	#include <crt_externs.h>
 #endif
 
+#if defined(__HAIKU__)
+        #include <FindDirectory.h>
+#endif
+
 #include "config.h"
 #include "debug.h"
 #include "filesys.h"
@@ -321,6 +325,12 @@ bool getCurrentExecPath(char *buf, size_t len)
 	return true;
 }
 
+#elif defined(__HAIKU__)
+
+bool getCurrentExecPath(char *buf, size_t len)
+{
+	return find_path(B_APP_IMAGE_SYMBOL, B_FIND_PATH_IMAGE_PATH, NULL, buf, len) == B_OK;
+}
 
 //// Solaris
 #elif defined(__sun) || defined(sun)

+ 2 - 0
src/porting.h

@@ -309,6 +309,8 @@ inline const char *getPlatformName()
 	#else
 		"SunOS"
 	#endif
+#elif defined(__HAIKU__)
+	"Haiku"
 #elif defined(__CYGWIN__)
 	"Cygwin"
 #elif defined(__unix__) || defined(__unix)

+ 4 - 0
src/threading/thread.cpp

@@ -225,6 +225,10 @@ void Thread::setName(const std::string &name)
 
 	pthread_setname_np(name.c_str());
 
+#elif defined(__HAIKU__)
+
+	rename_thread(find_thread(NULL), name.c_str());
+
 #elif defined(_MSC_VER)
 
 	// Windows itself doesn't support thread names,

+ 4 - 0
src/threading/thread.h

@@ -36,6 +36,10 @@ DEALINGS IN THE SOFTWARE.
 	#include <sys/thread.h> // for tid_t
 #endif
 
+#ifdef __HAIKU__
+	#include <kernel/OS.h>
+#endif
+
 /*
  * On platforms using pthreads, these five priority classes correlate to
  * even divisions between the minimum and maximum reported thread priority.