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

Need consistent arm binaries in release #1988

Closed
smolt opened this issue Jan 30, 2017 · 5 comments
Closed

Need consistent arm binaries in release #1988

smolt opened this issue Jan 30, 2017 · 5 comments

Comments

@smolt
Copy link
Member

smolt commented Jan 30, 2017

I'm in my first go at building the arm LDC binary for release 1.1.0. I thought I'd open this issue to discuss the process instead of continuing to spam issue #1963. The process needs to be repeatable by anyone.

Build is being done on a Raspberry Pi 3 running Raspian jessie. Pi 3 supports armv7, but Raspian is built for armv6 to be backward compatible with all Pi models. LLVM cmake will detect it is building on an armv7 and pick a default triple of armv7l-none-linux-gnueabihf. The system gcc though is arm-none-linux-gnueabihf which produces armv6 instructions when no extra flags are provided. This means a mixed runtime where D code is armv7, C code is armv6.

I've revised ldc-scripts to make arm binary totally armv6 compatible, it is just a matter of feeding LLVM cmake a -DLLVM_DEFAULT_TARGET_TRIPLE=arm-none-linux-gnueabihf instead of letting it auto detect armv7l. I've named package dir ldc2-1.1.0-linux-armhf to make obvious is uses hard-float ABI. This BTW is naming convention rust uses for their armv6 binary, where "armhf" implies "armv6 hard float". Their separate armv7 release is named "armv7hf" (https://forge.rust-lang.org/platform-support.html).

What I think is nice about about an armv6 binary is that this single release should work on both armv6 and armv7 systems. I've tested it on an older Pi 1, it works.

I'll upload this arm binary to 1.1.0 release if this seems like an ok way to go. Later could add binary tuned for armv7.

@kinke
Copy link
Member

kinke commented Jan 30, 2017

Sounds great, thanks for the effort.

@kinke
Copy link
Member

kinke commented Jan 30, 2017

Just out of curiosity, how long does the full build on Pi 3 roughly take?

@smolt
Copy link
Member Author

smolt commented Jan 31, 2017

I'm away so can just roughly say 4 to 6 hours including lllvm, and ldc twice to compile itself.

@smolt
Copy link
Member Author

smolt commented Feb 1, 2017

I uploaded an arm binary package to 1.1.0 release downloads.

@kinke kinke mentioned this issue Oct 29, 2017
@kinke
Copy link
Member

kinke commented Mar 5, 2019

The only remaining ARM package now being the automated AArch64 one produced by Shippable, we can close this. The recent previous releases before 1.14 were all armhf in the sense of LLVM_DEFAULT_TARGET_TRIPLE=arm-none-linux-gnueabihf.

@kinke kinke closed this as completed Mar 5, 2019
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

2 participants