Skip to content

Commit

Permalink
Merge branch 'master' into fix/analysis-latest
Browse files Browse the repository at this point in the history
  • Loading branch information
hodoulp authored Oct 30, 2021
2 parents aa519ba + d074757 commit 9cd19c4
Show file tree
Hide file tree
Showing 52 changed files with 3,755 additions and 734 deletions.
2 changes: 2 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,8 @@ option(OCIO_BUILD_JAVA "Specify whether to build java bindings" OFF)

option(OCIO_WARNING_AS_ERROR "Set build error level for CI testing" OFF)

option(OCIO_USE_WINDOWS_UNICODE "On Windows only, compile with Unicode support" WIN32)


###############################################################################
# Optimization / internal linking preferences
Expand Down
13 changes: 0 additions & 13 deletions share/cmake/modules/FindExtPackages.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -74,19 +74,6 @@ if(OCIO_BUILD_OPENFX)
find_package(openfx 1.4 REQUIRED)
endif()

if(OCIO_BUILD_PYTHON)

# NOTE: Depending of the compiler version pybind11 2.4.3 does not compile
# with C++17 so, if you change the pybind11 version update the code to
# compile pybind11 and dependencies with C++17 or higher i.e. remove the
# cap of C++ version in FindPybind11.cmake and
# src/bindings/python/CMakeLists.txt.

# pybind11
# https://github.com/pybind/pybind11
find_package(pybind11 2.6.1 REQUIRED)
endif()

if (OCIO_PYTHON_VERSION AND NOT OCIO_BUILD_PYTHON)
message (WARNING "OCIO_PYTHON_VERSION=${OCIO_PYTHON_VERSION} but OCIO_BUILD_PYTHON is off.")
endif ()
Expand Down
4 changes: 4 additions & 0 deletions share/cmake/modules/FindImath.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,10 @@ if(NOT Imath_FOUND AND NOT OCIO_INSTALL_EXT_PACKAGES STREQUAL NONE)
)

add_dependencies(Imath::Imath imath_install)

# Some Imath versions define a second target.
add_library(Imath::ImathConfig ALIAS Imath::Imath)

message(STATUS "Installing Imath: ${Imath_LIBRARY} (version \"${Imath_VERSION}\")")
endif()
endif()
Expand Down
4 changes: 0 additions & 4 deletions share/cmake/modules/FindOpenImageIO.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
# OPENIMAGEIO_VERSION_MINOR Version minor number
# OPENIMAGEIO_VERSION_PATCH Version minor patch
# OPENIMAGEIO_VERSION_TWEAK Version minor tweak
# OIIOTOOL_BIN Path to oiiotool executable
#
# Imported targets:
# OpenImageIO::OpenImageIO The libOpenImageIO library.
Expand Down Expand Up @@ -66,9 +65,6 @@ find_library ( OPENIMAGEIO_UTIL_LIBRARY
find_path ( OPENIMAGEIO_INCLUDE_DIR
NAMES OpenImageIO/imageio.h
HINTS ${OPENIMAGEIO_ROOT_DIR} )
find_program ( OIIOTOOL_BIN
NAMES oiiotool
HINTS ${OPENIMAGEIO_ROOT_DIR} )

# Try to figure out version number
set (OIIO_VERSION_HEADER "${OPENIMAGEIO_INCLUDE_DIR}/OpenImageIO/oiioversion.h")
Expand Down
91 changes: 77 additions & 14 deletions share/cmake/modules/FindOpenShadingLanguage.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,59 @@
# variable to tell CMake where to find it.
#

# TODO: OSL: Use "find_package(OSL 1.11 CONFIG)" directly instead of this file!


if(NOT TARGET osl::osl)
add_library(osl::osl UNKNOWN IMPORTED GLOBAL)
add_library(osl::osl INTERFACE IMPORTED GLOBAL)
set(OSL_FOUND OFF)
endif()

###############################################################################
### Try to find package ###

if(DEFINED OSL_ROOT)
if(NOT DEFINED OSL_ROOT)

find_package(OSL ${OpenShadingLanguage_FIND_VERSION} CONFIG)

set(OpenShadingLanguage_VERSION ${OSL_VERSION})

# TODO: No variable to have the share directory?

set(OSL_SHADERS_INCLUDE_DIR ${OSL_INCLUDE_DIR}/../share)

# Variable used by the OSL unit tests.
set(OSL_SHADERS_DIR ${OSL_SHADERS_INCLUDE_DIR}/OSL/shaders)

include (FindPackageHandleStandardArgs)
find_package_handle_standard_args (OpenShadingLanguage
FOUND_VAR OpenShadingLanguage_FOUND
REQUIRED_VARS OSL_INCLUDE_DIR OSL_LIB_DIR OpenShadingLanguage_VERSION
VERSION_VAR OpenShadingLanguage_VERSION
)

set(OSL_FOUND ${OpenShadingLanguage_FOUND})

else()

set(OSL_INCLUDE_DIR ${OSL_ROOT}/include)

if(EXISTS "${OSL_INCLUDE_DIR}/OSL/oslversion.h")
set(OSL_VERSION_HEADER "${OSL_INCLUDE_DIR}/OSL/oslversion.h")

if(EXISTS "${OSL_VERSION_HEADER}")

# Try to figure out version number
file (STRINGS "${OSL_VERSION_HEADER}" TMP REGEX "^#define OSL_LIBRARY_VERSION_MAJOR .*$")
string (REGEX MATCHALL "[0-9]+" OSL_VERSION_MAJOR ${TMP})
file (STRINGS "${OSL_VERSION_HEADER}" TMP REGEX "^#define OSL_LIBRARY_VERSION_MINOR .*$")
string (REGEX MATCHALL "[0-9]+" OSL_VERSION_MINOR ${TMP})
file (STRINGS "${OSL_VERSION_HEADER}" TMP REGEX "^#define OSL_LIBRARY_VERSION_PATCH .*$")
string (REGEX MATCHALL "[0-9]+" OSL_VERSION_PATCH ${TMP})
file (STRINGS "${OSL_VERSION_HEADER}" TMP REGEX "^#define OSL_LIBRARY_VERSION_TWEAK .*$")
if (TMP)
string (REGEX MATCHALL "[0-9]+" OSL_VERSION_TWEAK ${TMP})
else ()
set (OSL_VERSION_TWEAK 0)
endif ()
set (OpenShadingLanguage_VERSION "${OSL_VERSION_MAJOR}.${OSL_VERSION_MINOR}.${OSL_VERSION_PATCH}.${OSL_VERSION_TWEAK}")

# Find the oslcomp library.
find_library(oslcomp_LIBRARY
Expand All @@ -34,6 +71,11 @@ if(DEFINED OSL_ROOT)
lib
)

add_library(OSL::oslcomp SHARED IMPORTED)
set_target_properties(OSL::oslcomp PROPERTIES
IMPORTED_LOCATION ${oslcomp_LIBRARY}
)

# Find the oslexec library.
find_library(oslexec_LIBRARY
NAMES
Expand All @@ -44,8 +86,15 @@ if(DEFINED OSL_ROOT)
lib
)

add_library(OSL::oslexec SHARED IMPORTED)
set_target_properties(OSL::oslexec PROPERTIES
IMPORTED_LOCATION ${oslexec_LIBRARY}
)

set(OSL_SHADERS_INCLUDE_DIR ${OSL_ROOT}/share)

# Variable used by the OSL unit tests.
set(OSL_SHADERS_DIR ${OSL_ROOT}/share/OSL/shaders)
set(OSL_SHADERS_DIR ${OSL_SHADERS_INCLUDE_DIR}/OSL/shaders)

if(EXISTS "${OSL_SHADERS_DIR}")

Expand All @@ -56,6 +105,15 @@ if(DEFINED OSL_ROOT)

endif()

include (FindPackageHandleStandardArgs)
find_package_handle_standard_args (OpenShadingLanguage
FOUND_VAR OpenShadingLanguage_FOUND
REQUIRED_VARS OSL_INCLUDE_DIR oslcomp_LIBRARY oslexec_LIBRARY OpenShadingLanguage_VERSION
VERSION_VAR OpenShadingLanguage_VERSION
)

set(OSL_FOUND ${OpenShadingLanguage_FOUND})

endif()

###############################################################################
Expand All @@ -64,16 +122,21 @@ endif()
if(OSL_FOUND)

if (NOT OSL_FIND_QUIETLY)
message(STATUS "OpenShadingLanguage includes = ${OSL_INCLUDE_DIR}")
message(STATUS "OpenShadingLanguage oslcomp library = ${oslcomp_LIBRARY}")
message(STATUS "OpenShadingLanguage oslexec library = ${oslexec_LIBRARY}")
message(STATUS "OpenShadingLanguage includes = ${OSL_INCLUDE_DIR}")
message(STATUS "OpenShadingLanguage shaders = ${OSL_SHADERS_DIR}")
message(STATUS "OpenShadingLanguage library dir = ${OSL_LIB_DIR}")
endif ()

set_target_properties(osl::osl PROPERTIES
IMPORTED_LOCATION ${oslcomp_LIBRARY}
IMPORTED_LOCATION ${oslexec_LIBRARY}
INTERFACE_INCLUDE_DIRECTORIES ${OSL_INCLUDE_DIR}
)
list(APPEND LIB_INCLUDE_DIRS ${OSL_INCLUDE_DIR})
list(APPEND LIB_INCLUDE_DIRS ${OSL_SHADERS_INCLUDE_DIR})

target_include_directories(osl::osl INTERFACE "${LIB_INCLUDE_DIRS}")
target_link_libraries(osl::osl INTERFACE OSL::oslcomp OSL::oslexec)

if (${OpenShadingLanguage_VERSION} VERSION_GREATER_EQUAL "1.12" AND ${CMAKE_CXX_STANDARD} LESS_EQUAL 11)
set(OSL_FOUND OFF)
message(WARNING "Need C++14 or higher to compile OpenShadingLanguage. Skipping build the OSL unit tests")
endif()

mark_as_advanced(OSL_INCLUDE_DIR
oslcomp_LIBRARY oslcomp_FOUND
Expand Down
9 changes: 9 additions & 0 deletions src/OpenColorIO/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -280,6 +280,15 @@ if(WIN32)
PRIVATE
XML_STATIC
)

if (OCIO_USE_WINDOWS_UNICODE)
# Add Unicode definitions to use Unicode functions
target_compile_definitions(OpenColorIO
PRIVATE
UNICODE
_UNICODE
)
endif()
endif()

set_target_properties(OpenColorIO PROPERTIES
Expand Down
2 changes: 1 addition & 1 deletion src/OpenColorIO/Config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1117,7 +1117,7 @@ ConstConfigRcPtr Config::CreateFromFile(const char * filename)
throw ExceptionMissingFile ("The config filepath is missing.");
}

std::ifstream istream(filename);
std::ifstream istream = Platform::CreateInputFileStream(filename, std::ios_base::in);
if (istream.fail())
{
std::ostringstream os;
Expand Down
25 changes: 25 additions & 0 deletions src/OpenColorIO/ContextVariableUtils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

#include "ContextVariableUtils.h"
#include "utils/StringUtils.h"
#include "Platform.h"


#if defined(__APPLE__) && !defined(__IPHONE__)
Expand All @@ -19,6 +20,12 @@ extern char ** environ;
namespace
{

#if defined(_WIN32) && defined(UNICODE)
inline wchar_t ** GetEnviron()
{
return _wenviron;
}
#else
inline char ** GetEnviron()
{
#if __IPHONE__
Expand All @@ -30,6 +37,7 @@ inline char ** GetEnviron()
return environ;
#endif
}
#endif

} // anon.

Expand Down Expand Up @@ -71,11 +79,28 @@ void LoadEnvironment(EnvMap & map, bool update)
{
// First, add or update the context variables with existing env. variables.

#if defined(_WIN32) && defined(UNICODE)
if (GetEnviron() == NULL) {
// If the program starts with "main" instead of "wmain", then wenviron returns NULL until
// the first call to either wgetenv or wputenv. Calling wgetenv, even with an empty
// variable name, will populate wenviron correctly. We also use wgetenv_s (which requires
// a valid size pointer) to suppress safety warnings about wgetenv during the compile.
size_t sz;
_wgetenv_s(&sz, NULL, 0, L"");
}

for (wchar_t **env = GetEnviron(); *env != NULL; ++env)
{
// Split environment up into std::map[name] = value.

const std::string env_str = Platform::Utf16ToUtf8((wchar_t*)*env);
#else
for (char **env = GetEnviron(); *env != NULL; ++env)
{
// Split environment up into std::map[name] = value.

const std::string env_str = (char*)*env;
#endif
const int pos = static_cast<int>(env_str.find_first_of('='));

const std::string name = env_str.substr(0, pos);
Expand Down
23 changes: 14 additions & 9 deletions src/OpenColorIO/GpuShaderDesc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -308,14 +308,15 @@ void GpuShaderCreator::finalize()

kw.newLine() << "";
kw.newLine() << "/* All the generic helper methods */";

kw.newLine() << "";
kw.newLine() << "vector4 __operator__mul__(vector4 v, matrix m)";
kw.newLine() << "vector4 __operator__mul__(matrix m, vector4 v)";
kw.newLine() << "{";
kw.indent();
kw.newLine() << "return vector4(v.x * m[0][0] + v.y * m[1][0] + v.z * m[2][0] + v.w * m[3][0], "\
"v.x * m[0][1] + v.y * m[1][1] + v.z * m[2][1] + v.w * m[3][1], "\
"v.x * m[0][2] + v.y * m[1][2] + v.z * m[2][2] + v.w * m[3][2], "\
"v.x * m[0][3] + v.y * m[1][3] + v.z * m[2][3] + v.w * m[3][3]);";
kw.newLine() << "return vector4(v.x * m[0][0] + v.y * m[0][1] + v.z * m[0][2] + v.w * m[0][3], ";
kw.newLine() << " v.x * m[1][0] + v.y * m[1][1] + v.z * m[1][2] + v.w * m[1][3], ";
kw.newLine() << " v.x * m[2][0] + v.y * m[2][1] + v.z * m[2][2] + v.w * m[2][3], ";
kw.newLine() << " v.x * m[3][0] + v.y * m[3][1] + v.z * m[3][2] + v.w * m[3][3]);";
kw.dedent();
kw.newLine() << "}";

Expand Down Expand Up @@ -344,28 +345,32 @@ void GpuShaderCreator::finalize()
kw.newLine() << "}";

kw.newLine() << "";
kw.newLine() << "vector4 __operator__add__(vector4 v, color4 c) {";
kw.newLine() << "vector4 __operator__add__(vector4 v, color4 c)";
kw.newLine() << "{";
kw.indent();
kw.newLine() << "return v + vector4(c.rgb.r, c.rgb.g, c.rgb.b, c.a);";
kw.dedent();
kw.newLine() << "}";

kw.newLine() << "";
kw.newLine() << "vector4 __operator__add__(color4 c, vector4 v) {";
kw.newLine() << "vector4 __operator__add__(color4 c, vector4 v)";
kw.newLine() << "{";
kw.indent();
kw.newLine() << "return vector4(c.rgb.r, c.rgb.g, c.rgb.b, c.a) + v;";
kw.dedent();
kw.newLine() << "}";

kw.newLine() << "";
kw.newLine() << "vector4 pow(color4 c, vector4 v) {";
kw.newLine() << "vector4 pow(color4 c, vector4 v)";
kw.newLine() << "{";
kw.indent();
kw.newLine() << "return pow(vector4(c.rgb.r, c.rgb.g, c.rgb.b, c.a), v);";
kw.dedent();
kw.newLine() << "}";

kw.newLine() << "";
kw.newLine() << "vector4 max(vector4 v, color4 c) {";
kw.newLine() << "vector4 max(vector4 v, color4 c)";
kw.newLine() << "{";
kw.indent();
kw.newLine() << "return max(v, vector4(c.rgb.r, c.rgb.g, c.rgb.b, c.a));";
kw.dedent();
Expand Down
Loading

0 comments on commit 9cd19c4

Please sign in to comment.