xref: /haiku/src/system/kernel/Jamfile (revision 22dcb7a5bf5795b97fd88ba84994e887be7a9e89)
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
13UsePrivateHeaders libroot ;
14UsePrivateHeaders shared ;
15UsePrivateHeaders runtime_loader ;
16
17AddResources kernel_$(TARGET_ARCH) : kernel.rdef ;
18
19KernelMergeObject kernel_core.o :
20	boot_item.cpp
21	boot_splash.cpp
22	commpage.cpp
23	condition_variable.cpp
24	cpu.c
25	elf.cpp
26	heap.cpp
27	image.c
28	int.c
29	kernel_daemon.cpp
30	linkhack.c
31	lock.cpp
32	main.cpp
33	module.cpp
34	Notifications.cpp
35	port.cpp
36	real_time_clock.c
37	scheduler.cpp
38	sem.cpp
39	shutdown.c
40	signal.cpp
41	system_info.cpp
42	smp.c
43	syscalls.cpp
44	team.cpp
45	thread.cpp
46	timer.cpp
47	usergroup.cpp
48	wait_for_objects.cpp
49
50	: $(TARGET_KERNEL_PIC_CCFLAGS)
51;
52
53# We need to specify the dependency on the generated syscalls files explicitly.
54Includes [ FGristFiles syscalls.cpp ]
55	: <syscalls>syscall_dispatcher.h <syscalls>syscall_table.h
56	  <syscalls>syscall_numbers.h
57;
58
59KernelLd linkhack.so :
60	<$(SOURCE_GRIST)>linkhack.o
61	:
62	:
63	-shared -Bdynamic
64;
65
66KernelLd kernel_$(TARGET_ARCH) :
67	kernel_cache.o
68	kernel_core.o
69	kernel_debug.o
70	kernel_device_manager.o
71	kernel_disk_device_manager.o
72	kernel_fs.o
73	kernel_messaging.o
74	kernel_posix.o
75	kernel_slab.o
76	kernel_util.o
77	kernel_vm.o
78
79	kernel_arch_$(TARGET_ARCH).o
80	kernel_platform_$(TARGET_BOOT_PLATFORM).o
81
82	linkhack.so
83
84	# kernel parts borrowed from libroot and others
85	kernel_os_main.o
86	kernel_os_arch_$(TARGET_ARCH).o
87	kernel_lib_posix.o
88	kernel_lib_posix_arch_$(TARGET_ARCH).o
89	kernel_misc.o
90
91	$(HAIKU_STATIC_LIBSUPC++)
92
93	: $(HAIKU_TOP)/src/system/ldscripts/$(TARGET_ARCH)/kernel.ld
94	: -Bdynamic -export-dynamic -dynamic-linker /foo/bar
95	  $(TARGET_KERNEL_PIC_LINKFLAGS)
96	:
97;
98
99KernelLd kernel.so :
100	kernel_cache.o
101	kernel_core.o
102	kernel_debug.o
103	kernel_device_manager.o
104	kernel_disk_device_manager.o
105	kernel_fs.o
106	kernel_messaging.o
107	kernel_posix.o
108	kernel_slab.o
109	kernel_util.o
110	kernel_vm.o
111
112	kernel_arch_$(TARGET_ARCH).o
113	kernel_platform_$(TARGET_BOOT_PLATFORM).o
114
115	linkhack.so
116
117	# kernel libroot parts
118	kernel_os_main.o
119	kernel_os_arch_$(TARGET_ARCH).o
120	kernel_lib_posix.o
121	kernel_lib_posix_arch_$(TARGET_ARCH).o
122
123	$(HAIKU_STATIC_LIBSUPC++)
124
125	: $(HAIKU_TOP)/src/system/ldscripts/$(TARGET_ARCH)/kernel.ld
126	: -Bdynamic -shared -export-dynamic -dynamic-linker /foo/bar
127	  $(TARGET_KERNEL_PIC_LINKFLAGS)
128;
129
130NotFile kernel ;
131Depends kernel : kernel_$(TARGET_ARCH) ;
132Depends kernel.so : kernel ;
133	# kernel.so will be rebuilt with the kernel
134
135# propagate HAIKU_INCLUDE_IN_IMAGE variable from kernel to kernel_$(TARGET_ARCH)
136HAIKU_INCLUDE_IN_IMAGE on kernel_$(TARGET_ARCH)
137		= [ on kernel return $(HAIKU_INCLUDE_IN_IMAGE) ] ;
138
139# Copy kernel and update the copy's revision section. We link everything
140# against the original, but the copy will end up on the disk image (this way
141# we avoid unnecessary dependencies). The copy will be located in a subdirectory.
142if $(TARGET_PLATFORM) = haiku {
143	MakeLocate <revisioned>kernel_$(TARGET_ARCH)
144		: [ FDirName $(TARGET_DEBUG_$(DEBUG)_LOCATE_TARGET) revisioned ] ;
145	CopySetHaikuRevision <revisioned>kernel_$(TARGET_ARCH)
146		: kernel_$(TARGET_ARCH) ;
147}
148
149
150SubInclude HAIKU_TOP src system kernel arch ;
151SubInclude HAIKU_TOP src system kernel cache ;
152SubInclude HAIKU_TOP src system kernel device_manager ;
153SubInclude HAIKU_TOP src system kernel debug ;
154SubInclude HAIKU_TOP src system kernel disk_device_manager ;
155SubInclude HAIKU_TOP src system kernel fs ;
156SubInclude HAIKU_TOP src system kernel lib ;
157SubInclude HAIKU_TOP src system kernel messaging ;
158SubInclude HAIKU_TOP src system kernel posix ;
159SubInclude HAIKU_TOP src system kernel slab ;
160SubInclude HAIKU_TOP src system kernel util ;
161SubInclude HAIKU_TOP src system kernel vm ;
162
163if $(TARGET_BOOT_PLATFORM) {
164	SubInclude HAIKU_TOP src system kernel platform $(TARGET_BOOT_PLATFORM) ;
165}
166