Opened 2 years ago
Closed 14 months ago
#17965 closed bug (fixed)
Private kernel headers include generated file without dependency
Reported by: | dominicm | Owned by: | nobody |
---|---|---|---|
Priority: | low | Milestone: | R1/beta5 |
Component: | Build System | Version: | |
Keywords: | Cc: | ||
Blocked By: | Blocking: | ||
Platform: | All |
Description
In headers/private/kernel/kernel_c++_structs.h the generated kernel_c++_struct_sizes.h is included without a dependency.
This happens to work in Jam, but breaks in Ham.
Fixing this is tricky because the private kernel headers are included wholesale via UsePrivateKernelHeaders (which in turn uses SUBDIR mechanisms) rather than being depended on directly.
Manually tracking down files that consume kernel_c++_structs.h technically works, but is very hacky. Probably the best solution is to extend the SUBDIR mechanism to allow folder-wide dependencies.
Because this only actually causes a build failure in Ham I can just modify Ham's Jambase, but this is still technically incorrect with Jam and it's possible there is already a mechanism for this I don't know about, so info is welcome.
Change History (3)
follow-up: 2 comment:1 by , 2 years ago
comment:2 by , 2 years ago
Replying to korli:
Looks like what was mentioned in the commit https://cgit.haiku-os.org/haiku/commit/?id=fc7864091e2463c0e446f8b3954df4d29e9465af and used in https://cgit.haiku-os.org/haiku/commit/?id=ac3566cd6afe41e874e3fe1f3b60cbe898735fd4
kernel_c++_structs.h is ATM only used by the freebsd_network compat layer.
Good catch; if it's already known and has limited scope I'll probably just add the dependencies manually.
In this case it looks like I just need to explicitly add an Includes dependency from condvar to kernel_c++_structs.h
comment:3 by , 14 months ago
Milestone: | Unscheduled → R1/beta5 |
---|---|
Resolution: | → fixed |
Status: | new → closed |
Fixed in hrev57319 by getting rid of the need for this file altogether and then removing the mechanism.
Looks like what was mentioned in the commit https://cgit.haiku-os.org/haiku/commit/?id=fc7864091e2463c0e446f8b3954df4d29e9465af and used in https://cgit.haiku-os.org/haiku/commit/?id=ac3566cd6afe41e874e3fe1f3b60cbe898735fd4
kernel_c++_structs.h is ATM only used by the freebsd_network compat layer.