Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ jobs:
fmt_ver: 7.1.0
pybind11_ver: v2.7.0
setenvs: export PUGIXML_VERSION=v1.9 WEBP_VERSION=v1.1.0 USE_OPENVDB=0
- desc: clang10/C++14 avx2 exr3.1 ocio2.0
- desc: clang10/C++17 avx2 exr3.1 ocio2.0
nametag: linux-clang10-cpp14
runner: ubuntu-latest
container: aswf/ci-osl:2021-clang10
Expand Down Expand Up @@ -528,16 +528,17 @@ jobs:
runner: windows-2019
vsver: 2019
generator: "Visual Studio 16 2019"
openexr_ver: v3.2.4
# openexr_ver: v3.2.4
python_ver: 3.7
# simd: sse4.2
- desc: windows-2022
runner: windows-2022
vsver: 2022
generator: "Visual Studio 17 2022"
openexr_ver: v3.2.4
# openexr_ver: v3.2.4
python_ver: "3.9"
# simd: sse4.2
# setenvs: export OpenImageIO_BUILD_MISSING_DEPS=none
runs-on: ${{ matrix.runner }}
env:
PYTHON_VERSION: ${{matrix.python_ver}}
Expand Down Expand Up @@ -570,6 +571,7 @@ jobs:
path: |
build/cmake-save
build/testsuite/*/*.*
build/deps/dist/*/*.cmake
!build/testsuite/oiio-images
!build/testsuite/openexr-images
!build/testsuite/fits-images
Expand Down
6 changes: 5 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@ list (APPEND CMAKE_MODULE_PATH
include (colors)
include (set_utils)
include (check_is_enabled)
include (checked_find_package)
include (fancy_add_executable)

# If the user wants to use Conan to build dependencies, they will have done
Expand Down Expand Up @@ -169,6 +168,9 @@ include (add_oiio_plugin)
# All the C++ and compiler related options and adjustments
include (compiler)

# Dependency finding utilities and all dependency-related options
include (dependency_utils)

# Utilities and options related to finding python and making python bindings
include (pythonutils)

Expand Down Expand Up @@ -320,3 +322,5 @@ endif ()
if (PROJECT_IS_TOP_LEVEL)
include (packaging)
endif ()

print_package_notfound_report ()
1 change: 1 addition & 0 deletions src/build-scripts/build_libtiff.bash
Original file line number Diff line number Diff line change
Expand Up @@ -59,5 +59,6 @@ popd
# Set up paths. These will only affect the caller if this script is
# run with 'source' rather than in a separate shell.
export LIBTIFF_ROOT=$LIBTIFF_INSTALL_DIR
export Tiff_ROOT=$LIBTIFF_INSTALL_DIR
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${LIBTIFF_INSTALL_DIR}/lib

1 change: 1 addition & 0 deletions src/build-scripts/build_openexr.bash
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ cmake -S . -B ${OPENEXR_BUILD_DIR} \
-DCMAKE_BUILD_TYPE=${OPENEXR_BUILD_TYPE} \
-DCMAKE_INSTALL_PREFIX="${OPENEXR_INSTALL_DIR}" \
-DCMAKE_PREFIX_PATH="${CMAKE_PREFIX_PATH}" \
-DBUILD_SHARED_LIBS=${OpenEXR_LOCAL_BUILD_SHARED_LIBS:=ON} \
-DOPENEXR_BUILD_UTILS=0 \
-DBUILD_TESTING=0 \
-DOPENEXR_VIEWERS_ENABLE=0 \
Expand Down
4 changes: 3 additions & 1 deletion src/build-scripts/ci-startup.bash
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ export UBSAN_OPTIONS=suppressions=$PWD/src/build-scripts/ubsan-suppressions.txt

export PYTHON_VERSION=${PYTHON_VERSION:="3.7"}
export PYTHONPATH=$OpenImageIO_ROOT/lib/python${PYTHON_VERSION}/site-packages:$PYTHONPATH
export BUILD_MISSING_DEPS=${BUILD_MISSING_DEPS:=1}
export COMPILER=${COMPILER:=gcc}
export CC=${CC:=gcc}
export CXX=${CXX:=g++}
Expand All @@ -48,6 +47,9 @@ export DYLD_LIBRARY_PATH=${LOCAL_DEPS_DIR}/dist/lib:$DYLD_LIBRARY_PATH
# export OCIO="$PWD/testsuite/common/OpenColorIO/nuke-default/config.ocio"
export TESTSUITE_CLEANUP_ON_SUCCESS=${TESTSUITE_CLEANUP_ON_SUCCESS:=1}

# For CI, default to building missing dependencies automatically
export OpenImageIO_BUILD_MISSING_DEPS=${OpenImageIO_BUILD_MISSING_DEPS:=all}

# Sonar
export BUILD_WRAPPER_OUT_DIR="${PWD}/bw_output"
export BW_OUTPUT_DIR="${PWD}/bw_output"
Expand Down
2 changes: 1 addition & 1 deletion src/build-scripts/ci-test.bash
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ fi
# debugging info in the CI logs.
#
echo ; echo "Results of oiiotool --version:"
$OpenImageIO_ROOT/bin/oiiotool --version || true
$OpenImageIO_ROOT/bin/oiiotool --version
echo ; echo "Results of oiiotool brief help:"
$OpenImageIO_ROOT/bin/oiiotool || true
echo ; echo "Results of oiiotool full --help:"
Expand Down
22 changes: 12 additions & 10 deletions src/build-scripts/gh-win-installdeps.bash
Original file line number Diff line number Diff line change
Expand Up @@ -114,16 +114,18 @@ source src/build-scripts/build_pybind11.bash
echo "CMAKE_PREFIX_PATH = $CMAKE_PREFIX_PATH"


OPENEXR_CXX_FLAGS=" /W1 /EHsc /DWIN32=1 "
#OPENEXR_BUILD_TYPE=$CMAKE_BUILD_TYPE
OPENEXR_INSTALL_DIR=$DEP_DIR
source src/build-scripts/build_openexr.bash
export PATH="$OPENEXR_INSTALL_DIR/bin:$OPENEXR_INSTALL_DIR/lib:$PATH"
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PATH
# the above line is admittedly sketchy

cp $DEP_DIR/lib/*.lib $DEP_DIR/bin
cp $DEP_DIR/bin/*.dll $DEP_DIR/lib
if [[ "$OPENEXR_VERSION" != "" ]] ; then
OPENEXR_CXX_FLAGS=" /W1 /EHsc /DWIN32=1 "
#OPENEXR_BUILD_TYPE=$CMAKE_BUILD_TYPE
OPENEXR_INSTALL_DIR=$DEP_DIR
source src/build-scripts/build_openexr.bash
export PATH="$OPENEXR_INSTALL_DIR/bin:$OPENEXR_INSTALL_DIR/lib:$PATH"
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PATH
# the above line is admittedly sketchy
fi

cp $DEP_DIR/lib/*.lib $DEP_DIR/bin || true
cp $DEP_DIR/bin/*.dll $DEP_DIR/lib || true
echo "DEP_DIR $DEP_DIR :"
ls -R -l "$DEP_DIR"

Expand Down
15 changes: 3 additions & 12 deletions src/cmake/Config.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,11 @@ include(CMakeFindDependencyMacro)

# add here all the find_dependency() whenever switching to config based dependencies
if (NOT @OPENIMAGEIO_CONFIG_DO_NOT_FIND_IMATH@ AND NOT OPENIMAGEIO_CONFIG_DO_NOT_FIND_IMATH)
if (@OpenEXR_VERSION@ VERSION_GREATER_EQUAL 3.0)
find_dependency(Imath @Imath_VERSION@
HINTS @Imath_DIR@)
elseif (@OpenEXR_VERSION@ VERSION_GREATER_EQUAL 2.4 AND @FOUND_OPENEXR_WITH_CONFIG@)
find_dependency(IlmBase @OpenEXR_VERSION@
HINTS @IlmBase_DIR@ @OpenEXR_DIR@)
find_dependency(OpenEXR @OpenEXR_VERSION@
HINTS @OpenEXR_DIR@)
find_dependency(ZLIB @ZLIB_VERSION@) # Because OpenEXR doesn't do it
find_dependency(Threads) # Because OpenEXR doesn't do it
endif ()
find_dependency(Imath @Imath_VERSION@
HINTS @Imath_DIR@)
endif ()

if (NOT @OIIO_USING_FMT_LOCAL@ AND NOT @INTERNALIZE_FMT@)
if (NOT @fmt_LOCAL_BUILD@ AND NOT @OIIO_INTERNALIZE_FMT@)
find_dependency(fmt)
endif ()

Expand Down
47 changes: 47 additions & 0 deletions src/cmake/build_Imath.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Copyright Contributors to the OpenImageIO project.
# SPDX-License-Identifier: Apache-2.0
# https://github.com/AcademySoftwareFoundation/OpenImageIO

######################################################################
# Imath by hand!
######################################################################

set_cache (Imath_BUILD_VERSION 3.1.10 "Imath version for local builds")
set (Imath_GIT_REPOSITORY "https://github.com/AcademySoftwareFoundation/Imath")
set (Imath_GIT_TAG "v${Imath_BUILD_VERSION}")
set_cache (Imath_BUILD_SHARED_LIBS ${LOCAL_BUILD_SHARED_LIBS_DEFAULT}
DOC "Should a local Imath build, if necessary, build shared libraries" ADVANCED)

string (MAKE_C_IDENTIFIER ${Imath_BUILD_VERSION} Imath_VERSION_IDENT)

build_dependency_with_cmake(Imath
VERSION ${Imath_BUILD_VERSION}
GIT_REPOSITORY ${Imath_GIT_REPOSITORY}
GIT_TAG ${Imath_GIT_TAG}
CMAKE_ARGS
-D BUILD_SHARED_LIBS=${Imath_BUILD_SHARED_LIBS}
# Don't built unnecessary parts of Imath
-D BUILD_TESTING=OFF
-D IMATH_BUILD_EXAMPLES=OFF
-D IMATH_BUILD_PYTHON=OFF
-D IMATH_BUILD_TESTING=OFF
-D IMATH_BUILD_TOOLS=OFF
-D IMATH_INSTALL_DOCS=OFF
-D IMATH_INSTALL_PKG_CONFIG=OFF
-D IMATH_INSTALL_TOOLS=OFF
# Give the library a custom name and symbol namespace so it can't
# conflict with any others in the system or linked into the same app.
# not needed -D IMATH_NAMESPACE_CUSTOM=1
# not needed -D IMATH_INTERNAL_NAMESPACE=${PROJ_NAMESPACE_V}_Imath_${Imath_VERSION_IDENT}
-D IMATH_LIB_SUFFIX=_v${Imath_VERSION_IDENT}_${PROJ_NAMESPACE_V}
)


# Signal to caller that we need to find again at the installed location
set (Imath_REFIND TRUE)
set (Imath_REFIND_ARGS CONFIG)
set (Imath_REFIND_VERSION ${Imath_BUILD_VERSION})

if (Imath_BUILD_SHARED_LIBS)
install_local_dependency_libs (Imath Imath)
endif ()
54 changes: 54 additions & 0 deletions src/cmake/build_OpenColorIO.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# Copyright Contributors to the OpenImageIO project.
# SPDX-License-Identifier: Apache-2.0
# https://github.com/AcademySoftwareFoundation/OpenImageIO

######################################################################
# OpenColorIO by hand!
######################################################################

set_cache (OpenColorIO_BUILD_VERSION 2.3.2 "OpenColorIO version for local builds")
set (OpenColorIO_GIT_REPOSITORY "https://github.com/AcademySoftwareFoundation/OpenColorIO")
set (OpenColorIO_GIT_TAG "v${OpenColorIO_BUILD_VERSION}")
set_cache (OpenColorIO_BUILD_SHARED_LIBS ON
DOC "Should a local OpenColorIO build, if necessary, build shared libraries" ADVANCED)
# We would prefer to build a static OCIO, but haven't figured out how to make
# it all work with the static dependencies, it just makes things complicated
# downstream.

string (MAKE_C_IDENTIFIER ${OpenColorIO_BUILD_VERSION} OpenColorIO_VERSION_IDENT)

build_dependency_with_cmake(OpenColorIO
VERSION ${OpenColorIO_BUILD_VERSION}
GIT_REPOSITORY ${OpenColorIO_GIT_REPOSITORY}
GIT_TAG ${OpenColorIO_GIT_TAG}
CMAKE_ARGS
-D BUILD_SHARED_LIBS=${OpenColorIO_BUILD_SHARED_LIBS}
-D CMAKE_INSTALL_LIBDIR=lib
# Don't built unnecessary parts of OCIO
-D OCIO_BUILD_APPS=OFF
-D OCIO_BUILD_GPU_TESTS=OFF
-D OCIO_BUILD_PYTHON=OFF
-D OCIO_BUILD_TESTS=OFF
-D OCIO_USE_OIIO_FOR_APPS=OFF
-D OCIO_INSTALL_DOCS=OFF
# Make OCIO build all its dependencies statically
-D OCIO_INSTALL_EXT_PACKAGES=MISSING
# Give the library a custom name and symbol namespace so it can't
# conflict with any others in the system or linked into the same app.
-D OCIO_NAMESPACE=${PROJ_NAMESPACE_V}_OpenColorIO
-D OCIO_LIBNAME_SUFFIX=_v${OpenColorIO_VERSION_IDENT}_${PROJ_NAMESPACE_V}
)

# Set some things up that we'll need for a subsequent find_package to work

#list (APPEND CMAKE_PREFIX_PATH ${OpenColorIO_LOCAL_INSTALL_DIR})
set (OpenColorIO_ROOT ${OpenColorIO_LOCAL_INSTALL_DIR})
set (OpenColorIO_DIR ${OpenColorIO_LOCAL_INSTALL_DIR})

# Signal to caller that we need to find again at the installed location
set (OpenColorIO_REFIND TRUE)
set (OpenColorIO_REFIND_ARGS CONFIG)

if (OpenColorIO_BUILD_SHARED_LIBS)
install_local_dependency_libs (OpenColorIO OpenColorIO)
endif ()
53 changes: 53 additions & 0 deletions src/cmake/build_OpenEXR.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# Copyright Contributors to the OpenImageIO project.
# SPDX-License-Identifier: Apache-2.0
# https://github.com/AcademySoftwareFoundation/OpenImageIO


set_cache (OpenEXR_BUILD_VERSION 3.2.4 "OpenEXR version for local builds")
set (OpenEXR_GIT_REPOSITORY "https://github.com/AcademySoftwareFoundation/OpenEXR")
set (OpenEXR_GIT_TAG "v${OpenEXR_BUILD_VERSION}")
set_cache (OpenEXR_BUILD_SHARED_LIBS ${LOCAL_BUILD_SHARED_LIBS_DEFAULT}
DOC "Should a local OpenEXR build, if necessary, build shared libraries" ADVANCED)

string (MAKE_C_IDENTIFIER ${OpenEXR_BUILD_VERSION} OpenEXR_VERSION_IDENT)

build_dependency_with_cmake(OpenEXR
VERSION ${OpenEXR_BUILD_VERSION}
GIT_REPOSITORY ${OpenEXR_GIT_REPOSITORY}
GIT_TAG ${OpenEXR_GIT_TAG}
CMAKE_ARGS
-D BUILD_SHARED_LIBS=${OpenEXR_BUILD_SHARED_LIBS}
-D OPENEXR_FORCE_INTERNAL_DEFLATE=ON
# Don't built unnecessary parts of OpenEXR
-D BUILD_TESTING=OFF
-D BUILD_WEBSITE=OFF
-D OPENEXR_BUILD_EXAMPLES=OFF
-D OPENEXR_BUILD_PYTHON=OFF
-D OPENEXR_BUILD_SHARED_LIBS=OFF
-D OPENEXR_BUILD_TOOLS=OFF
-D OPENEXR_BUILD_WEBSITE=OFF
-D OPENEXR_INSTALL_DOCS=OFF
-D OPENEXR_INSTALL_PKG_CONFIG=OFF
-D OPENEXR_INSTALL_TOOLS=OFF
# Give the library a custom name and symbol namespace so it can't
# conflict with any others in the system or linked into the same app.
-D OPENEXR_NAMESPACE_CUSTOM=1
-D ILMTHREAD_NAMESPACE_CUSTOM=1
-D IEX_NAMESPACE_CUSTOM=1
-D OPENEXR_INTERNAL_IMF_NAMESPACE=${PROJ_NAMESPACE_V}_Imf_${OpenEXR_VERSION_IDENT}
-D ILMTHREAD_INTERNAL_NAMESPACE=${PROJ_NAMESPACE_V}_IlmThread_${OpenEXR_VERSION_IDENT}
-D Iex_INTERNAL_NAMESPACE=${PROJ_NAMESPACE_V}_Iex_${OpenEXR_VERSION_IDENT}
-D OPENEXR_LIB_SUFFIX=_v${OpenEXR_VERSION_IDENT}_${PROJ_NAMESPACE_V}
)


# Signal to caller that we need to find again at the installed location
set (OpenEXR_REFIND TRUE)
set (OpenEXR_REFIND_ARGS CONFIG)
set (OpenEXR_REFIND_VERSION ${OpenEXR_BUILD_VERSION})

if (OpenEXR_BUILD_SHARED_LIBS)
install_local_dependency_libs (OpenEXR OpenEXR)
install_local_dependency_libs (OpenEXR IlmThread)
install_local_dependency_libs (OpenEXR Iex)
endif ()
24 changes: 24 additions & 0 deletions src/cmake/build_Robinmap.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Copyright Contributors to the OpenImageIO project.
# SPDX-License-Identifier: Apache-2.0
# https://github.com/AcademySoftwareFoundation/OpenImageIO

######################################################################
# Robinmap by hand!
######################################################################

set_cache (Robinmap_BUILD_VERSION 1.3.0 "Robinmap version for local builds")
set (Robinmap_GIT_REPOSITORY "https://github.com/Tessil/robin-map")
set (Robinmap_GIT_TAG "v${Robinmap_BUILD_VERSION}")

build_dependency_with_cmake(Robinmap
VERSION ${Robinmap_BUILD_VERSION}
GIT_REPOSITORY ${Robinmap_GIT_REPOSITORY}
GIT_TAG ${Robinmap_GIT_TAG}
# CMAKE_ARGS
)

# Set some things up that we'll need for a subsequent find_package to work
set (Robinmap_ROOT ${Robinmap_INSTALL_DIR})

# Signal to caller that we need to find again at the installed location
set (Robinmap_REFIND TRUE)
29 changes: 29 additions & 0 deletions src/cmake/build_fmt.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Copyright Contributors to the OpenImageIO project.
# SPDX-License-Identifier: Apache-2.0
# https://github.com/AcademySoftwareFoundation/OpenImageIO

######################################################################
# fmt by hand!
######################################################################

set_cache (fmt_BUILD_VERSION 10.2.1 "fmt version for local builds")
set (fmt_GIT_REPOSITORY "https://github.com/fmtlib/fmt")
set (fmt_GIT_TAG "${fmt_BUILD_VERSION}")
# Note: fmt doesn't put "v" in front of version for its git tags

build_dependency_with_cmake(fmt
VERSION ${fmt_BUILD_VERSION}
GIT_REPOSITORY ${fmt_GIT_REPOSITORY}
GIT_TAG ${fmt_GIT_TAG}
CMAKE_ARGS
# -D CMAKE_INSTALL_LIBDIR=lib
# Don't built unnecessary parts of fmt
-D FMT_DOC=OFF
-D FMT_TEST=OFF
)

# Set some things up that we'll need for a subsequent find_package to work
set (fmt_ROOT ${fmt_INSTALL_DIR})

# Signal to caller that we need to find again at the installed location
set (fmt_REFIND TRUE)
Loading