mirror of
https://github.com/conan-io/conan-center-index.git
synced 2025-08-18 20:42:27 +00:00
(#21157) libmysqlclient: allow shared with apple-clang
* conditionally remove shared option and set package type * remove unused files in lib folder if Windows - remove libmysql.dll - remove either static or import lib depending on shared option * allow shared for macOS * remove lib/plugin folder
This commit is contained in:
@@ -4,7 +4,7 @@ from conan.tools.apple import is_apple_os
|
||||
from conan.tools.build import check_min_cppstd, cross_building, stdcpp_library
|
||||
from conan.tools.cmake import CMake, CMakeToolchain, CMakeDeps, cmake_layout
|
||||
from conan.tools.env import VirtualRunEnv, VirtualBuildEnv
|
||||
from conan.tools.files import rename, get, apply_conandata_patches, replace_in_file, rmdir, rm, export_conandata_patches, copy, mkdir
|
||||
from conan.tools.files import rename, get, apply_conandata_patches, replace_in_file, rmdir, rm, export_conandata_patches, mkdir
|
||||
from conan.tools.gnu import PkgConfigDeps
|
||||
from conan.tools.microsoft import is_msvc, is_msvc_static_runtime
|
||||
from conan.tools.scm import Version
|
||||
@@ -90,11 +90,6 @@ class LibMysqlClientCConan(ConanFile):
|
||||
if minimum_version and loose_lt_semver(str(self.settings.compiler.version), minimum_version):
|
||||
raise ConanInvalidConfiguration(f"{self.ref} requires {self.settings.compiler} {minimum_version} or newer")
|
||||
|
||||
# Sice 8.0.17 this doesn't support shared library on MacOS.
|
||||
# https://github.com/mysql/mysql-server/blob/mysql-8.0.17/cmake/libutils.cmake#L333-L335
|
||||
if self.settings.compiler == "apple-clang" and self.options.shared:
|
||||
raise ConanInvalidConfiguration(f"{self.ref} doesn't support shared library")
|
||||
|
||||
# mysql < 8.0.29 uses `requires` in source code. It is the reserved keyword in C++20.
|
||||
# https://github.com/mysql/mysql-server/blob/mysql-8.0.0/include/mysql/components/services/dynamic_loader.h#L270
|
||||
if self.settings.compiler.get_safe("cppstd") == "20" and Version(self.version) < "8.0.29":
|
||||
@@ -255,16 +250,23 @@ class LibMysqlClientCConan(ConanFile):
|
||||
rm(self, "README", self.package_folder)
|
||||
rm(self, "*.pdb", self.package_folder, recursive=True)
|
||||
rmdir(self, os.path.join(self.package_folder, "lib", "pkgconfig"))
|
||||
rmdir(self, os.path.join(self.package_folder, "lib", "plugin"))
|
||||
rmdir(self, os.path.join(self.package_folder, "docs"))
|
||||
rmdir(self, os.path.join(self.package_folder, "share"))
|
||||
if self.settings.os == "Windows" and self.options.shared:
|
||||
copy(self, "*.dll", src=self.build_folder, dst=os.path.join(self.package_folder, "bin"), keep_path=False)
|
||||
if self.options.shared:
|
||||
rm(self, "*.a", self.package_folder, recursive=True)
|
||||
if self.settings.os == "Windows":
|
||||
if self.options.shared:
|
||||
rename(self, os.path.join(self.package_folder, "lib", "libmysql.dll"),
|
||||
os.path.join(self.package_folder, "bin", "libmysql.dll"))
|
||||
rm(self, "*mysqlclient.*", os.path.join(self.package_folder, "lib"))
|
||||
else:
|
||||
rm(self, "*.dll", os.path.join(self.package_folder, "lib"))
|
||||
rm(self, "*libmysql.*", os.path.join(self.package_folder, "lib"))
|
||||
else:
|
||||
rm(self, "*.dll", self.package_folder, recursive=True)
|
||||
rm(self, "*.dylib", self.package_folder, recursive=True)
|
||||
rm(self, "*.so*", self.package_folder, recursive=True)
|
||||
if self.options.shared:
|
||||
rm(self, "*.a", os.path.join(self.package_folder, "lib"))
|
||||
else:
|
||||
rm(self, "*.dylib", os.path.join(self.package_folder, "lib"))
|
||||
rm(self, "*.so*", os.path.join(self.package_folder, "lib"))
|
||||
|
||||
def package_info(self):
|
||||
self.cpp_info.set_property("pkg_config_name", "mysqlclient")
|
||||
|
Reference in New Issue
Block a user