CMake: improve multiarch support

In testing on Alpine, I found that most libs were installing to
<prefix>/lib while libclamav installed to <prefix>/lib64. Those who like
multiarch will advocate for lib64, though I only actually noticed it
because clamscan failed to find libclamav.so! Anyways, they should all
install to lib64 by default if that's what how the system is set up.
Using ${CMAKE_INSTALL_FULL_LIBDIR} instead of <prefix>/lib will do that.
This commit is contained in:
Micah Snyder 2021-02-08 09:39:06 -08:00
parent 5d4d8b03b5
commit 05a8d589e7
16 changed files with 31 additions and 28 deletions

View file

@ -159,7 +159,14 @@ endif()
if(APPLE)
set(CMAKE_MACOSX_RPATH 1)
endif()
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
include(GNUInstallDirs)
if(CMAKE_INSTALL_FULL_LIBDIR)
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_FULL_LIBDIR}")
else()
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
endif()
if(C_LINUX)
if(CMAKE_COMPILER_IS_GNUCXX)
@ -348,8 +355,6 @@ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
"None" "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
endif()
include(GNUInstallDirs)
# Always use '-fPIC'/'-fPIE' option.
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
@ -714,7 +719,7 @@ else()
${CMAKE_CURRENT_BINARY_DIR}/clamav-config
@ONLY)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/clamav-config"
DESTINATION "${CMAKE_INSTALL_BINDIR}"
DESTINATION "${CMAKE_INSTALL_BINDIR}"
PERMISSIONS
OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
@ -814,8 +819,8 @@ endif()
if(WIN32)
# Include the license(s) in the installation
install(FILES ${CMAKE_SOURCE_DIR}/COPYING.txt DESTINATION ".")
install(DIRECTORY ${CMAKE_SOURCE_DIR}/COPYING DESTINATION ".")
install(FILES ${CMAKE_SOURCE_DIR}/COPYING.txt DESTINATION .)
install(DIRECTORY ${CMAKE_SOURCE_DIR}/COPYING DESTINATION .)
endif()
#

View file

@ -45,7 +45,7 @@ target_link_libraries( clamd
if(WIN32)
install(TARGETS clamd DESTINATION .)
else()
install(TARGETS clamd DESTINATION sbin)
install(TARGETS clamd DESTINATION ${CMAKE_INSTALL_SBINDIR})
endif()
if(SYSTEMD_FOUND)

View file

@ -34,5 +34,5 @@ target_link_libraries( clamdscan
if(WIN32)
install(TARGETS clamdscan DESTINATION .)
else()
install(TARGETS clamdscan DESTINATION bin)
install(TARGETS clamdscan DESTINATION ${CMAKE_INSTALL_BINDIR})
endif()

View file

@ -54,5 +54,5 @@ if(WIN32)
#message("UNRESOLVED_DEPENDENCIES_VAR: ${_u_deps}")
]])
else()
install(TARGETS clamdtop DESTINATION bin)
install(TARGETS clamdtop DESTINATION ${CMAKE_INSTALL_BINDIR})
endif()

View file

@ -49,7 +49,7 @@ target_link_libraries( clamonacc
ClamAV::libclamav
ClamAV::shared
CURL::libcurl )
install(TARGETS clamonacc DESTINATION sbin)
install(TARGETS clamonacc DESTINATION ${CMAKE_INSTALL_SBINDIR})
if(SYSTEMD_FOUND)
configure_file(

View file

@ -33,5 +33,5 @@ target_link_libraries( clamscan
if(WIN32)
install(TARGETS clamscan DESTINATION .)
else()
install(TARGETS clamscan DESTINATION bin)
install(TARGETS clamscan DESTINATION ${CMAKE_INSTALL_BINDIR})
endif()

View file

@ -62,5 +62,5 @@ if(WIN32)
#message("UNRESOLVED_DEPENDENCIES_VAR: ${_u_deps}")
]])
else()
install(TARGETS clamsubmit DESTINATION bin)
install(TARGETS clamsubmit DESTINATION ${CMAKE_INSTALL_BINDIR})
endif()

View file

@ -21,7 +21,7 @@ if(ENABLE_MAN_PAGES)
configure_file(man/clamd.8.in man/clamd.8)
configure_file(man/clamav-milter.8.in man/clamav-milter.8)
if(C_LINUX)
configure_file(man/clamonacc.8.in man/clamonacc.8)
configure_file(man/clamonacc.8.in man/clamonacc.8)
endif()
set(MAN1_FILES
@ -38,7 +38,7 @@ if(ENABLE_MAN_PAGES)
FILES
${CMAKE_CURRENT_BINARY_DIR}/${m}
DESTINATION
${CMAKE_INSTALL_PREFIX}/share/man/man1)
${CMAKE_INSTALL_MANDIR}/man1)
endforeach()
set(MAN5_FILES
@ -50,7 +50,7 @@ if(ENABLE_MAN_PAGES)
FILES
${CMAKE_CURRENT_BINARY_DIR}/${m}
DESTINATION
${CMAKE_INSTALL_PREFIX}/share/man/man5)
${CMAKE_INSTALL_MANDIR}/man5)
endforeach()
set(MAN8_FILES
@ -61,7 +61,7 @@ if(ENABLE_MAN_PAGES)
FILES
${CMAKE_CURRENT_BINARY_DIR}/${m}
DESTINATION
${CMAKE_INSTALL_PREFIX}/share/man/man8)
${CMAKE_INSTALL_MANDIR}/man8)
endforeach()
if(C_LINUX)
@ -70,7 +70,7 @@ if(ENABLE_MAN_PAGES)
FILES
${CMAKE_CURRENT_BINARY_DIR}/man/clamonacc.8
DESTINATION
${CMAKE_INSTALL_PREFIX}/share/man/man8)
${CMAKE_INSTALL_MANDIR}/man8)
endif()
endif()
@ -105,7 +105,7 @@ if(WIN32)
# When built from the release tarball, this includes the user manual
# which is exported from the clamav-faq repo.
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/html/UserManual.html)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/html/UserManual.html DESTINATION ".")
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/html/UserManual DESTINATION ".")
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/html/UserManual.html DESTINATION .)
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/html/UserManual DESTINATION .)
endif()
endif()

View file

@ -32,7 +32,7 @@ target_link_libraries(freshclam-bin
if(WIN32)
install(TARGETS freshclam-bin DESTINATION .)
else()
install(TARGETS freshclam-bin DESTINATION bin)
install(TARGETS freshclam-bin DESTINATION ${CMAKE_INSTALL_BINDIR})
endif()
# Install an empty database directory

View file

@ -72,7 +72,7 @@ if(ENABLE_SHARED_LIB)
if(WIN32)
install(TARGETS mspack DESTINATION .)
else()
install(TARGETS mspack DESTINATION lib)
install(TARGETS mspack DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
# Public (forwarded) dependencies.

View file

@ -92,7 +92,7 @@ if(ENABLE_SHARED_LIB)
if(WIN32)
install(TARGETS clamunrar DESTINATION .)
else()
install(TARGETS clamunrar DESTINATION lib)
install(TARGETS clamunrar DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
add_library( ClamAV::libunrar ALIAS clamunrar )

View file

@ -66,7 +66,7 @@ if(ENABLE_UNRAR)
if(WIN32)
install(TARGETS clamunrar_iface DESTINATION .)
else()
install(TARGETS clamunrar_iface DESTINATION lib)
install(TARGETS clamunrar_iface DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
add_library( ClamAV::libunrar_iface ALIAS clamunrar_iface )

View file

@ -94,7 +94,7 @@ if(ENABLE_SHARED_LIB)
#message("UNRESOLVED_DEPENDENCIES_VAR: ${_u_deps}")
]])
else()
install(TARGETS freshclam DESTINATION lib)
install(TARGETS freshclam DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
add_library( ClamAV::libfreshclam ALIAS freshclam )
@ -117,7 +117,7 @@ if(ENABLE_STATIC_LIB)
if(WIN32)
install(TARGETS freshclam_static DESTINATION .)
else()
install(TARGETS freshclam_static DESTINATION lib)
install(TARGETS freshclam_static DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
add_library( ClamAV::libfreshclam_static ALIAS freshclam_static )

View file

@ -32,5 +32,5 @@ target_link_libraries( sigtool
if(WIN32)
install(TARGETS sigtool DESTINATION .)
else()
install(TARGETS sigtool DESTINATION bin)
install(TARGETS sigtool DESTINATION ${CMAKE_INSTALL_BINDIR})
endif()

View file

@ -68,7 +68,6 @@ function(assemble_testfile test_file)
--split_dir ${CMAKE_CURRENT_SOURCE_DIR}/.split
COMMENT "Assembling test file ${test_file} of ${original}")
add_custom_target(tgt_${test_file} ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${test_file})
#install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${test_file} DESTINATION ${CMAKE_INSTALL_BINDIR})
endfunction()
foreach(TESTFILE ${TESTFILES})

View file

@ -17,7 +17,6 @@ function(assemble_testfile test_file)
--split_dir ${CMAKE_CURRENT_SOURCE_DIR}/.split
COMMENT "Assembling test file ${test_file} of ${original}")
add_custom_target(tgt_${test_file} ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${test_file})
#install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${test_file} DESTINATION ${CMAKE_INSTALL_BINDIR})
endfunction()
foreach(TESTFILE ${TESTFILES})