Build ANGLE as an additional static library for tests and other executables
Tests and other executables need to access ANGLE internal functions that should not and can not be exposed through the dynamic library.
This would result in two builds: one for actual use, other for testers.
Created attachment 435578 [details]
Note that there are important steps to take when updating ANGLE. See https://trac.webkit.org/wiki/UpdatingANGLE
Comment on attachment 435578 [details]
If I understand this correctly, this makes it so we build ANGLE twice. That would unnecessarily slow down the build.
By the way, we already undid this in https://webkit.org/b/218469
(In reply to Alex Christensen from comment #4)
> If I understand this correctly, this makes it so we build ANGLE twice. That would unnecessarily slow down the build.
No, only for the case where the testers would be built.
> By the way, we already undid this in https://webkit.org/b/218469
No, it was different. In bug 218469, the static libANGLE.a would always be built.
Here, libANGLE.a would be built only when requested. None of the default used targets would request it to be built.
Taking the liberty of reopening to make progress.
Created attachment 435760 [details]
Comment on attachment 435760 [details]
One way or another, it would be ideal for WebKit's clone of ANGLE to be able to build and run the integrated unit tests.
Please ping once this patch is green on the EWS bots.
Created attachment 436170 [details]
Comment on attachment 436170 [details]
Hoping Alex finds this palatable so that Apple folks can build and run these important test suites out of WebKit's copy of the ANGLE repo.
As mentioned earlier, we're working on getting these tests passing with the direct-to-Metal backend in upstream ANGLE: https://bugs.chromium.org/p/angleproject/issues/detail?id=5505 .
Do we have a plan to run the ANGLE unit tests regularly?
This basically checks in an extra, unused build system to be used with things outside of our repo. Is there a reason that this needs to be in our repo?
Has anyone verified what this does to our internal build system?
(In reply to Alex Christensen from comment #11)
> Do we have a plan to run the ANGLE unit tests regularly?
Yes, I think the current near to medium plan is that we commit changes to Source/ThirdParty/ANGLE, like we have been doing for quite some time. Currently, for quite some time, the changes have been committed without running tests or implementing additional tests that exercise the changes. This has the obvious drawbacks that testless changes typically have. Near to medium term, we should change this.
Even if we did not do any commits other than merges from upstream, it'd still be very good idea to test what we compile -- to understand whether our compilation matches the upstream compilation.
> This basically checks in an extra, unused build system
What do you mean extra, unused build system? There's no build system being added.
The patch here adds normal build target (libANGLE.a) to the normal build system.
The target will be used in for the test executables and development executables. For example, see the blocking bug 229079.
> to be used with things outside of our repo.
What do you mean "to be used with things outside our repo"?
All the code being compiled and intended to be run by tests or development executables are in the repository (WebKit.git)
> Is there a reason that this needs to be in our repo?
Our development, such as debugging and testing, works based on the work in WebKit repository. As such, running test executables and preferably tests to exercise this code is needed.
> Has anyone verified what this does to our internal build system?
I have verified to the best of my knowledge that this change doesn't do anything to our internal build system, as none of the default build targets refer to the build targets added here.
Comment on attachment 436170 [details]
Clearing the review flag here since it has been untouched for a nearly 6 months.
It seems like a good idea to me. Kimmo do you want to re-upload?