diff --git a/build/jam/ArchitectureRules b/build/jam/ArchitectureRules index aab38d5dd5..9e7e49cc88 100644 --- a/build/jam/ArchitectureRules +++ b/build/jam/ArchitectureRules @@ -341,7 +341,7 @@ rule KernelArchitectureSetup architecture ; # C/C++ flags - local ccBaseFlags = -finline -fno-builtin ; + local ccBaseFlags = -finline -fno-builtin -Wno-main ; if $(HAIKU_CC_IS_LEGACY_GCC_$(architecture)) != 1 { if $(HAIKU_CC_IS_CLANG_$(architecture)) != 1 { @@ -468,6 +468,11 @@ rule KernelArchitectureSetup architecture } # bootloader-centric flags + HAIKU_BOOT_CCFLAGS + += -DBOOT_ARCHIVE_IMAGE_OFFSET=$(HAIKU_BOOT_ARCHIVE_IMAGE_OFFSET) ; + HAIKU_BOOT_C++FLAGS + += -DBOOT_ARCHIVE_IMAGE_OFFSET=$(HAIKU_BOOT_ARCHIVE_IMAGE_OFFSET) ; + local bootTarget ; for bootTarget in $(HAIKU_BOOT_TARGETS) { switch $(bootTarget) { @@ -557,11 +562,6 @@ rule KernelArchitectureSetup architecture # defines HAIKU_KERNEL_DEFINES += _KERNEL_MODE ; - HAIKU_DEFINES_$(architecture) - += BOOT_ARCHIVE_IMAGE_OFFSET=$(HAIKU_BOOT_ARCHIVE_IMAGE_OFFSET) ; - # TODO: That doesn't need to be a general define. It's just needed for - # compiling (part of) the boot loader. - # kernel add-on glue code HAIKU_KERNEL_ADDON_BEGIN_GLUE_CODE = <$(architecture)>crtbeginS.o haiku_version_glue.o ; diff --git a/build/jam/BootRules b/build/jam/BootRules index 61761cfef7..3755ef0d05 100644 --- a/build/jam/BootRules +++ b/build/jam/BootRules @@ -76,9 +76,9 @@ rule SetupBoot SourceSysHdrs $(sources) : $(TARGET_PRIVATE_KERNEL_HEADERS) ; } - if $(HAIKU_BOOT_C++_HEADERS_DIR_$(TARGET_PACKAGING_ARCH)) { + if $(HAIKU_BOOT_C++_HEADERS_DIR_$(TARGET_KERNEL_ARCH)) { SourceSysHdrs $(sources) : - $(HAIKU_BOOT_C++_HEADERS_DIR_$(TARGET_PACKAGING_ARCH)) ; + $(HAIKU_BOOT_C++_HEADERS_DIR_$(TARGET_KERNEL_ARCH)) ; } # MultiBootSubDirSetup sets the target boot platform on the target object, @@ -90,6 +90,8 @@ rule SetupBoot local platform = $(TARGET_BOOT_PLATFORM:U) ; local object ; for object in $(objects) { + TARGET_PACKAGING_ARCH on $(object) = $(TARGET_KERNEL_ARCH) ; + # add boot flags for the object ObjectCcFlags $(object) : $(HAIKU_BOOT_CCFLAGS) $(HAIKU_BOOT_$(platform)_CCFLAGS) $(2) ; ObjectC++Flags $(object) : $(HAIKU_BOOT_C++FLAGS) $(HAIKU_BOOT_$(platform)_C++FLAGS) $(2) ; @@ -97,13 +99,13 @@ rule SetupBoot ASFLAGS on $(object) = $(HAIKU_BOOT_CCFLAGS) $(HAIKU_BOOT_$(platform)_CCFLAGS) ; # override regular CCFLAGS/C++FLAGS, as we don't want them - TARGET_CCFLAGS_$(TARGET_PACKAGING_ARCH) on $(object) = ; - TARGET_C++FLAGS_$(TARGET_PACKAGING_ARCH) on $(object) = ; + TARGET_CCFLAGS_$(TARGET_KERNEL_ARCH) on $(object) = ; + TARGET_C++FLAGS_$(TARGET_KERNEL_ARCH) on $(object) = ; # override warning flags - TARGET_WARNING_CCFLAGS_$(TARGET_PACKAGING_ARCH) on $(object) + TARGET_WARNING_CCFLAGS_$(TARGET_KERNEL_ARCH) on $(object) = $(TARGET_KERNEL_WARNING_CCFLAGS) ; - TARGET_WARNING_C++FLAGS_$(TARGET_PACKAGING_ARCH) on $(object) + TARGET_WARNING_C++FLAGS_$(TARGET_KERNEL_ARCH) on $(object) = $(TARGET_KERNEL_WARNING_C++FLAGS) ; } } @@ -118,7 +120,7 @@ rule BootLd { # BootLd : : : ; - LINK on $(1) = $(TARGET_LD_$(TARGET_PACKAGING_ARCH)) ; + LINK on $(1) = $(TARGET_LD_$(TARGET_KERNEL_ARCH)) ; LINKFLAGS on $(1) = $(HAIKU_BOOT_$(TARGET_BOOT_PLATFORM:U)_LDFLAGS) $(4) ; if $(3) { LINKFLAGS on $(1) += --script=$(3) ; } @@ -130,8 +132,8 @@ rule BootLd libs += [ TargetBootLibsupc++ true ] ; Depends $(1) : [ TargetBootLibsupc++ ] ; } - LINKLIBS on $(1) = $(libs) [ TargetBootLibgcc true ] ; - Depends $(1) : [ TargetBootLibgcc ] ; + LINKLIBS on $(1) = $(libs) [ TargetBootLibgcc $(TARGET_KERNEL_ARCH) : true ] ; + Depends $(1) : [ TargetBootLibgcc $(TARGET_KERNEL_ARCH) ] ; # TODO: Do we really want to invoke SetupBoot here? The objects should # have been compiled with BootObjects anyway, so we're doing that twice. @@ -205,7 +207,7 @@ actions BootStaticLibraryObjects # Force recreation of the archive to avoid build errors caused by # stale dependencies after renaming or deleting object files. $(RM) "$(1)" - $(HAIKU_AR_$(TARGET_PACKAGING_ARCH)) -r "$(1)" "$(2)" ; + $(HAIKU_AR_$(TARGET_KERNEL_ARCH)) -r "$(1)" "$(2)" ; } rule BuildMBR binary : source diff --git a/build/jam/BuildFeatureRules b/build/jam/BuildFeatureRules index 602e46d6d5..8a9a94b3ca 100644 --- a/build/jam/BuildFeatureRules +++ b/build/jam/BuildFeatureRules @@ -5,6 +5,11 @@ rule FQualifiedBuildFeatureName features # Prepends the name of the current target packaging architecture to the # given feature names. + if $(features[1]) = "QUALIFIED" { + # We have been pre-supplied a qualified name. + return $(features[2]) ; + } + return $(TARGET_PACKAGING_ARCH):$(features) ; } diff --git a/build/jam/BuildSetup b/build/jam/BuildSetup index db069edf36..231b7f565a 100644 --- a/build/jam/BuildSetup +++ b/build/jam/BuildSetup @@ -114,7 +114,12 @@ for architecture in $(HAIKU_PACKAGING_ARCHS) { } if $(HAIKU_PACKAGING_ARCH) { - KernelArchitectureSetup $(HAIKU_PACKAGING_ARCH) ; + local kernelArch = $(HAIKU_PACKAGING_ARCH) ; + # Always use the non-legacy GCC for the kernel. + if $(kernelArch) = x86_gcc2 { + kernelArch = x86 ; + } + KernelArchitectureSetup $(kernelArch) ; } # define primary packaging architecture macro diff --git a/build/jam/KernelRules b/build/jam/KernelRules index 748d585eea..bd6e050b09 100644 --- a/build/jam/KernelRules +++ b/build/jam/KernelRules @@ -16,14 +16,16 @@ rule SetupKernel local object ; for object in $(objects) { + TARGET_PACKAGING_ARCH on $(object) = $(TARGET_KERNEL_ARCH) ; + # add kernel flags for the object ObjectCcFlags $(object) : $(TARGET_KERNEL_CCFLAGS) $(2) ; ObjectC++Flags $(object) : $(TARGET_KERNEL_C++FLAGS) $(2) ; ObjectDefines $(object) : $(TARGET_KERNEL_DEFINES) ; # override regular CCFLAGS/C++FLAGS, as we don't want them - TARGET_CCFLAGS_$(TARGET_PACKAGING_ARCH) on $(object) = ; - TARGET_C++FLAGS_$(TARGET_PACKAGING_ARCH) on $(object) = ; + TARGET_CCFLAGS_$(TARGET_KERNEL_ARCH) on $(object) = ; + TARGET_C++FLAGS_$(TARGET_KERNEL_ARCH) on $(object) = ; # override warning flags TARGET_WARNING_CCFLAGS_$(TARGET_PACKAGING_ARCH) on $(object) @@ -43,7 +45,7 @@ rule KernelLd { # KernelLd : : : ; - LINK on $(1) = $(TARGET_LD_$(TARGET_PACKAGING_ARCH)) ; + LINK on $(1) = $(TARGET_LD_$(HAIKU_KERNEL_ARCH)) ; LINKFLAGS on $(1) = $(4) ; if $(3) { @@ -103,7 +105,7 @@ actions KernelSo1 export $(HOST_ADD_BUILD_COMPATIBILITY_LIB_DIR) $(2[1]) --data $(2[2]) $(1) && - $(HAIKU_ELFEDIT_$(TARGET_PACKAGING_ARCH)) --output-type dyn $(1) + $(HAIKU_ELFEDIT_$(HAIKU_KERNEL_ARCH)) --output-type dyn $(1) } rule KernelAddon @@ -115,6 +117,8 @@ rule KernelAddon local libs = $(3) ; AddResources $(1) : $(4) ; + TARGET_PACKAGING_ARCH on $(target) = $(TARGET_KERNEL_ARCH) ; + local kernel ; local beginGlue ; local endGlue ; @@ -164,6 +168,8 @@ rule KernelMergeObject # will be added. # + TARGET_PACKAGING_ARCH on $(1) = $(TARGET_KERNEL_ARCH) ; + SetupKernel $(2) : $(3) ; Objects $(2) ; MergeObjectFromObjects $(1) : $(2:S=$(SUFOBJ)) : $(4) ; @@ -175,6 +181,8 @@ rule KernelStaticLibrary # This is designed to take a set of sources and libraries and create # a static library. + TARGET_PACKAGING_ARCH on $(1) = $(TARGET_KERNEL_ARCH) ; + SetupKernel $(2) : $(3) : false ; Library $(1) : $(2) ; } @@ -185,6 +193,8 @@ rule KernelStaticLibraryObjects # This is designed to take a set of sources and libraries and create # a file called + TARGET_PACKAGING_ARCH on $(1) = $(TARGET_KERNEL_ARCH) ; + # Show that we depend on the libraries we need SetupKernel $(2) ; LocalClean clean : $(1) ; @@ -199,5 +209,5 @@ actions KernelStaticLibraryObjects # Force recreation of the archive to avoid build errors caused by # stale dependencies after renaming or deleting object files. $(RM) "$(1)" - $(HAIKU_AR_$(TARGET_PACKAGING_ARCH)) -r "$(1)" "$(2)" ; + $(HAIKU_AR_$(HAIKU_KERNEL_ARCH)) -r "$(1)" "$(2)" ; } diff --git a/build/jam/MainBuildRules b/build/jam/MainBuildRules index 4ce5d31ca2..cf2b51c97d 100644 --- a/build/jam/MainBuildRules +++ b/build/jam/MainBuildRules @@ -258,15 +258,17 @@ actions Ld $(LINK) $(LINKFLAGS) -o "$(1)" "$(2)" "$(NEEDLIBS)" $(LINKLIBS) } -rule CreateAsmStructOffsetsHeader header : source +rule CreateAsmStructOffsetsHeader header : source : architecture { - # CreateAsmStructOffsetsHeader header : source + # CreateAsmStructOffsetsHeader header : source : architecture # # Grist will be added to both header and source. header = [ FGristFiles $(header) ] ; source = [ FGristFiles $(source) ] ; + TARGET_PACKAGING_ARCH on $(header) = $(architecture) ; + # find out which headers, defines, etc. to use local headers ; local sysHeaders ; @@ -367,7 +369,8 @@ rule CreateAsmStructOffsetsHeader header : source Depends $(header) : $(source) $(PLATFORM) ; SEARCH on $(source) += $(SEARCH_SOURCE) ; - MakeLocateArch $(header) ; + MakeLocate $(header) : [ FDirName $(TARGET_COMMON_DEBUG_OBJECT_DIR_$(architecture)) + system kernel ] ; LocalClean clean : $(header) ; HDRRULE on $(source) = HdrRule ; diff --git a/build/jam/OverriddenJamRules b/build/jam/OverriddenJamRules index 01659c9a1a..0f7e72ecc4 100644 --- a/build/jam/OverriddenJamRules +++ b/build/jam/OverriddenJamRules @@ -6,12 +6,13 @@ rule Link { # Note: RESFILES must be set before invocation. + local architecture = [ on $(1) return $(TARGET_PACKAGING_ARCH) ] ; if [ on $(1) return $(PLATFORM) ] = host { LINK on $(1) = $(HOST_LINK) ; LINKFLAGS on $(1) = $(HOST_LINKFLAGS) [ on $(1) return $(LINKFLAGS) ] ; } else { - LINK on $(1) = $(TARGET_LINK_$(TARGET_PACKAGING_ARCH)) ; - LINKFLAGS on $(1) = $(TARGET_LINKFLAGS_$(TARGET_PACKAGING_ARCH)) + LINK on $(1) = $(TARGET_LINK_$(architecture)) ; + LINKFLAGS on $(1) = $(TARGET_LINKFLAGS_$(architecture)) [ on $(1) return $(LINKFLAGS) ] ; } diff --git a/build/jam/SystemLibraryRules b/build/jam/SystemLibraryRules index d7d75cc7f7..767b713bab 100644 --- a/build/jam/SystemLibraryRules +++ b/build/jam/SystemLibraryRules @@ -103,7 +103,7 @@ rule TargetKernelLibsupc++ asPath flags += path ; } return [ - BuildFeatureAttribute gcc_syslibs_devel + BuildFeatureAttribute QUALIFIED $(TARGET_KERNEL_ARCH):gcc_syslibs_devel : libsupc++-kernel.a : $(flags) ] ; } else { @@ -215,7 +215,7 @@ rule TargetKernelLibgcc asPath flags += path ; } return [ - BuildFeatureAttribute gcc_syslibs_devel + BuildFeatureAttribute QUALIFIED $(TARGET_KERNEL_ARCH):gcc_syslibs_devel : libgcc-kernel.a : $(flags) ] ; } else { @@ -224,15 +224,15 @@ rule TargetKernelLibgcc asPath } -rule TargetBootLibgcc asPath +rule TargetBootLibgcc architecture : asPath { - # TargetBootLibgcc [ ] + # TargetBootLibgcc [ architecture ] : [ ] # # Returns the static bootloader libgcc for the target. # Invoking with = true will return the full library path. if $(TARGET_PLATFORM) = haiku { - if $(TARGET_PACKAGING_ARCH) = x86_64 { + if $(architecture) = x86_64 { # we need to use the 32-bit libgcc.a built by the cross-compiler return $(TARGET_BOOT_LIBGCC) ; @@ -247,7 +247,7 @@ rule TargetBootLibgcc asPath flags += path ; } return [ - BuildFeatureAttribute gcc_syslibs_devel + BuildFeatureAttribute QUALIFIED $(architecture):gcc_syslibs_devel : libgcc-kernel.a : $(flags) ] ; } else { @@ -292,7 +292,7 @@ rule TargetKernelLibgcceh asPath flags += path ; } return [ - BuildFeatureAttribute gcc_syslibs_devel + BuildFeatureAttribute QUALIFIED $(TARGET_KERNEL_ARCH):gcc_syslibs_devel : libgcc_eh-kernel.a : $(flags) ] ; } else { diff --git a/headers/private/kernel/arch/x86/arch_cpuasm.h b/headers/private/kernel/arch/x86/arch_cpuasm.h index 878c2d6b8b..8b3d5e5daf 100644 --- a/headers/private/kernel/arch/x86/arch_cpuasm.h +++ b/headers/private/kernel/arch/x86/arch_cpuasm.h @@ -34,8 +34,11 @@ _v; \ }) -#define x86_write_cr3(value) \ - __asm__("mov %0,%%cr3" : : "r" (value)) +static inline void +x86_write_cr3(size_t value) +{ + __asm__("mov %0,%%cr3" : : "r" (value) : "memory"); +} #define x86_read_cr4() ({ \ size_t _v; \ diff --git a/src/add-ons/kernel/file_systems/bfs/JamCommon b/src/add-ons/kernel/file_systems/bfs/JamCommon index b2656e59e6..336411c5e7 100644 --- a/src/add-ons/kernel/file_systems/bfs/JamCommon +++ b/src/add-ons/kernel/file_systems/bfs/JamCommon @@ -12,7 +12,7 @@ SubDirHdrs $(HAIKU_TOP) src add-ons kernel file_systems bfs ; } - if $(TARGET_PACKAGING_ARCH) = x86_gcc2 { + if $(TARGET_KERNEL_ARCH) = x86_gcc2 { # GCC2 doesn't compile BFS correctly with -O2 or more OPTIM = -O1 ; } diff --git a/src/add-ons/kernel/file_systems/udf/drive_setup_addon/Jamfile b/src/add-ons/kernel/file_systems/udf/drive_setup_addon/Jamfile index 23e546dcee..03a9734c63 100644 --- a/src/add-ons/kernel/file_systems/udf/drive_setup_addon/Jamfile +++ b/src/add-ons/kernel/file_systems/udf/drive_setup_addon/Jamfile @@ -13,7 +13,7 @@ oldOPTIM = $(OPTIM) ; defines += COMPILE_FOR_R5 ; } - if $(TARGET_PACKAGING_ARCH) = x86_gcc2 { + if $(TARGET_KERNEL_ARCH) = x86_gcc2 { # the gcc on BeOS doesn't compile BFS correctly with -O2 or more OPTIM = -O1 ; } diff --git a/src/system/boot/Jamfile b/src/system/boot/Jamfile index 4bddd373b9..0469ae6cbe 100644 --- a/src/system/boot/Jamfile +++ b/src/system/boot/Jamfile @@ -63,11 +63,11 @@ rule BuildCoffLoader { actions BuildCoffLoader bind HACK_COFF { $(RM) -f $(1) # get the address of the COFF entry - $(TARGET_OBJCOPY_$(TARGET_PACKAGING_ARCH)) -O symbolsrec $(2) $(2).syms + $(TARGET_OBJCOPY_$(TARGET_KERNEL_ARCH)) -O symbolsrec $(2) $(2).syms EP=`grep _coff_start $(2).syms | tr -d '\r' | cut -d'$' -f2` $(RM) -f $(2).syms # copy to XCOFF format and patch the entry point - $(TARGET_OBJCOPY_$(TARGET_PACKAGING_ARCH)) -O $(COFF_FORMAT) --set-start="0x${EP}" $(2) $(1) + $(TARGET_OBJCOPY_$(TARGET_KERNEL_ARCH)) -O $(COFF_FORMAT) --set-start="0x${EP}" $(2) $(1) #$(CP) $(2) $(1) # fill-in some fields objcopy missed $(HACK_COFF) $(1) @@ -93,7 +93,7 @@ rule BuildBiosLoader { actions BuildBiosLoader { $(RM) -f $(1) - $(TARGET_OBJCOPY_$(TARGET_PACKAGING_ARCH)) -O binary $(2) $(1) + $(TARGET_OBJCOPY_$(TARGET_KERNEL_ARCH)) -O binary $(2) $(1) } @@ -127,12 +127,12 @@ actions BuildEFILoader $(RM) -f $(1) if [ "$(OUTPUT_TARGET)" = "binary" ]; then # no bfd support, fake efi Pe header - $(TARGET_OBJCOPY_$(TARGET_PACKAGING_ARCH)) -j .text -j .sdata -j .data \ + $(TARGET_OBJCOPY_$(TARGET_KERNEL_ARCH)) -j .text -j .sdata -j .data \ -j .dynamic -j .dynsym -j .rel* -j .rela* -j .reloc -j .dynstr \ --output-target=$(OUTPUT_TARGET) $(2) $(1) else # bfd supports pe + efi for arch - $(TARGET_OBJCOPY_$(TARGET_PACKAGING_ARCH)) -j .text -j .sdata -j .data \ + $(TARGET_OBJCOPY_$(TARGET_KERNEL_ARCH)) -j .text -j .sdata -j .data \ -j .dynamic -j .dynsym -j .rel* -j .rela* -j .reloc -j .dynstr \ --output-target=$(OUTPUT_TARGET) \ --subsystem=efi-app $(2) $(1) @@ -222,7 +222,7 @@ rule AtariBootPrgLd { # AtariBootPrgLd : : : ; - LINK on $(1) = $(TARGET_LD_$(TARGET_PACKAGING_ARCH)) ; + LINK on $(1) = $(TARGET_LD_$(TARGET_KERNEL_ARCH)) ; LINKFLAGS on $(1) = $(4) ; if $(3) { LINKFLAGS on $(1) += --script=$(3) ; } @@ -250,7 +250,7 @@ actions AtariBootPrgLd local extraSources = ; -if $(TARGET_CC_IS_LEGACY_GCC_$(TARGET_PACKAGING_ARCH)) = 1 { +if $(TARGET_CC_IS_LEGACY_GCC_$(TARGET_KERNEL_ARCH)) = 1 { extraSources += atomic.S ; } diff --git a/src/system/kernel/Jamfile b/src/system/kernel/Jamfile index 993bdd49e2..469ea108af 100644 --- a/src/system/kernel/Jamfile +++ b/src/system/kernel/Jamfile @@ -78,12 +78,12 @@ KernelMergeObject kernel_core.o : # Generate the header defining macros for C++ structure sizes. local kernelC++StructSizesHeader = [ FGristFiles kernel_c++_struct_sizes.h ] ; -TARGET_HDRS_$(TARGET_PACKAGING_ARCH) on $(kernelC++StructSizesHeader) +TARGET_HDRS_$(TARGET_KERNEL_ARCH) on $(kernelC++StructSizesHeader) = [ on $(kernelC++StructSizesHeader) - return $(TARGET_HDRS_$(TARGET_PACKAGING_ARCH)) ] + return $(TARGET_HDRS_$(TARGET_KERNEL_ARCH)) ] $(TARGET_PRIVATE_KERNEL_HEADERS) ; CreateAsmStructOffsetsHeader $(kernelC++StructSizesHeader) - : kernel_c++_structs.cpp ; + : kernel_c++_structs.cpp : $(TARGET_KERNEL_ARCH) ; # We need to specify the dependency on the generated syscalls files explicitly. Includes [ FGristFiles syscalls.cpp ] diff --git a/src/system/kernel/arch/arm/Jamfile b/src/system/kernel/arch/arm/Jamfile index 5ca2d39c34..3357d5c32f 100644 --- a/src/system/kernel/arch/arm/Jamfile +++ b/src/system/kernel/arch/arm/Jamfile @@ -58,5 +58,5 @@ KernelMergeObject kernel_arch_arm.o : kernel_fdt.a ; -CreateAsmStructOffsetsHeader asm_offsets.h : asm_offsets.cpp ; +CreateAsmStructOffsetsHeader asm_offsets.h : asm_offsets.cpp : $(TARGET_KERNEL_ARCH) ; diff --git a/src/system/kernel/arch/m68k/Jamfile b/src/system/kernel/arch/m68k/Jamfile index 83768add32..27df2a9103 100644 --- a/src/system/kernel/arch/m68k/Jamfile +++ b/src/system/kernel/arch/m68k/Jamfile @@ -82,5 +82,5 @@ KernelMergeObject kernel_arch_m68k.o : ; -CreateAsmStructOffsetsHeader asm_offsets.h : asm_offsets.cpp ; +CreateAsmStructOffsetsHeader asm_offsets.h : asm_offsets.cpp : $(TARGET_KERNEL_ARCH) ; diff --git a/src/system/kernel/arch/ppc/Jamfile b/src/system/kernel/arch/ppc/Jamfile index 490478bdb7..2ae07cdb55 100644 --- a/src/system/kernel/arch/ppc/Jamfile +++ b/src/system/kernel/arch/ppc/Jamfile @@ -76,4 +76,4 @@ KernelMergeObject kernel_arch_ppc.o : kernel_fdt.a ; -CreateAsmStructOffsetsHeader asm_offsets.h : asm_offsets.cpp ; +CreateAsmStructOffsetsHeader asm_offsets.h : asm_offsets.cpp : $(TARGET_KERNEL_ARCH) ; diff --git a/src/system/kernel/arch/x86/Jamfile b/src/system/kernel/arch/x86/Jamfile index 45ab1375d7..4858ec18c2 100644 --- a/src/system/kernel/arch/x86/Jamfile +++ b/src/system/kernel/arch/x86/Jamfile @@ -114,7 +114,7 @@ KernelMergeObject kernel_arch_$(TARGET_KERNEL_ARCH).o : $(TARGET_KERNEL_PIC_CCFLAGS) ; -CreateAsmStructOffsetsHeader asm_offsets.h : asm_offsets.cpp ; +CreateAsmStructOffsetsHeader asm_offsets.h : asm_offsets.cpp : $(TARGET_KERNEL_ARCH) ; # We need to specify the dependency on the generated syscalls file explicitly. Includes [ FGristFiles interrupts.S arch.S signals.cpp signals_asm.S ] diff --git a/src/system/kernel/lib/arch/x86/Jamfile b/src/system/kernel/lib/arch/x86/Jamfile index 73678ad806..0e6e1a2619 100644 --- a/src/system/kernel/lib/arch/x86/Jamfile +++ b/src/system/kernel/lib/arch/x86/Jamfile @@ -1,7 +1,7 @@ SubDir HAIKU_TOP src system kernel lib arch x86 ; # find the generated asm_offsets.h -SubDirHdrs [ FDirName $(TARGET_COMMON_DEBUG_OBJECT_DIR_$(TARGET_PACKAGING_ARCH)) +SubDirHdrs [ FDirName $(TARGET_COMMON_DEBUG_OBJECT_DIR_$(TARGET_KERNEL_ARCH)) system kernel arch $(TARGET_ARCH) ] ; SEARCH_SOURCE += [ FDirName $(SUBDIR) $(DOTDOT) generic ] ; diff --git a/src/system/kernel/lib/arch/x86_64/Jamfile b/src/system/kernel/lib/arch/x86_64/Jamfile index a4a8feedd5..24c29552bf 100644 --- a/src/system/kernel/lib/arch/x86_64/Jamfile +++ b/src/system/kernel/lib/arch/x86_64/Jamfile @@ -1,8 +1,8 @@ SubDir HAIKU_TOP src system kernel lib arch x86_64 ; # find the generated asm_offsets.h -SubDirHdrs [ FDirName $(TARGET_COMMON_DEBUG_OBJECT_DIR_$(TARGET_PACKAGING_ARCH)) - system kernel arch $(TARGET_KERNEL_ARCH_DIR) ] ; +SubDirHdrs [ FDirName $(TARGET_COMMON_DEBUG_OBJECT_DIR_$(TARGET_KERNEL_ARCH)) + system kernel arch $(TARGET_KERNEL_ARCH) ] ; SEARCH_SOURCE += [ FDirName $(SUBDIR) $(DOTDOT) generic ] ; diff --git a/src/tools/gensyscalls/Jamfile b/src/tools/gensyscalls/Jamfile index 916dffb64d..c5c4a73b9f 100644 --- a/src/tools/gensyscalls/Jamfile +++ b/src/tools/gensyscalls/Jamfile @@ -150,7 +150,7 @@ for architectureObject in [ MultiArchSubDirSetup ] { [ FDirName $(SUBDIR) arch $(TARGET_ARCH_$(architecture)) ] $(TARGET_PRIVATE_SYSTEM_HEADERS_$(architecture)) ; CreateAsmStructOffsetsHeader $(syscallTypesSizes) - : $(syscallTypesSizesSource) ; + : $(syscallTypesSizesSource) : $(TARGET_PACKAGING_ARCH) ; #Includes $(syscallInfos) : $(syscallTypesSizes) ; # explicitly tell jam about the inclusion of the generated header