2023-08-16 00:20:26 +10:00
|
|
|
# SPDX-FileCopyrightText: 2017-2022 Blender Authors
|
2023-06-14 22:49:59 +10:00
|
|
|
#
|
2022-02-11 09:07:11 +11:00
|
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
2017-07-25 16:37:55 +02:00
|
|
|
|
|
|
|
|
if(WIN32)
|
|
|
|
|
set(OSL_CMAKE_CXX_STANDARD_LIBRARIES "kernel32${LIBEXT} user32${LIBEXT} gdi32${LIBEXT} winspool${LIBEXT} shell32${LIBEXT} ole32${LIBEXT} oleaut32${LIBEXT} uuid${LIBEXT} comdlg32${LIBEXT} advapi32${LIBEXT} psapi${LIBEXT}")
|
2024-12-15 01:39:13 +01:00
|
|
|
set(OSL_CMAKE_LINKER_FLAGS)
|
2020-02-08 13:01:31 -07:00
|
|
|
set(OSL_FLEX_BISON -DFLEX_EXECUTABLE=${LIBDIR}/flexbison/win_flex.exe -DBISON_EXECUTABLE=${LIBDIR}/flexbison/win_bison.exe)
|
2017-07-25 16:37:55 +02:00
|
|
|
else()
|
|
|
|
|
set(OSL_CMAKE_CXX_STANDARD_LIBRARIES)
|
2024-12-15 01:39:13 +01:00
|
|
|
# llvm-config will add -lmxl2. Make sure it can be found and that no system
|
|
|
|
|
# library is used instead.
|
|
|
|
|
set(OSL_CMAKE_LINKER_FLAGS "-L${LIBDIR}/xml2/lib")
|
|
|
|
|
set(OSL_OPENIMAGEIO_LIBRARY "${LIBDIR}/openimageio/lib/OpenImageIO${SHAREDLIBEXT};${LIBDIR}/openexr/lib/IlmImf${OPENEXR_VERSION_POSTFIX}${SHAREDLIBEXT}")
|
2024-05-06 19:08:11 +02:00
|
|
|
|
|
|
|
|
if(APPLE)
|
|
|
|
|
# Explicitly specify Homebrew path, so we don't use the old system one.
|
|
|
|
|
if(BLENDER_PLATFORM_ARM)
|
|
|
|
|
set(OSL_FLEX_BISON -DBISON_EXECUTABLE=/opt/homebrew/opt/bison/bin/bison)
|
|
|
|
|
else()
|
|
|
|
|
set(OSL_FLEX_BISON -DBISON_EXECUTABLE=/usr/local/opt/bison/bin/bison)
|
|
|
|
|
endif()
|
|
|
|
|
else()
|
|
|
|
|
set(OSL_FLEX_BISON)
|
|
|
|
|
endif()
|
2017-07-25 16:37:55 +02:00
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
set(OSL_EXTRA_ARGS
|
2022-04-19 18:08:51 +02:00
|
|
|
${DEFAULT_BOOST_FLAGS}
|
2021-02-24 07:13:37 -07:00
|
|
|
-DOpenEXR_ROOT=${LIBDIR}/openexr/
|
|
|
|
|
-DOpenImageIO_ROOT=${LIBDIR}/openimageio/
|
2017-07-25 16:37:55 +02:00
|
|
|
-DOSL_BUILD_TESTS=OFF
|
|
|
|
|
-DZLIB_LIBRARY=${LIBDIR}/zlib/lib/${ZLIB_LIBRARY}
|
|
|
|
|
-DZLIB_INCLUDE_DIR=${LIBDIR}/zlib/include/
|
|
|
|
|
${OSL_FLEX_BISON}
|
|
|
|
|
-DCMAKE_CXX_STANDARD_LIBRARIES=${OSL_CMAKE_CXX_STANDARD_LIBRARIES}
|
2024-12-15 01:39:13 +01:00
|
|
|
-DCMAKE_EXE_LINKER_FLAGS=${OSL_CMAKE_LINKER_FLAGS}
|
|
|
|
|
-DCMAKE_SHARED_LINKER_FLAGS=${OSL_CMAKE_LINKER_FLAGS}
|
2023-12-21 19:16:11 +01:00
|
|
|
-DBUILD_SHARED_LIBS=ON
|
2022-12-05 23:18:54 +01:00
|
|
|
-DLINKSTATIC=OFF
|
2021-02-24 07:13:37 -07:00
|
|
|
-DOSL_BUILD_PLUGINS=OFF
|
2017-07-25 16:37:55 +02:00
|
|
|
-DSTOP_ON_WARNING=OFF
|
|
|
|
|
-DUSE_LLVM_BITCODE=OFF
|
2021-02-24 07:13:37 -07:00
|
|
|
-DLLVM_ROOT=${LIBDIR}/llvm/
|
2024-11-14 17:59:21 +01:00
|
|
|
-DLLVM_STATIC=ON
|
2018-08-16 17:41:35 -06:00
|
|
|
-DUSE_PARTIO=OFF
|
2020-02-19 11:41:38 +01:00
|
|
|
-DUSE_QT=OFF
|
2020-06-28 08:00:28 -06:00
|
|
|
-DINSTALL_DOCS=OFF
|
2021-02-24 07:13:37 -07:00
|
|
|
-Dpugixml_ROOT=${LIBDIR}/pugixml
|
|
|
|
|
-DUSE_PYTHON=OFF
|
2022-04-19 18:08:51 +02:00
|
|
|
-DImath_ROOT=${LIBDIR}/imath
|
2023-12-21 19:16:11 +01:00
|
|
|
-DCMAKE_DEBUG_POSTFIX=_d
|
|
|
|
|
-DPython_ROOT=${LIBDIR}/python
|
|
|
|
|
-DPython_EXECUTABLE=${PYTHON_BINARY}
|
2024-06-07 07:37:13 -06:00
|
|
|
-Dlibdeflate_DIR=${LIBDIR}/deflate/lib/cmake/libdeflate
|
2017-07-25 16:37:55 +02:00
|
|
|
)
|
|
|
|
|
|
2024-02-14 03:40:01 +01:00
|
|
|
if(NOT APPLE)
|
2025-01-23 10:38:05 +01:00
|
|
|
list(APPEND OSL_EXTRA_ARGS -DOSL_USE_OPTIX=ON -DCUDA_TARGET_ARCH=sm_50)
|
2024-02-14 03:40:01 +01:00
|
|
|
endif()
|
|
|
|
|
|
2017-07-25 16:37:55 +02:00
|
|
|
ExternalProject_Add(external_osl
|
2021-03-16 14:10:30 +01:00
|
|
|
URL file://${PACKAGE_DIR}/${OSL_FILE}
|
2017-07-25 16:37:55 +02:00
|
|
|
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
2022-12-05 23:18:54 +01:00
|
|
|
CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR}
|
2017-07-25 16:37:55 +02:00
|
|
|
LIST_SEPARATOR ^^
|
2021-03-16 14:10:30 +01:00
|
|
|
URL_HASH ${OSL_HASH_TYPE}=${OSL_HASH}
|
2017-07-25 16:37:55 +02:00
|
|
|
PREFIX ${BUILD_DIR}/osl
|
2024-02-10 22:35:36 +11:00
|
|
|
|
|
|
|
|
PATCH_COMMAND ${PATCH_CMD} -p 1 -d
|
|
|
|
|
${BUILD_DIR}/osl/src/external_osl <
|
|
|
|
|
${PATCH_DIR}/osl.diff
|
|
|
|
|
|
|
|
|
|
CMAKE_ARGS
|
|
|
|
|
-DCMAKE_INSTALL_PREFIX=${LIBDIR}/osl
|
|
|
|
|
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
|
|
|
|
|
${DEFAULT_CMAKE_FLAGS}
|
|
|
|
|
${OSL_EXTRA_ARGS}
|
|
|
|
|
|
2017-07-25 16:37:55 +02:00
|
|
|
INSTALL_DIR ${LIBDIR}/osl
|
|
|
|
|
)
|
|
|
|
|
|
2017-11-05 14:50:15 +11:00
|
|
|
add_dependencies(
|
|
|
|
|
external_osl
|
|
|
|
|
external_boost
|
|
|
|
|
ll
|
|
|
|
|
external_openexr
|
|
|
|
|
external_zlib
|
|
|
|
|
external_openimageio
|
2020-11-29 14:01:33 -07:00
|
|
|
external_pugixml
|
2017-11-05 14:50:15 +11:00
|
|
|
)
|
2021-07-27 10:15:31 +02:00
|
|
|
if(WIN32)
|
|
|
|
|
add_dependencies(
|
|
|
|
|
external_osl
|
|
|
|
|
external_flexbison
|
|
|
|
|
)
|
2021-08-09 16:46:57 +02:00
|
|
|
elseif(UNIX AND NOT APPLE)
|
2021-07-27 10:15:31 +02:00
|
|
|
add_dependencies(
|
|
|
|
|
external_osl
|
|
|
|
|
external_flex
|
|
|
|
|
)
|
|
|
|
|
endif()
|
2018-08-21 08:15:45 -06:00
|
|
|
|
|
|
|
|
if(WIN32)
|
|
|
|
|
if(BUILD_MODE STREQUAL Release)
|
|
|
|
|
ExternalProject_Add_Step(external_osl after_install
|
2024-02-10 22:35:36 +11:00
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
|
|
|
|
${LIBDIR}/osl/
|
|
|
|
|
${HARVEST_TARGET}/osl
|
|
|
|
|
|
2018-08-21 08:15:45 -06:00
|
|
|
DEPENDEES install
|
|
|
|
|
)
|
|
|
|
|
endif()
|
|
|
|
|
if(BUILD_MODE STREQUAL Debug)
|
|
|
|
|
ExternalProject_Add_Step(external_osl after_install
|
2024-02-10 22:35:36 +11:00
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy
|
|
|
|
|
${LIBDIR}/osl/lib/oslcomp_d.lib
|
|
|
|
|
${HARVEST_TARGET}/osl/lib/oslcomp_d.lib
|
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy
|
|
|
|
|
${LIBDIR}/osl/lib/oslexec_d.lib
|
|
|
|
|
${HARVEST_TARGET}/osl/lib/oslexec_d.lib
|
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy
|
|
|
|
|
${LIBDIR}/osl/lib/oslquery_d.lib
|
|
|
|
|
${HARVEST_TARGET}/osl/lib/oslquery_d.lib
|
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy
|
|
|
|
|
${LIBDIR}/osl/lib/oslnoise_d.lib
|
|
|
|
|
${HARVEST_TARGET}/osl/lib/oslnoise_d.lib
|
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy
|
|
|
|
|
${LIBDIR}/osl/bin/oslcomp_d.dll
|
|
|
|
|
${HARVEST_TARGET}/osl/bin/oslcomp_d.dll
|
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy
|
|
|
|
|
${LIBDIR}/osl/bin/oslexec_d.dll
|
|
|
|
|
${HARVEST_TARGET}/osl/bin/oslexec_d.dll
|
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy
|
|
|
|
|
${LIBDIR}/osl/bin/oslquery_d.dll
|
|
|
|
|
${HARVEST_TARGET}/osl/bin/oslquery_d.dll
|
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy
|
|
|
|
|
${LIBDIR}/osl/bin/oslnoise_d.dll
|
|
|
|
|
${HARVEST_TARGET}/osl/bin/oslnoise_d.dll
|
|
|
|
|
|
2018-08-21 08:15:45 -06:00
|
|
|
DEPENDEES install
|
|
|
|
|
)
|
|
|
|
|
endif()
|
2024-07-02 16:49:22 +02:00
|
|
|
else()
|
|
|
|
|
harvest_rpath_bin(external_osl osl/bin osl/bin "oslc")
|
|
|
|
|
harvest(external_osl osl/include osl/include "*.h")
|
|
|
|
|
harvest_rpath_lib(external_osl osl/lib osl/lib "*${SHAREDLIBEXT}*")
|
|
|
|
|
harvest(external_osl osl/share/OSL/shaders osl/share/OSL/shaders "*.h")
|
2018-08-21 08:15:45 -06:00
|
|
|
endif()
|