WebIDL build system integration has been rewritten from the ground up.
Changes:
* GlobalGen.py, BindingGen.py, and ExampleGen.py have been removed in
favor of mozwebidl.py.
* Static .webidl files are now processed directly in their original location
and aren't copied to the object directory.
* Generated events <stem>.cpp files are now compiled into the unified
sources. Previously, only the <stem>Binding.cpp files were compiled
into unified sources.
* Exported .h files are now generated directly into their final location.
Previously, they were generated into the local directory then
installed in their final location.
* The list of globalgen-generated files now lives in Python and isn't
duplicated in 3 places.
* The make dependencies are much simpler as a result of using a single
command to perform all code generation. The auto-generated .pp file from
code generation sets up all dependencies necessary to reinvoke code
generation and Python takes care of dependency management.
--HG--
extra : rebase_source : bde37d7aab3bd224ca8611f3ba4aaf6311e2faab
This also moves the LIBXUL_LIBRARY implies FORCE_STATIC_LIB test in the emitter
instead of config.mk, since both variables are defined in moz.build exclusively.
backend.mk can end up with both LIBXUL_LIBRARY and FORCE_STATIC_LIB defined, but
it's just fine.
This writes source with preprocessed package names into
generated/org/mozilla/{firefox,firefox_beta,fennec,fennec_$USERID},
and the other preprocessed source into generated/org/mozilla/gecko.
This layout matches the Java package hierarchy and is what IDEs expect
when including $OBJDIR/generated as a source directory.
--HG--
extra : rebase_source : 5cc397e6808d21a662c1f718ef49ee148c15e465
Before, we checked if config.status was stale in any entrant Makefile
(top level or child directory). This had undesirable side-effects for
partial tree builds, notably that if the build backend was out of date,
the current Makefile was invalidated.
With this patch, we only regenerate the build config automatically in
full/toplevel builds. If an outdated build config is detected on partial
tree builds, we error. The impact of this is mitigated by having mach
build automatically ensure the build config is current.
--HG--
extra : rebase_source : a3a2c1d2bf68d1c0727352ebd9bfb785654e45bf
The backend.RecursiveMakeBackend.built business ensures config.status reruns
when moz.build changes, which is the only thing that would affect unified
sources. Rerunning config.status updates unified sources if they need to
be updated. Once updated, normal object dependencies will ensure they are
rebuilt. Those same dependencies will ensure they are rebuilt when one of
the C/C++ sources they include change. IOW, unified sources don't need any
explicit dependencies generated by the backend.
The backend.RecursiveMakeBackend.built business ensures config.status reruns
when moz.build changes, which is the only thing that would affect unified
sources. Rerunning config.status updates unified sources if they need to
be updated. Once updated, normal object dependencies will ensure they are
rebuilt. Those same dependencies will ensure they are rebuilt when one of
the C/C++ sources they include change. IOW, unified sources don't need any
explicit dependencies generated by the backend.