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