Skip to content

Build a project with a different build system #1360

Open
@tmayoff

Description

@tmayoff

I know this is probably not very supported so I don't expect much, but I was hoping to be able to develop using the meson build system as I'm a lot more familiar with it. Meson has a module to build cmake subprojects and was hoping that I'd be able to get it working however I've not had any luck.

This is the meson file

project('blinky', 'cpp', version: '0.1')

cmake = import('cmake')
pico_sdk_opts = cmake.subproject_options()
pico_sdk_opts.add_cmake_defines({'PICO_BOARD': 'pico_w'})
pico_sdk_proj = cmake.subproject('pico_sdk', options: pico_sdk_opts)
INFO: autodetecting backend as ninja
INFO: calculating backend command to run: /usr/bin/ninja -C /home/tyler/src/blinky/build
ninja: Entering directory `/home/tyler/src/blinky/build'
[0/1] Regenerating build files.
The Meson build system
Version: 1.0.1
Source dir: /home/tyler/src/blinky
Build dir: /home/tyler/src/blinky/build
Build type: native build
Project name: blinky
Project version: 0.1
C++ compiler for the host machine: /usr/bin/g++ (gcc 13.1.1 "g++ (GCC) 13.1.1 20230426 (Red Hat 13.1.1-1)")
C++ linker for the host machine: /usr/bin/g++ ld.bfd 2.39-9
Host machine cpu family: x86_64
Host machine cpu: x86_64

Executing subproject pico_sdk method cmake 

pico_sdk| Found CMake: /usr/bin/cmake (3.26.3)

| Configuring the build directory with CMake version 3.26.3
| Running CMake with: -G Ninja -DCMAKE_INSTALL_PREFIX=/usr/local -DPICO_BOARD=pico_w
|   - build directory:          /home/tyler/src/blinky/build/subprojects/pico_sdk/__CMake_build
|   - source directory:         /home/tyler/src/blinky/subprojects/pico_sdk
|   - toolchain file:           /home/tyler/src/blinky/build/subprojects/pico_sdk/__CMake_build/CMakeMesonToolchainFile.cmake
|   - preload file:             /usr/lib/python3.11/site-packages/mesonbuild/cmake/data/preload.cmake
|   - trace args:               --trace-expand --trace-format=json-v1 --no-warn-unused-cli --trace-redirect=cmake_trace.txt
|   - disabled policy warnings: [CMP0025, CMP0047, CMP0056, CMP0060, CMP0065, CMP0066, CMP0067, CMP0082, CMP0089, CMP0102]

| CMake Warning (dev) at pico_sdk_init.cmake:36 (set):
| Policy CMP0126 is not set: set(CACHE) does not remove a normal variable of
| the same name.  Run "cmake --help-policy CMP0126" for policy details.  Use
| the cmake_policy command to set the policy and suppress this warning.

| For compatibility with older versions of CMake, normal variable
| "PICO_SDK_PATH" will be removed from the current scope.
| Call Stack (most recent call first):
| CMakeLists.txt:8 (include)
| This warning is for project developers.  Use -Wno-dev to suppress it.
| Running with expanded trace output on.
| Not searching for unused variables given on the command line.
| Trace will be written to cmake_trace.txt

| PICO_SDK_PATH is /home/tyler/src/blinky/subprojects/pico_sdk
| Defaulting PICO_PLATFORM to rp2040 since not specified.
| CMake Warning (dev) at cmake/pico_pre_load_platform.cmake:14 (set):
| Policy CMP0126 is not set: set(CACHE) does not remove a normal variable of
| the same name.  Run "cmake --help-policy CMP0126" for policy details.  Use
| the cmake_policy command to set the policy and suppress this warning.

| For compatibility with older versions of CMake, normal variable
| "PICO_PLATFORM" will be removed from the current scope.
| Call Stack (most recent call first):
| pico_sdk_init.cmake:45 (include)
| CMakeLists.txt:8 (include)
| This warning is for project developers.  Use -Wno-dev to suppress it.

| -- Defaulting build type to 'Release' since not specified.
| -- The C compiler identification is GNU 13.1.1
| -- The CXX compiler identification is GNU 13.1.1
| -- The ASM compiler identification is GNU
| -- Found assembler: /usr/bin/gcc
| -- Detecting C compiler ABI info
| -- Detecting C compiler ABI info - done
| -- Check for working C compiler: /usr/bin/gcc - skipped
| -- Detecting C compile features
| -- Detecting C compile features - done
| -- Detecting CXX compiler ABI info
| -- Detecting CXX compiler ABI info - done
| -- Check for working CXX compiler: /usr/bin/g++ - skipped
| -- Detecting CXX compile features
| -- Detecting CXX compile features - done
| Build type is Release
| PICO target board is pico_w.
| Using CMake board configuration from /home/tyler/src/blinky/subprojects/pico_sdk/src/boards/pico_w.cmake
| Using board configuration from /home/tyler/src/blinky/subprojects/pico_sdk/src/boards/include/boards/pico_w.h
| CMake Warning (dev) at src/rp2_common/boot_stage2/CMakeLists.txt:21 (set):
| Policy CMP0126 is not set: set(CACHE) does not remove a normal variable of
| the same name.  Run "cmake --help-policy CMP0126" for policy details.  Use
| the cmake_policy command to set the policy and suppress this warning.

| For compatibility with older versions of CMake, normal variable
| "PICO_DEFAULT_BOOT_STAGE2" will be removed from the current scope.
| This warning is for project developers.  Use -Wno-dev to suppress it.

| -- Found Python3: /usr/bin/python3.11 (found version "3.11.3") found components: Interpreter
| TinyUSB available at /home/tyler/src/blinky/subprojects/pico_sdk/lib/tinyusb/src/portable/raspberrypi/rp2040; enabling build support for USB.
| CMake Warning (dev) at lib/tinyusb/hw/bsp/rp2040/pico_sdk_import.cmake:60 (set):
| Policy CMP0126 is not set: set(CACHE) does not remove a normal variable of
| the same name.  Run "cmake --help-policy CMP0126" for policy details.  Use
| the cmake_policy command to set the policy and suppress this warning.

| For compatibility with older versions of CMake, normal variable
| "PICO_SDK_PATH" will be removed from the current scope.
| Call Stack (most recent call first):
| lib/tinyusb/hw/bsp/rp2040/family.cmake:11 (include)
| lib/tinyusb/hw/bsp/family_support.cmake:134 (include)
| src/rp2_common/tinyusb/CMakeLists.txt:24 (include)
| This warning is for project developers.  Use -Wno-dev to suppress it.

| CMake Warning (dev) at lib/tinyusb/hw/bsp/family_support.cmake:141 (set):
| Policy CMP0126 is not set: set(CACHE) does not remove a normal variable of
| the same name.  Run "cmake --help-policy CMP0126" for policy details.  Use
| the cmake_policy command to set the policy and suppress this warning.

| For compatibility with older versions of CMake, normal variable
| "FAMILY_MCUS" will be removed from the current scope.
| Call Stack (most recent call first):
| src/rp2_common/tinyusb/CMakeLists.txt:24 (include)
| This warning is for project developers.  Use -Wno-dev to suppress it.

| BTstack available at /home/tyler/src/blinky/subprojects/pico_sdk/lib/btstack
| cyw43-driver available at /home/tyler/src/blinky/subprojects/pico_sdk/lib/cyw43-driver
| Pico W Bluetooth build support available.
| lwIP available at /home/tyler/src/blinky/subprojects/pico_sdk/lib/lwip
| Pico W Wi-Fi build support available.
| mbedtls available at /home/tyler/src/blinky/subprojects/pico_sdk/lib/mbedtls
| CMake Warning (dev) at CMakeLists.txt:48 (set):
| Policy CMP0126 is not set: set(CACHE) does not remove a normal variable of
| the same name.  Run "cmake --help-policy CMP0126" for policy details.  Use
| the cmake_policy command to set the policy and suppress this warning.

| For compatibility with older versions of CMake, normal variable
| "PICO_SDK_TESTS_ENABLED" will be removed from the current scope.
| This warning is for project developers.  Use -Wno-dev to suppress it.

| -- Configuring done (1.4s)
| -- Generating done (0.1s)
| -- Build files have been written to: /home/tyler/src/blinky/build/subprojects/pico_sdk/__CMake_build

pico_sdk| CMake configuration: SUCCEEDED
pico_sdk| WARNING: Unable to evaluate the cmake variable '$<TARGET_FILE:bs2_default>'.

../meson.build:7:0: ERROR: We evaluated the cmake variable '' to an empty string, which is not a valid path to an executable.

A full log can be found at /home/tyler/src/blinky/build/meson-logs/meson-log.txt
FAILED: build.ninja 
/usr/bin/meson --internal regenerate /home/tyler/src/blinky /home/tyler/src/blinky/build
ninja: error: rebuilding 'build.ninja': subcommand failed

If there's anyone familiar with both systems that could help I'd really appreciate it.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions