forked from bartvdbraak/blender
0062b34e94
OpenImageIO's ustring makes assumptions about the interals of std::string which aren't true on macOS/ARM. A patch for OpenImageIO addresses this for macOS/ARM builds only, at the expense of potentially duplicated allocations of strings.
57 lines
2.3 KiB
Diff
57 lines
2.3 KiB
Diff
diff -Naur orig/CMakeLists.txt external_openimageio/CMakeLists.txt
|
|
--- orig/CMakeLists.txt 2020-05-10 21:43:52 -0600
|
|
+++ external_openimageio/CMakeLists.txt 2020-05-13 17:03:35 -0600
|
|
@@ -170,7 +170,7 @@
|
|
add_subdirectory (src/iinfo)
|
|
add_subdirectory (src/maketx)
|
|
add_subdirectory (src/oiiotool)
|
|
- add_subdirectory (src/testtex)
|
|
+ #add_subdirectory (src/testtex)
|
|
add_subdirectory (src/iv)
|
|
endif ()
|
|
|
|
diff -Naur orig/src/cmake/compiler.cmake external_openimageio/src/cmake/compiler.cmake
|
|
--- orig/src/cmake/compiler.cmake 2020-05-10 21:43:52 -0600
|
|
+++ external_openimageio/src/cmake/compiler.cmake 2020-05-13 17:02:54 -0600
|
|
@@ -172,6 +172,7 @@
|
|
add_definitions (-D_CRT_NONSTDC_NO_WARNINGS)
|
|
add_definitions (-D_SCL_SECURE_NO_WARNINGS)
|
|
add_definitions (-DJAS_WIN_MSVC_BUILD)
|
|
+ add_definitions (-DOPJ_STATIC)
|
|
endif (MSVC)
|
|
|
|
if (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD"
|
|
diff -Naur orig/src/include/OpenImageIO/platform.h external_openimageio/src/include/OpenImageIO/platform.h
|
|
--- orig/src/include/OpenImageIO/platform.h 2020-05-10 21:43:52 -0600
|
|
+++ external_openimageio/src/include/OpenImageIO/platform.h 2020-05-13 17:04:36 -0600
|
|
@@ -41,6 +41,9 @@
|
|
# ifndef NOMINMAX
|
|
# define NOMINMAX
|
|
# endif
|
|
+# ifndef NOGDI
|
|
+# define NOGDI
|
|
+# endif
|
|
# include <windows.h>
|
|
#endif
|
|
|
|
diff -Naur orig/src/libutil/ustring.cpp external_openimageio/src/libutil/ustring.cpp
|
|
--- orig/src/libutil/ustring.cpp 2020-05-11 05:43:52.000000000 +0200
|
|
+++ external_openimageio/src/libutil/ustring.cpp 2020-11-26 12:06:08.000000000 +0100
|
|
@@ -337,6 +337,8 @@
|
|
// the std::string to make it point to our chars! In such a case, the
|
|
// destructor will be careful not to allow a deallocation.
|
|
|
|
+ // Disable internal std::string for Apple silicon based Macs
|
|
+#if !(defined(__APPLE__) && defined(__arm64__))
|
|
#if defined(__GNUC__) && !defined(_LIBCPP_VERSION) \
|
|
&& defined(_GLIBCXX_USE_CXX11_ABI) && _GLIBCXX_USE_CXX11_ABI
|
|
// NEW gcc ABI
|
|
@@ -382,7 +384,7 @@
|
|
return;
|
|
}
|
|
#endif
|
|
-
|
|
+#endif
|
|
// Remaining cases - just assign the internal string. This may result
|
|
// in double allocation for the chars. If you care about that, do
|
|
// something special for your platform, much like we did for gcc and
|