Build: add option to error when features can't be enabled
This is to help ensure buildbot builds are correct, while still gracefully disabling features in user/developer builds. * Add WITH_STRICT_BUILD_OPTIONS to give an error when features can't be enabled due to missing libraries or other reasons. Add new macro set_and_warn_library_found used everywhere features were being automatically disabled. * Remove code from Windows and macOS for various libraries that would automatically disable features. set_and_warn_library_found could be used here also, but we are generally assuming the precompiled libraries are complete and only test for availability when libraries are just added. Differential Revision: https://developer.blender.org/D16104
This commit is contained in:
parent
ebe2319692
commit
e7a6917617
|
@ -777,6 +777,8 @@ endif()
|
|||
# -----------------------------------------------------------------------------
|
||||
# Check for Conflicting/Unsupported Configurations
|
||||
|
||||
option(WITH_STRICT_BUILD_OPTIONS "When requirements for a build option are not met, error instead of disabling the option" OFF)
|
||||
|
||||
if(NOT WITH_BLENDER AND NOT WITH_CYCLES_STANDALONE AND NOT WITH_CYCLES_HYDRA_RENDER_DELEGATE)
|
||||
message(FATAL_ERROR
|
||||
"At least one of WITH_BLENDER or WITH_CYCLES_STANDALONE "
|
||||
|
@ -892,10 +894,7 @@ endif()
|
|||
|
||||
if(WITH_BUILDINFO)
|
||||
find_package(Git)
|
||||
if(NOT GIT_FOUND)
|
||||
message(WARNING "Git was not found, disabling WITH_BUILDINFO")
|
||||
set(WITH_BUILDINFO OFF)
|
||||
endif()
|
||||
set_and_warn_library_found("Git" GIT_FOUND WITH_BUILDINFO)
|
||||
endif()
|
||||
|
||||
if(WITH_AUDASPACE)
|
||||
|
@ -935,9 +934,10 @@ if(WITH_INTERNATIONAL)
|
|||
WARNING
|
||||
"Translation path '${CMAKE_SOURCE_DIR}/release/datafiles/locale' is missing, "
|
||||
"This is a 'git submodule', which are known not to work with bridges to other version "
|
||||
"control systems, disabling 'WITH_INTERNATIONAL'."
|
||||
"control systems."
|
||||
)
|
||||
set(WITH_INTERNATIONAL OFF)
|
||||
set(TRANSLATIONS_FOUND OFF)
|
||||
set_and_warn_library_found("Translations" TRANSLATIONS_FOUND WITH_INTERNATIONAL)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
@ -1242,6 +1242,8 @@ if(WITH_OPENMP)
|
|||
find_package(OpenMP)
|
||||
endif()
|
||||
|
||||
set_and_warn_library_found("OpenMP" OPENMP_FOUND WITH_OPENMP)
|
||||
|
||||
if(OPENMP_FOUND)
|
||||
if(NOT WITH_OPENMP_STATIC)
|
||||
string(APPEND CMAKE_C_FLAGS " ${OpenMP_C_FLAGS}")
|
||||
|
@ -1257,9 +1259,6 @@ if(WITH_OPENMP)
|
|||
|
||||
find_library_static(OpenMP_LIBRARIES gomp ${CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES})
|
||||
endif()
|
||||
else()
|
||||
message(STATUS "OpenMP not found, disabling WITH_OPENMP")
|
||||
set(WITH_OPENMP OFF)
|
||||
endif()
|
||||
|
||||
mark_as_advanced(
|
||||
|
@ -1274,10 +1273,7 @@ endif()
|
|||
|
||||
if(WITH_BULLET AND WITH_SYSTEM_BULLET)
|
||||
find_package(Bullet)
|
||||
if(NOT BULLET_FOUND)
|
||||
message(STATUS "Bullet not found, disabling WITH_BULLET")
|
||||
set(WITH_BULLET OFF)
|
||||
endif()
|
||||
set_and_warn_library_found("Bullet" BULLET_FOUND WITH_BULLET)
|
||||
else()
|
||||
set(BULLET_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/extern/bullet2/src")
|
||||
# set(BULLET_LIBRARIES "")
|
||||
|
|
|
@ -1205,11 +1205,27 @@ macro(set_and_warn_dependency
|
|||
_dependency _setting _val)
|
||||
# when $_dependency is disabled, forces $_setting = $_val
|
||||
if(NOT ${${_dependency}} AND ${${_setting}})
|
||||
message(STATUS "'${_dependency}' is disabled: forcing 'set(${_setting} ${_val})'")
|
||||
if(WITH_STRICT_BUILD_OPTIONS)
|
||||
message(SEND_ERROR "${_dependency} disabled but required by ${_setting}")
|
||||
else()
|
||||
message(STATUS "${_dependency} is disabled, setting ${_setting}=${_val}")
|
||||
endif()
|
||||
set(${_setting} ${_val})
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(set_and_warn_library_found
|
||||
_library_name _library_found _setting)
|
||||
if(NOT ${${_library_found}} AND ${${_setting}})
|
||||
if(WITH_STRICT_BUILD_OPTIONS)
|
||||
message(SEND_ERROR "${_library_name} required but not found")
|
||||
else()
|
||||
message(STATUS "${_library_name} not found, disabling ${_setting}")
|
||||
endif()
|
||||
set(${_setting} OFF)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(without_system_libs_begin)
|
||||
set(CMAKE_IGNORE_PATH "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES};${CMAKE_SYSTEM_INCLUDE_PATH};${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES};${CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES}")
|
||||
endmacro()
|
||||
|
|
|
@ -43,22 +43,18 @@ find_package(BZip2 REQUIRED)
|
|||
list(APPEND ZLIB_LIBRARIES ${BZIP2_LIBRARIES})
|
||||
|
||||
if(WITH_OPENAL)
|
||||
find_package(OpenAL)
|
||||
if(NOT OPENAL_FOUND)
|
||||
message(WARNING "OpenAL not found, disabling WITH_OPENAL")
|
||||
set(WITH_OPENAL OFF)
|
||||
endif()
|
||||
find_package(OpenAL REQUIRED)
|
||||
endif()
|
||||
|
||||
if(WITH_JACK)
|
||||
find_library(JACK_FRAMEWORK
|
||||
NAMES jackmp
|
||||
)
|
||||
if(NOT JACK_FRAMEWORK)
|
||||
message(STATUS "JACK not found, disabling WITH_JACK")
|
||||
set(WITH_JACK OFF)
|
||||
else()
|
||||
|
||||
if(JACK_FRAMEWORK)
|
||||
set(JACK_INCLUDE_DIRS ${JACK_FRAMEWORK}/headers)
|
||||
else()
|
||||
set_and_warn_library_found("JACK" JACK_FRAMEWORK WITH_JACK)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
@ -101,11 +97,7 @@ if(WITH_ALEMBIC)
|
|||
endif()
|
||||
|
||||
if(WITH_USD)
|
||||
find_package(USD)
|
||||
if(NOT USD_FOUND)
|
||||
message(STATUS "USD not found, disabling WITH_USD")
|
||||
set(WITH_USD OFF)
|
||||
endif()
|
||||
find_package(USD REQUIRED)
|
||||
endif()
|
||||
|
||||
if(WITH_OPENSUBDIV)
|
||||
|
@ -227,20 +219,12 @@ find_package(JPEG REQUIRED)
|
|||
|
||||
if(WITH_IMAGE_TIFF)
|
||||
set(TIFF_ROOT ${LIBDIR}/tiff)
|
||||
find_package(TIFF)
|
||||
if(NOT TIFF_FOUND)
|
||||
message(WARNING "TIFF not found, disabling WITH_IMAGE_TIFF")
|
||||
set(WITH_IMAGE_TIFF OFF)
|
||||
endif()
|
||||
find_package(TIFF REQUIRED)
|
||||
endif()
|
||||
|
||||
if(WITH_IMAGE_WEBP)
|
||||
set(WEBP_ROOT_DIR ${LIBDIR}/webp)
|
||||
find_package(WebP)
|
||||
if(NOT WEBP_FOUND)
|
||||
message(WARNING "WebP not found, disabling WITH_IMAGE_WEBP")
|
||||
set(WITH_IMAGE_WEBP OFF)
|
||||
endif()
|
||||
find_package(WebP REQUIRED)
|
||||
endif()
|
||||
|
||||
if(WITH_BOOST)
|
||||
|
@ -270,11 +254,7 @@ if(WITH_INTERNATIONAL OR WITH_CODEC_FFMPEG)
|
|||
endif()
|
||||
|
||||
if(WITH_PUGIXML)
|
||||
find_package(PugiXML)
|
||||
if(NOT PUGIXML_FOUND)
|
||||
message(WARNING "PugiXML not found, disabling WITH_PUGIXML")
|
||||
set(WITH_PUGIXML OFF)
|
||||
endif()
|
||||
find_package(PugiXML REQUIRED)
|
||||
endif()
|
||||
|
||||
if(WITH_OPENIMAGEIO)
|
||||
|
@ -292,12 +272,7 @@ if(WITH_OPENIMAGEIO)
|
|||
endif()
|
||||
|
||||
if(WITH_OPENCOLORIO)
|
||||
find_package(OpenColorIO 2.0.0)
|
||||
|
||||
if(NOT OPENCOLORIO_FOUND)
|
||||
set(WITH_OPENCOLORIO OFF)
|
||||
message(STATUS "OpenColorIO not found, disabling WITH_OPENCOLORIO")
|
||||
endif()
|
||||
find_package(OpenColorIO 2.0.0 REQUIRED)
|
||||
endif()
|
||||
|
||||
if(WITH_OPENVDB)
|
||||
|
@ -331,12 +306,7 @@ if(WITH_LLVM)
|
|||
endif()
|
||||
|
||||
if(WITH_CYCLES AND WITH_CYCLES_OSL)
|
||||
find_package(OSL)
|
||||
|
||||
if(NOT OSL_FOUND)
|
||||
message(WARNING "OSL not found, disabling WITH_CYCLES_OSL")
|
||||
set(WITH_CYCLES_OSL OFF)
|
||||
endif()
|
||||
find_package(OSL REQUIRED)
|
||||
endif()
|
||||
|
||||
if(WITH_CYCLES AND WITH_CYCLES_EMBREE)
|
||||
|
@ -354,28 +324,15 @@ if(WITH_CYCLES AND WITH_CYCLES_EMBREE)
|
|||
endif()
|
||||
|
||||
if(WITH_OPENIMAGEDENOISE)
|
||||
find_package(OpenImageDenoise)
|
||||
|
||||
if(NOT OPENIMAGEDENOISE_FOUND)
|
||||
set(WITH_OPENIMAGEDENOISE OFF)
|
||||
message(STATUS "OpenImageDenoise not found, disabling WITH_OPENIMAGEDENOISE")
|
||||
endif()
|
||||
find_package(OpenImageDenoise REQUIRED)
|
||||
endif()
|
||||
|
||||
if(WITH_TBB)
|
||||
find_package(TBB)
|
||||
if(NOT TBB_FOUND)
|
||||
message(WARNING "TBB not found, disabling WITH_TBB")
|
||||
set(WITH_TBB OFF)
|
||||
endif()
|
||||
find_package(TBB REQUIRED)
|
||||
endif()
|
||||
|
||||
if(WITH_POTRACE)
|
||||
find_package(Potrace)
|
||||
if(NOT POTRACE_FOUND)
|
||||
message(WARNING "potrace not found, disabling WITH_POTRACE")
|
||||
set(WITH_POTRACE OFF)
|
||||
endif()
|
||||
find_package(Potrace REQUIRED)
|
||||
endif()
|
||||
|
||||
# CMake FindOpenMP doesn't know about AppleClang before 3.12, so provide custom flags.
|
||||
|
@ -395,27 +352,15 @@ if(WITH_OPENMP)
|
|||
endif()
|
||||
|
||||
if(WITH_XR_OPENXR)
|
||||
find_package(XR_OpenXR_SDK)
|
||||
if(NOT XR_OPENXR_SDK_FOUND)
|
||||
message(WARNING "OpenXR-SDK was not found, disabling WITH_XR_OPENXR")
|
||||
set(WITH_XR_OPENXR OFF)
|
||||
endif()
|
||||
find_package(XR_OpenXR_SDK REQUIRED)
|
||||
endif()
|
||||
|
||||
if(WITH_GMP)
|
||||
find_package(GMP)
|
||||
if(NOT GMP_FOUND)
|
||||
message(WARNING "GMP not found, disabling WITH_GMP")
|
||||
set(WITH_GMP OFF)
|
||||
endif()
|
||||
find_package(GMP REQUIRED)
|
||||
endif()
|
||||
|
||||
if(WITH_HARU)
|
||||
find_package(Haru)
|
||||
if(NOT HARU_FOUND)
|
||||
message(WARNING "Haru not found, disabling WITH_HARU")
|
||||
set(WITH_HARU OFF)
|
||||
endif()
|
||||
find_package(Haru REQUIRED)
|
||||
endif()
|
||||
|
||||
if(WITH_CYCLES AND WITH_CYCLES_PATH_GUIDING)
|
||||
|
|
|
@ -174,32 +174,24 @@ endif()
|
|||
|
||||
if(WITH_IMAGE_OPENEXR)
|
||||
find_package_wrapper(OpenEXR) # our own module
|
||||
if(NOT OPENEXR_FOUND)
|
||||
set(WITH_IMAGE_OPENEXR OFF)
|
||||
endif()
|
||||
set_and_warn_library_found("OpenEXR" OPENEXR_FOUND WITH_IMAGE_OPENEXR)
|
||||
endif()
|
||||
|
||||
if(WITH_IMAGE_OPENJPEG)
|
||||
find_package_wrapper(OpenJPEG)
|
||||
if(NOT OPENJPEG_FOUND)
|
||||
set(WITH_IMAGE_OPENJPEG OFF)
|
||||
endif()
|
||||
set_and_warn_library_found("OpenJPEG" OPENJPEG_FOUND WITH_IMAGE_OPENJPEG)
|
||||
endif()
|
||||
|
||||
if(WITH_IMAGE_TIFF)
|
||||
# XXX Linking errors with debian static tiff :/
|
||||
# find_package_wrapper(TIFF)
|
||||
find_package(TIFF)
|
||||
if(NOT TIFF_FOUND)
|
||||
set(WITH_IMAGE_TIFF OFF)
|
||||
endif()
|
||||
set_and_warn_library_found("TIFF" TIFF_FOUND WITH_IMAGE_TIFF)
|
||||
endif()
|
||||
|
||||
if(WITH_OPENAL)
|
||||
find_package_wrapper(OpenAL)
|
||||
if(NOT OPENAL_FOUND)
|
||||
set(WITH_OPENAL OFF)
|
||||
endif()
|
||||
set_and_warn_library_found("OpenAL" OPENAL_FOUND WITH_OPENAL)
|
||||
endif()
|
||||
|
||||
if(WITH_SDL)
|
||||
|
@ -221,18 +213,14 @@ if(WITH_SDL)
|
|||
SDL_LIBRARY
|
||||
)
|
||||
# unset(SDLMAIN_LIBRARY CACHE)
|
||||
if(NOT SDL_FOUND)
|
||||
set(WITH_SDL OFF)
|
||||
endif()
|
||||
set_and_warn_library_found("SDL" SDL_FOUND WITH_SDL)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Codecs
|
||||
if(WITH_CODEC_SNDFILE)
|
||||
find_package_wrapper(SndFile)
|
||||
if(NOT SNDFILE_FOUND)
|
||||
set(WITH_CODEC_SNDFILE OFF)
|
||||
endif()
|
||||
set_and_warn_library_found("libsndfile" SNDFILE_FOUND WITH_CODEC_SNDFILE)
|
||||
endif()
|
||||
|
||||
if(WITH_CODEC_FFMPEG)
|
||||
|
@ -260,17 +248,12 @@ if(WITH_CODEC_FFMPEG)
|
|||
endif()
|
||||
find_package(FFmpeg)
|
||||
|
||||
if(NOT FFMPEG_FOUND)
|
||||
set(WITH_CODEC_FFMPEG OFF)
|
||||
message(STATUS "FFmpeg not found, disabling it")
|
||||
endif()
|
||||
set_and_warn_library_found("FFmpeg" FFMPEG_FOUND WITH_CODEC_FFMPEG)
|
||||
endif()
|
||||
|
||||
if(WITH_FFTW3)
|
||||
find_package_wrapper(Fftw3)
|
||||
if(NOT FFTW3_FOUND)
|
||||
set(WITH_FFTW3 OFF)
|
||||
endif()
|
||||
set_and_warn_library_found("fftw3" FFTW3_FOUND WITH_FFTW3)
|
||||
endif()
|
||||
|
||||
if(WITH_OPENCOLLADA)
|
||||
|
@ -285,25 +268,23 @@ if(WITH_OPENCOLLADA)
|
|||
endif()
|
||||
find_package_wrapper(XML2)
|
||||
else()
|
||||
set(WITH_OPENCOLLADA OFF)
|
||||
set_and_warn_library_found("OpenCollada" OPENCOLLADA_FOUND WITH_OPENCOLLADA)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(WITH_MEM_JEMALLOC)
|
||||
find_package_wrapper(JeMalloc)
|
||||
if(NOT JEMALLOC_FOUND)
|
||||
set(WITH_MEM_JEMALLOC OFF)
|
||||
endif()
|
||||
set_and_warn_library_found("JeMalloc" JEMALLOC_FOUND WITH_MEM_JEMALLOC)
|
||||
endif()
|
||||
|
||||
if(WITH_INPUT_NDOF)
|
||||
find_package_wrapper(Spacenav)
|
||||
set_and_warn_library_found("SpaceNav" SPACENAV_FOUND WITH_INPUT_NDOF)
|
||||
|
||||
if(SPACENAV_FOUND)
|
||||
# use generic names within blenders buildsystem.
|
||||
set(NDOF_INCLUDE_DIRS ${SPACENAV_INCLUDE_DIRS})
|
||||
set(NDOF_LIBRARIES ${SPACENAV_LIBRARIES})
|
||||
else()
|
||||
set(WITH_INPUT_NDOF OFF)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
@ -313,6 +294,8 @@ if(WITH_CYCLES AND WITH_CYCLES_OSL)
|
|||
set(OSL_ROOT ${CYCLES_OSL})
|
||||
endif()
|
||||
find_package_wrapper(OSL)
|
||||
set_and_warn_library_found("OSL" OSL_FOUND WITH_CYCLES_OSL)
|
||||
|
||||
if(OSL_FOUND)
|
||||
if(${OSL_LIBRARY_VERSION_MAJOR} EQUAL "1" AND ${OSL_LIBRARY_VERSION_MINOR} LESS "6")
|
||||
# Note: --whole-archive is needed to force loading of all symbols in liboslexec,
|
||||
|
@ -323,9 +306,6 @@ if(WITH_CYCLES AND WITH_CYCLES_OSL)
|
|||
-Wl,--no-whole-archive ${OSL_OSLQUERY_LIBRARY}
|
||||
)
|
||||
endif()
|
||||
else()
|
||||
message(STATUS "OSL not found, disabling it from Cycles")
|
||||
set(WITH_CYCLES_OSL OFF)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
@ -351,25 +331,17 @@ endif()
|
|||
|
||||
if(WITH_OPENVDB)
|
||||
find_package_wrapper(OpenVDB)
|
||||
find_package_wrapper(Blosc)
|
||||
set_and_warn_library_found("OpenVDB" OPENVDB_FOUND WITH_OPENVDB)
|
||||
|
||||
if(NOT OPENVDB_FOUND)
|
||||
set(WITH_OPENVDB OFF)
|
||||
set(WITH_OPENVDB_BLOSC OFF)
|
||||
message(STATUS "OpenVDB not found, disabling it")
|
||||
elseif(NOT BLOSC_FOUND)
|
||||
set(WITH_OPENVDB_BLOSC OFF)
|
||||
message(STATUS "Blosc not found, disabling it for OpenVBD")
|
||||
if(OPENVDB_FOUND)
|
||||
find_package_wrapper(Blosc)
|
||||
set_and_warn_library_found("Blosc" BLOSC_FOUND WITH_OPENVDB_BLOSC)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(WITH_NANOVDB)
|
||||
find_package_wrapper(NanoVDB)
|
||||
|
||||
if(NOT NANOVDB_FOUND)
|
||||
set(WITH_NANOVDB OFF)
|
||||
message(STATUS "NanoVDB not found, disabling it")
|
||||
endif()
|
||||
set_and_warn_library_found("NanoVDB" NANOVDB_FOUND WITH_NANOVDB)
|
||||
endif()
|
||||
|
||||
if(WITH_CPU_SIMD AND SUPPORT_NEON_BUILD)
|
||||
|
@ -378,18 +350,12 @@ endif()
|
|||
|
||||
if(WITH_ALEMBIC)
|
||||
find_package_wrapper(Alembic)
|
||||
|
||||
if(NOT ALEMBIC_FOUND)
|
||||
set(WITH_ALEMBIC OFF)
|
||||
endif()
|
||||
set_and_warn_library_found("Alembic" ALEMBIC_FOUND WITH_ALEMBIC)
|
||||
endif()
|
||||
|
||||
if(WITH_USD)
|
||||
find_package_wrapper(USD)
|
||||
|
||||
if(NOT USD_FOUND)
|
||||
set(WITH_USD OFF)
|
||||
endif()
|
||||
set_and_warn_library_found("USD" USD_FOUND WITH_USD)
|
||||
endif()
|
||||
|
||||
if(WITH_BOOST)
|
||||
|
@ -442,20 +408,13 @@ endif()
|
|||
|
||||
if(WITH_PUGIXML)
|
||||
find_package_wrapper(PugiXML)
|
||||
|
||||
if(NOT PUGIXML_FOUND)
|
||||
set(WITH_PUGIXML OFF)
|
||||
message(STATUS "PugiXML not found, disabling WITH_PUGIXML")
|
||||
endif()
|
||||
set_and_warn_library_found("PugiXML" PUGIXML_FOUND WITH_PUGIXML)
|
||||
endif()
|
||||
|
||||
if(WITH_IMAGE_WEBP)
|
||||
set(WEBP_ROOT_DIR ${LIBDIR}/webp)
|
||||
find_package_wrapper(WebP)
|
||||
if(NOT WEBP_FOUND)
|
||||
set(WITH_IMAGE_WEBP OFF)
|
||||
message(WARNING "WebP not found, disabling WITH_IMAGE_WEBP")
|
||||
endif()
|
||||
set_and_warn_library_found("WebP" WEBP_FOUND WITH_IMAGE_WEBP)
|
||||
endif()
|
||||
|
||||
if(WITH_OPENIMAGEIO)
|
||||
|
@ -480,10 +439,7 @@ if(WITH_OPENIMAGEIO)
|
|||
list(APPEND OPENIMAGEIO_LIBRARIES "${WEBP_LIBRARIES}")
|
||||
endif()
|
||||
|
||||
if(NOT OPENIMAGEIO_FOUND)
|
||||
set(WITH_OPENIMAGEIO OFF)
|
||||
message(STATUS "OpenImageIO not found, disabling WITH_CYCLES")
|
||||
endif()
|
||||
set_and_warn_library_found("OPENIMAGEIO" OPENIMAGEIO_FOUND WITH_OPENIMAGEIO)
|
||||
endif()
|
||||
|
||||
if(WITH_OPENCOLORIO)
|
||||
|
@ -493,10 +449,7 @@ if(WITH_OPENCOLORIO)
|
|||
set(OPENCOLORIO_LIBPATH) # TODO, remove and reference the absolute path everywhere
|
||||
set(OPENCOLORIO_DEFINITIONS)
|
||||
|
||||
if(NOT OPENCOLORIO_FOUND)
|
||||
set(WITH_OPENCOLORIO OFF)
|
||||
message(STATUS "OpenColorIO not found")
|
||||
endif()
|
||||
set_and_warn_library_found("OpenColorIO" OPENCOLORIO_FOUND WITH_OPENCOLORIO)
|
||||
endif()
|
||||
|
||||
if(WITH_CYCLES AND WITH_CYCLES_EMBREE)
|
||||
|
@ -505,11 +458,7 @@ endif()
|
|||
|
||||
if(WITH_OPENIMAGEDENOISE)
|
||||
find_package_wrapper(OpenImageDenoise)
|
||||
|
||||
if(NOT OPENIMAGEDENOISE_FOUND)
|
||||
set(WITH_OPENIMAGEDENOISE OFF)
|
||||
message(STATUS "OpenImageDenoise not found")
|
||||
endif()
|
||||
set_and_warn_library_found("OpenImageDenoise" OPENIMAGEDENOISE_FOUND WITH_OPENIMAGEDENOISE)
|
||||
endif()
|
||||
|
||||
if(WITH_LLVM)
|
||||
|
@ -518,24 +467,19 @@ if(WITH_LLVM)
|
|||
endif()
|
||||
|
||||
find_package_wrapper(LLVM)
|
||||
if(WITH_CLANG)
|
||||
find_package_wrapper(Clang)
|
||||
endif()
|
||||
# Symbol conflicts with same UTF library used by OpenCollada
|
||||
if(EXISTS ${LIBDIR})
|
||||
if(WITH_OPENCOLLADA AND (${LLVM_VERSION} VERSION_LESS "4.0.0"))
|
||||
list(REMOVE_ITEM OPENCOLLADA_LIBRARIES ${OPENCOLLADA_UTF_LIBRARY})
|
||||
endif()
|
||||
endif()
|
||||
set_and_warn_library_found("LLVM" LLVM_FOUND WITH_LLVM)
|
||||
|
||||
if(NOT LLVM_FOUND)
|
||||
set(WITH_LLVM OFF)
|
||||
set(WITH_CLANG OFF)
|
||||
message(STATUS "LLVM not found")
|
||||
else()
|
||||
if(NOT CLANG_FOUND)
|
||||
set(WITH_CLANG OFF)
|
||||
message(STATUS "Clang not found")
|
||||
if(LLVM_FOUND)
|
||||
if(WITH_CLANG)
|
||||
find_package_wrapper(Clang)
|
||||
set_and_warn_library_found("Clang" CLANG_FOUND WITH_CLANG)
|
||||
endif()
|
||||
|
||||
# Symbol conflicts with same UTF library used by OpenCollada
|
||||
if(EXISTS ${LIBDIR})
|
||||
if(WITH_OPENCOLLADA AND (${LLVM_VERSION} VERSION_LESS "4.0.0"))
|
||||
list(REMOVE_ITEM OPENCOLLADA_LIBRARIES ${OPENCOLLADA_UTF_LIBRARY})
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
@ -546,50 +490,32 @@ if(WITH_OPENSUBDIV)
|
|||
set(OPENSUBDIV_LIBRARIES ${OPENSUBDIV_LIBRARIES})
|
||||
set(OPENSUBDIV_LIBPATH) # TODO, remove and reference the absolute path everywhere
|
||||
|
||||
if(NOT OPENSUBDIV_FOUND)
|
||||
set(WITH_OPENSUBDIV OFF)
|
||||
message(STATUS "OpenSubdiv not found")
|
||||
endif()
|
||||
set_and_warn_library_found("OpenSubdiv" OPENSUBDIV_FOUND WITH_OPENSUBDIV)
|
||||
endif()
|
||||
|
||||
if(WITH_TBB)
|
||||
find_package_wrapper(TBB)
|
||||
if(NOT TBB_FOUND)
|
||||
message(WARNING "TBB not found, disabling WITH_TBB")
|
||||
set(WITH_TBB OFF)
|
||||
endif()
|
||||
set_and_warn_library_found("TBB" TBB_FOUND WITH_TBB)
|
||||
endif()
|
||||
|
||||
if(WITH_XR_OPENXR)
|
||||
find_package(XR_OpenXR_SDK)
|
||||
if(NOT XR_OPENXR_SDK_FOUND)
|
||||
message(WARNING "OpenXR-SDK not found, disabling WITH_XR_OPENXR")
|
||||
set(WITH_XR_OPENXR OFF)
|
||||
endif()
|
||||
set_and_warn_library_found("OpenXR-SDK" XR_OPENXR_SDK_FOUND WITH_XR_OPENXR)
|
||||
endif()
|
||||
|
||||
if(WITH_GMP)
|
||||
find_package_wrapper(GMP)
|
||||
if(NOT GMP_FOUND)
|
||||
message(WARNING "GMP not found, disabling WITH_GMP")
|
||||
set(WITH_GMP OFF)
|
||||
endif()
|
||||
set_and_warn_library_found("GMP" GMP_FOUND WITH_GMP)
|
||||
endif()
|
||||
|
||||
if(WITH_POTRACE)
|
||||
find_package_wrapper(Potrace)
|
||||
if(NOT POTRACE_FOUND)
|
||||
message(WARNING "potrace not found, disabling WITH_POTRACE")
|
||||
set(WITH_POTRACE OFF)
|
||||
endif()
|
||||
set_and_warn_library_found("Potrace" POTRACE_FOUND WITH_POTRACE)
|
||||
endif()
|
||||
|
||||
if(WITH_HARU)
|
||||
find_package_wrapper(Haru)
|
||||
if(NOT HARU_FOUND)
|
||||
message(WARNING "Haru not found, disabling WITH_HARU")
|
||||
set(WITH_HARU OFF)
|
||||
endif()
|
||||
set_and_warn_library_found("Haru" HARU_FOUND WITH_HARU)
|
||||
endif()
|
||||
|
||||
if(WITH_CYCLES AND WITH_CYCLES_PATH_GUIDING)
|
||||
|
@ -676,25 +602,20 @@ endif()
|
|||
# Jack is intended to use the system library.
|
||||
if(WITH_JACK)
|
||||
find_package_wrapper(Jack)
|
||||
if(NOT JACK_FOUND)
|
||||
set(WITH_JACK OFF)
|
||||
endif()
|
||||
set_and_warn_library_found("JACK" JACK_FOUND WITH_JACK)
|
||||
endif()
|
||||
|
||||
# Pulse is intended to use the system library.
|
||||
if(WITH_PULSEAUDIO)
|
||||
find_package_wrapper(Pulse)
|
||||
if(NOT PULSE_FOUND)
|
||||
set(WITH_PULSEAUDIO OFF)
|
||||
endif()
|
||||
set_and_warn_library_found("PulseAudio" PULSE_FOUND WITH_PULSEAUDIO)
|
||||
endif()
|
||||
|
||||
# Audio IO
|
||||
if(WITH_SYSTEM_AUDASPACE)
|
||||
find_package_wrapper(Audaspace)
|
||||
if(NOT AUDASPACE_FOUND OR NOT AUDASPACE_C_FOUND)
|
||||
message(FATAL_ERROR "Audaspace external library not found!")
|
||||
endif()
|
||||
set(AUDASPACE_FOUND ${AUDASPACE_FOUND} AND ${AUDASPACE_C_FOUND})
|
||||
set_and_warn_library_found("External Audaspace" AUDASPACE_FOUND WITH_SYSTEM_AUDASPACE)
|
||||
endif()
|
||||
|
||||
if(WITH_GHOST_WAYLAND)
|
||||
|
@ -740,30 +661,12 @@ if(WITH_GHOST_WAYLAND)
|
|||
set(wayland-cursor_FOUND ON)
|
||||
endif()
|
||||
|
||||
if (NOT wayland-client_FOUND)
|
||||
message(STATUS "wayland-client not found, disabling WITH_GHOST_WAYLAND")
|
||||
set(WITH_GHOST_WAYLAND OFF)
|
||||
endif()
|
||||
if (NOT wayland-egl_FOUND)
|
||||
message(STATUS "wayland-egl not found, disabling WITH_GHOST_WAYLAND")
|
||||
set(WITH_GHOST_WAYLAND OFF)
|
||||
endif()
|
||||
if (NOT wayland-scanner_FOUND)
|
||||
message(STATUS "wayland-scanner not found, disabling WITH_GHOST_WAYLAND")
|
||||
set(WITH_GHOST_WAYLAND OFF)
|
||||
endif()
|
||||
if (NOT wayland-cursor_FOUND)
|
||||
message(STATUS "wayland-cursor not found, disabling WITH_GHOST_WAYLAND")
|
||||
set(WITH_GHOST_WAYLAND OFF)
|
||||
endif()
|
||||
if (NOT wayland-protocols_FOUND)
|
||||
message(STATUS "wayland-protocols not found, disabling WITH_GHOST_WAYLAND")
|
||||
set(WITH_GHOST_WAYLAND OFF)
|
||||
endif()
|
||||
if (NOT xkbcommon_FOUND)
|
||||
message(STATUS "xkbcommon not found, disabling WITH_GHOST_WAYLAND")
|
||||
set(WITH_GHOST_WAYLAND OFF)
|
||||
endif()
|
||||
set_and_warn_library_found("wayland-client" wayland-client_FOUND WITH_GHOST_WAYLAND)
|
||||
set_and_warn_library_found("wayland-egl" wayland-egl_FOUND WITH_GHOST_WAYLAND)
|
||||
set_and_warn_library_found("wayland-scanner" wayland-scanner_FOUND WITH_GHOST_WAYLAND)
|
||||
set_and_warn_library_found("wayland-cursor" wayland-cursor_FOUND WITH_GHOST_WAYLAND)
|
||||
set_and_warn_library_found("wayland-protocols" wayland-protocols_FOUND WITH_GHOST_WAYLAND)
|
||||
set_and_warn_library_found("xkbcommon" xkbcommon_FOUND WITH_GHOST_WAYLAND)
|
||||
|
||||
if(WITH_GHOST_WAYLAND)
|
||||
if(WITH_GHOST_WAYLAND_DBUS)
|
||||
|
|
|
@ -326,18 +326,10 @@ if(WITH_FFTW3)
|
|||
endif()
|
||||
|
||||
if(WITH_IMAGE_WEBP)
|
||||
windows_find_package(WebP)
|
||||
if(NOT WEBP_FOUND)
|
||||
if(EXISTS ${LIBDIR}/webp)
|
||||
set(WEBP_INCLUDE_DIRS ${LIBDIR}/webp/include)
|
||||
set(WEBP_ROOT_DIR ${LIBDIR}/webp)
|
||||
set(WEBP_LIBRARIES ${LIBDIR}/webp/lib/webp.lib ${LIBDIR}/webp/lib/webpdemux.lib ${LIBDIR}/webp/lib/webpmux.lib)
|
||||
set(WEBP_FOUND ON)
|
||||
else()
|
||||
message(STATUS "WITH_IMAGE_WEBP is ON but WEBP libraries are not found, setting WITH_IMAGE_WEBP=OFF")
|
||||
set(WITH_IMAGE_WEBP OFF)
|
||||
endif()
|
||||
endif()
|
||||
set(WEBP_INCLUDE_DIRS ${LIBDIR}/webp/include)
|
||||
set(WEBP_ROOT_DIR ${LIBDIR}/webp)
|
||||
set(WEBP_LIBRARIES ${LIBDIR}/webp/lib/webp.lib ${LIBDIR}/webp/lib/webpdemux.lib ${LIBDIR}/webp/lib/webpmux.lib)
|
||||
set(WEBP_FOUND ON)
|
||||
endif()
|
||||
|
||||
if(WITH_OPENCOLLADA)
|
||||
|
@ -792,13 +784,6 @@ if(WITH_CYCLES AND WITH_CYCLES_OSL)
|
|||
endif()
|
||||
find_path(OSL_INCLUDE_DIR OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
|
||||
find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
|
||||
|
||||
if(OSL_INCLUDE_DIR AND OSL_LIBRARIES AND OSL_COMPILER)
|
||||
set(OSL_FOUND TRUE)
|
||||
else()
|
||||
message(STATUS "OSL not found")
|
||||
set(WITH_CYCLES_OSL OFF)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(WITH_CYCLES AND WITH_CYCLES_EMBREE)
|
||||
|
@ -898,21 +883,16 @@ if(WINDOWS_PYTHON_DEBUG)
|
|||
endif()
|
||||
|
||||
if(WITH_XR_OPENXR)
|
||||
if(EXISTS ${LIBDIR}/xr_openxr_sdk)
|
||||
set(XR_OPENXR_SDK ${LIBDIR}/xr_openxr_sdk)
|
||||
set(XR_OPENXR_SDK_LIBPATH ${LIBDIR}/xr_openxr_sdk/lib)
|
||||
set(XR_OPENXR_SDK_INCLUDE_DIR ${XR_OPENXR_SDK}/include)
|
||||
# This is the old name of this library, it is checked to
|
||||
# support the transition between the old and new lib versions
|
||||
# this can be removed after the next lib update.
|
||||
if(EXISTS ${XR_OPENXR_SDK_LIBPATH}/openxr_loader_d.lib)
|
||||
set(XR_OPENXR_SDK_LIBRARIES optimized ${XR_OPENXR_SDK_LIBPATH}/openxr_loader.lib debug ${XR_OPENXR_SDK_LIBPATH}/openxr_loader_d.lib)
|
||||
else()
|
||||
set(XR_OPENXR_SDK_LIBRARIES optimized ${XR_OPENXR_SDK_LIBPATH}/openxr_loader.lib debug ${XR_OPENXR_SDK_LIBPATH}/openxr_loaderd.lib)
|
||||
endif()
|
||||
set(XR_OPENXR_SDK ${LIBDIR}/xr_openxr_sdk)
|
||||
set(XR_OPENXR_SDK_LIBPATH ${LIBDIR}/xr_openxr_sdk/lib)
|
||||
set(XR_OPENXR_SDK_INCLUDE_DIR ${XR_OPENXR_SDK}/include)
|
||||
# This is the old name of this library, it is checked to
|
||||
# support the transition between the old and new lib versions
|
||||
# this can be removed after the next lib update.
|
||||
if(EXISTS ${XR_OPENXR_SDK_LIBPATH}/openxr_loader_d.lib)
|
||||
set(XR_OPENXR_SDK_LIBRARIES optimized ${XR_OPENXR_SDK_LIBPATH}/openxr_loader.lib debug ${XR_OPENXR_SDK_LIBPATH}/openxr_loader_d.lib)
|
||||
else()
|
||||
message(WARNING "OpenXR-SDK was not found, disabling WITH_XR_OPENXR")
|
||||
set(WITH_XR_OPENXR OFF)
|
||||
set(XR_OPENXR_SDK_LIBRARIES optimized ${XR_OPENXR_SDK_LIBPATH}/openxr_loader.lib debug ${XR_OPENXR_SDK_LIBPATH}/openxr_loaderd.lib)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
@ -930,15 +910,10 @@ if(WITH_POTRACE)
|
|||
endif()
|
||||
|
||||
if(WITH_HARU)
|
||||
if(EXISTS ${LIBDIR}/haru)
|
||||
set(HARU_FOUND ON)
|
||||
set(HARU_ROOT_DIR ${LIBDIR}/haru)
|
||||
set(HARU_INCLUDE_DIRS ${HARU_ROOT_DIR}/include)
|
||||
set(HARU_LIBRARIES ${HARU_ROOT_DIR}/lib/libhpdfs.lib)
|
||||
else()
|
||||
message(WARNING "Haru was not found, disabling WITH_HARU")
|
||||
set(WITH_HARU OFF)
|
||||
endif()
|
||||
set(HARU_FOUND ON)
|
||||
set(HARU_ROOT_DIR ${LIBDIR}/haru)
|
||||
set(HARU_INCLUDE_DIRS ${HARU_ROOT_DIR}/include)
|
||||
set(HARU_LIBRARIES ${HARU_ROOT_DIR}/lib/libhpdfs.lib)
|
||||
endif()
|
||||
|
||||
if(WITH_CYCLES AND WITH_CYCLES_PATH_GUIDING)
|
||||
|
|
|
@ -263,8 +263,7 @@ if(WITH_CYCLES_DEVICE_OPTIX)
|
|||
${OPTIX_INCLUDE_DIR}
|
||||
)
|
||||
else()
|
||||
message(STATUS "OptiX not found, disabling it from Cycles")
|
||||
set(WITH_CYCLES_DEVICE_OPTIX OFF)
|
||||
set_and_warn_library_found("OptiX" OPTIX_FOUND WITH_CYCLES_DEVICE_OPTIX)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
@ -387,8 +386,7 @@ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
|||
endif()
|
||||
|
||||
if(WITH_CYCLES_HYDRA_RENDER_DELEGATE AND (NOT WITH_USD))
|
||||
message(STATUS "USD not found, disabling WITH_CYCLES_HYDRA_RENDER_DELEGATE")
|
||||
set(WITH_CYCLES_HYDRA_RENDER_DELEGATE OFF)
|
||||
set_and_warn_library_found("USD" WITH_USD WITH_CYCLES_HYDRA_RENDER_DELEGATE)
|
||||
endif()
|
||||
if(WITH_CYCLES_HYDRA_RENDER_DELEGATE AND (NOT WITH_BLENDER) AND (NOT WITH_CYCLES_STANDALONE))
|
||||
set(CYCLES_INSTALL_PATH ${CYCLES_INSTALL_PATH}/hdCycles/resources)
|
||||
|
|
|
@ -289,8 +289,7 @@ if(CYCLES_STANDALONE_REPOSITORY AND WITH_CYCLES_PATH_GUIDING)
|
|||
endif()
|
||||
get_target_property(OPENPGL_INCLUDE_DIR openpgl::openpgl INTERFACE_INCLUDE_DIRECTORIES)
|
||||
else()
|
||||
set(WITH_CYCLES_PATH_GUIDING OFF)
|
||||
message(STATUS "OpenPGL not found, disabling WITH_CYCLES_PATH_GUIDING")
|
||||
set_and_warn_library_found("OpenPGL" openpgl_FOUND WITH_CYCLES_PATH_GUIDING)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
@ -588,16 +587,14 @@ if(WITH_CYCLES_STANDALONE AND WITH_CYCLES_STANDALONE_GUI)
|
|||
# We can't use the version from the Blender precompiled libraries because
|
||||
# it does not include the video subsystem.
|
||||
find_package(SDL2 REQUIRED)
|
||||
set_and_warn_library_found("SDL" SDL2_FOUND WITH_CYCLES_STANDALONE_GUI)
|
||||
|
||||
if(NOT SDL2_FOUND)
|
||||
set(WITH_CYCLES_STANDALONE_GUI OFF)
|
||||
message(STATUS "SDL not found, disabling Cycles standalone GUI")
|
||||
if(SDL2_FOUND)
|
||||
include_directories(
|
||||
SYSTEM
|
||||
${SDL2_INCLUDE_DIRS}
|
||||
)
|
||||
endif()
|
||||
|
||||
include_directories(
|
||||
SYSTEM
|
||||
${SDL2_INCLUDE_DIRS}
|
||||
)
|
||||
endif()
|
||||
|
||||
###########################################################################
|
||||
|
@ -606,11 +603,11 @@ endif()
|
|||
|
||||
if(WITH_CYCLES_DEVICE_CUDA AND (WITH_CYCLES_CUDA_BINARIES OR NOT WITH_CUDA_DYNLOAD))
|
||||
find_package(CUDA) # Try to auto locate CUDA toolkit
|
||||
set_and_warn_library_found("CUDA compiler" CUDA_FOUND WITH_CYCLES_CUDA_BINARIES)
|
||||
|
||||
if(CUDA_FOUND)
|
||||
message(STATUS "Found CUDA ${CUDA_NVCC_EXECUTABLE} (${CUDA_VERSION})")
|
||||
else()
|
||||
message(STATUS "CUDA compiler not found, disabling WITH_CYCLES_CUDA_BINARIES")
|
||||
set(WITH_CYCLES_CUDA_BINARIES OFF)
|
||||
if(NOT WITH_CUDA_DYNLOAD)
|
||||
message(STATUS "Additionally falling back to dynamic CUDA load")
|
||||
set(WITH_CUDA_DYNLOAD ON)
|
||||
|
@ -624,11 +621,10 @@ endif()
|
|||
|
||||
if(WITH_CYCLES_HIP_BINARIES AND WITH_CYCLES_DEVICE_HIP)
|
||||
find_package(HIP)
|
||||
set_and_warn_library_found("HIP compiler" HIP_FOUND WITH_CYCLES_HIP_BINARIES)
|
||||
|
||||
if(HIP_FOUND)
|
||||
message(STATUS "Found HIP ${HIP_HIPCC_EXECUTABLE} (${HIP_VERSION})")
|
||||
else()
|
||||
message(STATUS "HIP compiler not found, disabling WITH_CYCLES_HIP_BINARIES")
|
||||
set(WITH_CYCLES_HIP_BINARIES OFF)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
@ -644,13 +640,17 @@ if(WITH_CYCLES_DEVICE_METAL)
|
|||
find_library(METAL_LIBRARY Metal)
|
||||
|
||||
# This file was added in the 12.0 SDK, use it as a way to detect the version.
|
||||
if(METAL_LIBRARY AND NOT EXISTS "${METAL_LIBRARY}/Headers/MTLFunctionStitching.h")
|
||||
message(STATUS "Metal version too old, must be SDK 12.0 or newer, disabling WITH_CYCLES_DEVICE_METAL")
|
||||
set(WITH_CYCLES_DEVICE_METAL OFF)
|
||||
elseif(NOT METAL_LIBRARY)
|
||||
message(STATUS "Metal not found, disabling WITH_CYCLES_DEVICE_METAL")
|
||||
set(WITH_CYCLES_DEVICE_METAL OFF)
|
||||
else()
|
||||
if(METAL_LIBRARY)
|
||||
if(EXISTS "${METAL_LIBRARY}/Headers/MTLFunctionStitching.h")
|
||||
set(METAL_FOUND ON)
|
||||
else()
|
||||
message(STATUS "Metal version too old, must be SDK 12.0 or newer")
|
||||
set(METAL_FOUND OFF)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set_and_warn_library_found("Metal" METAL_FOUND WITH_CYCLES_DEVICE_METAL)
|
||||
if(METAL_FOUND)
|
||||
message(STATUS "Found Metal: ${METAL_LIBRARY}")
|
||||
endif()
|
||||
endif()
|
||||
|
@ -662,6 +662,8 @@ endif()
|
|||
if(WITH_CYCLES_DEVICE_ONEAPI)
|
||||
find_package(SYCL)
|
||||
find_package(LevelZero)
|
||||
set_and_warn_library_found("oneAPI" SYCL_FOUND WITH_CYCLES_DEVICE_ONEAPI)
|
||||
set_and_warn_library_found("Level Zero" LEVEL_ZERO_FOUND WITH_CYCLES_DEVICE_ONEAPI)
|
||||
|
||||
if(SYCL_FOUND AND SYCL_VERSION VERSION_GREATER_EQUAL 6.0 AND LEVEL_ZERO_FOUND)
|
||||
message(STATUS "Found Level Zero: ${LEVEL_ZERO_LIBRARY}")
|
||||
|
@ -674,9 +676,10 @@ if(WITH_CYCLES_DEVICE_ONEAPI)
|
|||
endif()
|
||||
|
||||
if(NOT EXISTS ${OCLOC_INSTALL_DIR})
|
||||
message(STATUS "oneAPI ocloc not found in ${OCLOC_INSTALL_DIR}, disabling WITH_CYCLES_ONEAPI_BINARIES."
|
||||
set(OCLOC_FOUND OFF)
|
||||
message(STATUS "oneAPI ocloc not found in ${OCLOC_INSTALL_DIR}."
|
||||
" A different ocloc directory can be set using OCLOC_INSTALL_DIR cmake variable.")
|
||||
set(WITH_CYCLES_ONEAPI_BINARIES OFF)
|
||||
set_and_warn_library_found("ocloc" OCLOC_FOUND WITH_CYCLES_ONEAPI_BINARIES)
|
||||
endif()
|
||||
endif()
|
||||
else()
|
||||
|
|
Loading…
Reference in New Issue