
Enabling all `make deps` dependencies with the exception of Embree and OIDN. After that, Blender can be compiled on an Apple Silicon Mac just like on any Intel based Mac. There are still compiler warnings that need to be investigated and there are probably a couple of bug still to be discovered and to be fixed. Most patches to the dependencies are simple and are about disabling SSE and setting the proper architecture to compiile for. Notable exception is Python, where I back ported a yet to be accepted PR for upstream Python: https://github.com/python/cpython/pull/21249 Cross compiling or buliding a Universal Binary is not supported yet. The minimum macOS target version for x86_64 remains at 10.13, the target for arm64 is 11.00. Differential Revision: https://developer.blender.org/D8236
133 lines
4.4 KiB
Diff
133 lines
4.4 KiB
Diff
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|
index 95abbe2..4f14f30 100644
|
|
--- a/CMakeLists.txt
|
|
+++ b/CMakeLists.txt
|
|
@@ -254,11 +254,11 @@ if(USE_STATIC_MSVC_RUNTIME)
|
|
endif()
|
|
|
|
#adding PCRE
|
|
-find_package(PCRE)
|
|
+#find_package(PCRE)
|
|
if (PCRE_FOUND)
|
|
message(STATUS "SUCCESSFUL: PCRE found")
|
|
else () # if pcre not found building its local copy from ./Externals
|
|
- if (WIN32 OR APPLE)
|
|
+ if (1)
|
|
message("WARNING: Native PCRE not found, taking PCRE from ./Externals")
|
|
add_definitions(-DPCRE_STATIC)
|
|
add_subdirectory(${EXTERNAL_LIBRARIES}/pcre)
|
|
diff --git a/DAEValidator/CMakeLists.txt b/DAEValidator/CMakeLists.txt
|
|
index 03ad540..f7d05cf 100644
|
|
--- a/DAEValidator/CMakeLists.txt
|
|
+++ b/DAEValidator/CMakeLists.txt
|
|
@@ -98,7 +98,7 @@ if (WIN32)
|
|
# C4710: 'function' : function not inlined
|
|
# C4711: function 'function' selected for inline expansion
|
|
# C4820: 'bytes' bytes padding added after construct 'member_name'
|
|
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /Wall /WX /wd4505 /wd4514 /wd4592 /wd4710 /wd4711 /wd4820")
|
|
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /Wall /wd4505 /wd4514 /wd4592 /wd4710 /wd4711 /wd4820")
|
|
else ()
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Werror")
|
|
endif ()
|
|
diff --git a/DAEValidator/library/include/no_warning_begin b/DAEValidator/library/include/no_warning_begin
|
|
index 7a69c32..defb315 100644
|
|
--- a/DAEValidator/library/include/no_warning_begin
|
|
+++ b/DAEValidator/library/include/no_warning_begin
|
|
@@ -2,6 +2,9 @@
|
|
#if defined(_WIN32)
|
|
# pragma warning(push)
|
|
# pragma warning(disable:4668)
|
|
+# if _MSC_VER >=1900
|
|
+# pragma warning(disable:5031)
|
|
+# endif
|
|
# if defined(_MSC_VER) && defined(_DEBUG)
|
|
# pragma warning(disable:4548)
|
|
# endif
|
|
diff --git a/DAEValidator/library/src/ArgumentParser.cpp b/DAEValidator/library/src/ArgumentParser.cpp
|
|
index 897e4dc..98a69ff 100644
|
|
--- a/DAEValidator/library/src/ArgumentParser.cpp
|
|
+++ b/DAEValidator/library/src/ArgumentParser.cpp
|
|
@@ -6,10 +6,10 @@
|
|
|
|
using namespace std;
|
|
|
|
-#ifdef _MSC_VER
|
|
-#define NOEXCEPT _NOEXCEPT
|
|
-#else
|
|
+#ifndef _NOEXCEPT
|
|
#define NOEXCEPT noexcept
|
|
+#else
|
|
+#define NOEXCEPT _NOEXCEPT
|
|
#endif
|
|
|
|
namespace opencollada
|
|
diff --git a/Externals/LibXML/CMakeLists.txt b/Externals/LibXML/CMakeLists.txt
|
|
index 40081e7..e1d1bfa 100644
|
|
--- a/Externals/LibXML/CMakeLists.txt
|
|
+++ b/Externals/LibXML/CMakeLists.txt
|
|
@@ -9,6 +9,7 @@ add_definitions(
|
|
-DLIBXML_SCHEMAS_ENABLED
|
|
-DLIBXML_XPATH_ENABLED
|
|
-DLIBXML_TREE_ENABLED
|
|
+ -DLIBXML_STATIC
|
|
)
|
|
|
|
if(USE_STATIC_MSVC_RUNTIME)
|
|
diff --git a/GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp b/GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp
|
|
index 1f9a3ee..d151e9a 100644
|
|
--- a/GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp
|
|
+++ b/GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp
|
|
@@ -1553,7 +1553,7 @@ namespace GeneratedSaxParser
|
|
#if defined(COLLADABU_OS_WIN) && !defined(__MINGW32__)
|
|
return _isnan( value ) ? true : false;
|
|
#else
|
|
-#ifdef isnan
|
|
+#if defined(isnan) || defined(__APPLE__)
|
|
return isnan( value );
|
|
#else
|
|
return std::isnan(value);
|
|
|
|
|
|
diff --git a/DAEValidator/library/src/Dae.cpp b/DAEValidator/library/src/Dae.cpp
|
|
index 9256ee1..241ad67 100644
|
|
--- a/DAEValidator/library/src/Dae.cpp
|
|
+++ b/DAEValidator/library/src/Dae.cpp
|
|
@@ -304,7 +304,7 @@ namespace opencollada
|
|
if (auto root_node = root())
|
|
{
|
|
const auto & nodes = root_node.selectNodes("//*[@id]");
|
|
- for (const auto & node : nodes)
|
|
+ for (const auto node : nodes)
|
|
{
|
|
string id = node.attribute("id").value();
|
|
mIdCache.insert(id);
|
|
@@ -312,4 +312,4 @@ namespace opencollada
|
|
}
|
|
}
|
|
}
|
|
-}
|
|
\ No newline at end of file
|
|
+}
|
|
diff --git a/DAEValidator/library/src/DaeValidator.cpp b/DAEValidator/library/src/DaeValidator.cpp
|
|
index 715d903..24423ce 100644
|
|
--- a/DAEValidator/library/src/DaeValidator.cpp
|
|
+++ b/DAEValidator/library/src/DaeValidator.cpp
|
|
@@ -162,7 +162,7 @@ namespace opencollada
|
|
|
|
// Find xsi:schemaLocation attributes in dae and try to validate against specified xsd documents
|
|
const auto & elements = dae.root().selectNodes("//*[@xsi:schemaLocation]");
|
|
- for (const auto & element : elements)
|
|
+ for (const auto element : elements)
|
|
{
|
|
if (auto schemaLocation = element.attribute("schemaLocation"))
|
|
{
|
|
@@ -274,7 +274,7 @@ namespace opencollada
|
|
int result = 0;
|
|
map<string, size_t> ids;
|
|
const auto & nodes = dae.root().selectNodes("//*[@id]");
|
|
- for (const auto & node : nodes)
|
|
+ for (const auto node : nodes)
|
|
{
|
|
string id = node.attribute("id").value();
|
|
size_t line = node.line();
|