From 2839fee403d45a809aaab0b792ee8c6aae6bbb7f Mon Sep 17 00:00:00 2001
From: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
Date: Wed, 6 Sep 2023 19:17:24 +0200
Subject: Add a version script for libclamunrar and libclamunrar_iface.

Without a version script all symbols will be exported which are public
within the libclamunrar* libraries. This is true for the officially exported
symbols as well as all the public symbols which are used within
libraries and are not inteded for export.

There is already a .map preset to limit the exported symbols of
libclamunrar and libclamunrar_iface. Use it.

Patch-Name: Add-a-version-script-for-libclamunrar-and-.patch

Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
---
 libclamunrar/CMakeLists.txt       | 4 ++++
 libclamunrar_iface/CMakeLists.txt | 4 ++++
 2 files changed, 8 insertions(+)

diff --git a/libclamunrar/CMakeLists.txt b/libclamunrar/CMakeLists.txt
index e54348f..ef10113 100644
--- a/libclamunrar/CMakeLists.txt
+++ b/libclamunrar/CMakeLists.txt
@@ -71,6 +71,7 @@ if(ENABLE_SHARED_LIB)
     set_target_properties( clamunrar PROPERTIES
         VERSION ${LIBCLAMAV_VERSION}
         SOVERSION ${LIBCLAMAV_SOVERSION}
+        LINK_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/libclamunrar.map
         CXX_STANDARD 11
     )
 
@@ -98,6 +99,9 @@ if(ENABLE_SHARED_LIB)
 
     if(WIN32)
         set_target_properties(clamunrar PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON)
+    else()
+        set_target_properties(clamunrar PROPERTIES LINK_FLAGS
+                   "-Wl,--version-script='${CMAKE_CURRENT_SOURCE_DIR}/libclamunrar.map'")
     endif()
 
     if(WIN32)
diff --git a/libclamunrar_iface/CMakeLists.txt b/libclamunrar_iface/CMakeLists.txt
index d7c4648..bf932d7 100644
--- a/libclamunrar_iface/CMakeLists.txt
+++ b/libclamunrar_iface/CMakeLists.txt
@@ -37,6 +37,7 @@ if(ENABLE_UNRAR)
         set_target_properties( clamunrar_iface PROPERTIES
             VERSION ${LIBCLAMAV_VERSION}
             SOVERSION ${LIBCLAMAV_SOVERSION}
+            LINK_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/libclamunrar_iface.map
             CXX_STANDARD 11
         )
 
@@ -64,6 +65,9 @@ if(ENABLE_UNRAR)
 
         if(WIN32)
             set_target_properties(clamunrar_iface PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON)
+        else()
+            set_target_properties(clamunrar_iface PROPERTIES LINK_FLAGS
+                 "-Wl,--version-script='${CMAKE_CURRENT_SOURCE_DIR}/libclamunrar_iface.map'")
         endif()
 
         # Private (internal-only) dependencies.
