Skip to content

Commit 237c517

Browse files
authored
Merge branch 'main' into dependabot/github_actions/actions/checkout-6.0.1
2 parents 5d657e6 + e688828 commit 237c517

File tree

102 files changed

+40198
-226
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

102 files changed

+40198
-226
lines changed

.github/workflows/codeql.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ jobs:
6565
# cary: Pin the version to the SHA for 2.18.0, since there appears to
6666
# be a problem with 2.18.1 leading to a "No space left on
6767
# device" failure
68-
uses: github/codeql-action/init@fdbfb4d2750291e159f0156def62b853c2798ca2 # v4.31.5
68+
uses: github/codeql-action/init@cf1bb45a277cb3c205638b2cd5c984db1c46a412 # v4.31.7
6969
with:
7070
# cary: the "linked" setting is necessary to force the run to pick up
7171
# the version specified in the action.
@@ -96,6 +96,6 @@ jobs:
9696
9797
- name: Perform CodeQL Analysis
9898
# Pin the version to the SHA for 2.18.0
99-
uses: github/codeql-action/analyze@fdbfb4d2750291e159f0156def62b853c2798ca2 # v4.31.5
99+
uses: github/codeql-action/analyze@cf1bb45a277cb3c205638b2cd5c984db1c46a412 # v4.31.7
100100
with:
101101
category: "/language:${{matrix.language}}"

.github/workflows/release-sign.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ jobs:
5555
run: git archive --format=tar.gz -o ${OPENEXR_TARBALL} --prefix ${OPENEXR_PREFIX} ${TAG}
5656

5757
- name: Sign archive with Sigstore
58-
uses: sigstore/gh-action-sigstore-python@f832326173235dcb00dd5d92cd3f353de3188e6c # v3.1.0
58+
uses: sigstore/gh-action-sigstore-python@a5caf349bc536fbef3668a10ed7f5cd309a4b53d # v3.2.0
5959
with:
6060
inputs: ${{ env.OPENEXR_TARBALL }}
6161
upload-signing-artifacts: false

.github/workflows/scorecard.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,6 @@ jobs:
5454

5555
# Upload the results to GitHub's code scanning dashboard.
5656
- name: "Upload to code-scanning"
57-
uses: github/codeql-action/upload-sarif@fdbfb4d2750291e159f0156def62b853c2798ca2 # v4.31.5
57+
uses: github/codeql-action/upload-sarif@cf1bb45a277cb3c205638b2cd5c984db1c46a412 # v4.31.7
5858
with:
5959
sarif_file: results.sarif

BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ expand_template(
6262
"@OPENEXR_VERSION_MINOR@": "4",
6363
"@OPENEXR_VERSION_PATCH@": "0",
6464
"#cmakedefine OPENEXR_ENABLE_API_VISIBILITY": "#define OPENEXR_ENABLE_API_VISIBILITY",
65+
"#cmakedefine OPENEXR_CORE_FUNCTIONS_EMBEDDED": "/* #undef OPENEXR_CORE_FUNCTIONS_EMBEDDED */",
6566
"#cmakedefine OPENEXR_HAVE_LARGE_STACK 1": "/* #undef OPENEXR_HAVE_LARGE_STACK */",
6667
},
6768
template = "cmake/OpenEXRConfig.h.in",

MODULE.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ module(
77
)
88

99
bazel_dep(name = "bazel_skylib", version = "1.8.2")
10-
bazel_dep(name = "imath", version = "3.2.2")
10+
bazel_dep(name = "imath", version = "3.2.2.bcr.1")
1111
bazel_dep(name = "libdeflate", version = "1.25")
1212
bazel_dep(name = "openjph", version = "0.25.3")
1313
bazel_dep(name = "platforms", version = "1.0.0")

cmake/CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,11 @@ if (OPENEXR_USE_DEFAULT_VISIBILITY)
6363
else()
6464
set(OPENEXR_ENABLE_API_VISIBILITY ON)
6565
endif()
66+
if (OPENEXR_FORCE_EMBEDDED_CORE)
67+
set(OPENEXR_CORE_FUNCTIONS_EMBEDDED ON)
68+
else()
69+
set(OPENEXR_CORE_FUNCTIONS_EMBEDDED OFF)
70+
endif()
6671

6772
if (UNIX AND NOT APPLE AND NOT BEOS)
6873
find_library(OPENEXR_EXTRA_MATH_LIB m)

cmake/LibraryDefine.cmake

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# NB: This function has a number of Imath-specific names/variables
55
# in it, so be careful copying...
66
function(OPENEXR_DEFINE_LIBRARY libname)
7-
set(options)
7+
set(options EMBEDDED)
88
set(oneValueArgs PRIV_EXPORT CURDIR CURBINDIR)
99
set(multiValueArgs SOURCES HEADERS DEPENDENCIES PRIVATE_DEPS)
1010
cmake_parse_arguments(OPENEXR_CURLIB "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
@@ -13,7 +13,12 @@ function(OPENEXR_DEFINE_LIBRARY libname)
1313
set(_openexr_extra_flags "$<$<COMPILE_LANGUAGE:CXX>:/EHsc>" "$<$<COMPILE_LANGUAGE:CXX>:/MP>")
1414
endif()
1515
set(objlib ${libname})
16-
add_library(${objlib}
16+
if(OPENEXR_CURLIB_EMBEDDED)
17+
set(libopts STATIC)
18+
else()
19+
set(libopts)
20+
endif()
21+
add_library(${objlib} ${libopts}
1722
${OPENEXR_CURLIB_HEADERS}
1823
${OPENEXR_CURLIB_SOURCES})
1924

@@ -24,7 +29,9 @@ function(OPENEXR_DEFINE_LIBRARY libname)
2429
PRIVATE cxx_std_${OPENEXR_CXX_STANDARD}
2530
INTERFACE cxx_std_17 )
2631

27-
if(OPENEXR_CURLIB_PRIV_EXPORT AND BUILD_SHARED_LIBS)
32+
if(OPENEXR_CURLIB_EMBEDDED)
33+
set(libopts)
34+
elseif(OPENEXR_CURLIB_PRIV_EXPORT AND BUILD_SHARED_LIBS)
2835
target_compile_definitions(${objlib} PRIVATE ${OPENEXR_CURLIB_PRIV_EXPORT})
2936
if(WIN32)
3037
target_compile_definitions(${objlib} PUBLIC OPENEXR_DLL)
@@ -46,7 +53,7 @@ function(OPENEXR_DEFINE_LIBRARY libname)
4653
CXX_EXTENSIONS OFF
4754
POSITION_INDEPENDENT_CODE ON
4855
)
49-
if (NOT OPENEXR_USE_DEFAULT_VISIBILITY)
56+
if (OPENEXR_CURLIB_EMBEDDED OR NOT OPENEXR_USE_DEFAULT_VISIBILITY)
5057
set_target_properties(${objlib} PROPERTIES
5158
C_VISIBILITY_PRESET hidden
5259
CXX_VISIBILITY_PRESET hidden
@@ -60,7 +67,7 @@ function(OPENEXR_DEFINE_LIBRARY libname)
6067
endif()
6168
set_property(TARGET ${objlib} PROPERTY PUBLIC_HEADER ${OPENEXR_CURLIB_HEADERS})
6269

63-
if(BUILD_SHARED_LIBS)
70+
if(BUILD_SHARED_LIBS AND NOT OPENEXR_CURLIB_EMBEDDED)
6471
set_target_properties(${libname} PROPERTIES
6572
SOVERSION ${OPENEXR_LIB_SOVERSION}
6673
VERSION ${OPENEXR_LIB_VERSION}
@@ -70,7 +77,6 @@ function(OPENEXR_DEFINE_LIBRARY libname)
7077
OUTPUT_NAME "${libname}${OPENEXR_LIB_SUFFIX}"
7178
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
7279
)
73-
add_library(${PROJECT_NAME}::${libname} ALIAS ${libname})
7480

7581
if(OPENEXR_INSTALL)
7682
install(TARGETS ${libname}
@@ -83,7 +89,9 @@ function(OPENEXR_DEFINE_LIBRARY libname)
8389
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${OPENEXR_OUTPUT_SUBDIR}
8490
)
8591
endif()
86-
if(BUILD_SHARED_LIBS AND (NOT "${OPENEXR_LIB_SUFFIX}" STREQUAL "") AND NOT WIN32)
92+
if(OPENEXR_CURLIB_EMBEDDED)
93+
set(libopts)
94+
elseif(BUILD_SHARED_LIBS AND (NOT "${OPENEXR_LIB_SUFFIX}" STREQUAL "") AND NOT WIN32)
8795
string(TOUPPER "${CMAKE_BUILD_TYPE}" uppercase_CMAKE_BUILD_TYPE)
8896
set(verlibname ${CMAKE_SHARED_LIBRARY_PREFIX}${libname}${OPENEXR_LIB_SUFFIX}${CMAKE_${uppercase_CMAKE_BUILD_TYPE}_POSTFIX}${CMAKE_SHARED_LIBRARY_SUFFIX})
8997
set(baselibname ${CMAKE_SHARED_LIBRARY_PREFIX}${libname}${CMAKE_${uppercase_CMAKE_BUILD_TYPE}_POSTFIX}${CMAKE_SHARED_LIBRARY_SUFFIX})
@@ -93,4 +101,6 @@ function(OPENEXR_DEFINE_LIBRARY libname)
93101
set(verlibname)
94102
set(baselibname)
95103
endif()
104+
105+
add_library(${PROJECT_NAME}::${libname} ALIAS ${libname})
96106
endfunction()

cmake/OpenEXRConfig.h.in

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@
9393
// tagged
9494
#cmakedefine OPENEXR_ENABLE_API_VISIBILITY
9595

96+
#cmakedefine OPENEXR_CORE_FUNCTIONS_EMBEDDED
97+
9698
/// \defgroup ExportMacros Macros to manage symbol visibility
9799
///
98100
/// See website/SymbolVisibility.rst for more discussion about the

cmake/OpenEXRSetup.cmake

Lines changed: 15 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -256,8 +256,6 @@ endif()
256256
#######################################
257257

258258
option(OPENEXR_FORCE_INTERNAL_OPENJPH "Force downloading OpenJPH from a git repo" OFF)
259-
set(OPENEXR_OPENJPH_REPO "https://github.com/aous72/OpenJPH.git" CACHE STRING "OpenJPH git repo URI")
260-
set(OPENEXR_OPENJPH_TAG "master" CACHE STRING "OpenJPH git repo tag")
261259

262260
if (NOT OPENEXR_FORCE_INTERNAL_OPENJPH)
263261
find_package(openjph CONFIG QUIET)
@@ -276,68 +274,21 @@ if (NOT OPENEXR_FORCE_INTERNAL_OPENJPH)
276274
pkg_check_modules(openjph IMPORTED_TARGET GLOBAL QUIET openjph=0.21)
277275
if(openjph_FOUND)
278276
set(EXR_OPENJPH_LIB PkgConfig::openjph)
279-
message(STATUS "Using OpenJPH from ${openjph_LINK_LIBRARIES}")
277+
message(STATUS "Using OpenJPH ${openjph_VERSION} from ${openjph_LINK_LIBRARIES}")
280278
endif()
281279
endif()
282280
endif()
283281
endif()
284282

285-
if(NOT EXR_OPENJPH_LIB)
286-
# Using internal OpenJPH
287-
if(OPENEXR_FORCE_INTERNAL_OPENJPH)
288-
message(STATUS "OpenJPH forced internal, fetching from ${OPENEXR_OPENJPH_REPO} @ ${OPENEXR_OPENJPH_TAG}")
289-
else()
290-
message(STATUS "OpenJPH was not found, fetching from ${OPENEXR_OPENJPH_REPO} @ ${OPENEXR_OPENJPH_TAG}")
291-
endif()
292-
293-
include(FetchContent)
294-
FetchContent_Declare(
295-
openjph
296-
GIT_REPOSITORY ${OPENEXR_OPENJPH_REPO}
297-
GIT_TAG ${OPENEXR_OPENJPH_TAG}
298-
)
299-
300-
set(OJPH_BUILD_TESTS OFF CACHE BOOL "" FORCE)
301-
set(OJPH_ENABLE_TIFF_SUPPORT OFF CACHE BOOL "" FORCE)
302-
set(OJPH_BUILD_EXECUTABLES OFF CACHE BOOL "" FORCE)
303-
FetchContent_MakeAvailable(openjph)
304-
install(
305-
TARGETS openjph
306-
EXPORT ${PROJECT_NAME}
307-
)
308-
set_target_properties(openjph PROPERTIES
309-
POSITION_INDEPENDENT_CODE ON
310-
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
311-
)
312-
313-
# OpenEXR expects OpenJPH headers to live in an openjph folder,
314-
# so OpenEXR's include looks like:
315-
# #include <openjph/openjph_arch.h>
316-
# However, when building OpenJPH via FetchContent, the headers
317-
# reside in src/core/common directory in the OpenJPH source tree.
318-
# Create a symlink called "openjph" that points to "common", so the
319-
# OpenEXR includes see the files they expect.
320-
# Then add that as the include directory.
321-
#
322-
# NOTE: This can go away when we vendor in the OpenJPH code and
323-
# retire the FetchContent altogether.
324-
file(CREATE_LINK
325-
"${openjph_SOURCE_DIR}/src/core/common"
326-
"${openjph_SOURCE_DIR}/src/core/openjph"
327-
RESULT openjph_create_link_result
328-
SYMBOLIC
329-
)
330-
# Creating a symlink may fail, for example on Windows without developer
331-
# mode enabled, so fallback to copying in that case.
332-
if (NOT openjph_create_link_result EQUAL 0)
333-
file(COPY
334-
"${openjph_SOURCE_DIR}/src/core/common/"
335-
DESTINATION "${openjph_SOURCE_DIR}/src/core/openjph"
336-
)
337-
endif()
338-
include_directories("${openjph_SOURCE_DIR}/src/core")
283+
if(EXR_OPENJPH_LIB)
284+
# Using external library
285+
# For OpenEXR.pc.in for static build
286+
set(EXR_OPENJPH_PKGCONFIG_REQUIRES "openjph >= 0.21.0")
287+
else()
288+
# Using internal openjph
339289

340290
# extract the openjph version variables from ojph_version.h
291+
set(openjph_SOURCE_DIR "${CMAKE_SOURCE_DIR}/external/openjph")
341292
set(openjph_version "${openjph_SOURCE_DIR}/src/core/common/ojph_version.h")
342293
if(EXISTS "${openjph_version}")
343294
file(STRINGS "${openjph_version}" _openjph_major REGEX "#define OPENJPH_VERSION_MAJOR")
@@ -348,31 +299,15 @@ if(NOT EXR_OPENJPH_LIB)
348299
string(REGEX REPLACE ".*OPENJPH_VERSION_PATCH[ \t]+([0-9]+).*" "\\1" openjph_VERSION_PATCH "${_openjph_patch}")
349300
endif()
350301

351-
set(EXR_OPENJPH_LIB openjph)
352-
endif()
353-
354-
if (NOT EXR_OPENJPH_LIB)
355-
message(ERROR "Failed to find OpenJPH")
356-
endif()
357-
358-
if (openjph_VERSION VERSION_LESS "0.23")
359-
# OpenJPH 0.22 and before incorrectly appends "openjph" to INTERFACE_INCLUDE_DIRECTORIES
360-
# so OpenEXR's "#include <openjph/ojph_arch.h>" does not work.
361-
# Strip the "openjph" from the setting in this case. This allows the
362-
# #include statements in OpenEXRCore/internal_ht.cpp to work properly for all openjph versions.
363-
get_target_property(OPENJPH_INCLUDE_DIR openjph INTERFACE_INCLUDE_DIRECTORIES)
364-
if (NOT OPENJPH_INCLUDE_DIR)
365-
message(FATAL_ERROR "failed to set openjph header directory, version ${openjph_VERSION}")
302+
set(openjph_VERSION "${openjph_VERSION_MAJOR}.${openjph_VERSION_MINOR}.${openjph_VERSION_PATCH}")
303+
304+
if(OPENEXR_FORCE_INTERNAL_OPENJPH)
305+
message(STATUS "openjph forced internal, using vendored code (${openjph_VERSION})")
306+
else()
307+
message(STATUS "openjph was not found, using vendored code (${openjph_VERSION})")
366308
endif()
367-
string(REGEX REPLACE "/openjph/?$" "" OPENJPH_PARENT_INCLUDE_DIR "${OPENJPH_INCLUDE_DIR}")
368-
set_target_properties(openjph PROPERTIES
369-
INTERFACE_INCLUDE_DIRECTORIES "${OPENJPH_PARENT_INCLUDE_DIR}"
370-
)
371-
unset(OPENJPH_INCLUDE_DIR)
372-
unset(OPENJPH_PARENT_INCLUDE_DIR)
373-
endif()
374309

375-
set(EXR_OPENJPH_PKGCONFIG_REQUIRES "openjph >= 0.21.0")
310+
endif()
376311

377312
#######################################
378313
# Find or install Imath

0 commit comments

Comments
 (0)