Skip to content

Commit 149bb6f

Browse files
committed
Compilation fixes for osl, rawtoaces, rawtoaces
Add stub CMake configs for pystring and nlohmann_json to help non-Conan builds. Signed-off-by: Jean-Francois Panisset <panisset@gmail.com>
1 parent 6752615 commit 149bb6f

File tree

14 files changed

+373
-55
lines changed

14 files changed

+373
-55
lines changed

packages/conan/recipes/nlohmann_json/conanfile.py

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
from conan import ConanFile
88
from conan.tools.build import check_min_cppstd
9-
from conan.tools.files import copy, get
9+
from conan.tools.files import copy, get, mkdir
1010
from conan.tools.layout import basic_layout
1111
import os
1212

@@ -51,10 +51,36 @@ def package(self):
5151
# ASWF: license file in package specific directories
5252
copy(self, "LICENSE*", self.source_folder, os.path.join(self.package_folder, "licenses", self.name))
5353
copy(self, "*", os.path.join(self.source_folder, "include"), os.path.join(self.package_folder, "include"))
54+
# ASWF: a trivial CMake config to help with outside Conan builds
55+
cmakepath = os.path.join(self.package_folder, "lib", "cmake", "nlohmann_json")
56+
mkdir(self, cmakepath)
57+
with open(os.path.join(cmakepath, "nlohmann_jsonConfig.cmake"), "w") as f:
58+
f.write("""
59+
if(NOT TARGET nlohmann_json::nlohmann_json)
60+
add_library(nlohmann_json::nlohmann_json INTERFACE IMPORTED)
61+
endif()
62+
""")
63+
with open(os.path.join(cmakepath, "nlohmann_jsonConfigVersion.cmake"), "w") as f:
64+
f.write(f"""
65+
set(PACKAGE_VERSION "{ self.version }")
66+
if(NOT DEFINED PACKAGE_FIND_VERSION)
67+
set(PACKAGE_VERSION_COMPATIBLE TRUE)
68+
set(PACKAGE_VERSION_EXACT TRUE)
69+
return()
70+
endif()
71+
if(PACKAGE_FIND_VERSION VERSION_LESS PACKAGE_VERSION)
72+
set(PACKAGE_VERSION_COMPATIBLE TRUE)
73+
else()
74+
set(PACKAGE_VERSION_COMPATIBLE FALSE)
75+
endif()
76+
if(PACKAGE_FIND_VERSION VERSION_EQUAL PACKAGE_VERSION)
77+
set(PACKAGE_VERSION_EXACT TRUE)
78+
endif()
79+
""")
5480

5581
def package_info(self):
5682
self.cpp_info.set_property("cmake_file_name", "nlohmann_json")
5783
self.cpp_info.set_property("cmake_target_name", "nlohmann_json::nlohmann_json")
5884
self.cpp_info.set_property("pkg_config_name", "nlohmann_json")
5985
self.cpp_info.bindirs = []
60-
self.cpp_info.libdirs = []
86+
self.cpp_info.libdirs = []

packages/conan/recipes/openexr/conanfile.py

Lines changed: 3 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# Copyright (c) Contributors to the aswf-docker Project. All rights reserved.
33
# SPDX-License-Identifier: MIT
44
#
5-
# From: https://github.com/conan-io/conan-center-index/blob/cceee569179c10fa56d1fd9c3582f3371944ba59/recipes/openexr/3.x/conanfile.py
5+
# From: https://github.com/conan-io/conan-center-index/blob/fcf375e3136091137a012a00fab949694edc2da6/recipes/openexr/3.x/conanfile.py
66

77
from conan import ConanFile
88
from conan.errors import ConanInvalidConfiguration
@@ -12,7 +12,7 @@
1212
from conan.tools.scm import Version
1313
import os
1414

15-
required_conan_version = ">=1.53.0"
15+
required_conan_version = ">=2.0"
1616

1717

1818
class OpenEXRConan(ConanFile):
@@ -34,20 +34,6 @@ class OpenEXRConan(ConanFile):
3434
"fPIC": True,
3535
}
3636

37-
@property
38-
def _min_cppstd(self):
39-
if Version(self.version) >= "3.3":
40-
return 17
41-
return 11
42-
43-
@property
44-
def _minimum_compiler_version(self):
45-
return {
46-
"17": {
47-
"gcc": "9"
48-
}
49-
}.get(str(self._min_cppstd), {})
50-
5137
@property
5238
def _with_libdeflate(self):
5339
return Version(self.version) >= "3.2"
@@ -84,12 +70,7 @@ def requirements(self):
8470
self.requires("openjph/0.24.5")
8571

8672
def validate(self):
87-
if self.settings.compiler.get_safe("cppstd"):
88-
check_min_cppstd(self, self._min_cppstd)
89-
90-
minimum_version = self._minimum_compiler_version.get(str(self.settings.compiler))
91-
if minimum_version and Version(self.settings.compiler.version) < minimum_version:
92-
raise ConanInvalidConfiguration(f"{self.ref} requires {self.settings.compiler} >= {minimum_version}")
73+
check_min_cppstd(self, 11)
9374

9475
def source(self):
9576
get(self, **self.conan_data["sources"][self.version], strip_root=True)
@@ -141,18 +122,12 @@ def _conan_comp(name):
141122
def _add_component(self, name):
142123
component = self.cpp_info.components[self._conan_comp(name)]
143124
component.set_property("cmake_target_name", f"OpenEXR::{name}")
144-
component.names["cmake_find_package"] = name
145-
component.names["cmake_find_package_multi"] = name
146125
return component
147126

148127
def package_info(self):
149128
self.cpp_info.set_property("cmake_file_name", "OpenEXR")
150129
self.cpp_info.set_property("pkg_config_name", "OpenEXR")
151130

152-
self.cpp_info.names["cmake_find_package"] = "OpenEXR"
153-
self.cpp_info.names["cmake_find_package_multi"] = "OpenEXR"
154-
self.cpp_info.names["pkg_config"] = "OpenEXR"
155-
156131
lib_suffix = ""
157132
if not self.options.shared or self.settings.os == "Windows":
158133
openexr_version = Version(self.version)

packages/conan/recipes/osl/conandata.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,10 @@ patches:
4343
- patch_file: "patches/1.13.11.0-serialize-cuda-build.patch"
4444
patch_description: "Serialize CUDA build steps to avoid race conditions"
4545
patch_type: "conan"
46+
- patch_file: "patches/1.13.11.0-find-llvm-binaries.patch"
47+
patch_description: "Allow CMake to find LLVM binaries when building inside Conan"
48+
patch_type: "conan"
49+
- patch_file: "patches/1.13.11.0-cmake-oiio-imath-includes.patch"
50+
patch_description: "Allow imath and oiio to be found when building inside Conan"
51+
patch_type: "conan"
4652

packages/conan/recipes/osl/conanfile.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,9 @@ def requirements(self):
6464
self.requires("tsl-robin-map/1.2.1")
6565
self.requires("oiio/[>=2.5]")
6666
self.requires("imath/3.1.9", transitive_headers=True)
67+
if Version(self.version) <= "1.13":
68+
# OSL 1.13 has vestigial OpenEXR includes
69+
self.requires("openexr/[>=3.0.0]")
6770
self.requires("pugixml/[>=1.8]")
6871
if self.options.with_partio:
6972
self.requires("partio/[>=1.19.0]")
Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
diff --git src/liboslexec/CMakeLists.txt src/liboslexec/CMakeLists.txt
2+
index d99dd79ac..bfda2778a 100644
3+
--- src/liboslexec/CMakeLists.txt
4+
+++ src/liboslexec/CMakeLists.txt
5+
@@ -194,9 +194,9 @@
6+
set(include_dirs ${CMAKE_CURRENT_SOURCE_DIR})
7+
list(APPEND include_dirs ${CMAKE_SOURCE_DIR}/src/include)
8+
list(APPEND include_dirs ${CMAKE_BINARY_DIR}/include)
9+
- list(APPEND include_dirs ${IMATH_INCLUDES})
10+
- list(APPEND include_dirs ${OPENEXR_INCLUDES})
11+
- list(APPEND include_dirs ${OpenImageIO_INCLUDES})
12+
+ list(APPEND include_dirs ${Imath_INCLUDE_DIRS})
13+
+ list(APPEND include_dirs ${OpenEXR_INCLUDE_DIRS})
14+
+ list(APPEND include_dirs ${OpenImageIO_INCLUDE_DIRS})
15+
list(APPEND include_dirs ${Boost_INCLUDE_DIRS})
16+
17+
EMBED_LLVM_BITCODE_IN_CPP ( "${llvm_ops_srcs}" "_host" "osl_llvm_compiled_ops" lib_src "" "${include_dirs}")
18+
@@ -516,7 +516,8 @@
19+
target_include_directories (${batched_target_lib}
20+
PUBLIC
21+
${CMAKE_INSTALL_FULL_INCLUDEDIR}
22+
- ${IMATH_INCLUDES}
23+
+ ${Imath_INCLUDE_DIRS}
24+
+ ${OpenEXR_INCLUDE_DIRS}
25+
)
26+
target_link_libraries (${batched_target_lib}
27+
PUBLIC
28+
@@ -533,7 +534,8 @@
29+
target_include_directories (${local_lib}
30+
PUBLIC
31+
${CMAKE_INSTALL_FULL_INCLUDEDIR}
32+
- ${IMATH_INCLUDES}
33+
+ ${Imath_INCLUDE_DIRS}
34+
+ ${OpenEXR_INCLUDE_DIRS}
35+
PRIVATE
36+
"${CMAKE_SOURCE_DIR}/src/liboslcomp"
37+
)
38+
@@ -567,6 +569,7 @@
39+
target_link_libraries (${local_lib}
40+
PUBLIC
41+
oslquery oslnoise
42+
+ OpenEXR::OpenEXR
43+
OpenImageIO::OpenImageIO
44+
# For OpenEXR/Imath 3.x:
45+
$<TARGET_NAME_IF_EXISTS:Imath::Imath>
46+
diff --git src/cmake/externalpackages.cmake src/cmake/externalpackages.cmake
47+
index d99dd79ac..bfda2778a 100644
48+
--- src/cmake/externalpackages.cmake
49+
+++ src/cmake/externalpackages.cmake
50+
@@ -86,19 +86,21 @@
51+
RECOMMEND_MIN 2.5
52+
RECOMMEND_MIN_REASON
53+
"Even extremely critical patches are no longer supplied to < 2.5"
54+
- PRINT IMATH_INCLUDES
55+
+ PRINT Imath_INCLUDE_DIRS
56+
)
57+
# Force Imath includes to be before everything else to ensure that we have
58+
# the right Imath/OpenEXR version, not some older version in the system
59+
# library. This shouldn't be necessary, except for the common case of people
60+
# building against Imath/OpenEXR 3.x when there is still a system-level
61+
# install version of 2.x.
62+
-include_directories(BEFORE ${IMATH_INCLUDES})
63+
+include_directories(BEFORE ${Imath_INCLUDE_DIRS})
64+
if (MSVC AND NOT LINKSTATIC)
65+
add_definitions (-DOPENEXR_DLL) # Is this needed for new versions?
66+
endif ()
67+
68+
-if (OPENEXR_VERSION VERSION_GREATER_EQUAL 2.5.99)
69+
+# get_property(allTargets GLOBAL PROPERTY TARGETS)
70+
+# message(STATUS "OPENEXR_INCLUDES = ${OPENEXR_INCLUDES} OpenEXR_INCLUDE_DIRS = ${OpenEXR_INCLUDE_DIRS} OpenEXR_VERSION = ${OpenEXR_VERSION} Imath_INCLUDE_DIRS = ${Imath_INCLUDE_DIRS} allTargets = ${allTargets}")
71+
+if (OpenEXR_VERSION VERSION_GREATER_EQUAL 2.5.99)
72+
set (OSL_USING_IMATH 3)
73+
else ()
74+
set (OSL_USING_IMATH 2)
75+
@@ -120,8 +120,8 @@
76+
VERSION_MAX 18.9
77+
PRINT LLVM_SYSTEM_LIBRARIES CLANG_LIBRARIES)
78+
# ensure include directory is added (in case of non-standard locations
79+
-include_directories (BEFORE SYSTEM "${LLVM_INCLUDES}")
80+
-link_directories ("${LLVM_LIB_DIR}")
81+
+include_directories (BEFORE SYSTEM "${LLVM_INCLUDE_DIRS}")
82+
+link_directories ("${LLVM_LIBBRARY_DIRS}")
83+
# Extract and concatenate major & minor, remove wayward patches,
84+
# dots, and "svn" or other suffixes.
85+
string (REGEX REPLACE "([0-9]+)\\.([0-9]+).*" "\\1\\2" OSL_LLVM_VERSION ${LLVM_VERSION})
86+
@@ -218,7 +218,7 @@
87+
set (CUDA_INCLUDES ${CUDA_TOOLKIT_ROOT_DIR}/include)
88+
include_directories (BEFORE "${CUDA_INCLUDES}")
89+
90+
- STRING (FIND ${LLVM_TARGETS} "NVPTX" nvptx_index)
91+
+ STRING (FIND "${LLVM_TARGETS_TO_BUILD}" "NVPTX" nvptx_index)
92+
if (NOT ${nvptx_index} GREATER -1)
93+
message (FATAL_ERROR "NVPTX target is not available in the provided LLVM build")
94+
endif()
95+
diff --git src/testshade/CMakeLists.txt src/testshade/CMakeLists.txt
96+
index d99dd79ac..bfda2778a 100644
97+
--- src/testshade/CMakeLists.txt
98+
+++ src/testshade/CMakeLists.txt
99+
@@ -68,9 +68,9 @@
100+
set(include_dirs ${CMAKE_CURRENT_SOURCE_DIR})
101+
list(APPEND include_dirs ${CMAKE_SOURCE_DIR}/src/include)
102+
list(APPEND include_dirs ${CMAKE_BINARY_DIR}/include)
103+
-list(APPEND include_dirs ${IMATH_INCLUDES})
104+
-list(APPEND include_dirs ${OPENEXR_INCLUDES})
105+
-list(APPEND include_dirs ${OpenImageIO_INCLUDES})
106+
+list(APPEND include_dirs ${Imath_INCLUDE_DIRS})
107+
+list(APPEND include_dirs ${OpenEXR_INCLUDE_DIRS})
108+
+list(APPEND include_dirs ${OpenImageIO_INCLUDE_DIRS})
109+
list(APPEND include_dirs ${Boost_INCLUDE_DIRS})
110+
111+
EMBED_LLVM_BITCODE_IN_CPP ( "${rs_srcs}" "_host" "testshade_llvm_compiled_rs" testshade_srcs "-DOSL_HOST_RS_BITCODE=1" "${include_dirs}")
112+
diff --git src/liboslexec/shadingsys.cpp src/liboslexec/shadingsys.cpp
113+
index d99dd79ac..bfda2778a 100644
114+
--- src/liboslexec/shadingsys.cpp
115+
+++ src/liboslexec/shadingsys.cpp
116+
@@ -32,7 +32,11 @@
117+
using namespace OSL;
118+
using namespace OSL::pvt;
119+
120+
+#if 0
121+
#include <OpenEXR/ImfChannelList.h> // Just for OPENEXR_VERSION_STRING
122+
+#else
123+
+#define OPENEXR_VERSION_STRING "3.2.5"
124+
+#endif
125+
126+
// avoid naming conflicts with MSVC macros
127+
#ifdef _MSC_VER
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
diff --git src/cmake/llvm_macros.cmake src/cmake/llvm_macros.cmake
2+
index d99dd79ac..bfda2778a 100644
3+
--- src/cmake/llvm_macros.cmake
4+
+++ src/cmake/llvm_macros.cmake
5+
@@ -31,8 +31,8 @@
6+
if (NOT LLVM_BC_GENERATOR)
7+
find_program (LLVM_BC_GENERATOR NAMES "clang++"
8+
PATHS "${LLVM_DIRECTORY}/bin" "${LLVM_DIRECTORY}/tools/llvm"
9+
- NO_CMAKE_PATH NO_DEFAULT_PATH NO_CMAKE_SYSTEM_PATH
10+
- NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_ENVIRONMENT_PATH)
11+
+ NO_CMAKE_PATH NO_CMAKE_SYSTEM_PATH
12+
+ NO_CMAKE_ENVIRONMENT_PATH)
13+
endif ()
14+
15+
if (NOT LLVM_BC_GENERATOR)
16+
@@ -43,15 +43,15 @@
17+
if (NOT LLVM_AS_TOOL)
18+
find_program (LLVM_AS_TOOL NAMES "llvm-as"
19+
PATHS "${LLVM_DIRECTORY}/bin" "${LLVM_DIRECTORY}/tools/llvm"
20+
- NO_CMAKE_PATH NO_DEFAULT_PATH NO_CMAKE_SYSTEM_PATH
21+
- NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_ENVIRONMENT_PATH)
22+
+ NO_CMAKE_PATH NO_CMAKE_SYSTEM_PATH
23+
+ NO_CMAKE_ENVIRONMENT_PATH)
24+
endif ()
25+
26+
if (NOT LLVM_LINK_TOOL)
27+
find_program (LLVM_LINK_TOOL NAMES "llvm-link"
28+
PATHS "${LLVM_DIRECTORY}/bin" "${LLVM_DIRECTORY}/tools/llvm"
29+
- NO_CMAKE_PATH NO_DEFAULT_PATH NO_CMAKE_SYSTEM_PATH
30+
- NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_ENVIRONMENT_PATH)
31+
+ NO_CMAKE_PATH NO_CMAKE_SYSTEM_PATH
32+
+ NO_CMAKE_ENVIRONMENT_PATH)
33+
endif ()
34+
35+
36+
--- src/cmake/cuda_macros.cmake
37+
+++ src/cmake/cuda_macros.cmake
38+
@@ -24,11 +24,11 @@
39+
file ( GLOB cuda_headers "${cuda_src_dir}/*.h" )
40+
list (APPEND cuda_headers ${extra_headers})
41+
42+
- list (TRANSFORM IMATH_INCLUDES PREPEND -I
43+
+ list (TRANSFORM Imath_INCLUDE_DIRS PREPEND -I
44+
OUTPUT_VARIABLE ALL_IMATH_INCLUDES)
45+
- list (TRANSFORM OPENEXR_INCLUDES PREPEND -I
46+
+ list (TRANSFORM OpenEXR_INCLUDE_DIRS PREPEND -I
47+
OUTPUT_VARIABLE ALL_OPENEXR_INCLUDES)
48+
- list (TRANSFORM OpenImageIO_INCLUDES PREPEND -I
49+
+ list (TRANSFORM OpenImageIO_INCLUDE_DIRS PREPEND -I
50+
OUTPUT_VARIABLE ALL_OpenImageIO_INCLUDES)
51+
52+
if (NOT CUDA_NO_FTZ)
53+
@@ -79,7 +79,7 @@
54+
55+
# Setup the bitcode generator
56+
if (NOT LLVM_BC_GENERATOR)
57+
- FIND_PROGRAM(LLVM_BC_GENERATOR NAMES "clang++" PATHS "${LLVM_DIRECTORY}/bin" NO_DEFAULT_PATH NO_CMAKE_SYSTEM_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH)
58+
+ FIND_PROGRAM(LLVM_BC_GENERATOR NAMES "clang++" PATHS "${LLVM_DIRECTORY}/bin" NO_CMAKE_PATH NO_CMAKE_SYSTEM_PATH NO_CMAKE_ENVIRONMENT_PATH)
59+
endif ()
60+
# If that didn't work, look anywhere
61+
if (NOT LLVM_BC_GENERATOR)
62+
@@ -95,29 +95,29 @@
63+
if (NOT LLVM_AS_TOOL)
64+
find_program (LLVM_AS_TOOL NAMES "llvm-as"
65+
PATHS "${LLVM_DIRECTORY}/bin" "${LLVM_DIRECTORY}/tools/llvm"
66+
- NO_CMAKE_PATH NO_DEFAULT_PATH NO_CMAKE_SYSTEM_PATH
67+
- NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_ENVIRONMENT_PATH)
68+
+ NO_CMAKE_PATH NO_CMAKE_SYSTEM_PATH
69+
+ NO_CMAKE_ENVIRONMENT_PATH)
70+
endif ()
71+
72+
if (NOT LLVM_LINK_TOOL)
73+
find_program (LLVM_LINK_TOOL NAMES "llvm-link"
74+
PATHS "${LLVM_DIRECTORY}/bin" "${LLVM_DIRECTORY}/tools/llvm"
75+
- NO_CMAKE_PATH NO_DEFAULT_PATH NO_CMAKE_SYSTEM_PATH
76+
- NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_ENVIRONMENT_PATH)
77+
+ NO_CMAKE_PATH NO_CMAKE_SYSTEM_PATH
78+
+ NO_CMAKE_ENVIRONMENT_PATH)
79+
endif ()
80+
81+
if (NOT LLVM_LLC_TOOL)
82+
find_program (LLVM_LLC_TOOL NAMES "llc"
83+
PATHS "${LLVM_DIRECTORY}/bin" "${LLVM_DIRECTORY}/tools/llvm"
84+
- NO_CMAKE_PATH NO_DEFAULT_PATH NO_CMAKE_SYSTEM_PATH
85+
- NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_ENVIRONMENT_PATH)
86+
+ NO_CMAKE_PATH NO_CMAKE_SYSTEM_PATH
87+
+ NO_CMAKE_ENVIRONMENT_PATH)
88+
endif ()
89+
90+
if (NOT LLVM_OPT_TOOL)
91+
find_program (LLVM_OPT_TOOL NAMES "opt"
92+
PATHS "${LLVM_DIRECTORY}/bin" "${LLVM_DIRECTORY}/tools/llvm"
93+
- NO_CMAKE_PATH NO_DEFAULT_PATH NO_CMAKE_SYSTEM_PATH
94+
- NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_ENVIRONMENT_PATH)
95+
+ NO_CMAKE_PATH NO_CMAKE_SYSTEM_PATH
96+
+ NO_CMAKE_ENVIRONMENT_PATH)
97+
endif ()
98+
99+
if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
100+
@@ -150,11 +150,11 @@
101+
set (CUDA_TEXREF_FIX "-D__CLANG_CUDA_TEXTURE_INTRINSICS_H__")
102+
endif()
103+
104+
- list (TRANSFORM IMATH_INCLUDES PREPEND -I
105+
+ list (TRANSFORM Imath_INCLUDE_DIRS PREPEND -I
106+
OUTPUT_VARIABLE ALL_IMATH_INCLUDES)
107+
- list (TRANSFORM OPENEXR_INCLUDES PREPEND -I
108+
+ list (TRANSFORM OpenEXR_INCLUDE_DIRS PREPEND -I
109+
OUTPUT_VARIABLE ALL_OPENEXR_INCLUDES)
110+
- list (TRANSFORM OpenImageIO_INCLUDES PREPEND -I
111+
+ list (TRANSFORM OpenImageIO_INCLUDE_DIRS PREPEND -I
112+
OUTPUT_VARIABLE ALL_OpenImageIO_INCLUDES)
113+
114+
add_custom_command (OUTPUT ${bc_cuda}

0 commit comments

Comments
 (0)