From 52598f5f4befd5a6926986b466cf8264fb86b78c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Achard?= Date: Sat, 12 Jun 2021 15:30:36 +0100 Subject: [PATCH 1/4] Update install doc minimal version numbers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Rémi Achard --- docs/quick_start/installation.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/quick_start/installation.rst b/docs/quick_start/installation.rst index 38513488f..ad63c9c9b 100644 --- a/docs/quick_start/installation.rst +++ b/docs/quick_start/installation.rst @@ -63,18 +63,18 @@ default, cmake will try to install all of the items labelled with * and so it is not necessary to install those items manually: - cmake >= 3.12 -- \*Expat >= 2.2.5 (XML parser for CDL/CLF/CTF) +- \*Expat >= 2.2.8 (XML parser for CDL/CLF/CTF) - \*yaml-cpp >= 0.6.3 (YAML parser for Configs) -- \*IlmBase (Half only) >= 2.3.0 (for half domain LUTs) +- \*IlmBase (Half only) >= 2.4.0 (for half domain LUTs) - \*pystring >= 1.1.3 Some optional components also depend on: - \*Little CMS >= 2.2 (for ociobakelut ICC profile baking) -- \*pybind11 >= 2.4.3 (for the Python bindings) +- \*pybind11 >= 2.6.1 (for the Python bindings) - Python >= 2.7 (for the Python bindings) - Python 3.7 or 3.8 (for the docs, with the following PyPi packages) - - Sphinx + - sphinx - six - testresources - recommonmark From 8fe215901e53e5fab5be738c5ae8bb427b11369b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Achard?= Date: Sat, 12 Jun 2021 15:31:26 +0100 Subject: [PATCH 2/4] Use CMake visibility presets variables MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Rémi Achard --- CMakeLists.txt | 1 - share/cmake/modules/FindHalf.cmake | 10 +++------- share/cmake/modules/Findexpat.cmake | 13 +++++-------- share/cmake/modules/Findpystring.cmake | 10 +++------- share/cmake/modules/Findyaml-cpp.cmake | 10 ++++------ share/cmake/utils/CompilerFlags.cmake | 12 ++++++++---- 6 files changed, 23 insertions(+), 33 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c33067646..dfe16eedd 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -127,7 +127,6 @@ option(OCIO_WARNING_AS_ERROR "Set build error level for CI testing" OFF) # Optimization / internal linking preferences option(OCIO_USE_SSE "Specify whether to enable SSE CPU performance optimizations" ON) -option(OCIO_INLINES_HIDDEN "Specify whether to build with -fvisibility-inlines-hidden" ${UNIX}) ############################################################################### diff --git a/share/cmake/modules/FindHalf.cmake b/share/cmake/modules/FindHalf.cmake index 5f0e083f3..da308c023 100644 --- a/share/cmake/modules/FindHalf.cmake +++ b/share/cmake/modules/FindHalf.cmake @@ -158,13 +158,6 @@ if(NOT Half_FOUND) "${_EXT_DIST_ROOT}/${CMAKE_INSTALL_LIBDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}Half-${_Half_LIB_VER}${_Half_LIB_SUFFIX}${CMAKE_STATIC_LIBRARY_SUFFIX}") if(_Half_TARGET_CREATE) - if(UNIX) - set(Half_CXX_FLAGS "${Half_CXX_FLAGS} -fvisibility=hidden -fPIC") - if(OCIO_INLINES_HIDDEN) - set(Half_CXX_FLAGS "${Half_CXX_FLAGS} -fvisibility-inlines-hidden") - endif() - endif() - if(MSVC) set(Half_CXX_FLAGS "${Half_CXX_FLAGS} /EHsc") endif() @@ -173,6 +166,9 @@ if(NOT Half_FOUND) set(Half_CMAKE_ARGS ${Half_CMAKE_ARGS} + -DCMAKE_CXX_VISIBILITY_PRESET=${CMAKE_CXX_VISIBILITY_PRESET} + -DCMAKE_VISIBILITY_INLINES_HIDDEN=${CMAKE_VISIBILITY_INLINES_HIDDEN} + -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_CXX_FLAGS=${Half_CXX_FLAGS} -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD} diff --git a/share/cmake/modules/Findexpat.cmake b/share/cmake/modules/Findexpat.cmake index d51f71577..e29f89ec6 100644 --- a/share/cmake/modules/Findexpat.cmake +++ b/share/cmake/modules/Findexpat.cmake @@ -154,14 +154,6 @@ if(NOT expat_FOUND) "${_EXT_DIST_ROOT}/${CMAKE_INSTALL_LIBDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}expat${_expat_LIB_SUFFIX}${CMAKE_STATIC_LIBRARY_SUFFIX}") if(_expat_TARGET_CREATE) - if(UNIX) - set(EXPAT_C_FLAGS "${EXPAT_C_FLAGS} -fvisibility=hidden -fPIC") - set(EXPAT_CXX_FLAGS "${EXPAT_CXX_FLAGS} -fvisibility=hidden -fPIC") - if(OCIO_INLINES_HIDDEN) - set(EXPAT_CXX_FLAGS "${EXPAT_CXX_FLAGS} -fvisibility-inlines-hidden") - endif() - endif() - if(MSVC) set(EXPAT_C_FLAGS "${EXPAT_C_FLAGS} /EHsc") set(EXPAT_CXX_FLAGS "${EXPAT_CXX_FLAGS} /EHsc") @@ -172,6 +164,11 @@ if(NOT expat_FOUND) set(EXPAT_CMAKE_ARGS ${EXPAT_CMAKE_ARGS} + -DCMAKE_POLICY_DEFAULT_CMP0063=NEW + -DCMAKE_C_VISIBILITY_PRESET=${CMAKE_C_VISIBILITY_PRESET} + -DCMAKE_CXX_VISIBILITY_PRESET=${CMAKE_CXX_VISIBILITY_PRESET} + -DCMAKE_VISIBILITY_INLINES_HIDDEN=${CMAKE_VISIBILITY_INLINES_HIDDEN} + -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_C_FLAGS=${EXPAT_C_FLAGS} -DCMAKE_CXX_FLAGS=${EXPAT_CXX_FLAGS} diff --git a/share/cmake/modules/Findpystring.cmake b/share/cmake/modules/Findpystring.cmake index adc4d6b11..a3e396de7 100644 --- a/share/cmake/modules/Findpystring.cmake +++ b/share/cmake/modules/Findpystring.cmake @@ -88,13 +88,6 @@ if(NOT pystring_FOUND) "${_EXT_DIST_ROOT}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}pystring${CMAKE_STATIC_LIBRARY_SUFFIX}") if(_pystring_TARGET_CREATE) - if(UNIX) - set(pystring_CXX_FLAGS "${pystring_CXX_FLAGS} -fvisibility=hidden -fPIC") - if(OCIO_INLINES_HIDDEN) - set(pystring_CXX_FLAGS "${pystring_CXX_FLAGS} -fvisibility-inlines-hidden") - endif() - endif() - if(MSVC) set(pystring_CXX_FLAGS "${pystring_CXX_FLAGS} /EHsc") endif() @@ -103,6 +96,9 @@ if(NOT pystring_FOUND) set(pystring_CMAKE_ARGS ${pystring_CMAKE_ARGS} + -DCMAKE_CXX_VISIBILITY_PRESET=${CMAKE_CXX_VISIBILITY_PRESET} + -DCMAKE_VISIBILITY_INLINES_HIDDEN=${CMAKE_VISIBILITY_INLINES_HIDDEN} + -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_CXX_FLAGS=${pystring_CXX_FLAGS} -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD} diff --git a/share/cmake/modules/Findyaml-cpp.cmake b/share/cmake/modules/Findyaml-cpp.cmake index e43803514..e65939d25 100644 --- a/share/cmake/modules/Findyaml-cpp.cmake +++ b/share/cmake/modules/Findyaml-cpp.cmake @@ -159,12 +159,6 @@ if(NOT yaml-cpp_FOUND) endif() if(UNIX) - set(yaml-cpp_CXX_FLAGS "${yaml-cpp_CXX_FLAGS} -fvisibility=hidden -fPIC") - - if(OCIO_INLINES_HIDDEN) - set(yaml-cpp_CXX_FLAGS "${yaml-cpp_CXX_FLAGS} -fvisibility-inlines-hidden") - endif() - if(USE_CLANG) # Remove some global 'shadow' warnings. set(yaml-cpp_CXX_FLAGS "${yaml-cpp_CXX_FLAGS} -Wno-shadow") @@ -175,6 +169,10 @@ if(NOT yaml-cpp_FOUND) set(yaml-cpp_CMAKE_ARGS ${yaml-cpp_CMAKE_ARGS} + -DCMAKE_POLICY_DEFAULT_CMP0063=NEW + -DCMAKE_CXX_VISIBILITY_PRESET=${CMAKE_CXX_VISIBILITY_PRESET} + -DCMAKE_VISIBILITY_INLINES_HIDDEN=${CMAKE_VISIBILITY_INLINES_HIDDEN} + -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_CXX_FLAGS=${yaml-cpp_CXX_FLAGS} -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD} diff --git a/share/cmake/utils/CompilerFlags.cmake b/share/cmake/utils/CompilerFlags.cmake index b18272242..f21ecbcf7 100644 --- a/share/cmake/utils/CompilerFlags.cmake +++ b/share/cmake/utils/CompilerFlags.cmake @@ -56,10 +56,6 @@ if(USE_GCC OR USE_CLANG) set(PLATFORM_COMPILE_FLAGS "${PLATFORM_COMPILE_FLAGS} -Werror") endif() - if(OCIO_INLINES_HIDDEN) - set(PLATFORM_COMPILE_FLAGS "${PLATFORM_COMPILE_FLAGS} -fvisibility-inlines-hidden") - endif() - if(APPLE) # TODO: There are still some deprecated methods. set(PLATFORM_COMPILE_FLAGS "${PLATFORM_COMPILE_FLAGS} -Wno-deprecated-declarations") @@ -72,6 +68,14 @@ endif() mark_as_advanced(PLATFORM_COMPILE_FLAGS) +############################################################################### +# Define hidden symbol visibility by default for all targets. + +set(CMAKE_C_VISIBILITY_PRESET hidden) +set(CMAKE_CXX_VISIBILITY_PRESET hidden) +set(CMAKE_VISIBILITY_INLINES_HIDDEN YES) + + ############################################################################### # Define if SSE2 can be used. From 4a9a004681b067c88f33e42fbcc15e4a34e0d6e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Achard?= Date: Mon, 14 Jun 2021 21:24:47 +0100 Subject: [PATCH 3/4] Fix python package case MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Rémi Achard --- docs/quick_start/installation.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/quick_start/installation.rst b/docs/quick_start/installation.rst index ad63c9c9b..439ab6bd3 100644 --- a/docs/quick_start/installation.rst +++ b/docs/quick_start/installation.rst @@ -74,7 +74,7 @@ Some optional components also depend on: - \*pybind11 >= 2.6.1 (for the Python bindings) - Python >= 2.7 (for the Python bindings) - Python 3.7 or 3.8 (for the docs, with the following PyPi packages) - - sphinx + - Sphinx - six - testresources - recommonmark From 3c2331212a5a3a0061964f90344381289b2050bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Achard?= Date: Mon, 14 Jun 2021 21:26:34 +0100 Subject: [PATCH 4/4] Allow advanced user to override symbol visibility MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Rémi Achard --- share/cmake/macros/VariableUtils.cmake | 13 +++++++++++++ share/cmake/utils/CompilerFlags.cmake | 8 +++++--- 2 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 share/cmake/macros/VariableUtils.cmake diff --git a/share/cmake/macros/VariableUtils.cmake b/share/cmake/macros/VariableUtils.cmake new file mode 100644 index 000000000..7f82086ac --- /dev/null +++ b/share/cmake/macros/VariableUtils.cmake @@ -0,0 +1,13 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright Contributors to the OpenColorIO Project. +# +# General CMake utility macros. +# + +macro(set_unless_defined var_name var_default) + if(NOT DEFINED ${var_name}) + set(${var_name} ${var_default}) + else() + message(STATUS "Variable explicitly defined: ${var_name} = ${${var_name}}") + endif() +endmacro() diff --git a/share/cmake/utils/CompilerFlags.cmake b/share/cmake/utils/CompilerFlags.cmake index f21ecbcf7..3d5d8da28 100644 --- a/share/cmake/utils/CompilerFlags.cmake +++ b/share/cmake/utils/CompilerFlags.cmake @@ -71,9 +71,11 @@ mark_as_advanced(PLATFORM_COMPILE_FLAGS) ############################################################################### # Define hidden symbol visibility by default for all targets. -set(CMAKE_C_VISIBILITY_PRESET hidden) -set(CMAKE_CXX_VISIBILITY_PRESET hidden) -set(CMAKE_VISIBILITY_INLINES_HIDDEN YES) +include(VariableUtils) + +set_unless_defined(CMAKE_C_VISIBILITY_PRESET hidden) +set_unless_defined(CMAKE_CXX_VISIBILITY_PRESET hidden) +set_unless_defined(CMAKE_VISIBILITY_INLINES_HIDDEN YES) ###############################################################################