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