SubDir HAIKU_TOP src system kernel ;{local defines =HAIKU_ARCH=\\\"$(TARGET_ARCH)\\\";defines = [ FDefines $(defines) ] ;SubDirCcFlags $(defines) ;SubDirC++Flags $(defines) ;}SEARCH_SOURCE += [ FDirName $(SUBDIR) events ] ;SEARCH_SOURCE += [ FDirName $(SUBDIR) locks ] ;SEARCH_SOURCE += [ FDirName $(SUBDIR) scheduler ] ;UsePrivateHeaders libroot ;UsePrivateHeaders shared ;UsePrivateHeaders runtime_loader ;AddResources kernel_$(TARGET_ARCH) : kernel.rdef ;SetVersionScript kernel_$(TARGET_ARCH) : kernel_versions ;SetVersionScript kernel.so : kernel_versions ;KernelMergeObject kernel_core.o :boot_item.cppboot_splash.cppcommpage.cppcondition_variable.cppcpu.cppDPC.cppelf.cppheap.cppimage.cppinterrupts.cppkernel_daemon.cpplinkhack.clisteners.cpplow_resource_manager.cppmain.cppmodule.cppport.cppreal_time_clock.cppsem.cppshutdown.cppsignal.cppsystem_info.cppsmp.cppsyscalls.cppteam.cppthread.cpptimer.cppUserEvent.cppusergroup.cppUserTimer.cpp# eventswait_for_objects.cppNotifications.cppevent_queue.cpp# lockslock.cppuser_mutex.cpp# schedulerlow_latency.cpppower_saving.cppscheduler.cppscheduler_cpu.cppscheduler_load.cppscheduler_profiler.cppscheduler_thread.cppscheduler_tracing.cppscheduling_analysis.cpp: $(TARGET_KERNEL_PIC_CCFLAGS);# We need to specify the dependency on the generated syscalls files explicitly.Includes [ FGristFiles syscalls.cpp ]:<syscalls!$(TARGET_PACKAGING_ARCH)>syscall_dispatcher.h<syscalls!$(TARGET_PACKAGING_ARCH)>syscall_table.h<syscalls!$(TARGET_PACKAGING_ARCH)>syscall_numbers.h;KernelLd linkhack.so :<$(SOURCE_GRIST)>linkhack.o::-shared -Bdynamic;KernelLd kernel_$(TARGET_ARCH) :kernel_cache.okernel_core.okernel_debug.okernel_device_manager.okernel_disk_device_manager.okernel_fs.okernel_messaging.okernel_posix.okernel_slab.okernel_util.okernel_vm.okernel_arch_$(TARGET_KERNEL_ARCH).okernel_platform_$(TARGET_KERNEL_PLATFORM).olinkhack.so# kernel parts borrowed from libroot and otherskernel_os_main.okernel_os_arch_$(TARGET_ARCH).okernel_lib_posix.okernel_lib_posix_arch_$(TARGET_ARCH).okernel_misc.o: $(HAIKU_TOP)/src/system/ldscripts/$(TARGET_ARCH)/kernel.ld: --orphan-handling=warn -L $(HAIKU_TOP)/src/system/ldscripts/common/-Bdynamic -export-dynamic -dynamic-linker /foo/bar$(TARGET_KERNEL_PIC_LINKFLAGS) --no-undefined:;if $(HAIKU_ARCH) in x86_64 arm {# Cannot relink everything as a shared object on x86_64 as shared library# code is required to be position-independent. Instead create a copy of the# executable kernel image and change the ELF header type to DYN. A bit of# a hack, but avoids having to recompile a PIC copy of the kernel code.# kernel.so is only used when linking modules to provide symbol information,# this is sufficient for that purpose.KernelSo kernel.so : kernel_$(TARGET_ARCH) ;} else {KernelLd kernel.so :kernel_cache.okernel_core.okernel_debug.okernel_device_manager.okernel_disk_device_manager.okernel_fs.okernel_messaging.okernel_posix.okernel_slab.okernel_util.okernel_vm.okernel_arch_$(TARGET_KERNEL_ARCH).okernel_platform_$(TARGET_KERNEL_PLATFORM).olinkhack.so# kernel libroot partskernel_os_main.okernel_os_arch_$(TARGET_ARCH).okernel_lib_posix.okernel_lib_posix_arch_$(TARGET_ARCH).okernel_misc.o: $(HAIKU_TOP)/src/system/ldscripts/$(TARGET_ARCH)/kernel.ld: --orphan-handling=warn -L $(HAIKU_TOP)/src/system/ldscripts/common/-Bdynamic -shared -export-dynamic -dynamic-linker /foo/bar$(TARGET_KERNEL_PIC_LINKFLAGS);}NotFile kernel ;Depends kernel : kernel_$(TARGET_ARCH) ;Depends kernel.so : kernel ;# kernel.so will be rebuilt with the kernel# propagate the container update variable from kernel to kernel_$(TARGET_ARCH)PropagateContainerUpdateTargetFlags kernel_$(TARGET_ARCH) : kernel ;# Copy kernel and update the copy's revision section. We link everything# against the original, but the copy will end up on the disk image (this way# we avoid unnecessary dependencies). The copy will be located in a subdirectory.if $(TARGET_PLATFORM) = haiku {MakeLocate <revisioned>kernel_$(TARGET_ARCH): [ FDirName $(TARGET_DEBUG_$(DEBUG)_LOCATE_TARGET) revisioned ] ;CopySetHaikuRevision <revisioned>kernel_$(TARGET_ARCH): kernel_$(TARGET_ARCH) ;}SubInclude HAIKU_TOP src system kernel arch ;SubInclude HAIKU_TOP src system kernel cache ;SubInclude HAIKU_TOP src system kernel device_manager ;SubInclude HAIKU_TOP src system kernel debug ;SubInclude HAIKU_TOP src system kernel disk_device_manager ;SubInclude HAIKU_TOP src system kernel fs ;SubInclude HAIKU_TOP src system kernel lib ;SubInclude HAIKU_TOP src system kernel messaging ;SubInclude HAIKU_TOP src system kernel posix ;SubInclude HAIKU_TOP src system kernel slab ;SubInclude HAIKU_TOP src system kernel util ;SubInclude HAIKU_TOP src system kernel vm ;if $(TARGET_KERNEL_PLATFORM) {SubInclude HAIKU_TOP src system kernel platform $(TARGET_KERNEL_PLATFORM) ;}