Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CMake Cross-compilation for baremetal target #7281

Closed
stevesuzuki-arm opened this issue Jan 17, 2023 · 7 comments
Closed

CMake Cross-compilation for baremetal target #7281

stevesuzuki-arm opened this issue Jan 17, 2023 · 7 comments
Assignees

Comments

@stevesuzuki-arm
Copy link
Contributor

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.
@stevesuzuki-arm
Copy link
Contributor Author

#7282 for Issue 1
#7283 for Issue 3
#7284 for Issue 2
#7285 for Issue 4
#7286 for Issue 5

@stevesuzuki-arm
Copy link
Contributor Author

@alexreinking @steven-johnson may I ask you to review the PRs, please?

@alexreinking
Copy link
Member

Definitely! Thank you for what appears to be a major contribution!

@steven-johnson
Copy link
Contributor

@alexreinking @steven-johnson may I ask you to review the PRs, please?

The CMake-specific changes are better handled by @alexreinking, I've assigned them to him.

@stevesuzuki-arm
Copy link
Contributor Author

stevesuzuki-arm commented Jan 18, 2023

For Issue 6, I've added HelloBaremetal sample app in #7286, which depends on other PRs.
Now, all the PRs are ready to review.

@stevesuzuki-arm
Copy link
Contributor Author

I appreciate for your quick feedback! I will have a look and update.

@stevesuzuki-arm
Copy link
Contributor Author

Now that HelloBaremeal works, I will close this item and leave the remaining further rework to #7344

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants