Opened 9 years ago
Closed 9 years ago
#12162 closed bug (no change required)
Hybrid build failure on Haiku
Reported by: | haiqu | Owned by: | bonefish |
---|---|---|---|
Priority: | normal | Milestone: | Unscheduled |
Component: | Build System | Version: | R1/Development |
Keywords: | Cc: | ||
Blocked By: | Blocking: | ||
Platform: | All |
Description (last modified by )
C++ /Work/generated/objects/haiku/x86_gcc2/release/system/boot/platform/bios_ia32/mmu.o C++ /Work/generated/objects/haiku/x86_gcc2/release/system/boot/platform/bios_ia32/long.o /Work/haiku/src/system/boot/platform/bios_ia32/mmu.cpp: In function `void mmu_init_for_kernel()': /Work/haiku/src/system/boot/platform/bios_ia32/mmu.cpp:549: implicit declaration of function `int STATIC_ASSERT(...)' /Work/haiku/src/system/boot/platform/bios_ia32/long.cpp: In function `void long_gdt_init()': /Work/haiku/src/system/boot/platform/bios_ia32/long.cpp:68: implicit declaration of function `int STATIC_ASSERT(...)'
I have no problem with either a pure X86 or X86_64 build.
Attachments (3)
Change History (15)
comment:1 by , 9 years ago
comment:3 by , 9 years ago
Description: | modified (diff) |
---|
comment:4 by , 9 years ago
Fixed it.
Add STATIC_ASSERT macro to src/system/boot/platform/bios_ia32/debug.h Add kprintf prototype to src/system/boot/platform/bios_ia32/debug.h
It's now failing in the disk manager but at least we have progress.
File attached.
comment:7 by , 9 years ago
hrev49368 should fix the issue from your build log.
As for the STATIC_ASSERT
issue: The macro is defined in headers/private/kernel/debug.h. The header should be included indirectly by src/system/boot/platform/bios_ia32/mmu.cpp via the chain
- headers/private/kernel/boot/platform.h
- headers/private/kernel/boot/vfs.h
- headers/private/kernel/util/DoublyLinkedList.h
- headers/private/kernel/debug.h
I could imagine that for some reason src/system/boot/platform/bios_ia32/debug.h is favored over headers/private/kernel/debug.h. The build log and the pre-processed output (i.e. run the failing command line manually, but replace -c
with -E
and adjust the name of the output file) would be helpful.
comment:8 by , 9 years ago
I tried including kernel/debug.h manually before making the initial report and it came up with a slew of other errors, it was cleaner to add the STATIC_ASSERT locally.
New crash report attached.
comment:10 by , 9 years ago
The command line shows the problem: -iquote
appears instead of the correct includes separator for gcc 2 -I-
. How that mix-up can happen is a bit puzzling, since -iquote
is only used es the local includes prefix for gcc 4. So it not only is for a different packaging architecture, but also a different variable. Moreover all this works correctly when cross-building.
Please attach your BuildConfig file. Some debug output would be nice too. Please insert:
- at the end of rule SetIncludePropertiesVariables:
Echo $(prefix)_INCLUDES_SEPARATOR$(suffix): $($(prefix)_INCLUDES_SEPARATOR$(suffix)) ; Echo $(prefix)_LOCAL_INCLUDES_OPTION$(suffix): $($(prefix)_LOCAL_INCLUDES_OPTION$(suffix)) ; Echo $(prefix)_SYSTEM_INCLUDES_OPTION$(suffix): $($(prefix)_SYSTEM_INCLUDES_OPTION$(suffix)) ;
- at the end of the loop setting up the arch-dependent TARGET_ variables:
Echo TARGET_$(var): $(TARGET_$(var)) ;
To get the debug output, you don't have to build anything; jam -q nothing
should suffice.
comment:11 by , 9 years ago
That was it!!
I changed build/jam/HelperRules weeks ago to "get rid of an annoying warning" and even tested the build afterwards. What I evidently didn't do was jam clean
first.
Call me Freddie Footbullet. I'll be more careful of the GCC2 requirements in future.
Thanks, solved.
comment:12 by , 9 years ago
Resolution: | → no change required |
---|---|
Status: | new → closed |
Also noted is this code hasn't changed in years so something else has happened ...
... and I did delete all objects first, to ensure no corrupted files were included.