Skip to content

Commit

Permalink
remove -Wl,-rpath from pkg_config generator
Browse files Browse the repository at this point in the history
  • Loading branch information
SpaceIm committed Dec 17, 2021
1 parent b528f25 commit 4c757a4
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 53 deletions.
7 changes: 2 additions & 5 deletions conans/client/generators/pkg_config.py
@@ -1,6 +1,6 @@
import os

from conans.client.build.compiler_flags import rpath_flags, format_frameworks, format_framework_paths
from conans.client.build.compiler_flags import format_frameworks, format_framework_paths
from conans.client.tools.oss import get_build_os_arch
from conans.model import Generator
from conans.model.conan_generator import GeneratorComponentsMixin
Expand All @@ -16,7 +16,7 @@
Name: my-project
Description: Some brief but informative description
Version: 1.2.3
Libs: -L${libdir} -lmy-project-1 -linkerflag -Wl,-rpath=${libdir}
Libs: -L${libdir} -lmy-project-1 -linkerflag
Cflags: -I${includedir}/my-project-1
Requires: glib-2.0 >= 2.40 gio-2.0 >= 2.42 nice >= 0.1.6
Requires.private: gthread-2.0 >= 2.40
Expand Down Expand Up @@ -98,15 +98,12 @@ def _pc_file_content(self, name, cpp_info, requires_gennames):
if not hasattr(self.conanfile, 'settings_build'):
os_build = os_build or self.conanfile.settings.get_safe("os")

rpaths = rpath_flags(self.conanfile.settings, os_build,
["${%s}" % libdir for libdir in libdir_vars])
frameworks = format_frameworks(cpp_info.frameworks, self.conanfile.settings)
framework_paths = format_framework_paths(cpp_info.framework_paths, self.conanfile.settings)

lines.append("Libs: %s" % _concat_if_not_empty([libdirs_flags,
libnames_flags,
shared_flags,
rpaths,
frameworks,
framework_paths]))
include_dirs_flags = ['-I"${%s}"' % name for name in includedir_vars]
Expand Down
46 changes: 3 additions & 43 deletions conans/test/functional/generators/pkg_config_test.py
@@ -1,5 +1,4 @@
import os
import platform
import textwrap
import unittest

Expand Down Expand Up @@ -42,19 +41,16 @@ def package_info(self):
pc_path = os.path.join(client.current_folder, "MyLib.pc")
self.assertTrue(os.path.exists(pc_path))
pc_content = load(pc_path)
expected_rpaths = ""
if platform.system() in ("Linux", "Darwin"):
expected_rpaths = ' -Wl,-rpath,"${libdir}" -Wl,-rpath,"${libdir2}"'
expected_content = """libdir=/my_absoulte_path/fake/mylib/lib
libdir2=${prefix}/lib2
includedir=/my_absoulte_path/fake/mylib/include
Name: MyLib
Description: Conan package: MyLib
Version: 0.1
Libs: -L"${libdir}" -L"${libdir2}"%s
Libs: -L"${libdir}" -L"${libdir2}"
Cflags: -I"${includedir}"\
""" % expected_rpaths
"""
self.assertEqual("\n".join(pc_content.splitlines()[1:]), expected_content)

def assert_is_abs(path):
Expand Down Expand Up @@ -101,42 +97,6 @@ def package_info(self):
Cflags: """ % " ") # ugly hack for trailing whitespace removed by IDEs
self.assertEqual("\n".join(pc_content.splitlines()[1:]), expected)

def test_pkg_config_rpaths(self):
# rpath flags are only generated for gcc and clang
profile = """
[settings]
os=Linux
compiler=gcc
compiler.version=7
compiler.libcxx=libstdc++
"""
conanfile = """
from conans import ConanFile
class PkgConfigConan(ConanFile):
name = "MyLib"
version = "0.1"
settings = "os", "compiler"
exports = "mylib.so"
def package(self):
self.copy("mylib.so", dst="lib")
def package_info(self):
self.cpp_info.libs = ["mylib"]
"""
client = TestClient()
client.save({"conanfile.py": conanfile,
"linux_gcc": profile,
"mylib.so": "fake lib content"})
client.run("create . danimtb/testing -pr=linux_gcc")
client.run("install MyLib/0.1@danimtb/testing -g pkg_config -pr=linux_gcc")

pc_path = os.path.join(client.current_folder, "MyLib.pc")
self.assertTrue(os.path.exists(pc_path))
pc_content = load(pc_path)
self.assertIn("-Wl,-rpath,\"${libdir}\"", pc_content)

def test_system_libs(self):
conanfile = """
from conans import ConanFile
Expand All @@ -160,7 +120,7 @@ def package_info(self):
client.run("install MyLib/0.1@ -g pkg_config")

pc_content = client.load("MyLib.pc")
self.assertIn('Libs: -L"${libdir}" -lmylib1 -lmylib2 -lsystem_lib1 -lsystem_lib2 ',
self.assertIn('Libs: -L"${libdir}" -lmylib1 -lmylib2 -lsystem_lib1 -lsystem_lib2',
pc_content)

def test_multiple_include(self):
Expand Down
6 changes: 2 additions & 4 deletions conans/test/functional/util/pkg_config_test.py
Expand Up @@ -91,16 +91,14 @@ def test_rpaths_libs(self):
Name: MyLib
Description: Conan package: MyLib
Version: 0.1
Libs: -L${libdir} -L${libdir3} -Wl,-rpath="${libdir}" -Wl,-rpath="${libdir3}"
Libs: -L${libdir} -L${libdir3}
Cflags: -I${includedir}"""
tmp_dir = temp_folder()
filename = os.path.join(tmp_dir, 'MyLib.pc')
with open(filename, 'w') as f:
f.write(pc_content)
with environment_append({'PKG_CONFIG_PATH': tmp_dir}):
expected = ("-L/my_absoulte_path/fake/mylib/lib "
"-L/my_prefix/path/lib2 "
"-Wl,-rpath=/my_absoulte_path/fake/mylib/lib "
"-Wl,-rpath=/my_prefix/path/lib2")
"-L/my_prefix/path/lib2")
pkg_config = PkgConfig("MyLib")
self.assertIn(expected, " ".join(lib for lib in pkg_config.libs))
2 changes: 1 addition & 1 deletion conans/test/unittests/client/generators/pkg_config_test.py
Expand Up @@ -214,6 +214,6 @@ def test_apple_frameworks(self):
Name: MyPkg
Description: My cool description
Version: 1.3
Libs: -L"${libdir}" -Wl,-rpath,"${libdir}" -framework AudioUnit -framework AudioToolbox -F /dummy_root_folder1/Frameworks
Libs: -L"${libdir}" -framework AudioUnit -framework AudioToolbox -F /dummy_root_folder1/Frameworks
Cflags: -I"${includedir}"
""")

0 comments on commit 4c757a4

Please sign in to comment.