2023-06-14 12:49:59 +00:00
|
|
|
# SPDX-FileCopyrightText: 2014 Blender Foundation
|
|
|
|
#
|
2022-02-11 03:23:56 +00:00
|
|
|
# SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
|
2015-02-09 21:39:00 +00:00
|
|
|
# - Find OpenShadingLanguage library
|
|
|
|
# Find the native OpenShadingLanguage includes and library
|
|
|
|
# This module defines
|
|
|
|
# OSL_INCLUDE_DIRS, where to find OSL headers, Set when
|
|
|
|
# OSL_INCLUDE_DIR is found.
|
|
|
|
# OSL_LIBRARIES, libraries to link against to use OSL.
|
|
|
|
# OSL_ROOT_DIR, the base directory to search for OSL.
|
|
|
|
# This can also be an environment variable.
|
|
|
|
# OSL_COMPILER, full path to OSL script compiler.
|
|
|
|
# OSL_FOUND, if false, do not try to use OSL.
|
|
|
|
# OSL_LIBRARY_VERSION_MAJOR, OSL_LIBRARY_VERSION_MINOR, the major
|
|
|
|
# and minor versions of OSL library if found.
|
|
|
|
|
|
|
|
# If OSL_ROOT_DIR was defined in the environment, use it.
|
|
|
|
IF(NOT OSL_ROOT_DIR AND NOT $ENV{OSL_ROOT_DIR} STREQUAL "")
|
|
|
|
SET(OSL_ROOT_DIR $ENV{OSL_ROOT_DIR})
|
|
|
|
ENDIF()
|
|
|
|
|
|
|
|
SET(_osl_FIND_COMPONENTS
|
2022-10-20 11:33:08 +00:00
|
|
|
oslnoise
|
2015-02-09 21:39:00 +00:00
|
|
|
oslcomp
|
|
|
|
oslexec
|
|
|
|
oslquery
|
|
|
|
)
|
|
|
|
|
|
|
|
SET(_osl_SEARCH_DIRS
|
|
|
|
${OSL_ROOT_DIR}
|
|
|
|
/opt/lib/osl
|
|
|
|
)
|
|
|
|
|
|
|
|
FIND_PATH(OSL_INCLUDE_DIR
|
|
|
|
NAMES
|
|
|
|
OSL/oslversion.h
|
|
|
|
HINTS
|
|
|
|
${_osl_SEARCH_DIRS}
|
|
|
|
PATH_SUFFIXES
|
|
|
|
include
|
|
|
|
)
|
|
|
|
|
|
|
|
FOREACH(COMPONENT ${_osl_FIND_COMPONENTS})
|
|
|
|
STRING(TOUPPER ${COMPONENT} UPPERCOMPONENT)
|
|
|
|
|
|
|
|
FIND_LIBRARY(OSL_${UPPERCOMPONENT}_LIBRARY
|
|
|
|
NAMES
|
|
|
|
${COMPONENT}
|
|
|
|
HINTS
|
|
|
|
${_osl_SEARCH_DIRS}
|
|
|
|
PATH_SUFFIXES
|
|
|
|
lib64 lib
|
|
|
|
)
|
|
|
|
ENDFOREACH()
|
|
|
|
|
2022-10-20 11:33:08 +00:00
|
|
|
# Note linking order matters, and oslnoise existence depends on version.
|
|
|
|
SET(_osl_LIBRARIES ${OSL_OSLCOMP_LIBRARY})
|
|
|
|
IF(APPLE)
|
|
|
|
list(APPEND _osl_LIBRARIES -force_load ${OSL_OSLEXEC_LIBRARY})
|
|
|
|
ELSE()
|
|
|
|
list(APPEND _osl_LIBRARIES ${OSL_OSLEXEC_LIBRARY})
|
|
|
|
ENDIF()
|
|
|
|
list(APPEND _osl_LIBRARIES ${OSL_OSLQUERY_LIBRARY})
|
|
|
|
IF(OSL_OSLNOISE_LIBRARY)
|
|
|
|
list(APPEND _osl_LIBRARIES ${OSL_OSLNOISE_LIBRARY})
|
|
|
|
ENDIF()
|
|
|
|
|
2015-02-09 21:39:00 +00:00
|
|
|
FIND_PROGRAM(OSL_COMPILER oslc
|
|
|
|
HINTS ${_osl_SEARCH_DIRS}
|
|
|
|
PATH_SUFFIXES bin)
|
|
|
|
|
2020-02-17 17:28:12 +00:00
|
|
|
get_filename_component(OSL_SHADER_HINT ${OSL_COMPILER} DIRECTORY)
|
|
|
|
get_filename_component(OSL_SHADER_HINT ${OSL_SHADER_DIR}/../ ABSOLUTE)
|
|
|
|
|
|
|
|
FIND_PATH(OSL_SHADER_DIR
|
|
|
|
NAMES
|
|
|
|
stdosl.h
|
|
|
|
HINTS
|
|
|
|
${OSL_ROOT_DIR}
|
|
|
|
${OSL_SHADER_HINT}
|
|
|
|
$ENV{OSLHOME}
|
|
|
|
/usr/share/OSL/
|
|
|
|
/usr/include/OSL/
|
|
|
|
PATH_SUFFIXES
|
2021-04-09 11:41:25 +00:00
|
|
|
share/OSL/shaders
|
2022-02-17 17:42:06 +00:00
|
|
|
shaders
|
2020-02-17 17:28:12 +00:00
|
|
|
)
|
|
|
|
|
2015-02-09 21:39:00 +00:00
|
|
|
# handle the QUIETLY and REQUIRED arguments and set OSL_FOUND to TRUE if
|
|
|
|
# all listed variables are TRUE
|
|
|
|
INCLUDE(FindPackageHandleStandardArgs)
|
|
|
|
FIND_PACKAGE_HANDLE_STANDARD_ARGS(OSL DEFAULT_MSG _osl_LIBRARIES OSL_INCLUDE_DIR OSL_COMPILER)
|
|
|
|
|
|
|
|
IF(OSL_FOUND)
|
|
|
|
SET(OSL_LIBRARIES ${_osl_LIBRARIES})
|
|
|
|
SET(OSL_INCLUDE_DIRS ${OSL_INCLUDE_DIR})
|
|
|
|
|
|
|
|
FILE(STRINGS "${OSL_INCLUDE_DIR}/OSL/oslversion.h" OSL_LIBRARY_VERSION_MAJOR
|
|
|
|
REGEX "^[ \t]*#define[ \t]+OSL_LIBRARY_VERSION_MAJOR[ \t]+[0-9]+.*$")
|
|
|
|
FILE(STRINGS "${OSL_INCLUDE_DIR}/OSL/oslversion.h" OSL_LIBRARY_VERSION_MINOR
|
|
|
|
REGEX "^[ \t]*#define[ \t]+OSL_LIBRARY_VERSION_MINOR[ \t]+[0-9]+.*$")
|
|
|
|
STRING(REGEX REPLACE ".*#define[ \t]+OSL_LIBRARY_VERSION_MAJOR[ \t]+([.0-9]+).*"
|
|
|
|
"\\1" OSL_LIBRARY_VERSION_MAJOR ${OSL_LIBRARY_VERSION_MAJOR})
|
|
|
|
STRING(REGEX REPLACE ".*#define[ \t]+OSL_LIBRARY_VERSION_MINOR[ \t]+([.0-9]+).*"
|
|
|
|
"\\1" OSL_LIBRARY_VERSION_MINOR ${OSL_LIBRARY_VERSION_MINOR})
|
2020-10-05 05:02:32 +00:00
|
|
|
ENDIF()
|
2015-02-09 21:39:00 +00:00
|
|
|
|
|
|
|
MARK_AS_ADVANCED(
|
|
|
|
OSL_INCLUDE_DIR
|
2022-02-17 17:42:06 +00:00
|
|
|
OSL_SHADER_DIR
|
2015-02-09 21:39:00 +00:00
|
|
|
)
|
|
|
|
FOREACH(COMPONENT ${_osl_FIND_COMPONENTS})
|
|
|
|
STRING(TOUPPER ${COMPONENT} UPPERCOMPONENT)
|
|
|
|
MARK_AS_ADVANCED(OSL_${UPPERCOMPONENT}_LIBRARY)
|
|
|
|
ENDFOREACH()
|