Skip to content

Commit

Permalink
- Bugfix: use new tools.cross_building in MesonToolchain (#9992)
Browse files Browse the repository at this point in the history
* - [MesonToolchain] fix cross-building

Signed-off-by: SSE4 <[email protected]>

* - add test

Signed-off-by: SSE4 <[email protected]>
  • Loading branch information
SSE4 authored Nov 11, 2021
1 parent ea491f8 commit 1f385f4
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 1 deletion.
2 changes: 1 addition & 1 deletion conan/tools/meson/toolchain.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from conan.tools.env import VirtualBuildEnv
from conan.tools.microsoft import VCVars
from conans.client.build.cppstd_flags import cppstd_from_settings
from conans.client.tools.oss import cross_building, get_cross_building_settings
from conan.tools.cross_building import cross_building, get_cross_building_settings
from conans.util.files import save


Expand Down
66 changes: 66 additions & 0 deletions conans/test/functional/toolchains/meson/test_cross_x86.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
import os
import platform
import sys
import textwrap

import pytest

from conans.test.assets.sources import gen_function_cpp
from conans.test.utils.tools import TestClient

@pytest.mark.tool_meson
@pytest.mark.skipif(sys.version_info.major == 2, reason="Meson not supported in Py2")
# for Linux, build for x86 will require a multilib compiler
# for macOS, build for x86 is no longer supported by modern Xcode
@pytest.mark.skipif(platform.system() != "Windows", reason="requires Windows")
def test_cross_x86():
conanfile_py = textwrap.dedent("""
from conans import ConanFile, tools
from conan.tools.meson import Meson, MesonToolchain
class App(ConanFile):
settings = "os", "arch", "compiler", "build_type"
options = {"shared": [True, False], "fPIC": [True, False]}
default_options = {"shared": False, "fPIC": True}
def config_options(self):
if self.settings.os == "Windows":
del self.options.fPIC
def generate(self):
tc = MesonToolchain(self)
tc.generate()
def build(self):
meson = Meson(self)
meson.configure()
meson.build()
""")
meson_build = textwrap.dedent("""
project('tutorial', 'cpp')
executable('demo', 'main.cpp')
""")
main_cpp = gen_function_cpp(name="main")
profile_x86 = textwrap.dedent("""
include(default)
[settings]
arch=x86
[env]
CC=cl
CXX=cl
""")

client = TestClient()
client.save({"conanfile.py": conanfile_py,
"meson.build": meson_build,
"main.cpp": main_cpp,
"x86": profile_x86})
profile_str = "--profile:build=default --profile:host=x86"
client.run("install . %s" % profile_str)
client.run("build .")
client.run_command(os.path.join("build", "demo"))

assert "main _M_IX86 defined" in client.out
assert "main _MSC_VER19" in client.out
assert "main _MSVC_LANG2014" in client.out

0 comments on commit 1f385f4

Please sign in to comment.