From dd5d986ea27b61028decb0c3083db23714a89462 Mon Sep 17 00:00:00 2001 From: Chris Mc Date: Sat, 26 Aug 2023 18:29:03 -0700 Subject: [PATCH 1/3] add example for cross-build to android with CCI recipe --- .../android/cci_recipe/run_example.py | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 examples/cross_build/android/cci_recipe/run_example.py diff --git a/examples/cross_build/android/cci_recipe/run_example.py b/examples/cross_build/android/cci_recipe/run_example.py new file mode 100644 index 00000000..d43ca447 --- /dev/null +++ b/examples/cross_build/android/cci_recipe/run_example.py @@ -0,0 +1,34 @@ +import platform + +from test.examples_tools import run, tmp_dir + +# ############# Example ################ +print("- Use the Android NDK Recipe from ConanCenter to cross-build a package -") + + +profile = """ +[settings] +arch=armv8 +build_type=Release +compiler=clang +compiler.cppstd=17 +compiler.libcxx=c++_static +compiler.version=14` +os=Android +os.api_level=31 + +[tool_requires] +android-ndk/r25c +""" + +with tmp_dir("tmp"): + with open("android", "w") as _f: + _f.write(profile) + run("conan new -d name=foo -d version=1.0 cmake_lib") + output = run("conan create . --profile ./android") + # Since we are cross-building and no not run the binary + # We can inspect it + if platform.system() != "Windows": # This is a *nix command for inspect binaries + output = run("strings -a test_package/build/clang-14-armv8-17-release/example | head") + assert "Android" in output + assert "r25c" in output From fbe37c1e469733505404b7eaca46b60e8fb74e23 Mon Sep 17 00:00:00 2001 From: Chris Mc Date: Sat, 26 Aug 2023 18:48:39 -0700 Subject: [PATCH 2/3] fix typo --- examples/cross_build/android/cci_recipe/run_example.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/cross_build/android/cci_recipe/run_example.py b/examples/cross_build/android/cci_recipe/run_example.py index d43ca447..9bde5e77 100644 --- a/examples/cross_build/android/cci_recipe/run_example.py +++ b/examples/cross_build/android/cci_recipe/run_example.py @@ -13,7 +13,7 @@ compiler=clang compiler.cppstd=17 compiler.libcxx=c++_static -compiler.version=14` +compiler.version=14 os=Android os.api_level=31 From 654655c1cc5de72ae00b5be7ab487a305e21a723 Mon Sep 17 00:00:00 2001 From: Chris Mc Date: Mon, 28 Aug 2023 08:08:00 -0700 Subject: [PATCH 3/3] explicit use ninja Testing: "The Conan default is to pick mingw on windows when not using msvc which is not what we want wen targeting android" https://cpplang.slack.com/archives/C41CWV9HA/p1693160641849589?thread_ts=1693156865.039739&cid=C41CWV9HA --- examples/cross_build/android/cci_recipe/run_example.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/examples/cross_build/android/cci_recipe/run_example.py b/examples/cross_build/android/cci_recipe/run_example.py index 9bde5e77..74d06218 100644 --- a/examples/cross_build/android/cci_recipe/run_example.py +++ b/examples/cross_build/android/cci_recipe/run_example.py @@ -17,8 +17,12 @@ os=Android os.api_level=31 +[conf] +tools.cmake.cmaketoolchain:generator=Ninja + [tool_requires] android-ndk/r25c +ninja/1.11.1 """ with tmp_dir("tmp"):