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