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