Bryan Drewery
2016-06-30 16:42:35 UTC
(bcc'd some specific interested parties)
This is from a private mail I sent to re@ a while back and is a status
update for upcoming work.
Just an update...
- WITH_SYSTEM_COMPILER is now on by default. There has been some
unexpected fallout from this such as with ppc64 thinking it was using
a newer gcc (fixed), or the xlint build failing for 1 user (still not
fixed).
- META_MODE should mostly be done now. Some fixes/tweaks may still
trickle in for edge cases, such as allowing WITH_SYSTEM_COMPILER to work
with it. The problem is that flip-flopping between using an internal
and external compiler and it adding -target/--sysroot flags in on the
2nd build and meta mode detecting the changed build command. I would
like to always pass these flags, even with the internal cross-compiler,
to fix the problem. I think the lld effort would be happy with this too.
- Building clang once in universe isn't coming soon. Likely 3-4 weeks
out. I'll cross the question of merging once it is done and how
intrusive it is. I believe it may be a bit more complex than I imagined
to make it clean and easily maintained. It would need a pre-universe
"universe-toolchain" phase that changes how universe works a lot. I
consider it overall trivial but don't want to duplicate too much code.
It somewhat relies on the new AUTO_OBJ work too. More time is needed on it.
- AUTO_OBJ I am splitting into 3 separate patches after feedback.
1. Removing 'make obj' treewalks from buildworld/buildkernel. This is
coming in the next few days. No risk to it.
2. Unifying the objtree as like
/usr/obj/usr/src/TARGET.TARGET_ARCH/bin/sh. This I will bring in
an option of UNIFIED_OBJDIR to flip between the old and new
patterns. Some tools such as picobsd and the options survey will
rely on the old pattern. A CFT is needed to discover what else
relies on the old patterns still. There's also a problem of
migrating from the old tree to the new. I will bring this patch
as off-by-default to re@ in the next week.
3. Default AUTO_OBJ in subdirs. This one is kind of tricky and needs
some more thought. Non-root especially may be problematic since
it will try to write to /usr/obj by default. I likely will hold
off on this and not propose it for 11.0.
This is from a private mail I sent to re@ a while back and is a status
update for upcoming work.
Heads up, I intend to continue adding a few new features during the
slush/stable period since they are so impactful. They will be
off-by-default for stable/11 at this point I guess. I feel this is fine
since it is not ABI-related.
- AUTO_OBJ: For subdir builds and buildworld, automatically create obj
dirs without needing 'make obj'. I wanted to enable this by default but
can wait for the branch to be created. There is some work pending for this.
- Using objdir pattern of /usr/obj/usr/src/TARGET.TARGET_ARCH/bin/sh for
all archs, not just non-native. I'd prefer this made it into stable/11.
Very little work remaining for this.
- WITH_META_MODE: Fixed incremental (with default -DNO_CLEAN) build
commit. Not planning on-by-default for stable/11.
- Build clang once for universe regardless of WITH_SYSTEM_COMPILER.
On-by-default. I really intend to make this into stable/11. It will be
too great of a time savings to ignore for 11 release testing IMO.
slush/stable period since they are so impactful. They will be
off-by-default for stable/11 at this point I guess. I feel this is fine
since it is not ABI-related.
- AUTO_OBJ: For subdir builds and buildworld, automatically create obj
dirs without needing 'make obj'. I wanted to enable this by default but
can wait for the branch to be created. There is some work pending for this.
- Using objdir pattern of /usr/obj/usr/src/TARGET.TARGET_ARCH/bin/sh for
all archs, not just non-native. I'd prefer this made it into stable/11.
Very little work remaining for this.
- WITH_META_MODE: Fixed incremental (with default -DNO_CLEAN) build
commit. Not planning on-by-default for stable/11.
- Build clang once for universe regardless of WITH_SYSTEM_COMPILER.
On-by-default. I really intend to make this into stable/11. It will be
too great of a time savings to ignore for 11 release testing IMO.
- WITH_SYSTEM_COMPILER is now on by default. There has been some
unexpected fallout from this such as with ppc64 thinking it was using
a newer gcc (fixed), or the xlint build failing for 1 user (still not
fixed).
- META_MODE should mostly be done now. Some fixes/tweaks may still
trickle in for edge cases, such as allowing WITH_SYSTEM_COMPILER to work
with it. The problem is that flip-flopping between using an internal
and external compiler and it adding -target/--sysroot flags in on the
2nd build and meta mode detecting the changed build command. I would
like to always pass these flags, even with the internal cross-compiler,
to fix the problem. I think the lld effort would be happy with this too.
- Building clang once in universe isn't coming soon. Likely 3-4 weeks
out. I'll cross the question of merging once it is done and how
intrusive it is. I believe it may be a bit more complex than I imagined
to make it clean and easily maintained. It would need a pre-universe
"universe-toolchain" phase that changes how universe works a lot. I
consider it overall trivial but don't want to duplicate too much code.
It somewhat relies on the new AUTO_OBJ work too. More time is needed on it.
- AUTO_OBJ I am splitting into 3 separate patches after feedback.
1. Removing 'make obj' treewalks from buildworld/buildkernel. This is
coming in the next few days. No risk to it.
2. Unifying the objtree as like
/usr/obj/usr/src/TARGET.TARGET_ARCH/bin/sh. This I will bring in
an option of UNIFIED_OBJDIR to flip between the old and new
patterns. Some tools such as picobsd and the options survey will
rely on the old pattern. A CFT is needed to discover what else
relies on the old patterns still. There's also a problem of
migrating from the old tree to the new. I will bring this patch
as off-by-default to re@ in the next week.
3. Default AUTO_OBJ in subdirs. This one is kind of tricky and needs
some more thought. Non-root especially may be problematic since
it will try to write to /usr/obj by default. I likely will hold
off on this and not propose it for 11.0.
--
Regards,
Bryan Drewery
Regards,
Bryan Drewery