diff -Naur OpenShadingLanguage-1.12.6.2/CMakeLists.txt external_osl/CMakeLists.txt
--- OpenShadingLanguage-1.12.6.2/CMakeLists.txt	2022-09-30 17:43:53 -0600
+++ external_osl/CMakeLists.txt	2022-10-15 14:49:26 -0600
@@ -101,6 +101,11 @@
      CACHE STRING "Directory where OptiX PTX files will be installed")
 set (CMAKE_DEBUG_POSTFIX "" CACHE STRING "Library naming postfix for Debug builds (e.g., '_debug')")
 
+set (USE_OIIO_STATIC ON CACHE BOOL "If OIIO is built static")
+if (USE_OIIO_STATIC)
+    add_definitions ("-DOIIO_STATIC_BUILD=1")
+    add_definitions ("-DOIIO_STATIC_DEFINE=1")
+endif ()
 
 set (OSL_NO_DEFAULT_TEXTURESYSTEM OFF CACHE BOOL "Do not use create a raw OIIO::TextureSystem")
 if (OSL_NO_DEFAULT_TEXTURESYSTEM)
diff -Naur OpenShadingLanguage-1.12.6.2/src/cmake/externalpackages.cmake external_osl/src/cmake/externalpackages.cmake
--- OpenShadingLanguage-1.12.6.2/src/cmake/externalpackages.cmake	2022-09-30 17:43:53 -0600
+++ external_osl/src/cmake/externalpackages.cmake	2022-10-15 14:49:26 -0600
@@ -77,6 +77,7 @@
 
 
 checked_find_package (ZLIB REQUIRED)  # Needed by several packages
+checked_find_package (PNG REQUIRED)  # Needed since OIIO needs it
 
 # IlmBase & OpenEXR
 checked_find_package (OpenEXR REQUIRED
diff -Naur OpenShadingLanguage-1.12.6.2/src/include/OSL/llvm_util.h external_osl/src/include/OSL/llvm_util.h
--- OpenShadingLanguage-1.12.6.2/src/include/OSL/llvm_util.h	2022-09-30 17:43:53 -0600
+++ external_osl/src/include/OSL/llvm_util.h	2022-10-15 15:37:24 -0600
@@ -9,6 +9,8 @@
 #include <unordered_set>
 #include <vector>
 
+#define OSL_HAS_BLENDER_CLEANUP_FIX
+
 #ifdef LLVM_NAMESPACE
 namespace llvm = LLVM_NAMESPACE;
 #endif
@@ -455,7 +457,7 @@
     llvm::BasicBlock* masked_return_block() const;
 
     bool is_masking_required() const { return m_is_masking_required; }
-
+    static void Cleanup ();
     struct ScopedMasking {
         ScopedMasking() {}
 
diff -Naur OpenShadingLanguage-1.12.6.2/src/liboslcomp/oslcomp.cpp external_osl/src/liboslcomp/oslcomp.cpp
--- OpenShadingLanguage-1.12.6.2/src/liboslcomp/oslcomp.cpp	2022-09-30 17:43:53 -0600
+++ external_osl/src/liboslcomp/oslcomp.cpp	2022-10-15 14:49:26 -0600
@@ -21,6 +21,13 @@
 #if !defined(__STDC_CONSTANT_MACROS)
 #    define __STDC_CONSTANT_MACROS 1
 #endif
+
+// clang uses CALLBACK in its templates which causes issues if it is already defined
+#ifdef _WIN32 && defined(CALLBACK)
+#    undef CALLBACK
+#endif
+
+//
 #include <clang/Basic/TargetInfo.h>
 #include <clang/Frontend/CompilerInstance.h>
 #include <clang/Frontend/TextDiagnosticPrinter.h>
diff -Naur OpenShadingLanguage-1.12.6.2/src/liboslexec/llvm_util.cpp external_osl/src/liboslexec/llvm_util.cpp
--- OpenShadingLanguage-1.12.6.2/src/liboslexec/llvm_util.cpp	2022-09-30 17:43:53 -0600
+++ external_osl/src/liboslexec/llvm_util.cpp	2022-10-15 15:53:11 -0600
@@ -116,8 +116,6 @@
     return { A.data(), size_t(A.size()) };
 }
 
-
-
 namespace pvt {
 
 typedef llvm::SectionMemoryManager LLVMMemoryManager;
@@ -182,6 +180,13 @@
     ++jit_mem_hold_users;
 }
 
+void
+LLVM_Util::Cleanup()
+{
+    if (jitmm_hold)
+        jitmm_hold->clear();
+}
+
 
 LLVM_Util::ScopedJitMemoryUser::~ScopedJitMemoryUser()
 {
diff --git a/src/include/OSL/mask.h b/src/include/OSL/mask.h
index 24197af..b9275f6 100644
--- a/src/include/OSL/mask.h
+++ b/src/include/OSL/mask.h
@@ -4,7 +4,6 @@
 
 #pragma once
 
-#include <immintrin.h>
 #include <type_traits>
 
 #include <OSL/oslconfig.h>
@@ -23,6 +22,8 @@ using std::countr_zero;
 
 #elif OSL_INTEL_CLASSIC_COMPILER_VERSION
 
+#include <immintrin.h>
+
 OSL_FORCEINLINE int popcount(uint32_t x) noexcept { return _mm_popcnt_u32(x);}
 OSL_FORCEINLINE int popcount(uint64_t x) noexcept { return _mm_popcnt_u64(x); }
 OSL_FORCEINLINE int countr_zero(uint32_t x) noexcept { return _bit_scan_forward(x); }
