Merge topic 'allow-skip-version-links'

09d5b9471 cmake: allow VTK to skip soname links for libraries

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Vicente Bolea <vicente.bolea@kitware.com>
Merge-request: !2563
This commit is contained in:
Ben Boeckel 2021-08-26 17:58:25 +00:00 committed by Kitware Robot
commit 73353fea70
4 changed files with 25 additions and 5 deletions

@ -480,9 +480,11 @@ function(vtkm_library)
set_property(TARGET ${lib_name} PROPERTY BUILD_RPATH ${CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES})
endif()
if (NOT VTKm_SKIP_LIBRARY_VERSIONS)
# Setup the SOVERSION and VERSION information for this vtkm library
set_property(TARGET ${lib_name} PROPERTY VERSION 1)
set_property(TARGET ${lib_name} PROPERTY SOVERSION 1)
endif ()
# Support custom library suffix names, for other projects wanting to inject
# their own version numbers etc.

@ -157,6 +157,10 @@ vtkm_option(VTKm_NO_INSTALL_README_LICENSE "disable the installation of README a
# and this option will be removed.
vtkm_option(VTKm_NO_DEPRECATED_VIRTUAL "Do not compile support of deprecated virtual methods" OFF)
# In Python wheels, having SONAME suffixes just ends up duplicating files.
# Allow VTK to turn off these symlinks for its wheel distribution.
vtkm_option(VTKm_SKIP_LIBRARY_VERSIONS "Skip versioning VTK-m libraries" OFF)
mark_as_advanced(
VTKm_ENABLE_LOGGING
VTKm_NO_ASSERT
@ -167,6 +171,7 @@ mark_as_advanced(
VTKm_ENABLE_DEVELOPER_FLAGS
VTKm_NO_INSTALL_README_LICENSE
VTKm_NO_DEPRECATED_VIRTUAL
VTKm_SKIP_LIBRARY_VERSIONS
)
#-----------------------------------------------------------------------------

@ -0,0 +1,8 @@
# skip library versions
The `VTKm_SKIP_LIBRARY_VERSIONS` variable is now available to skip the SONAME
and SOVERSION fields (or the equivalent for non-ELF platforms).
Some deployments (e.g., Python wheels or Java `.jar` files) do not support
symlinks reliably and the way the libraries get loaded just leads to
unnecessary files in the packaged artifact.

@ -30,10 +30,15 @@ set_target_properties(vtkm_lodepng
LIBRARY_OUTPUT_DIRECTORY ${VTKm_LIBRARY_OUTPUT_PATH}
ARCHIVE_OUTPUT_DIRECTORY ${VTKm_LIBRARY_OUTPUT_PATH}
RUNTIME_OUTPUT_DIRECTORY ${VTKm_EXECUTABLE_OUTPUT_PATH}
VERSION 1
SOVERSION 1
POSITION_INDEPENDENT_CODE ON
)
if (NOT VTKm_SKIP_LIBRARY_VERSIONS)
set_target_properties(vtkm_lodepng
PROPERTIES
VERSION 1
SOVERSION 1
)
endif ()
target_include_directories(vtkm_lodepng INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:${VTKm_INSTALL_INCLUDE_DIR}/vtkm/thirdparty/lodepng>