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

Improve cross-compilation #30

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Conversation

jserv
Copy link
Contributor

@jserv jserv commented May 7, 2023

This commit introduces support for the CROSS_COMPILE variable, which is commonly used in cross-compilation projects such as the Linux kernel.

When CROSS_COMPILE is set, the build process will use it to detect the proper architecture for code generation. If CROSS_COMPILE is not set, the build system will assume a native build by consulting the results of "uname" command. The SYSROOT variable is used along with CROSS_COMPILE to prepend both header and library default directories.

In addition, users can enforce gcc-multilib to generate 32-bit code under x86-64 platforms by specifying TARGET=x86.

Examples:

  1. Arm64 code generation make CROSS_COMPILE=aarch64-none-linux-gnu-
  2. Arm64 code generation with sysroot make CROSS_COMPILE=aarch64-none-linux-gnu- SYSROOT=$(HOME)/php/ARM64
  3. 32-bit x86 code generation make TARGET=x86

This commit introduces support for the CROSS_COMPILE variable, which
is commonly used in cross-compilation projects such as the Linux kernel.

When CROSS_COMPILE is set, the build process will use it to detect the
proper architecture for code generation. If CROSS_COMPILE is not set,
the build system will assume a native build by consulting the results of
"uname" command. The SYSROOT variable is used along with CROSS_COMPILE
to prepend both header and library default directories.

In addition, users can enforce gcc-multilib to generate 32-bit code under
x86-64 platforms by specifying TARGET=x86.

Examples:
1. Arm64 code generation
  make CROSS_COMPILE=aarch64-none-linux-gnu-
2. Arm64 code generation with sysroot
  make CROSS_COMPILE=aarch64-none-linux-gnu- SYSROOT=$(HOME)/php/ARM64
3. 32-bit x86 code generation
  make TARGET=x86
Copy link
Contributor

@weltling weltling left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If this scenario is going to be supported, the change should be tested. It would be thinkable to add a parallel set of runs to the CI matrix, that would exercise all three Linux build scenarios that are currently present. For the aarch64 variant, QEMU could be also used to run the tests.

Thanks

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

Successfully merging this pull request may close these issues.

None yet

2 participants