Skip to content

CMake Cross-compilation for baremetal target #7281

@stevesuzuki-arm

Description

@stevesuzuki-arm

Background

As mentioned in README_cmake, Cross-compiling in CMake can be tricky, since CMake doesn't easily support compiling for both the host platform and the cross-platform within the same build. This gets more tricky when we target baremetal environment, where the application is built by somehow uncommon toolchain and the runtime runs without or limited OS support. Thus, we often end up with hacky workaround, which, as one can imagine, makes the build system inflexible and easy to break when updating. Also, I would assume this is probably raising the bar for users.

In this ticket, I'd like to address the identified issues in existing CMake build and bring proposal solutions for discussion.

Issues

  1. Halide CMake package asks Threads library as mandatory, which some of the baremetal toolchain doesn't have.
  2. add_halide_runtime() doesn't work with cross-compiler toolchain
  3. add_halide_generator() has an issue in exporting/importing the generator as package
  4. Auto Scheduler is not available with the existing approach shown in test/integration/xc
  5. Runtime support is poor for baremetal (this is inevitable by nature though)
  6. There is no sample in tutorial/ nor apps/ from which users can learn quickly how to write CMake to cross-compile app with Halide.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions