Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'build_files/build_environment')
-rw-r--r--build_files/build_environment/CMakeLists.txt3
-rw-r--r--build_files/build_environment/cmake/boost.cmake2
-rw-r--r--build_files/build_environment/cmake/check_software.cmake9
-rw-r--r--build_files/build_environment/cmake/ffmpeg.cmake9
-rw-r--r--build_files/build_environment/cmake/freetype.cmake3
-rw-r--r--build_files/build_environment/cmake/ispc.cmake13
-rw-r--r--build_files/build_environment/cmake/nasm.cmake29
-rw-r--r--build_files/build_environment/cmake/ogg.cmake1
-rw-r--r--build_files/build_environment/cmake/options.cmake9
-rw-r--r--build_files/build_environment/cmake/python.cmake12
-rw-r--r--build_files/build_environment/cmake/tiff.cmake8
-rw-r--r--build_files/build_environment/cmake/versions.cmake4
-rw-r--r--build_files/build_environment/cmake/x264.cmake18
-rw-r--r--build_files/build_environment/patches/ffmpeg.diff59
-rw-r--r--build_files/build_environment/patches/ispc.diff49
-rw-r--r--build_files/build_environment/patches/nasm.diff129
-rw-r--r--build_files/build_environment/patches/ogg.diff12
17 files changed, 359 insertions, 10 deletions
diff --git a/build_files/build_environment/CMakeLists.txt b/build_files/build_environment/CMakeLists.txt
index 3c228fd9f7d..7e7c5d58d71 100644
--- a/build_files/build_environment/CMakeLists.txt
+++ b/build_files/build_environment/CMakeLists.txt
@@ -30,7 +30,7 @@
# build_deps 2015 x64 / build_deps 2015 x86
#
# MAC OS X USAGE:
-# Install with homebrew: brew install cmake autoconf automake libtool yasm nasm
+# Install with homebrew: brew install cmake autoconf automake libtool yasm nasm bison
# Run "make deps" from main Blender directory
#
# LINUX USAGE:
@@ -76,6 +76,7 @@ include(cmake/llvm.cmake)
include(cmake/clang.cmake)
if(APPLE)
include(cmake/openmp.cmake)
+ include(cmake/nasm.cmake)
endif()
include(cmake/openimageio.cmake)
include(cmake/tiff.cmake)
diff --git a/build_files/build_environment/cmake/boost.cmake b/build_files/build_environment/cmake/boost.cmake
index 94c649e9109..6e7ee8c66b1 100644
--- a/build_files/build_environment/cmake/boost.cmake
+++ b/build_files/build_environment/cmake/boost.cmake
@@ -44,7 +44,7 @@ if(WIN32)
elseif(APPLE)
set(BOOST_CONFIGURE_COMMAND ./bootstrap.sh)
set(BOOST_BUILD_COMMAND ./b2)
- set(BOOST_BUILD_OPTIONS toolset=darwin cxxflags=${PLATFORM_CXXFLAGS} linkflags=${PLATFORM_LDFLAGS} visibility=global --disable-icu boost.locale.icu=off)
+ set(BOOST_BUILD_OPTIONS toolset=clang-darwin cxxflags=${PLATFORM_CXXFLAGS} linkflags=${PLATFORM_LDFLAGS} visibility=global --disable-icu boost.locale.icu=off)
set(BOOST_HARVEST_CMD echo .)
set(BOOST_PATCH_COMMAND echo .)
else()
diff --git a/build_files/build_environment/cmake/check_software.cmake b/build_files/build_environment/cmake/check_software.cmake
index f5774551879..384915aba84 100644
--- a/build_files/build_environment/cmake/check_software.cmake
+++ b/build_files/build_environment/cmake/check_software.cmake
@@ -30,6 +30,7 @@ if(UNIX)
nasm
yasm
tclsh
+ bison
)
foreach(_software ${_required_software})
@@ -40,6 +41,12 @@ if(UNIX)
unset(_software_find CACHE)
endforeach()
+ if(APPLE)
+ if(NOT EXISTS "/usr/local/opt/bison/bin/bison")
+ set(_software_missing "${_software_missing} bison")
+ endif()
+ endif()
+
if(_software_missing)
message(
"\n"
@@ -50,7 +57,7 @@ if(UNIX)
" apt install autoconf automake libtool yasm nasm tcl\n"
"\n"
"On macOS (with homebrew):\n"
- " brew install cmake autoconf automake libtool yasm nasm\n"
+ " brew install cmake autoconf automake libtool yasm nasm bison\n"
"\n"
"Other platforms:\n"
" Install equivalent packages.\n")
diff --git a/build_files/build_environment/cmake/ffmpeg.cmake b/build_files/build_environment/cmake/ffmpeg.cmake
index 02e78c605af..164997b9aa5 100644
--- a/build_files/build_environment/cmake/ffmpeg.cmake
+++ b/build_files/build_environment/cmake/ffmpeg.cmake
@@ -50,7 +50,8 @@ if(APPLE)
set(FFMPEG_EXTRA_FLAGS
${FFMPEG_EXTRA_FLAGS}
--target-os=darwin
- )
+ --x86asmexe=${LIBDIR}/nasm/bin/nasm
+ )
endif()
ExternalProject_Add(external_ffmpeg
@@ -143,6 +144,12 @@ if(WIN32)
external_zlib_mingw
)
endif()
+if(APPLE)
+ add_dependencies(
+ external_ffmpeg
+ external_nasm
+ )
+endif()
if(BUILD_MODE STREQUAL Release AND WIN32)
ExternalProject_Add_Step(external_ffmpeg after_install
diff --git a/build_files/build_environment/cmake/freetype.cmake b/build_files/build_environment/cmake/freetype.cmake
index 30dd2eed676..fefe2c900bc 100644
--- a/build_files/build_environment/cmake/freetype.cmake
+++ b/build_files/build_environment/cmake/freetype.cmake
@@ -24,7 +24,8 @@ set(FREETYPE_EXTRA_ARGS
-DFT_WITH_HARFBUZZ=OFF
-DFT_WITH_BZIP2=OFF
-DCMAKE_DISABLE_FIND_PACKAGE_HarfBuzz=TRUE
- -DCMAKE_DISABLE_FIND_PACKAGE_BZip2=TRUE)
+ -DCMAKE_DISABLE_FIND_PACKAGE_BZip2=TRUE
+ -DCMAKE_DISABLE_FIND_PACKAGE_BrotliDec=TRUE)
ExternalProject_Add(external_freetype
URL ${FREETYPE_URI}
diff --git a/build_files/build_environment/cmake/ispc.cmake b/build_files/build_environment/cmake/ispc.cmake
index 0bb5db82aea..b67351dcf9f 100644
--- a/build_files/build_environment/cmake/ispc.cmake
+++ b/build_files/build_environment/cmake/ispc.cmake
@@ -22,6 +22,17 @@ if(WIN32)
-DBISON_EXECUTABLE=${LIBDIR}/flexbison/win_bison.exe
-DM4_EXECUTABLE=${DOWNLOAD_DIR}/mingw/mingw64/msys/1.0/bin/m4.exe
)
+elseif(APPLE)
+ # Use bison installed via Homebrew.
+ # The one which comes which Xcode toolset is too old.
+ set(ISPC_EXTRA_ARGS_APPLE
+ -DBISON_EXECUTABLE=/usr/local/opt/bison/bin/bison
+ )
+elseif(UNIX)
+ set(ISPC_EXTRA_ARGS_UNIX
+ -DCMAKE_C_COMPILER=${LIBDIR}/clang/bin/clang
+ -DCMAKE_CXX_COMPILER=${LIBDIR}/clang/bin/clang++
+ )
endif()
set(ISPC_EXTRA_ARGS
@@ -36,6 +47,8 @@ set(ISPC_EXTRA_ARGS
-DCLANG_LIBRARY_DIR=${LIBDIR}/clang/lib
-DCLANG_INCLUDE_DIRS=${LIBDIR}/clang/include
${ISPC_EXTRA_ARGS_WIN}
+ ${ISPC_EXTRA_ARGS_APPLE}
+ ${ISPC_EXTRA_ARGS_UNIX}
)
ExternalProject_Add(external_ispc
diff --git a/build_files/build_environment/cmake/nasm.cmake b/build_files/build_environment/cmake/nasm.cmake
new file mode 100644
index 00000000000..51d7ebd8830
--- /dev/null
+++ b/build_files/build_environment/cmake/nasm.cmake
@@ -0,0 +1,29 @@
+# ***** BEGIN GPL LICENSE BLOCK *****
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# ***** END GPL LICENSE BLOCK *****
+
+ExternalProject_Add(external_nasm
+ URL ${NASM_URI}
+ DOWNLOAD_DIR ${DOWNLOAD_DIR}
+ URL_HASH SHA256=${NASM_HASH}
+ PREFIX ${BUILD_DIR}/nasm
+ PATCH_COMMAND ${PATCH_CMD} --verbose -p 1 -N -d ${BUILD_DIR}/nasm/src/external_nasm < ${PATCH_DIR}/nasm.diff
+ CONFIGURE_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/nasm/src/external_nasm/ && ${CONFIGURE_COMMAND} --prefix=${LIBDIR}/nasm
+ BUILD_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/nasm/src/external_nasm/ && make -j${MAKE_THREADS}
+ INSTALL_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/nasm/src/external_nasm/ && make install
+ INSTALL_DIR ${LIBDIR}/nasm
+)
diff --git a/build_files/build_environment/cmake/ogg.cmake b/build_files/build_environment/cmake/ogg.cmake
index e2d0f0905b8..808a35c6e4d 100644
--- a/build_files/build_environment/cmake/ogg.cmake
+++ b/build_files/build_environment/cmake/ogg.cmake
@@ -21,6 +21,7 @@ ExternalProject_Add(external_ogg
DOWNLOAD_DIR ${DOWNLOAD_DIR}
URL_HASH SHA256=${OGG_HASH}
PREFIX ${BUILD_DIR}/ogg
+ PATCH_COMMAND ${PATCH_CMD} --verbose -p 1 -N -d ${BUILD_DIR}/ogg/src/external_ogg < ${PATCH_DIR}/ogg.diff
CONFIGURE_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/ogg/src/external_ogg/ && ${CONFIGURE_COMMAND} --prefix=${LIBDIR}/ogg --disable-shared --enable-static
BUILD_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/ogg/src/external_ogg/ && make -j${MAKE_THREADS}
INSTALL_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/ogg/src/external_ogg/ && make install
diff --git a/build_files/build_environment/cmake/options.cmake b/build_files/build_environment/cmake/options.cmake
index 4b973067020..39334af0bcf 100644
--- a/build_files/build_environment/cmake/options.cmake
+++ b/build_files/build_environment/cmake/options.cmake
@@ -113,14 +113,18 @@ else()
COMMAND xcode-select --print-path
OUTPUT_VARIABLE XCODE_DEV_PATH OUTPUT_STRIP_TRAILING_WHITESPACE
)
+ execute_process(
+ COMMAND xcodebuild -version -sdk macosx SDKVersion
+ OUTPUT_VARIABLE MACOSX_SDK_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
+
set(OSX_ARCHITECTURES x86_64)
- set(OSX_DEPLOYMENT_TARGET 10.11)
+ set(OSX_DEPLOYMENT_TARGET 10.13)
set(OSX_SYSROOT ${XCODE_DEV_PATH}/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk)
set(PLATFORM_CFLAGS "-isysroot ${OSX_SYSROOT} -mmacosx-version-min=${OSX_DEPLOYMENT_TARGET}")
set(PLATFORM_CXXFLAGS "-isysroot ${OSX_SYSROOT} -mmacosx-version-min=${OSX_DEPLOYMENT_TARGET} -std=c++11 -stdlib=libc++")
set(PLATFORM_LDFLAGS "-isysroot ${OSX_SYSROOT} -mmacosx-version-min=${OSX_DEPLOYMENT_TARGET}")
- set(PLATFORM_BUILD_TARGET --build=x86_64-apple-darwin15.0.0) # OS X 10.11
+ set(PLATFORM_BUILD_TARGET --build=x86_64-apple-darwin17.0.0) # OS X 10.13
set(PLATFORM_CMAKE_FLAGS
-DCMAKE_OSX_ARCHITECTURES:STRING=${OSX_ARCHITECTURES}
-DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=${OSX_DEPLOYMENT_TARGET}
@@ -155,6 +159,7 @@ else()
set(CONFIGURE_ENV
export MACOSX_DEPLOYMENT_TARGET=${OSX_DEPLOYMENT_TARGET} &&
+ export MACOSX_SDK_VERSION=${OSX_DEPLOYMENT_TARGET} &&
export CFLAGS=${PLATFORM_CFLAGS} &&
export CXXFLAGS=${PLATFORM_CXXFLAGS} &&
export LDFLAGS=${PLATFORM_LDFLAGS}
diff --git a/build_files/build_environment/cmake/python.cmake b/build_files/build_environment/cmake/python.cmake
index 2d64feb9858..681b20577d6 100644
--- a/build_files/build_environment/cmake/python.cmake
+++ b/build_files/build_environment/cmake/python.cmake
@@ -48,7 +48,12 @@ if(WIN32)
else()
if(APPLE)
- # disable functions that can be in 10.13 sdk but aren't available on 10.9 target
+ # Disable functions that can be in 10.13 sdk but aren't available on 10.9 target.
+ #
+ # Disable libintl (gettext library) as it might come from Homebrew, which makes
+ # it so test program compiles, but the Python does not. This is because for Python
+ # we use isysroot, which seems to forbid using libintl.h.
+ # The gettext functionality seems to come from CoreFoundation, so should be all fine.
set(PYTHON_FUNC_CONFIGS
export ac_cv_func_futimens=no &&
export ac_cv_func_utimensat=no &&
@@ -60,7 +65,10 @@ else()
export ac_cv_func_getentropy=no &&
export ac_cv_func_mkostemp=no &&
export ac_cv_func_mkostemps=no &&
- export ac_cv_func_timingsafe_bcmp=no)
+ export ac_cv_func_timingsafe_bcmp=no &&
+ export ac_cv_header_libintl_h=no &&
+ export ac_cv_lib_intl_textdomain=no
+ )
set(PYTHON_CONFIGURE_ENV ${CONFIGURE_ENV} && ${PYTHON_FUNC_CONFIGS})
set(PYTHON_BINARY ${BUILD_DIR}/python/src/external_python/python.exe)
else()
diff --git a/build_files/build_environment/cmake/tiff.cmake b/build_files/build_environment/cmake/tiff.cmake
index fa5a1423603..fe2c82a6eaa 100644
--- a/build_files/build_environment/cmake/tiff.cmake
+++ b/build_files/build_environment/cmake/tiff.cmake
@@ -16,6 +16,12 @@
#
# ***** END GPL LICENSE BLOCK *****
+if(WITH_WEBP)
+ set(WITH_TIFF_WEBP ON)
+else()
+ set(WITH_TIFF_WEBP OFF)
+endif()
+
set(TIFF_EXTRA_ARGS
-DZLIB_LIBRARY=${LIBDIR}/zlib/lib/${ZLIB_LIBRARY}
-DZLIB_INCLUDE_DIR=${LIBDIR}/zlib/include
@@ -23,6 +29,8 @@ set(TIFF_EXTRA_ARGS
-DBUILD_SHARED_LIBS=OFF
-Dlzma=OFF
-Djbig=OFF
+ -Dzstd=OFF
+ -Dwebp=${WITH_TIFF_WEBP}
)
ExternalProject_Add(external_tiff
diff --git a/build_files/build_environment/cmake/versions.cmake b/build_files/build_environment/cmake/versions.cmake
index 5ec5553079c..ce2a1191f17 100644
--- a/build_files/build_environment/cmake/versions.cmake
+++ b/build_files/build_environment/cmake/versions.cmake
@@ -305,6 +305,10 @@ set(MESA_VERSION 18.3.1)
set(MESA_URI ftp://ftp.freedesktop.org/pub/mesa//mesa-${MESA_VERSION}.tar.xz)
set(MESA_HASH d60828056d77bfdbae0970f9b15fb1be)
+set(NASM_VERSION 2.15.02)
+set(NASM_URI https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VERSION}/nasm-${NASM_VERSION}.tar.xz)
+set(NASM_HASH f4fd1329b1713e1ccd34b2fc121c4bcd278c9f91cc4cb205ae8fcd2e4728dd14)
+
set(XR_OPENXR_SDK_VERSION 1.0.8)
set(XR_OPENXR_SDK_URI https://github.com/KhronosGroup/OpenXR-SDK/archive/release-${XR_OPENXR_SDK_VERSION}.tar.gz)
set(XR_OPENXR_SDK_HASH c6de63d2e0f9029aa58dfa97cad8ce07)
diff --git a/build_files/build_environment/cmake/x264.cmake b/build_files/build_environment/cmake/x264.cmake
index 8bcb5a2938f..96bf031ce83 100644
--- a/build_files/build_environment/cmake/x264.cmake
+++ b/build_files/build_environment/cmake/x264.cmake
@@ -21,12 +21,21 @@ if(WIN32)
endif()
+if(APPLE)
+ set(X264_CONFIGURE_ENV
+ export AS=${LIBDIR}/nasm/bin/nasm
+ )
+else()
+ set(X264_CONFIGURE_ENV echo .)
+endif()
+
ExternalProject_Add(external_x264
URL ${X264_URI}
DOWNLOAD_DIR ${DOWNLOAD_DIR}
URL_HASH SHA256=${X264_HASH}
PREFIX ${BUILD_DIR}/x264
- CONFIGURE_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/x264/src/external_x264/ && ${CONFIGURE_COMMAND} --prefix=${LIBDIR}/x264
+ CONFIGURE_COMMAND ${CONFIGURE_ENV} && ${X264_CONFIGURE_ENV} && cd ${BUILD_DIR}/x264/src/external_x264/ &&
+ ${CONFIGURE_COMMAND} --prefix=${LIBDIR}/x264
--enable-static
--enable-pic
--disable-lavf
@@ -39,3 +48,10 @@ ExternalProject_Add(external_x264
if(MSVC)
set_target_properties(external_x264 PROPERTIES FOLDER Mingw)
endif()
+
+if(APPLE)
+ add_dependencies(
+ external_x264
+ external_nasm
+ )
+endif()
diff --git a/build_files/build_environment/patches/ffmpeg.diff b/build_files/build_environment/patches/ffmpeg.diff
index 960728ae980..e195ca272de 100644
--- a/build_files/build_environment/patches/ffmpeg.diff
+++ b/build_files/build_environment/patches/ffmpeg.diff
@@ -9,3 +9,62 @@
enabled libopenmpt && require_pkg_config libopenmpt "libopenmpt >= 0.2.6557" libopenmpt/libopenmpt.h openmpt_module_create -lstdc++ && append libopenmpt_extralibs "-lstdc++"
enabled libopus && {
enabled libopus_decoder && {
+--- a/libavcodec/cfhddata.c
++++ b/libavcodec/cfhddata.c
+@@ -276,10 +276,10 @@
+ av_cold int ff_cfhd_init_vlcs(CFHDContext *s)
+ {
+ int i, j, ret = 0;
+- uint32_t new_cfhd_vlc_bits[NB_VLC_TABLE_18 * 2];
+- uint8_t new_cfhd_vlc_len[NB_VLC_TABLE_18 * 2];
+- uint16_t new_cfhd_vlc_run[NB_VLC_TABLE_18 * 2];
+- int16_t new_cfhd_vlc_level[NB_VLC_TABLE_18 * 2];
++ uint32_t *new_cfhd_vlc_bits = av_calloc(sizeof(uint32_t), NB_VLC_TABLE_18 * 2);
++ uint8_t *new_cfhd_vlc_len = av_calloc(sizeof(uint8_t), NB_VLC_TABLE_18 * 2);
++ uint16_t *new_cfhd_vlc_run = av_calloc(sizeof(uint16_t), NB_VLC_TABLE_18 * 2);
++ int16_t *new_cfhd_vlc_level = av_calloc(sizeof(int16_t), NB_VLC_TABLE_18 * 2);
+
+ /** Similar to dv.c, generate signed VLC tables **/
+
+@@ -305,8 +305,13 @@
+
+ ret = init_vlc(&s->vlc_9, VLC_BITS, j, new_cfhd_vlc_len,
+ 1, 1, new_cfhd_vlc_bits, 4, 4, 0);
+- if (ret < 0)
++ if (ret < 0) {
++ av_free(new_cfhd_vlc_bits);
++ av_free(new_cfhd_vlc_len);
++ av_free(new_cfhd_vlc_run);
++ av_free(new_cfhd_vlc_level);
+ return ret;
++ }
+ for (i = 0; i < s->vlc_9.table_size; i++) {
+ int code = s->vlc_9.table[i][0];
+ int len = s->vlc_9.table[i][1];
+@@ -346,8 +351,14 @@
+
+ ret = init_vlc(&s->vlc_18, VLC_BITS, j, new_cfhd_vlc_len,
+ 1, 1, new_cfhd_vlc_bits, 4, 4, 0);
+- if (ret < 0)
++ if (ret < 0) {
++ av_free(new_cfhd_vlc_bits);
++ av_free(new_cfhd_vlc_len);
++ av_free(new_cfhd_vlc_run);
++ av_free(new_cfhd_vlc_level);
+ return ret;
++ }
++
+ av_assert0(s->vlc_18.table_size == 4572);
+
+ for (i = 0; i < s->vlc_18.table_size; i++) {
+@@ -367,5 +378,10 @@
+ s->table_18_rl_vlc[i].run = run;
+ }
+
++ av_free(new_cfhd_vlc_bits);
++ av_free(new_cfhd_vlc_len);
++ av_free(new_cfhd_vlc_run);
++ av_free(new_cfhd_vlc_level);
++
+ return ret;
+ }
diff --git a/build_files/build_environment/patches/ispc.diff b/build_files/build_environment/patches/ispc.diff
index 710bfc7a448..689dd0abdc5 100644
--- a/build_files/build_environment/patches/ispc.diff
+++ b/build_files/build_environment/patches/ispc.diff
@@ -34,3 +34,52 @@ diff -Naur orig/cmake/GenerateBuiltins.cmake.txt external_ispc/cmake/GenerateBui
elseif ("${bit}" STREQUAL "64" AND ${arch} STREQUAL "x86")
set(target_arch "x86_64")
elseif ("${bit}" STREQUAL "32" AND ${arch} STREQUAL "arm")
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 46a8db8..f53beef 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -36,8 +36,12 @@
+ cmake_minimum_required(VERSION 3.13)
+
+ if (UNIX)
+- set(CMAKE_C_COMPILER "clang")
+- set(CMAKE_CXX_COMPILER "clang++")
++ if (NOT CMAKE_C_COMPILER)
++ set(CMAKE_C_COMPILER "clang")
++ endif()
++ if (NOT CMAKE_CXX_COMPILER)
++ set(CMAKE_CXX_COMPILER "clang++")
++ endif()
+ endif()
+
+ set(PROJECT_NAME ispc)
+@@ -412,6 +416,29 @@ else()
+ endif()
+ endif()
+
++# Link against libstdc++.a which must be provided to the linker after
++# LLVM and CLang libraries.
++# This is needed because some of LLVM/CLang dependencies are using
++# std::make_shared, which is defined in one of those:
++# - libclang-cpp.so
++# - libstdc++.a
++# Using the former one is tricky because then generated binary depends
++# on a library which is outside of the LD_LIBRARY_PATH.
++#
++# Hence, using C++ implementation from G++ which seems to work just fine.
++# In fact, from investigation seems that libclang-cpp.so itself is pulling
++# std::_Sp_make_shared_tag from G++'s libstdc++.a.
++if(UNIX AND NOT APPLE)
++ execute_process(
++ COMMAND g++ --print-file-name libstdc++.a
++ OUTPUT_VARIABLE GCC_LIBSTDCXX_A
++ OUTPUT_STRIP_TRAILING_WHITESPACE
++ )
++ if(GCC_LIBSTDCXX_A AND EXISTS ${GCC_LIBSTDCXX_A})
++ target_link_libraries(${PROJECT_NAME} ${GCC_LIBSTDCXX_A})
++ endif()
++endif()
++
+ # Build target for utility checking host ISA
+ if (ISPC_INCLUDE_UTILS)
+ add_executable(check_isa "")
diff --git a/build_files/build_environment/patches/nasm.diff b/build_files/build_environment/patches/nasm.diff
new file mode 100644
index 00000000000..821e1a1d905
--- /dev/null
+++ b/build_files/build_environment/patches/nasm.diff
@@ -0,0 +1,129 @@
+diff --git a/output/macho.h b/output/macho.h
+index 538c531e..fd5e8849 100644
+--- a/output/macho.h
++++ b/output/macho.h
+@@ -60,6 +60,8 @@
+ #define LC_SEGMENT 0x1
+ #define LC_SEGMENT_64 0x19
+ #define LC_SYMTAB 0x2
++#define LC_VERSION_MIN_MACOSX 0x24
++#define LC_BUILD_VERSION 0x32
+
+ /* Symbol type bits */
+ #define N_STAB 0xe0
+diff --git a/output/outmacho.c b/output/outmacho.c
+index 08147883..de6ec902 100644
+--- a/output/outmacho.c
++++ b/output/outmacho.c
+@@ -38,6 +38,8 @@
+
+ #include "compiler.h"
+
++#include <stdlib.h>
++
+ #include "nctype.h"
+
+ #include "nasm.h"
+@@ -64,6 +66,8 @@
+ #define MACHO_SYMCMD_SIZE 24
+ #define MACHO_NLIST_SIZE 12
+ #define MACHO_RELINFO_SIZE 8
++#define MACHO_BUILD_VERSION_SIZE 24
++#define MACHO_VERSION_MIN_MACOSX_SIZE 16
+
+ #define MACHO_HEADER64_SIZE 32
+ #define MACHO_SEGCMD64_SIZE 72
+@@ -1224,6 +1228,46 @@ static void macho_layout_symbols (uint32_t *numsyms,
+ }
+ }
+
++static bool get_full_version_from_env (const char *variable_name,
++ int *r_major,
++ int *r_minor,
++ int *r_patch) {
++ *r_major = 0;
++ *r_minor = 0;
++ *r_patch = 0;
++
++ const char *value = getenv(variable_name);
++ if (value == NULL || value[0] == '\0') {
++ return false;
++ }
++
++ const char *current_value = value;
++ const char *end_value = value + strlen(value);
++
++ char *endptr;
++
++ *r_major = strtol(current_value, &endptr, 10);
++ if (endptr >= end_value) {
++ return true;
++ }
++ current_value = endptr + 1;
++
++ *r_minor = strtol(current_value, &endptr, 10);
++ if (endptr >= end_value) {
++ return true;
++ }
++ current_value = endptr + 1;
++
++ *r_patch = strtol(current_value, &endptr, 10);
++
++ return true;
++}
++
++static bool need_version_min_macosx_command (void) {
++ return getenv("MACOSX_DEPLOYMENT_TARGET") &&
++ getenv("MACOSX_SDK_VERSION");
++}
++
+ /* Calculate some values we'll need for writing later. */
+
+ static void macho_calculate_sizes (void)
+@@ -1270,6 +1314,12 @@ static void macho_calculate_sizes (void)
+ head_sizeofcmds += fmt.segcmd_size + seg_nsects * fmt.sectcmd_size;
+ }
+
++ /* LC_VERSION_MIN_MACOSX */
++ if (need_version_min_macosx_command()) {
++ ++head_ncmds;
++ head_sizeofcmds += MACHO_VERSION_MIN_MACOSX_SIZE;
++ }
++
+ if (nsyms > 0) {
+ ++head_ncmds;
+ head_sizeofcmds += MACHO_SYMCMD_SIZE;
+@@ -1653,6 +1703,33 @@ static void macho_write (void)
+ else
+ nasm_warn(WARN_OTHER, "no sections?");
+
++#define ENCODE_BUILD_VERSION(major, minor, patch) \
++ (((major) << 16) | ((minor) << 8) | (patch))
++
++ if (0) {
++ fwriteint32_t(LC_BUILD_VERSION, ofile); /* cmd == LC_BUILD_VERSION */
++ fwriteint32_t(MACHO_BUILD_VERSION_SIZE, ofile); /* size of load command */
++ fwriteint32_t(1, ofile); /* platform */
++ fwriteint32_t(ENCODE_BUILD_VERSION(10, 13, 0), ofile); /* minos, X.Y.Z is encoded in nibbles xxxx.yy.zz */
++ fwriteint32_t(ENCODE_BUILD_VERSION(10, 15, 4), ofile); /* sdk, X.Y.Z is encoded in nibbles xxxx.yy.zz */
++ fwriteint32_t(0, ofile); /* number of tool entries following this */
++ }
++
++ if (need_version_min_macosx_command()) {
++ int sdk_major, sdk_minor, sdk_patch;
++ get_full_version_from_env("MACOSX_SDK_VERSION", &sdk_major, &sdk_minor, &sdk_patch);
++
++ int version_major, version_minor, version_patch;
++ get_full_version_from_env("MACOSX_DEPLOYMENT_TARGET", &version_major, &version_minor, &version_patch);
++
++ fwriteint32_t(LC_VERSION_MIN_MACOSX, ofile); /* cmd == LC_VERSION_MIN_MACOSX */
++ fwriteint32_t(MACHO_VERSION_MIN_MACOSX_SIZE, ofile); /* size of load command */
++ fwriteint32_t(ENCODE_BUILD_VERSION(version_major, version_minor, version_patch), ofile); /* minos, X.Y.Z is encoded in nibbles xxxx.yy.zz */
++ fwriteint32_t(ENCODE_BUILD_VERSION(sdk_major, sdk_minor, sdk_patch), ofile); /* sdk, X.Y.Z is encoded in nibbles xxxx.yy.zz */
++ }
++
++#undef ENCODE_BUILD_VERSION
++
+ if (nsyms > 0) {
+ /* write out symbol command */
+ fwriteint32_t(LC_SYMTAB, ofile); /* cmd == LC_SYMTAB */
diff --git a/build_files/build_environment/patches/ogg.diff b/build_files/build_environment/patches/ogg.diff
new file mode 100644
index 00000000000..fca426e1d35
--- /dev/null
+++ b/build_files/build_environment/patches/ogg.diff
@@ -0,0 +1,12 @@
+diff --git a/include/ogg/os_types.h b/include/ogg/os_types.h
+index eb8a322..6f73b72 100644
+--- a/include/ogg/os_types.h
++++ b/include/ogg/os_types.h
+@@ -71,6 +71,7 @@
+ #elif (defined(__APPLE__) && defined(__MACH__)) /* MacOS X Framework build */
+
+ # include <sys/types.h>
++# include <stdint.h>
+ typedef int16_t ogg_int16_t;
+ typedef uint16_t ogg_uint16_t;
+ typedef int32_t ogg_int32_t;