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