diff --git build_files/cmake/platform/platform_apple.cmake build_files/cmake/platform/platform_apple.cmake
index fe9dd6a58de..c56606bca33 100644
--- build_files/cmake/platform/platform_apple.cmake
+++ build_files/cmake/platform/platform_apple.cmake
@@ -41,8 +41,12 @@ endfunction()
 # ------------------------------------------------------------------------
 # Find system provided libraries.
 
+if(NOT DEFINED FRAMEWORK_SEARCH_PATHS)
+  set(FRAMEWORK_SEARCH_PATHS /Library/Frameworks)
+endif()
+
 # Find system ZLIB, not the pre-compiled one supplied with OpenCollada.
-set(ZLIB_ROOT /usr)
+set(ZLIB_ROOT ${LIBDIR})
 find_package(ZLIB REQUIRED)
 find_package(BZip2 REQUIRED)
 list(APPEND ZLIB_LIBRARIES ${BZIP2_LIBRARIES})
@@ -63,7 +67,7 @@ if(WITH_JACK)
     message(STATUS "JACK not found, disabling WITH_JACK")
     set(WITH_JACK OFF)
   else()
-    set(JACK_INCLUDE_DIRS ${JACK_FRAMEWORK}/headers)
+    set(JACK_INCLUDE_DIRS ${JACK_FRAMEWORK}/include)
   endif()
 endif()
 
@@ -84,13 +88,6 @@ endif()
 file(GLOB LIB_SUBDIRS ${LIBDIR}/*)
 set(CMAKE_PREFIX_PATH ${LIB_SUBDIRS})
 
-# -------------------------------------------------------------------------
-# Find precompiled libraries, and avoid system or user-installed ones.
-
-if(EXISTS ${LIBDIR})
-  without_system_libs_begin()
-endif()
-
 if(WITH_ALEMBIC)
   find_package(Alembic)
 endif()
@@ -109,10 +106,10 @@ endif()
 
 if(WITH_CODEC_SNDFILE)
   find_package(SndFile)
-  find_library(_sndfile_FLAC_LIBRARY NAMES flac HINTS ${LIBDIR}/sndfile/lib)
-  find_library(_sndfile_OGG_LIBRARY NAMES ogg HINTS ${LIBDIR}/ffmpeg/lib)
-  find_library(_sndfile_VORBIS_LIBRARY NAMES vorbis HINTS ${LIBDIR}/ffmpeg/lib)
-  find_library(_sndfile_VORBISENC_LIBRARY NAMES vorbisenc HINTS ${LIBDIR}/ffmpeg/lib)
+  find_library(_sndfile_FLAC_LIBRARY NAMES flac HINTS ${LIBDIR}/lib)
+  find_library(_sndfile_OGG_LIBRARY NAMES ogg HINTS ${LIBDIR}/lib)
+  find_library(_sndfile_VORBIS_LIBRARY NAMES vorbis HINTS ${LIBDIR}/lib)
+  find_library(_sndfile_VORBISENC_LIBRARY NAMES vorbisenc HINTS ${LIBDIR}/lib)
   list(APPEND LIBSNDFILE_LIBRARIES
     ${_sndfile_FLAC_LIBRARY}
     ${_sndfile_OGG_LIBRARY}
@@ -129,7 +126,7 @@ endif()
 
 if(WITH_PYTHON)
   # we use precompiled libraries for py 3.9 and up by default
-  set(PYTHON_VERSION 3.9)
+  set(PYTHON_VERSION @@py_ver@@)
   if(NOT WITH_PYTHON_MODULE AND NOT WITH_PYTHON_FRAMEWORK)
     # normally cached but not since we include them with blender
     set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}")
@@ -139,7 +136,7 @@ if(WITH_PYTHON)
     # set(PYTHON_LINKFLAGS "-u _PyMac_Error")  # won't  build with this enabled
   else()
     # module must be compiled against Python framework
-    set(_py_framework "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}")
+    set(_py_framework "${FRAMEWORK_SEARCH_PATHS}/Python.framework/Versions/${PYTHON_VERSION}")
 
     set(PYTHON_INCLUDE_DIR "${_py_framework}/include/python${PYTHON_VERSION}")
     set(PYTHON_EXECUTABLE "${_py_framework}/bin/python${PYTHON_VERSION}")
@@ -211,18 +208,18 @@ if(WITH_OPENIMAGEDENOISE)
 endif()
 
 if(WITH_JACK)
-  string(APPEND PLATFORM_LINKFLAGS " -F/Library/Frameworks -weak_framework jackmp")
+  string(APPEND PLATFORM_LINKFLAGS " -F${FRAMEWORK_SEARCH_PATHS} -ljack")
 endif()
 
 if(WITH_PYTHON_MODULE OR WITH_PYTHON_FRAMEWORK)
   # force cmake to link right framework
-  string(APPEND PLATFORM_LINKFLAGS " /Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/Python")
+  string(APPEND PLATFORM_LINKFLAGS " ${FRAMEWORK_SEARCH_PATHS}/Python.framework/Versions/${PYTHON_VERSION}/Python")
 endif()
 
 if(WITH_OPENCOLLADA)
   find_package(OpenCOLLADA)
-  find_library(PCRE_LIBRARIES NAMES pcre HINTS ${LIBDIR}/opencollada/lib)
-  find_library(XML2_LIBRARIES NAMES xml2 HINTS ${LIBDIR}/opencollada/lib)
+  find_library(PCRE_LIBRARIES NAMES pcre HINTS ${LIBDIR}/lib/opencollada)
+  find_library(XML2_LIBRARIES NAMES xml2 HINTS ${LIBDIR}/lib/opencollada)
   print_found_status("PCRE" "${PCRE_LIBRARIES}")
   print_found_status("XML2" "${XML2_LIBRARIES}")
 endif()
@@ -234,14 +231,14 @@ if(WITH_SDL)
   string(APPEND PLATFORM_LINKFLAGS " -framework ForceFeedback")
 endif()
 
-set(PNG_ROOT ${LIBDIR}/png)
+set(PNG_ROOT ${LIBDIR})
 find_package(PNG REQUIRED)
 
-set(JPEG_ROOT ${LIBDIR}/jpeg)
+set(JPEG_ROOT ${LIBDIR})
 find_package(JPEG REQUIRED)
 
 if(WITH_IMAGE_TIFF)
-  set(TIFF_ROOT ${LIBDIR}/tiff)
+  set(TIFF_ROOT ${LIBDIR})
   find_package(TIFF)
   if(NOT TIFF_FOUND)
     message(WARNING "TIFF not found, disabling WITH_IMAGE_TIFF")
@@ -251,12 +248,15 @@ endif()
 
 if(WITH_BOOST)
   set(Boost_NO_BOOST_CMAKE ON)
-  set(BOOST_ROOT ${LIBDIR}/boost)
-  set(Boost_NO_SYSTEM_PATHS ON)
+  set(BOOST_ROOT ${LIBDIR})
+#  set(Boost_NO_SYSTEM_PATHS ON)
   set(_boost_FIND_COMPONENTS date_time filesystem regex system thread wave)
   if(WITH_INTERNATIONAL)
     list(APPEND _boost_FIND_COMPONENTS locale)
   endif()
+  if(WITH_PYTHON)
+    list(APPEND _boost_FIND_COMPONENTS python@@py_ver_nodot@@)
+  endif()
   if(WITH_CYCLES_NETWORK)
     list(APPEND _boost_FIND_COMPONENTS serialization)
   endif()
@@ -297,7 +297,7 @@ if(WITH_OPENIMAGEIO)
     ${ZLIB_LIBRARIES}
   )
   set(OPENIMAGEIO_DEFINITIONS "-DOIIO_STATIC_BUILD")
-  set(OPENIMAGEIO_IDIFF "${LIBDIR}/openimageio/bin/idiff")
+  set(OPENIMAGEIO_IDIFF "${LIBDIR}/bin/idiff")
 endif()
 
 if(WITH_OPENCOLORIO)
@@ -311,7 +311,7 @@ endif()
 
 if(WITH_OPENVDB)
   find_package(OpenVDB)
-  find_library(BLOSC_LIBRARIES NAMES blosc HINTS ${LIBDIR}/openvdb/lib)
+  find_library(BLOSC_LIBRARIES NAMES blosc HINTS ${LIBDIR}/lib)
   print_found_status("Blosc" "${BLOSC_LIBRARIES}")
   list(APPEND OPENVDB_LIBRARIES ${BLOSC_LIBRARIES})
   set(OPENVDB_DEFINITIONS)
@@ -340,20 +340,12 @@ if(WITH_LLVM)
 endif()
 
 if(WITH_CYCLES_OSL)
-  set(CYCLES_OSL ${LIBDIR}/osl)
-
-  find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
-  find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
-  find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
-  # WARNING! depends on correct order of OSL libs linking
-  list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} -force_load ${OSL_LIB_EXEC} ${OSL_LIB_QUERY})
-  find_path(OSL_INCLUDE_DIR OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
-  find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
-  find_path(OSL_SHADER_DIR NAMES stdosl.h PATHS ${CYCLES_OSL}/share/OSL/shaders)
-
-  if(OSL_INCLUDE_DIR AND OSL_LIBRARIES AND OSL_COMPILER AND OSL_SHADER_DIR)
-    set(OSL_FOUND TRUE)
-  else()
+  set(CYCLES_OSL ${LIBDIR})
+  if(NOT OSL_ROOT)
+    set(OSL_ROOT ${CYCLES_OSL})
+  endif()
+  find_package(OSL)
+  if(NOT OSL_FOUND)
     message(WARNING "OSL not found, disabling WITH_CYCLES_OSL")
     set(WITH_CYCLES_OSL OFF)
   endif()
@@ -402,29 +394,29 @@ endif()
 if(WITH_OPENMP)
   if(CMAKE_C_COMPILER_ID MATCHES "Clang" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL "7.0")
     # Use OpenMP from our precompiled libraries.
-    message(STATUS "Using ${LIBDIR}/openmp for OpenMP")
+    message(STATUS "Using ${LIBDIR}/lib/libomp for OpenMP")
     set(OPENMP_CUSTOM ON)
     set(OPENMP_FOUND ON)
-    set(OpenMP_C_FLAGS "-Xclang -fopenmp -I'${LIBDIR}/openmp/include'")
-    set(OpenMP_CXX_FLAGS "-Xclang -fopenmp -I'${LIBDIR}/openmp/include'")
-    set(OpenMP_LINKER_FLAGS "-L'${LIBDIR}/openmp/lib' -lomp")
+    set(OpenMP_C_FLAGS "-Xclang -fopenmp -I'${LIBDIR}/include/libomp'")
+    set(OpenMP_CXX_FLAGS "-Xclang -fopenmp -I'${LIBDIR}/include/libomp'")
+    set(OpenMP_LINKER_FLAGS "-L'${LIBDIR}/lib/libomp' -lomp")
 
     # Copy libomp.dylib to allow executables like datatoc and tests to work.
     # `@executable_path/../Resources/lib/` `LC_ID_DYLIB` is added by the deps builder.
     # For single config generator datatoc, tests etc.
     execute_process(
       COMMAND mkdir -p ${CMAKE_BINARY_DIR}/Resources/lib
-      COMMAND cp -p ${LIBDIR}/openmp/lib/libomp.dylib ${CMAKE_BINARY_DIR}/Resources/lib/libomp.dylib
+      COMMAND ln -s ${LIBDIR}/lib/libomp/libomp.dylib ${CMAKE_BINARY_DIR}/Resources/lib/libomp.dylib
     )
     # For multi-config generator datatoc, etc.
     execute_process(
       COMMAND mkdir -p ${CMAKE_BINARY_DIR}/bin/Resources/lib
-      COMMAND cp -p ${LIBDIR}/openmp/lib/libomp.dylib ${CMAKE_BINARY_DIR}/bin/Resources/lib/libomp.dylib
+      COMMAND ln -s ${LIBDIR}/lib/libomp/libomp.dylib ${CMAKE_BINARY_DIR}/bin/Resources/lib/libomp.dylib
     )
     # For multi-config generator tests.
     execute_process(
       COMMAND mkdir -p ${CMAKE_BINARY_DIR}/bin/tests/Resources/lib
-      COMMAND cp -p ${LIBDIR}/openmp/lib/libomp.dylib ${CMAKE_BINARY_DIR}/bin/tests/Resources/lib/libomp.dylib
+      COMMAND ln -s ${LIBDIR}/lib/libomp/libomp.dylib ${CMAKE_BINARY_DIR}/bin/tests/Resources/lib/libomp.dylib
     )
   endif()
 endif()
@@ -453,8 +445,20 @@ if(WITH_HARU)
   endif()
 endif()
 
-if(EXISTS ${LIBDIR})
-  without_system_libs_end()
+if(WITH_LZO AND WITH_SYSTEM_LZO)
+  find_package(LZO)
+  if(NOT LZO_FOUND)
+    message(FATAL_ERROR "Failed finding system LZO version!")
+  endif()
+endif()
+
+if(WITH_SYSTEM_EIGEN3)
+  find_package(Eigen3)
+  if(NOT EIGEN3_FOUND)
+    message(FATAL_ERROR "Failed finding system Eigen3 version!")
+  else()
+    set(EIGEN3_INCLUDE_DIRS ${EIGEN3_INCLUDE_DIR})
+  endif()
 endif()
 
 # ---------------------------------------------------------------------
