From 4bf49876c6b42916aaa4327c593e324d8904a48c Mon Sep 17 00:00:00 2001 From: ImperatorS79 Date: Sat, 21 Nov 2020 20:05:19 +0100 Subject: [PATCH 1/8] Build Nazara on macos up to Nazara_network (not included --- build/scripts/common.lua | 22 +++++++- build/scripts/modules/platform.lua | 14 +++-- include/Nazara/Math/Angle.inl | 2 +- include/Nazara/Prerequisites.hpp | 9 ++- include/Nazara/Shader/ShaderAstSerializer.hpp | 3 + src/Nazara/Audio/OpenAL.cpp | 6 +- src/Nazara/Core/Posix/FileImpl.cpp | 12 ++-- src/Nazara/Core/Posix/FileImpl.hpp | 18 ++++++ src/Nazara/Core/Posix/TaskSchedulerImpl.cpp | 55 +++++++++++++++++++ src/Nazara/Core/Posix/TaskSchedulerImpl.hpp | 17 ++++++ src/Nazara/Core/Stream.cpp | 2 +- src/Nazara/Shader/ShaderAstSerializer.cpp | 10 ++++ thirdparty/build/newton.lua | 6 ++ 13 files changed, 158 insertions(+), 18 deletions(-) diff --git a/build/scripts/common.lua b/build/scripts/common.lua index 2e7e60207..1000c7a16 100644 --- a/build/scripts/common.lua +++ b/build/scripts/common.lua @@ -158,6 +158,15 @@ function NazaraBuild:Execute() "../src/", "../thirdparty/include" }) + + if (os.ishost("macosx")) then + includedirs({ + "../include", + "../src/", + "../thirdparty/include", + "/usr/local/include/" --brew + }) + end files(moduleTable.Files) excludes(moduleTable.FilesExcluded) @@ -171,6 +180,14 @@ function NazaraBuild:Execute() "../thirdparty/lib/common", "../lib" }) + + if (os.ishost("macosx")) then + libdirs({ + "../thirdparty/lib/common", + "../lib", + "/usr/local/lib" --brew + }) + end -- Output to lib/conf/arch self:FilterLibDirectory("../lib/", targetdir) @@ -928,7 +945,10 @@ end function NazaraBuild:PostconfigGenericProject() -- Add options required for C++17 thread and filesystem (have to be linked last) - filter("action:gmake*") + filter({"action:gmake*", "system:macosx"}) + links("pthread") + + filter({"action:gmake*", "system:not macosx"}) links("stdc++fs") links("pthread") diff --git a/build/scripts/modules/platform.lua b/build/scripts/modules/platform.lua index cc9cc8be6..fbf1b94af 100644 --- a/build/scripts/modules/platform.lua +++ b/build/scripts/modules/platform.lua @@ -21,11 +21,15 @@ MODULE.OsDefines.Windows = { "SDL_VIDEO_DRIVER_WINDOWS=1" } -MODULE.OsDefines.Posix = { - "SDL_VIDEO_DRIVER_X11=1", - "SDL_VIDEO_DRIVER_WAYLAND=1", -} - MODULE.DynLib = { "SDL2" } + +MODULE.Custom = function() + filter("system:linux") + defines("SDL_VIDEO_DRIVER_X11=1") + defines("SDL_VIDEO_DRIVER_WAYLAND=1") + + filter("system:macosx") + defines("SDL_VIDEO_DRIVER_COCOA=1") +end diff --git a/include/Nazara/Math/Angle.inl b/include/Nazara/Math/Angle.inl index d18e07ca9..55ac418d9 100644 --- a/include/Nazara/Math/Angle.inl +++ b/include/Nazara/Math/Angle.inl @@ -97,7 +97,7 @@ namespace Nz } }; -#ifdef NAZARA_PLATFORM_POSIX +#ifdef NAZARA_PLATFORM_LINUX template void SinCos(std::enable_if_t::value && !std::is_same::value, double> x, T* sin, T* cos) { diff --git a/include/Nazara/Prerequisites.hpp b/include/Nazara/Prerequisites.hpp index 24bc14dc1..c8384b9cc 100644 --- a/include/Nazara/Prerequisites.hpp +++ b/include/Nazara/Prerequisites.hpp @@ -121,9 +121,12 @@ #define NAZARA_EXPORT __attribute__((visibility ("default"))) #define NAZARA_IMPORT __attribute__((visibility ("default"))) -/*#elif defined(__APPLE__) && defined(__MACH__) - #define NAZARA_PLATFORM_MACOSX - #define NAZARA_PLATFORM_POSIX*/ +#elif defined(__APPLE__) && defined(__MACH__) + #define NAZARA_PLATFORM_MACOSX + #define NAZARA_PLATFORM_POSIX + + #define NAZARA_EXPORT __attribute__((visibility ("default"))) + #define NAZARA_IMPORT __attribute__((visibility ("default"))) #else #error This operating system is not fully supported by the Nazara Engine diff --git a/include/Nazara/Shader/ShaderAstSerializer.hpp b/include/Nazara/Shader/ShaderAstSerializer.hpp index ac03cc66d..cfb30b058 100644 --- a/include/Nazara/Shader/ShaderAstSerializer.hpp +++ b/include/Nazara/Shader/ShaderAstSerializer.hpp @@ -68,6 +68,7 @@ namespace Nz virtual void Value(UInt16& val) = 0; virtual void Value(UInt32& val) = 0; virtual void Value(UInt64& val) = 0; + virtual void Value(std::size_t& val) = 0; inline void SizeT(std::size_t& val); virtual void Variable(ShaderNodes::VariablePtr& var) = 0; @@ -101,6 +102,7 @@ namespace Nz void Value(UInt16& val) override; void Value(UInt32& val) override; void Value(UInt64& val) override; + void Value(std::size_t& val) override; void Variable(ShaderNodes::VariablePtr& var) override; ByteStream& m_stream; @@ -132,6 +134,7 @@ namespace Nz void Value(UInt16& val) override; void Value(UInt32& val) override; void Value(UInt64& val) override; + void Value(std::size_t& val) override; void Variable(ShaderNodes::VariablePtr& var) override; ByteStream& m_stream; diff --git a/src/Nazara/Audio/OpenAL.cpp b/src/Nazara/Audio/OpenAL.cpp index e1a148a96..3e516115c 100644 --- a/src/Nazara/Audio/OpenAL.cpp +++ b/src/Nazara/Audio/OpenAL.cpp @@ -132,7 +132,11 @@ namespace Nz "libopenal.so.0", "libopenal.so" }; - //#elif defined(NAZARA_PLATFORM_MACOSX) + #elif defined(NAZARA_PLATFORM_MACOSX) + const char* libs[] = { + "libopenal.dylib", + "libopenal.1.dylib", + }; #else NazaraError("Unknown OS"); return false; diff --git a/src/Nazara/Core/Posix/FileImpl.cpp b/src/Nazara/Core/Posix/FileImpl.cpp index f1af9ebbe..b64370fbb 100644 --- a/src/Nazara/Core/Posix/FileImpl.cpp +++ b/src/Nazara/Core/Posix/FileImpl.cpp @@ -31,8 +31,8 @@ namespace Nz { if (!m_endOfFileUpdated) { - struct stat64 fileSize; - if (fstat64(m_fileDescriptor, &fileSize) == -1) + struct Stat fileSize; + if (Fstat(m_fileDescriptor, &fileSize) == -1) fileSize.st_size = 0; m_endOfFile = (GetCursorPos() >= static_cast(fileSize.st_size)); @@ -50,7 +50,7 @@ namespace Nz UInt64 FileImpl::GetCursorPos() const { - off64_t position = lseek64(m_fileDescriptor, 0, SEEK_CUR); + Off_t position = Lseek(m_fileDescriptor, 0, SEEK_CUR); return static_cast(position); } @@ -77,7 +77,7 @@ namespace Nz if (mode & OpenMode_Truncate) flags |= O_TRUNC; - int fileDescriptor = open64(filePath.generic_u8string().data(), flags, permissions); + int fileDescriptor = Open_def(filePath.generic_u8string().data(), flags, permissions); if (fileDescriptor == -1) { NazaraError("Failed to open \"" + filePath.generic_u8string() + "\" : " + Error::GetLastSystemError()); @@ -166,12 +166,12 @@ namespace Nz m_endOfFileUpdated = false; - return lseek64(m_fileDescriptor, offset, moveMethod) != -1; + return Lseek(m_fileDescriptor, offset, moveMethod) != -1; } bool FileImpl::SetSize(UInt64 size) { - return ftruncate64(m_fileDescriptor, size) != 0; + return Ftruncate(m_fileDescriptor, size) != 0; } std::size_t FileImpl::Write(const void* buffer, std::size_t size) diff --git a/src/Nazara/Core/Posix/FileImpl.hpp b/src/Nazara/Core/Posix/FileImpl.hpp index ae35375ce..81e09df7b 100644 --- a/src/Nazara/Core/Posix/FileImpl.hpp +++ b/src/Nazara/Core/Posix/FileImpl.hpp @@ -16,6 +16,24 @@ #include #include +#if defined(NAZARA_PLATFORM_MACOSX) + #define Stat stat + #define Fstat fstat + #define Off_t off_t + #define Lseek lseek + #define Open_def open + #define Ftruncate ftruncate +#elif defined(NAZARA_PLATFORM_LINUX) + #define Stat stat64 + #define Fstat fstat64 + #define Off_t off64_t + #define Lseek lseek64 + #define Open_def open64 + #define Ftruncate ftruncate64 +#else + #error This operating system is not fully supported by the Nazara Engine +#endif + namespace Nz { class File; diff --git a/src/Nazara/Core/Posix/TaskSchedulerImpl.cpp b/src/Nazara/Core/Posix/TaskSchedulerImpl.cpp index e8cbb3de8..0ec5b9ee8 100644 --- a/src/Nazara/Core/Posix/TaskSchedulerImpl.cpp +++ b/src/Nazara/Core/Posix/TaskSchedulerImpl.cpp @@ -6,6 +6,10 @@ #include #include +#if defined(NAZARA_PLATFORM_MACOSX) + #include +#endif + namespace Nz { bool TaskSchedulerImpl::Initialize(unsigned int workerCount) @@ -191,4 +195,55 @@ namespace Nz pthread_cond_t TaskSchedulerImpl::s_cvEmpty; pthread_cond_t TaskSchedulerImpl::s_cvNotEmpty; pthread_barrier_t TaskSchedulerImpl::s_barrier; + +#if defined(NAZARA_PLATFORM_MACOSX) + //Code from https://blog.albertarmea.com/post/47089939939/using-pthreadbarrier-on-mac-os-x + int TaskSchedulerImpl::pthread_barrier_init(pthread_barrier_t *barrier, const pthread_barrierattr_t *attr, unsigned int count) + { + if(count == 0) + { + errno = EINVAL; + return -1; + } + if(pthread_mutex_init(&barrier->mutex, 0) < 0) + { + return -1; + } + if(pthread_cond_init(&barrier->cond, 0) < 0) + { + pthread_mutex_destroy(&barrier->mutex); + return -1; + } + barrier->tripCount = count; + barrier->count = 0; + + return 0; + } + + int TaskSchedulerImpl::pthread_barrier_destroy(pthread_barrier_t *barrier) + { + pthread_cond_destroy(&barrier->cond); + pthread_mutex_destroy(&barrier->mutex); + return 0; + } + + int TaskSchedulerImpl::pthread_barrier_wait(pthread_barrier_t *barrier) + { + pthread_mutex_lock(&barrier->mutex); + ++(barrier->count); + if(barrier->count >= barrier->tripCount) + { + barrier->count = 0; + pthread_cond_broadcast(&barrier->cond); + pthread_mutex_unlock(&barrier->mutex); + return 1; + } + else + { + pthread_cond_wait(&barrier->cond, &(barrier->mutex)); + pthread_mutex_unlock(&barrier->mutex); + return 0; + } + } +#endif } diff --git a/src/Nazara/Core/Posix/TaskSchedulerImpl.hpp b/src/Nazara/Core/Posix/TaskSchedulerImpl.hpp index 405216286..024125cd9 100644 --- a/src/Nazara/Core/Posix/TaskSchedulerImpl.hpp +++ b/src/Nazara/Core/Posix/TaskSchedulerImpl.hpp @@ -13,6 +13,17 @@ #include #include +#if defined(NAZARA_PLATFORM_MACOSX) + typedef int pthread_barrierattr_t; + typedef struct + { + pthread_mutex_t mutex; + pthread_cond_t cond; + int count; + int tripCount; + } pthread_barrier_t; +#endif + namespace Nz { struct Functor; @@ -45,6 +56,12 @@ namespace Nz static pthread_cond_t s_cvEmpty; static pthread_cond_t s_cvNotEmpty; static pthread_barrier_t s_barrier; + +#if defined(NAZARA_PLATFORM_MACOSX) + static int pthread_barrier_init(pthread_barrier_t *barrier, const pthread_barrierattr_t *attr, unsigned int count); + static int pthread_barrier_destroy(pthread_barrier_t *barrier); + static int pthread_barrier_wait(pthread_barrier_t *barrier); +#endif }; } diff --git a/src/Nazara/Core/Stream.cpp b/src/Nazara/Core/Stream.cpp index 7bf90a157..9abc0a14a 100644 --- a/src/Nazara/Core/Stream.cpp +++ b/src/Nazara/Core/Stream.cpp @@ -157,7 +157,7 @@ namespace Nz #elif defined(NAZARA_PLATFORM_LINUX) std::string_view temp(string); // Nothing to do -#elif defined(NAZARA_PLATFORM_MACOS) +#elif defined(NAZARA_PLATFORM_MACOSX) std::string temp(string); ReplaceStr(temp, "\n", "\r"); #endif diff --git a/src/Nazara/Shader/ShaderAstSerializer.cpp b/src/Nazara/Shader/ShaderAstSerializer.cpp index 4f1c214d2..7d111c8a0 100644 --- a/src/Nazara/Shader/ShaderAstSerializer.cpp +++ b/src/Nazara/Shader/ShaderAstSerializer.cpp @@ -465,6 +465,11 @@ namespace Nz { m_stream << val; } + + void ShaderAstSerializer::Value(std::size_t& val) + { + m_stream << val; + } void ShaderAstSerializer::Variable(ShaderNodes::VariablePtr& var) { @@ -731,6 +736,11 @@ namespace Nz { m_stream >> val; } + + void ShaderAstUnserializer::Value(std::size_t& val) + { + m_stream >> val; + } void ShaderAstUnserializer::Variable(ShaderNodes::VariablePtr& var) { diff --git a/thirdparty/build/newton.lua b/thirdparty/build/newton.lua index 9c9b93bb4..3faecd6e0 100644 --- a/thirdparty/build/newton.lua +++ b/thirdparty/build/newton.lua @@ -36,4 +36,10 @@ LIBRARY.Custom = function() filter({"architecture:x86", "system:linux"}) defines("_POSIX_VER") + + filter({"architecture:x86_64", "system:macosx"}) + defines("_POSIX_VER_64") + + filter({"architecture:x86", "system:macosx"}) + defines("_POSIX_VER") end \ No newline at end of file From 143d7d391aa3ca38439b897b43c1f86eeb453be1 Mon Sep 17 00:00:00 2001 From: ImperatorS79 Date: Sat, 21 Nov 2020 20:21:26 +0100 Subject: [PATCH 2/8] Remove Value for size_t and correctly fix the problem --- include/Nazara/Shader/ShaderAstSerializer.hpp | 3 --- src/Nazara/Shader/ShaderAstSerializer.cpp | 12 +----------- 2 files changed, 1 insertion(+), 14 deletions(-) diff --git a/include/Nazara/Shader/ShaderAstSerializer.hpp b/include/Nazara/Shader/ShaderAstSerializer.hpp index cfb30b058..ac03cc66d 100644 --- a/include/Nazara/Shader/ShaderAstSerializer.hpp +++ b/include/Nazara/Shader/ShaderAstSerializer.hpp @@ -68,7 +68,6 @@ namespace Nz virtual void Value(UInt16& val) = 0; virtual void Value(UInt32& val) = 0; virtual void Value(UInt64& val) = 0; - virtual void Value(std::size_t& val) = 0; inline void SizeT(std::size_t& val); virtual void Variable(ShaderNodes::VariablePtr& var) = 0; @@ -102,7 +101,6 @@ namespace Nz void Value(UInt16& val) override; void Value(UInt32& val) override; void Value(UInt64& val) override; - void Value(std::size_t& val) override; void Variable(ShaderNodes::VariablePtr& var) override; ByteStream& m_stream; @@ -134,7 +132,6 @@ namespace Nz void Value(UInt16& val) override; void Value(UInt32& val) override; void Value(UInt64& val) override; - void Value(std::size_t& val) override; void Variable(ShaderNodes::VariablePtr& var) override; ByteStream& m_stream; diff --git a/src/Nazara/Shader/ShaderAstSerializer.cpp b/src/Nazara/Shader/ShaderAstSerializer.cpp index 7d111c8a0..4e767540b 100644 --- a/src/Nazara/Shader/ShaderAstSerializer.cpp +++ b/src/Nazara/Shader/ShaderAstSerializer.cpp @@ -258,7 +258,7 @@ namespace Nz void ShaderAstSerializerBase::Serialize(ShaderNodes::SwizzleOp& node) { - Value(node.componentCount); + SizeT(node.componentCount); Node(node.expression); for (std::size_t i = 0; i < node.componentCount; ++i) @@ -465,11 +465,6 @@ namespace Nz { m_stream << val; } - - void ShaderAstSerializer::Value(std::size_t& val) - { - m_stream << val; - } void ShaderAstSerializer::Variable(ShaderNodes::VariablePtr& var) { @@ -737,11 +732,6 @@ namespace Nz m_stream >> val; } - void ShaderAstUnserializer::Value(std::size_t& val) - { - m_stream >> val; - } - void ShaderAstUnserializer::Variable(ShaderNodes::VariablePtr& var) { Int32 nodeTypeInt; From 255812c80ec4abc24ca5db4a04ae0bab94b3800a Mon Sep 17 00:00:00 2001 From: ImperatorS79 Date: Sat, 21 Nov 2020 21:29:23 +0100 Subject: [PATCH 3/8] Fix missing MSG_NOSIGNAL and TCP_KEEPIDLE on macos --- src/Nazara/Network/Posix/SocketImpl.cpp | 26 ++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/Nazara/Network/Posix/SocketImpl.cpp b/src/Nazara/Network/Posix/SocketImpl.cpp index a9623e544..d76e9a34e 100644 --- a/src/Nazara/Network/Posix/SocketImpl.cpp +++ b/src/Nazara/Network/Posix/SocketImpl.cpp @@ -17,6 +17,10 @@ #include #include +#if !defined(TCP_KEEPIDLE) && defined(TCP_KEEPALIVE) +#define TCP_KEEPIDLE TCP_KEEPALIVE // see -> https://gitlab.freedesktop.org/spice/usbredir/-/issues/9 +#endi + namespace Nz { constexpr int SOCKET_ERROR = -1; @@ -597,8 +601,11 @@ namespace Nz } IpAddress senderIp; - +#if not defined(MSG_NOSIGNAL) int byteRead = recvmsg(handle, &msgHdr, MSG_NOSIGNAL); +#else + int byteRead = recvmsg(handle, &msgHdr, 0); +#endif if (byteRead == -1) { int errorCode = GetLastErrorCode(); @@ -714,7 +721,12 @@ namespace Nz msgHdr.msg_iov = sysBuffers.data(); msgHdr.msg_iovlen = static_cast(bufferCount); +#if not defined(MSG_NOSIGNAL) int byteSent = sendmsg(handle, &msgHdr, MSG_NOSIGNAL); +#else + int byteSent = sendmsg(handle, &msgHdr, 0); +#endif + if (byteSent == SOCKET_ERROR) { int errorCode = GetLastErrorCode(); @@ -896,6 +908,18 @@ namespace Nz if (error) *error = SocketError_NoError; + +#if not defined(MSG_NOSIGNAL) // -> https://github.com/intel/parameter-framework/pull/133/files + //There is no MSG_NOSIGNAL on macos + const int set = 1; + if (setsockopt(handle, SOL_SOCKET, SO_NOSIGPIPE, &set, sizeof(set)) == SOCKET_ERROR) + { + if (error) + *error = TranslateErrnoToSocketError(GetLastErrorCode()); + + return false; //< Error + } +#endif return true; } From d4cd0581e45530473771ff6b6a060b460c322d8b Mon Sep 17 00:00:00 2001 From: ImperatorS79 Date: Sat, 21 Nov 2020 21:35:51 +0100 Subject: [PATCH 4/8] Update SocketImpl.cpp --- src/Nazara/Network/Posix/SocketImpl.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Nazara/Network/Posix/SocketImpl.cpp b/src/Nazara/Network/Posix/SocketImpl.cpp index d76e9a34e..0f9c6f824 100644 --- a/src/Nazara/Network/Posix/SocketImpl.cpp +++ b/src/Nazara/Network/Posix/SocketImpl.cpp @@ -19,7 +19,7 @@ #if !defined(TCP_KEEPIDLE) && defined(TCP_KEEPALIVE) #define TCP_KEEPIDLE TCP_KEEPALIVE // see -> https://gitlab.freedesktop.org/spice/usbredir/-/issues/9 -#endi +#endif namespace Nz { @@ -601,7 +601,7 @@ namespace Nz } IpAddress senderIp; -#if not defined(MSG_NOSIGNAL) +#if defined(MSG_NOSIGNAL) int byteRead = recvmsg(handle, &msgHdr, MSG_NOSIGNAL); #else int byteRead = recvmsg(handle, &msgHdr, 0); @@ -721,7 +721,7 @@ namespace Nz msgHdr.msg_iov = sysBuffers.data(); msgHdr.msg_iovlen = static_cast(bufferCount); -#if not defined(MSG_NOSIGNAL) +#if defined(MSG_NOSIGNAL) int byteSent = sendmsg(handle, &msgHdr, MSG_NOSIGNAL); #else int byteSent = sendmsg(handle, &msgHdr, 0); From f05ed5781b56b4954b56fbe0933a4465c26ac97b Mon Sep 17 00:00:00 2001 From: ImperatorS79 Date: Sun, 22 Nov 2020 13:32:17 +0100 Subject: [PATCH 5/8] IP_MTU missing on macos --- src/Nazara/Network/Posix/SocketImpl.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Nazara/Network/Posix/SocketImpl.cpp b/src/Nazara/Network/Posix/SocketImpl.cpp index 0f9c6f824..fbe762ff1 100644 --- a/src/Nazara/Network/Posix/SocketImpl.cpp +++ b/src/Nazara/Network/Posix/SocketImpl.cpp @@ -273,6 +273,9 @@ namespace Nz unsigned int code; socklen_t codeLength = sizeof(code); +#if defined(NAZARA_PLATFORM_MACOSX) + return 0; //No IP_MTU on macosx +#else if (getsockopt(handle, IPPROTO_IP, IP_MTU, &code, &codeLength) == SOCKET_ERROR) { if (error) @@ -280,6 +283,7 @@ namespace Nz return 0; } +#endif if (error) *error = SocketError_NoError; From ddc8fffed15bf85ba48ac0d0f8dbfc4ec0e91f61 Mon Sep 17 00:00:00 2001 From: ImperatorS79 Date: Sun, 22 Nov 2020 15:57:55 +0100 Subject: [PATCH 6/8] Add the required defines for Newton in Physics3D --- build/scripts/modules/physics3d.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/build/scripts/modules/physics3d.lua b/build/scripts/modules/physics3d.lua index d8b9ea352..893948e76 100644 --- a/build/scripts/modules/physics3d.lua +++ b/build/scripts/modules/physics3d.lua @@ -21,4 +21,10 @@ MODULE.Custom = function() filter({"architecture:x86", "system:linux"}) defines("_POSIX_VER") + + filter({"architecture:x86_64", "system:macosx"}) + defines("_POSIX_VER_64") + + filter({"architecture:x86", "system:macosx"}) + defines("_POSIX_VER") end From 9a613c6fd6958c790541297aac8adad5a8ecf346 Mon Sep 17 00:00:00 2001 From: ImperatorS79 Date: Fri, 27 Nov 2020 14:44:19 +0100 Subject: [PATCH 7/8] Fix ShaderNodes on macos --- src/ShaderNode/DataModels/BufferField.cpp | 2 +- src/ShaderNode/DataModels/Cast.inl | 1 + src/ShaderNode/DataTypes/VecData.hpp | 4 ++-- src/ShaderNode/ShaderGraph.cpp | 10 +++++----- src/ShaderNode/Widgets/MainWindow.cpp | 2 +- src/ShaderNode/Widgets/StructEditDialog.cpp | 2 +- src/ShaderNode/Widgets/StructMemberEditDialog.cpp | 2 +- 7 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/ShaderNode/DataModels/BufferField.cpp b/src/ShaderNode/DataModels/BufferField.cpp index 3f3986fb5..1c673e8ca 100644 --- a/src/ShaderNode/DataModels/BufferField.cpp +++ b/src/ShaderNode/DataModels/BufferField.cpp @@ -332,7 +332,7 @@ void BufferField::PopulateFieldList(std::size_t structIndex, const std::string& else if constexpr (std::is_same_v) PopulateFieldList(arg, prefix + member.name + "."); else - static_assert(AlwaysFalse::value, "non-exhaustive visitor"); + static_assert(Nz::AlwaysFalse::value, "non-exhaustive visitor"); }, member.type); } diff --git a/src/ShaderNode/DataModels/Cast.inl b/src/ShaderNode/DataModels/Cast.inl index cd96d6ccc..441ede3f5 100644 --- a/src/ShaderNode/DataModels/Cast.inl +++ b/src/ShaderNode/DataModels/Cast.inl @@ -2,6 +2,7 @@ #include #include #include +#include #include template diff --git a/src/ShaderNode/DataTypes/VecData.hpp b/src/ShaderNode/DataTypes/VecData.hpp index d80bff106..f6e1bfdd9 100644 --- a/src/ShaderNode/DataTypes/VecData.hpp +++ b/src/ShaderNode/DataTypes/VecData.hpp @@ -48,7 +48,7 @@ struct VecExpressionTypeHelper<4> static constexpr Nz::ShaderNodes::BasicType ExpressionType = Nz::ShaderNodes::BasicType::Float4; }; -template constexpr Nz::ShaderNodes::BasicType VecExpressionType = VecExpressionTypeHelper::template ExpressionType; +template constexpr Nz::ShaderNodes::BasicType VecExpressionType = VecExpressionTypeHelper::ExpressionType; struct VecTypeDummy {}; @@ -86,7 +86,7 @@ struct VecTypeHelper<4> using Type = Nz::Vector4f; }; -template using VecType = typename VecTypeHelper::template Type; +template using VecType = typename VecTypeHelper::Type; constexpr std::array s_vectorComponents = { 'X', 'Y', 'Z', 'W' }; diff --git a/src/ShaderNode/ShaderGraph.cpp b/src/ShaderNode/ShaderGraph.cpp index a1799df3b..cc5995d27 100644 --- a/src/ShaderNode/ShaderGraph.cpp +++ b/src/ShaderNode/ShaderGraph.cpp @@ -64,7 +64,7 @@ m_type(ShaderType::NotSet) { "position", PrimitiveType::Float3 }, { "normal", PrimitiveType::Float3 }, { "uv", PrimitiveType::Float2 }, - { "inner", 2 } + { "inner", 2u } } }); AddStruct("InnerStruct", { @@ -74,7 +74,7 @@ m_type(ShaderType::NotSet) }); AddStruct("OuterStruct", { { - { "a", 1 }, + { "a", 1u }, { "b", PrimitiveType::Float1 } } }); @@ -266,7 +266,7 @@ void ShaderGraph::Load(const QJsonObject& data) if (typeDocRef.isString()) memberInfo.type = DecodeEnum(typeDocRef.toString().toStdString()).value(); else - memberInfo.type = typeDocRef.toInt(); + memberInfo.type = static_cast(typeDocRef.toInt()); } } @@ -363,7 +363,7 @@ QJsonObject ShaderGraph::Save() else if constexpr (std::is_same_v) memberDoc["type"] = int(arg); else - static_assert(AlwaysFalse::value, "non-exhaustive visitor"); + static_assert(Nz::AlwaysFalse::value, "non-exhaustive visitor"); }, member.type); memberArray.append(std::move(memberDoc)); @@ -535,7 +535,7 @@ Nz::ShaderExpressionType ShaderGraph::ToShaderExpressionType(const std::variant< return s.name; } else - static_assert(AlwaysFalse::value, "non-exhaustive visitor"); + static_assert(Nz::AlwaysFalse::value, "non-exhaustive visitor"); }, type); }; diff --git a/src/ShaderNode/Widgets/MainWindow.cpp b/src/ShaderNode/Widgets/MainWindow.cpp index b88bef25f..b313ee083 100644 --- a/src/ShaderNode/Widgets/MainWindow.cpp +++ b/src/ShaderNode/Widgets/MainWindow.cpp @@ -269,7 +269,7 @@ Nz::ShaderAst MainWindow::ToShader() else if constexpr (std::is_same_v) member.type = m_shaderGraph.GetStruct(arg).name; else - static_assert(AlwaysFalse::value, "non-exhaustive visitor"); + static_assert(Nz::AlwaysFalse::value, "non-exhaustive visitor"); }, sMember.type); } diff --git a/src/ShaderNode/Widgets/StructEditDialog.cpp b/src/ShaderNode/Widgets/StructEditDialog.cpp index 320ad586a..6c10fa0d9 100644 --- a/src/ShaderNode/Widgets/StructEditDialog.cpp +++ b/src/ShaderNode/Widgets/StructEditDialog.cpp @@ -97,7 +97,7 @@ QString StructEditDialog::GetMemberName(const StructInfo::Member& member) else if constexpr (std::is_same_v) name += QString::fromStdString(m_shaderGraph.GetStruct(arg).name); else - static_assert(AlwaysFalse::value, "non-exhaustive visitor"); + static_assert(Nz::AlwaysFalse::value, "non-exhaustive visitor"); }, member.type); diff --git a/src/ShaderNode/Widgets/StructMemberEditDialog.cpp b/src/ShaderNode/Widgets/StructMemberEditDialog.cpp index 82bc4e1a2..dcf0d830f 100644 --- a/src/ShaderNode/Widgets/StructMemberEditDialog.cpp +++ b/src/ShaderNode/Widgets/StructMemberEditDialog.cpp @@ -50,7 +50,7 @@ StructMemberEditDialog(shaderGraph, parent) else if constexpr (std::is_same_v) m_typeList->setCurrentIndex(static_cast(PrimitiveTypeCount + arg)); else - static_assert(AlwaysFalse::value, "non-exhaustive visitor"); + static_assert(Nz::AlwaysFalse::value, "non-exhaustive visitor"); }, member.type); } From 3f732eaf3ede57a6b6544c272c2ba04798bae777 Mon Sep 17 00:00:00 2001 From: ImperatorS79 Date: Tue, 26 Jan 2021 13:49:08 +0100 Subject: [PATCH 8/8] Update newton.lua --- thirdparty/build/newton.lua | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/thirdparty/build/newton.lua b/thirdparty/build/newton.lua index 3faecd6e0..1c5bb8995 100644 --- a/thirdparty/build/newton.lua +++ b/thirdparty/build/newton.lua @@ -38,8 +38,5 @@ LIBRARY.Custom = function() defines("_POSIX_VER") filter({"architecture:x86_64", "system:macosx"}) - defines("_POSIX_VER_64") - - filter({"architecture:x86", "system:macosx"}) - defines("_POSIX_VER") -end \ No newline at end of file + defines("_MACOSX_VER") +end