From 30422956ca7c4aa8f0ce9400d24dba063ab9662a Mon Sep 17 00:00:00 2001
From: Tomas Pecka <peckato1@fit.cvut.cz>
Date: Thu, 30 Dec 2021 10:43:52 +0100
Subject: [PATCH] cmake: Link alib2cli with CMAKE_DL_LIBS

OpenSuse Leap package builds fail with undefined reference to dlclose
and dlopen. The -ldl link flag is missing (see the error below).
Let's fix that by adding the ${CMAKE_DL_LIBS} link target [1] to
alib2cli.

 /usr/lib64/gcc/x86_64-suse-linux/11/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/alib2cli.dir/src/common/LibraryLoader.cpp.o: in function `cli::LibraryLoader::Library::unload()':
 /build/pkg/build/pkgs/opensuse-leap-15.3/algorithms-library-snapshot-0.0.0.r1277.gf2a2ccf62-1/rpmbuild/BUILD/algorithms-library-v0.0.0.r1277.gf2a2ccf62/alib2cli/src/common/LibraryLoader.h:44: undefined reference to `dlclose'
 /usr/lib64/gcc/x86_64-suse-linux/11/../../../../x86_64-suse-linux/bin/ld: /build/pkg/build/pkgs/opensuse-leap-15.3/algorithms-library-snapshot-0.0.0.r1277.gf2a2ccf62-1/rpmbuild/BUILD/algorithms-library-v0.0.0.r1277.gf2a2ccf62/alib2cli/src/common/LibraryLoader.h:44: undefined reference to `dlclose'
 /usr/lib64/gcc/x86_64-suse-linux/11/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/alib2cli.dir/src/common/LibraryLoader.cpp.o: in function `cli::LibraryLoader::Library::load()':
 /build/pkg/build/pkgs/opensuse-leap-15.3/algorithms-library-snapshot-0.0.0.r1277.gf2a2ccf62-1/rpmbuild/BUILD/algorithms-library-v0.0.0.r1277.gf2a2ccf62/alib2cli/src/common/LibraryLoader.h:37: undefined reference to `dlopen'
 /usr/lib64/gcc/x86_64-suse-linux/11/../../../../x86_64-suse-linux/bin/ld: /build/pkg/build/pkgs/opensuse-leap-15.3/algorithms-library-snapshot-0.0.0.r1277.gf2a2ccf62-1/rpmbuild/BUILD/algorithms-library-v0.0.0.r1277.gf2a2ccf62/alib2cli/src/common/LibraryLoader.h:39: undefined reference to `dlerror'
 collect2: error: ld returned 1 exit status
 make[2]: *** [alib2cli/CMakeFiles/alib2cli.dir/build.make:500: alib2cli/libalib2cli.so.0.0.0] Error 1
 make[1]: *** [CMakeFiles/Makefile2:1017: alib2cli/CMakeFiles/alib2cli.dir/all] Error 2
 make[1]: *** Waiting for unfinished jobs....
 make: *** [Makefile:150: all] Error 2

[1] https://cmake.org/cmake/help/latest/variable/CMAKE_DL_LIBS.html
---
 alib2cli/CMakeLists.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/alib2cli/CMakeLists.txt b/alib2cli/CMakeLists.txt
index 12a8e4ff67..f0daf3b8ba 100644
--- a/alib2cli/CMakeLists.txt
+++ b/alib2cli/CMakeLists.txt
@@ -1,6 +1,6 @@
 project(alt-libcli VERSION ${CMAKE_PROJECT_VERSION})
 find_package(LibXml2 REQUIRED)
 alt_library(alib2cli
-	DEPENDS alib2xml alib2common alib2abstraction alib2measure alib2std
+	DEPENDS alib2xml alib2common alib2abstraction alib2measure alib2std ${CMAKE_DL_LIBS}
 	TEST_DEPENDS LibXml2::LibXml2 stdc++fs
 )
-- 
GitLab