tools
tools copied to clipboard
Fix LDC arm64 build
This improves upon https://github.com/dlang/dmd/pull/13288 and adds a copy of osmodel.mak
into this repo, to break the build dependency between the two repos. This allows one to build the tools with ldc
, without the need to clone dmd
.
This PR also adds a new make var ARCH
which is the llvm/dub compatible architecture (ie. x86_64
, x86
, or aarch64
). This replaces the previous subst
hack on line 42, which could never recover arm64
from just the MODEL
64.
Related bugzilla, raising a similar issue: https://issues.dlang.org/show_bug.cgi?id=22078
Thanks for your pull request and interest in making D better, @lionello! We are looking forward to reviewing it, and you should be hearing from a maintainer soon. Please verify that your PR follows this checklist:
- My PR is fully covered with tests (you can see the coverage diff by visiting the details link of the codecov check)
- My PR is as minimal as possible (smaller, focused PRs are easier to review than big ones)
- I have provided a detailed rationale explaining my changes
- New or modified functions have Ddoc comments (with
Params:
andReturns:
)
Please see CONTRIBUTING.md for more information.
If you have addressed all reviews or aren't sure how to proceed, don't hesitate to ping us with a simple comment.
Bugzilla references
Your PR doesn't reference any Bugzilla issue.
If your PR contains non-trivial changes, please reference a Bugzilla issue or create a manual changelog.
Testing this PR locally
If you don't have a local development environment setup, you can use Digger to test this PR:
dub run digger -- build "master + tools#441"
@wilzbach @CyberShadow could you guys have a look at this when you have time?
I thought reusing the include file was a feature. Perhaps it would make sense to use the one from Druntime instead, if the DMD repository is not otherwise useful in these circumstances?
I thought reusing the include file was a feature. Perhaps it would make sense to use the one from Druntime instead, if the DMD repository is not otherwise useful in these circumstances?
I think the point here is to break the dependency between the two repositories. The current way could not easily do reproducible builds and it is inefficient to clone a whole repo for a single file. Although I think the Makefile is mostly used internally anyway, so we could just have fallbacks to dmd/druntime/phobos and hang if none of them has it, but I think this is the most reasonable way if we want to stick with old GNU Makefiles.
I think the point here is to break the dependency between the two repositories. The current way could not easily do reproducible builds and it is inefficient to clone a whole repo for a single file.
Then maybe download the single file instead of cloning the entire repo?
curl -L -O https://raw.githubusercontent.com/dlang/dmd/master/src/osmodel.mak
The file can even be pinned to a certain reveision:
curl -L -O https://raw.githubusercontent.com/dlang/dmd/f87bc623ea3b3a722c50ecb0a6c318add1a35916/src/osmodel.mak
Copying the file here will just "hide" the dependency because future changes will have to be applied to each copy.
I have submitted a PR for the osmodel.mak
changes to dmd
, but I still think it's excessive to have a cross-repo dependency for such a trivial file.
Once https://github.com/dlang/dmd/pull/13428 is merged I can update this PR to use curl
instead of git clone
.
The repos changed quite a lot. Closing.