From 82377e034246e75aa2fd1a28ee54a667848860e3 Mon Sep 17 00:00:00 2001 From: Jan Engelhardt Date: Sun, 31 Dec 2023 15:22:36 +0100 Subject: Build: add FreeBSD & libc++ compilation support (#288) * build: add FreeBSD compilation support * build: unbreak compilation with clang libc++ unary_function is obsolete with C++11 and removed in C++17. gnu-gcc-libstdc++ still has the class, but llvm-clang-libc++ does not, and there is a compile error. vmime should have just stopped using unary_function with commit v0.9.2-48-g8564b2f8. $ cat x.cpp $ clang++ -std=c++17 -stdlib=libc++ -c x.cpp In file included from x.cpp:1: In file included from /usr/local/include/vmime/net/transport.hpp:34: In file included from /usr/local/include/vmime/net/service.hpp:36: In file included from /usr/local/include/vmime/net/session.hpp:40: In file included from /usr/local/include/vmime/utility/url.hpp:30: /usr/local/include/vmime/propertySet.hpp:339:33: error: no template named /'unary_function' in namespace 'std'; did you mean '__unary_function'? class propFinder : public std::unary_function , bool> { ~~~~~^~~~~~~~~~~~~~ __unary_function --- src/vmime/platforms/posix/posixHandler.cpp | 7 +++++++ src/vmime/propertySet.hpp | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/vmime/platforms/posix/posixHandler.cpp b/src/vmime/platforms/posix/posixHandler.cpp index 148d2169..8becf6ad 100644 --- a/src/vmime/platforms/posix/posixHandler.cpp +++ b/src/vmime/platforms/posix/posixHandler.cpp @@ -48,6 +48,9 @@ #if VMIME_HAVE_SYSCALL # include #endif +#if VMIME_HAVE_THR_SELF +# include +#endif #if VMIME_HAVE_LWP_SELF # include #endif @@ -230,6 +233,10 @@ unsigned int posixHandler::getThreadId() const { return static_cast (::syscall(SYS_gettid)); #elif VMIME_HAVE_GETTHRID // OpenBSD return static_cast (::getthrid()); +#elif VMIME_HAVE_THR_SELF // FreeBSD + long id = 0; + ::thr_self(&id); + return static_cast (id); #elif VMIME_HAVE_LWP_SELF // Solaris return static_cast (::_lwp_self()); #else diff --git a/src/vmime/propertySet.hpp b/src/vmime/propertySet.hpp index 681097d9..7ea31d5e 100644 --- a/src/vmime/propertySet.hpp +++ b/src/vmime/propertySet.hpp @@ -336,7 +336,7 @@ private: void parse(const string& props); - class propFinder : public std::unary_function , bool> { + class propFinder { public: -- cgit v1.2.3