xref: /haiku/src/system/kernel/Jamfile (revision b9068dbf95e05818c251ab36f8cb1d8619d2c9be)
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