aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Engelhardt <[email protected]>2023-11-09 19:32:47 +0000
committerGitHub <[email protected]>2023-11-09 19:32:47 +0000
commit1a35bb6d71b6301287e21aaabd112997ea0f0a7f (patch)
tree2c707feec48c68e26f0fc7b5b5d6de51eb5cb56a
parentUpdate cmake (#277) (diff)
downloadvmime-1a35bb6d71b6301287e21aaabd112997ea0f0a7f.tar.gz
vmime-1a35bb6d71b6301287e21aaabd112997ea0f0a7f.zip
Build: add Solaris compilation support (#282)
-rw-r--r--CMakeLists.txt1
-rw-r--r--cmake/config.hpp.cmake1
-rw-r--r--src/vmime/platforms/posix/posixHandler.cpp5
3 files changed, 7 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e8092eef..8f903e9f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -845,6 +845,7 @@ CHECK_FUNCTION_EXISTS(gettid VMIME_HAVE_GETTID)
CHECK_FUNCTION_EXISTS(syscall VMIME_HAVE_SYSCALL)
CHECK_SYMBOL_EXISTS(SYS_gettid sys/syscall.h VMIME_HAVE_SYSCALL_GETTID)
CHECK_SYMBOL_EXISTS(getthrid unistd.h VMIME_HAVE_GETTHRID)
+CHECK_SYMBOL_EXISTS(_lwp_self sys/lwp.h VMIME_HAVE_LWP_SELF)
CHECK_SYMBOL_EXISTS(SO_KEEPALIVE sys/socket.h VMIME_HAVE_SO_KEEPALIVE)
CHECK_SYMBOL_EXISTS(SO_NOSIGPIPE sys/socket.h VMIME_HAVE_SO_NOSIGPIPE)
diff --git a/cmake/config.hpp.cmake b/cmake/config.hpp.cmake
index c5e9fdef..6cf49b8c 100644
--- a/cmake/config.hpp.cmake
+++ b/cmake/config.hpp.cmake
@@ -77,6 +77,7 @@ typedef unsigned @VMIME_64BIT_TYPE@ vmime_uint64;
#cmakedefine01 VMIME_HAVE_SYSCALL
#cmakedefine01 VMIME_HAVE_SYSCALL_GETTID
#cmakedefine01 VMIME_HAVE_GETTHRID
+#cmakedefine01 VMIME_HAVE_LWP_SELF
#cmakedefine01 VMIME_HAVE_GMTIME_S
#cmakedefine01 VMIME_HAVE_GMTIME_R
#cmakedefine01 VMIME_HAVE_LOCALTIME_S
diff --git a/src/vmime/platforms/posix/posixHandler.cpp b/src/vmime/platforms/posix/posixHandler.cpp
index eecdbea9..148d2169 100644
--- a/src/vmime/platforms/posix/posixHandler.cpp
+++ b/src/vmime/platforms/posix/posixHandler.cpp
@@ -48,6 +48,9 @@
#if VMIME_HAVE_SYSCALL
# include <sys/syscall.h>
#endif
+#if VMIME_HAVE_LWP_SELF
+# include <sys/lwp.h>
+#endif
#include <netdb.h>
@@ -227,6 +230,8 @@ unsigned int posixHandler::getThreadId() const {
return static_cast <unsigned int>(::syscall(SYS_gettid));
#elif VMIME_HAVE_GETTHRID // OpenBSD
return static_cast <unsigned int>(::getthrid());
+#elif VMIME_HAVE_LWP_SELF // Solaris
+ return static_cast <unsigned int>(::_lwp_self());
#else
#error We have no implementation of getThreadId() for this platform!
#endif