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