Back when this was added, we weren't using sysroots, and we did end up
with host binaries that couldn't run on the host because libstdc++ came
along the host compiler, and was newer than the system libstdc++. These
concerns are long gone (libstdc++ in the sysroots is older than any
supported linux host build system), so we don't need to run those checks
anymore.
Differential Revision: https://phabricator.services.mozilla.com/D182691
The build graph has dependencies like:
some/dir/target: some/dir/target-objects
where some/dir/target-objects will build the objects in the directory,
and some/dir/target will link some binary (executable or shared library)
using those objects (and/or objects in other directories).
From that perspective, the rust (static) libraries are more similar to
objects, and we should treat them as such.
This will allow to add the right dependencies to use a in-tree-built tool
to link shared libraries without having building the rust libraries
depend on it just because they are treated as other binaries in the
build graph.
Differential Revision: https://phabricator.services.mozilla.com/D182694
First, instead of using a path, use a version, which is more convenient
(via a patch in the top-level Cargo.toml).
Second, we make the build system itself enforce its presence for any
crate that is hooked to the build system as a program or library.
Finally, for each crate depending on the workspace hack, we add a
feature named after it, and make the build system enforce that the
feature is set. For now, this remains unused, but the end goal is to
have each of those features enable the dependencies each of these
crates need, so that if crate A and B need dependency D, but crate C
doesn't, building crate C doesn't build D.
Differential Revision: https://phabricator.services.mozilla.com/D180910
This moves the creation of both rlbox.wasm.c and rlbox.wasm.h to
pre-compile, which allows static-analysis to create both files (but more
importantly the .h) without also compiling rlbox.wasm.c, which takes
forever.
Differential Revision: https://phabricator.services.mozilla.com/D180173
When rustc generates its dependency file, it takes into account current
version of the codebase. If an update of the code then happens, with,
say an ipdl file being removed, the corresponding .h is no longer
generated and make rightfully complains about missing dependency.
Allow this kind of transition by providing a dummy rule for each
dependency generated by rustc.
Differential Revision: https://phabricator.services.mozilla.com/D178617
When rustc generates its dependency file, it takes into account current
version of the codebase. If an update of the code then happens, with,
say an ipdl file being removed, the corresponding .h is no longer
generated and make rightfully complains about missing dependency.
Allow this kind of transition by providing a dummy rule for each
dependency generated by rustc.
Differential Revision: https://phabricator.services.mozilla.com/D178617
Practically speaking, this doesn't make a huge difference, because
libmozglue contains operator new/operator delete overrides. This will
enable inlining opportunities, though.
It is worth noting that there's equivalent code in
js/src/old-configure.in but it's left as is because it is actually no-op
at the moment. This will be fixed in bug 1829049.
The check for __EXCEPTIONS is replaced with __cpp_exceptions because the
former is defined for any type of exception, including ObjC exceptions,
while the latter is defined for C++ exceptions only.
Differential Revision: https://phabricator.services.mozilla.com/D175976
Practically speaking, this doesn't make a huge difference, because
libmozglue contains operator new/operator delete overrides. This will
enable inlining opportunities, though.
It is worth noting that there's equivalent code in
js/src/old-configure.in but it's left as is because it is actually no-op
at the moment. This will be fixed in bug 1829049.
The check for __EXCEPTIONS is replaced with __cpp_exceptions because the
former is defined for any type of exception, including ObjC exceptions,
while the latter is defined for C++ exceptions only.
Differential Revision: https://phabricator.services.mozilla.com/D175976
Practically speaking, this doesn't make a huge difference, because
libmozglue contains operator new/operator delete overrides. This will
enable inlining opportunities, though.
It is worth noting that there's equivalent code in
js/src/old-configure.in but it's left as is because it is actually no-op
at the moment. This will be fixed in bug 1829049.
The check for __EXCEPTIONS is replaced with __cpp_exceptions because the
former is defined for any type of exception, including ObjC exceptions,
while the latter is defined for C++ exceptions only.
Differential Revision: https://phabricator.services.mozilla.com/D175976