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() # ---------------------------------------------------------------------