1SubDir HAIKU_TOP src system kernel ; 2 3{ 4 local defines = 5 HAIKU_ARCH=\\\"$(TARGET_ARCH)\\\" 6 ; 7 8 defines = [ FDefines $(defines) ] ; 9 SubDirCcFlags $(defines) ; 10 SubDirC++Flags $(defines) ; 11} 12 13SEARCH_SOURCE += [ FDirName $(SUBDIR) scheduler ] ; 14 15UsePrivateHeaders libroot ; 16UsePrivateHeaders shared ; 17UsePrivateHeaders runtime_loader ; 18 19AddResources kernel_$(TARGET_ARCH) : kernel.rdef ; 20 21KernelMergeObject kernel_core.o : 22 boot_item.cpp 23 boot_splash.cpp 24 commpage.cpp 25 condition_variable.cpp 26 cpu.c 27 elf.cpp 28 heap.cpp 29 image.cpp 30 int.c 31 kernel_daemon.cpp 32 linkhack.c 33 listeners.cpp 34 lock.cpp 35 low_resource_manager.cpp 36 main.cpp 37 module.cpp 38 Notifications.cpp 39 port.cpp 40 real_time_clock.c 41 sem.cpp 42 shutdown.c 43 signal.cpp 44 system_info.cpp 45 smp.cpp 46 syscalls.cpp 47 team.cpp 48 thread.cpp 49 timer.cpp 50 usergroup.cpp 51 wait_for_objects.cpp 52 53 # scheduler 54 scheduler.cpp 55 scheduler_simple.cpp 56 scheduler_affine.cpp 57 scheduler_tracing.cpp 58 scheduling_analysis.cpp 59 60 : $(TARGET_KERNEL_PIC_CCFLAGS) 61; 62 63# We need to specify the dependency on the generated syscalls files explicitly. 64Includes [ FGristFiles syscalls.cpp ] 65 : <syscalls>syscall_dispatcher.h <syscalls>syscall_table.h 66 <syscalls>syscall_numbers.h 67; 68 69# TODO: fix or update binutils for ppc, in the meantime this should get things going. 70local linkHackLdFlags ; 71if $(TARGET_ARCH) = ppc { 72 linkHackLdFlags = -Bdynamic ; 73} else { 74 linkHackLdFlags = -shared -Bdynamic ; 75} 76 77KernelLd linkhack.so : 78 <$(SOURCE_GRIST)>linkhack.o 79 : 80 : 81 $(linkHackLdFlags) 82; 83 84KernelLd kernel_$(TARGET_ARCH) : 85 kernel_cache.o 86 kernel_core.o 87 kernel_debug.o 88 kernel_device_manager.o 89 kernel_disk_device_manager.o 90 kernel_fs.o 91 kernel_messaging.o 92 kernel_posix.o 93 kernel_slab.o 94 kernel_util.o 95 kernel_vm.o 96 97 kernel_arch_$(TARGET_ARCH).o 98 kernel_platform_$(TARGET_BOOT_PLATFORM).o 99 100 linkhack.so 101 102 # kernel parts borrowed from libroot and others 103 kernel_os_main.o 104 kernel_os_arch_$(TARGET_ARCH).o 105 kernel_lib_posix.o 106 kernel_lib_posix_arch_$(TARGET_ARCH).o 107 kernel_misc.o 108 109 $(HAIKU_STATIC_LIBSUPC++) 110 111 : $(HAIKU_TOP)/src/system/ldscripts/$(TARGET_ARCH)/kernel.ld 112 : -Bdynamic -export-dynamic -dynamic-linker /foo/bar 113 $(TARGET_KERNEL_PIC_LINKFLAGS) 114 : 115; 116 117KernelLd kernel.so : 118 kernel_cache.o 119 kernel_core.o 120 kernel_debug.o 121 kernel_device_manager.o 122 kernel_disk_device_manager.o 123 kernel_fs.o 124 kernel_messaging.o 125 kernel_posix.o 126 kernel_slab.o 127 kernel_util.o 128 kernel_vm.o 129 130 kernel_arch_$(TARGET_ARCH).o 131 kernel_platform_$(TARGET_BOOT_PLATFORM).o 132 133 linkhack.so 134 135 # kernel libroot parts 136 kernel_os_main.o 137 kernel_os_arch_$(TARGET_ARCH).o 138 kernel_lib_posix.o 139 kernel_lib_posix_arch_$(TARGET_ARCH).o 140 kernel_misc.o 141 142 $(HAIKU_STATIC_LIBSUPC++) 143 144 : $(HAIKU_TOP)/src/system/ldscripts/$(TARGET_ARCH)/kernel.ld 145 : -Bdynamic -shared -export-dynamic -dynamic-linker /foo/bar 146 $(TARGET_KERNEL_PIC_LINKFLAGS) 147; 148 149NotFile kernel ; 150Depends kernel : kernel_$(TARGET_ARCH) ; 151Depends kernel.so : kernel ; 152 # kernel.so will be rebuilt with the kernel 153 154# propagate HAIKU_INCLUDE_IN_IMAGE variable from kernel to kernel_$(TARGET_ARCH) 155HAIKU_INCLUDE_IN_IMAGE on kernel_$(TARGET_ARCH) 156 = [ on kernel return $(HAIKU_INCLUDE_IN_IMAGE) ] ; 157 158# Copy kernel and update the copy's revision section. We link everything 159# against the original, but the copy will end up on the disk image (this way 160# we avoid unnecessary dependencies). The copy will be located in a subdirectory. 161if $(TARGET_PLATFORM) = haiku { 162 MakeLocate <revisioned>kernel_$(TARGET_ARCH) 163 : [ FDirName $(TARGET_DEBUG_$(DEBUG)_LOCATE_TARGET) revisioned ] ; 164 CopySetHaikuRevision <revisioned>kernel_$(TARGET_ARCH) 165 : kernel_$(TARGET_ARCH) ; 166} 167 168 169SubInclude HAIKU_TOP src system kernel arch ; 170SubInclude HAIKU_TOP src system kernel cache ; 171SubInclude HAIKU_TOP src system kernel device_manager ; 172SubInclude HAIKU_TOP src system kernel debug ; 173SubInclude HAIKU_TOP src system kernel disk_device_manager ; 174SubInclude HAIKU_TOP src system kernel fs ; 175SubInclude HAIKU_TOP src system kernel lib ; 176SubInclude HAIKU_TOP src system kernel messaging ; 177SubInclude HAIKU_TOP src system kernel posix ; 178SubInclude HAIKU_TOP src system kernel slab ; 179SubInclude HAIKU_TOP src system kernel util ; 180SubInclude HAIKU_TOP src system kernel vm ; 181 182if $(TARGET_BOOT_PLATFORM) { 183 SubInclude HAIKU_TOP src system kernel platform $(TARGET_BOOT_PLATFORM) ; 184} 185