Skip to content

Commit

Permalink
mpg123: dont require msys2 when using msvc, fix macos crossbuild (#26381
Browse files Browse the repository at this point in the history
)

* Remove the msys2 tool requirement if envorinment is msvc.

* mpg123: fix macos crossbuild issue

---------

Co-authored-by: Abril Rincón Blanco <git@rinconblanco.es>
Co-authored-by: Luis Caro Campos <3535649+jcar87@users.noreply.github.com>
  • Loading branch information
3 people authored Jan 15, 2025
1 parent 671201e commit 628fdb7
Showing 1 changed file with 8 additions and 24 deletions.
32 changes: 8 additions & 24 deletions recipes/mpg123/all/conanfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from conan.tools.cmake import cmake_layout, CMake, CMakeDeps, CMakeToolchain
from conan.tools.layout import basic_layout
from conan.tools.gnu import Autotools, AutotoolsDeps, AutotoolsToolchain
from conan.tools.files import get, copy, export_conandata_patches, apply_conandata_patches, rmdir, rm
from conan.tools.files import get, copy, export_conandata_patches, apply_conandata_patches, replace_in_file, rmdir, rm
from conan.tools.microsoft import is_msvc
from conan.tools.env import VirtualBuildEnv, VirtualRunEnv
from conan.tools.build import cross_building
Expand Down Expand Up @@ -52,10 +52,6 @@ class Mpg123Conan(ConanFile):
"module": "dummy",
}

@property
def _settings_build(self):
return getattr(self, "settings_build", self.settings)

@property
def _audio_module(self):
return {
Expand Down Expand Up @@ -99,15 +95,14 @@ def build_requirements(self):
self.tool_requires("pkgconf/2.0.3")
if self.settings.arch in ["x86", "x86_64"]:
self.tool_requires("yasm/1.3.0")
if self._settings_build.os == "Windows":
if self.settings_build.os == "Windows" and not is_msvc(self):
self.win_bash = True
if not self.conf.get("tools.microsoft.bash:path", default=False, check_type=str):
self.tool_requires("msys2/cci.latest")

def source(self):
get(self, **self.conan_data["sources"][self.version], strip_root=True)


def generate(self):
env = VirtualBuildEnv(self)
env.generate()
Expand Down Expand Up @@ -168,6 +163,12 @@ def build(self):
cmake.configure(build_script_folder=os.path.join(self.source_folder, "ports", "cmake"))
cmake.build()
else:
if self.settings.compiler == "apple-clang" and cross_building(self):
# when testing if the assembler supports avx - propagate cflags (CFLAGS) to the assembler
# (which should contain "-arch x86_64" when crossbuilding with appleclang)
replace_in_file(self, os.path.join(self.source_folder, "configure"),
"$CCAS -c -o conftest.o",
"$CCAS $CFLAGS -c -o conftest.o")
autotools = Autotools(self)
autotools.configure()
autotools.make()
Expand All @@ -193,23 +194,17 @@ def package_info(self):
self.cpp_info.components["libmpg123"].libs = ["mpg123"]
self.cpp_info.components["libmpg123"].set_property("pkg_config_name", "libmpg123")
self.cpp_info.components["libmpg123"].set_property("cmake_target_name", "MPG123::libmpg123")
self.cpp_info.components["libmpg123"].names["cmake_find_package"] = "libmpg123"
self.cpp_info.components["libmpg123"].names["cmake_find_package_multi"] = "libmpg123"
if self.settings.os == "Windows" and self.options.shared:
self.cpp_info.components["libmpg123"].defines.append("LINK_MPG123_DLL")

self.cpp_info.components["libout123"].libs = ["out123"]
self.cpp_info.components["libout123"].set_property("pkg_config_name", "libout123")
self.cpp_info.components["libout123"].set_property("cmake_target_name", "MPG123::libout123")
self.cpp_info.components["libout123"].names["cmake_find_package"] = "libout123"
self.cpp_info.components["libout123"].names["cmake_find_package_multi"] = "libout123"
self.cpp_info.components["libout123"].requires = ["libmpg123"]

self.cpp_info.components["libsyn123"].libs = ["syn123"]
self.cpp_info.components["libsyn123"].set_property("pkg_config_name", "libsyn123")
self.cpp_info.components["libsyn123"].set_property("cmake_target_name", "MPG123::libsyn123")
self.cpp_info.components["libsyn123"].names["cmake_find_package"] = "libsyn123"
self.cpp_info.components["libsyn123"].names["cmake_find_package_multi"] = "libsyn123"
self.cpp_info.components["libsyn123"].requires = ["libmpg123"]

if self.settings.os == "Linux":
Expand All @@ -225,14 +220,3 @@ def package_info(self):
self.cpp_info.components["libout123"].requires.append("tinyalsa::tinyalsa")
if self.options.module == "win32":
self.cpp_info.components["libout123"].system_libs.append("winmm")


# TODO: Remove after Conan 2.x becomes the standard
self.cpp_info.filenames["cmake_find_package"] = "mpg123"
self.cpp_info.filenames["cmake_find_package_multi"] = "mpg123"
self.cpp_info.names["cmake_find_package"] = "MPG123"
self.cpp_info.names["cmake_find_package_multi"] = "MPG123"

bin_path = os.path.join(self.package_folder, "bin")
self.output.info("Appending PATH environment variable: {}".format(bin_path))
self.env_info.PATH.append(bin_path)

0 comments on commit 628fdb7

Please sign in to comment.