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