conan-io / conan-package-tools

Conan Package Tools. Helps with massive package creation and CI integration (Travis CI, Appveyor...)
MIT License
165 stars 70 forks source link

Cross-compiling ninja from Macos armv8 to Android armv8 #611

Closed TheSlackOne closed 1 year ago

TheSlackOne commented 1 year ago

Hi, probably not the right place, but hopefully someone can guide me.

I'm trying to cross-compile ninja v1.11.1 from my Macos M1 (armv8), Monterey 12.6 to Android armv8, using the NDK 22.1.7171670, with the following settings:

builder.add(settings={
        "compiler.cppstd": "17",
        "os": "Android",
        "arch": "armv8",
        "build_type": "Release",
        "os.api_level": "24",
        "compiler": "clang",
        "compiler.version": "11",
        "compiler.libcxx": "libc++",
        "os_build": "Macos",
        "arch_build": "armv8"
    }, options={}, env_vars={
        "CONAN_CMAKE_ANDROID_NDK": "<path>/25.1.8937393"
    }, build_requires={})
% python --version
Python 3.10.8

Log snipet:

ninja/1.11.1@local/workbench:
ninja/1.11.1@local/workbench: Copying sources to build folder
ninja/1.11.1@local/workbench: Building your package in /Users/ernesto.messina/.conan/data/ninja/1.11.1/local/workbench/build/4cd8a0226669e0be90b7c9a8fcdc9ee41453a7d3
ninja/1.11.1@local/workbench: Generator txt created conanbuildinfo.txt
ninja/1.11.1@local/workbench: Calling generate()
ninja/1.11.1@local/workbench: WARN: Using the new toolchains and generators without specifying a build profile (e.g: -pr:b=default) is discouraged and might cause failures and unexpected behavior
ninja/1.11.1@local/workbench: Preset 'release' added to CMakePresets.json. Invoke it manually using 'cmake --preset release'
ninja/1.11.1@local/workbench: If your CMake version is not compatible with CMakePresets (<3.19) call cmake like: 'cmake <path> -G "Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=/Users/ernesto.messina/.conan/data/ninja/1.11.1/local/workbench/build/4cd8a0226669e0be90b7c9a8fcdc9ee41453a7d3/build/generators/conan_toolchain.cmake -DCMAKE_POLICY_DEFAULT_CMP0091=NEW -DCMAKE_BUILD_TYPE=Release'
ninja/1.11.1@local/workbench: Aggregating env generators
ninja/1.11.1@local/workbench: Calling build()
ninja/1.11.1@local/workbench: CMake command: cmake -G "Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE="/Users/ernesto.messina/.conan/data/ninja/1.11.1/local/workbench/build/4cd8a0226669e0be90b7c9a8fcdc9ee41453a7d3/build/generators/conan_toolchain.cmake" -DCMAKE_INSTALL_PREFIX="/Users/ernesto.messina/.conan/data/ninja/1.11.1/local/workbench/package/4cd8a0226669e0be90b7c9a8fcdc9ee41453a7d3" -DCMAKE_POLICY_DEFAULT_CMP0091="NEW" -DCMAKE_BUILD_TYPE="Release" "/Users/ernesto.messina/.conan/data/ninja/1.11.1/local/workbench/build/4cd8a0226669e0be90b7c9a8fcdc9ee41453a7d3/src"
-- Using Conan toolchain: /Users/ernesto.messina/.conan/data/ninja/1.11.1/local/workbench/build/4cd8a0226669e0be90b7c9a8fcdc9ee41453a7d3/build/generators/conan_toolchain.cmake
CMake Error at /Users/ernesto.messina/Library/Android/sdk/ndk/22.1.7171670/build/cmake/android.toolchain.cmake:381 (message):
  Invalid Android STL: libc++.
Call Stack (most recent call first):
  /Users/ernesto.messina/.conan/data/ninja/1.11.1/local/workbench/build/4cd8a0226669e0be90b7c9a8fcdc9ee41453a7d3/build/generators/conan_toolchain.cmake:27 (include)
  /opt/homebrew/Cellar/cmake/3.24.2/share/cmake/Modules/CMakeDetermineSystem.cmake:124 (include)
  CMakeLists.txt:6 (project)

CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool.
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!

I've tried changing the SDK version, but got the same error. Also tried compiler.libcxx to c++_static and c++_shared, but got code errors, like not detecting the compiler correctly.

TheSlackOne commented 1 year ago

I was able to solve by updating CMAKE from 3.19 to 3.25.