source: mainline/boot/Makefile.common@ c222816

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since c222816 was cfdeedc, checked in by Jiří Zárevúcky <zarevucky.jiri@…>, 7 years ago

Keep kernel in ELF format

By keeping kernel in an ELF file (instead of converting it to
a flat binary), we can use the information it contains, like
symbol table and debug info.

We can also later implement more advanced functionality, like
loading kernel at multiple discontiguous blocks, or loading
a position-independent kernel at a randomized address.

Currently the functionality is quite restricted, to keep changes
to a minimum. Code in boot/generic/src/kernel.c validates that
the kernel image was built with the same addresses as the boot
loader uses, giving an extra level of sanity checking compared
to a flat binary.

  • Property mode set to 100644
File size: 5.8 KB
Line 
1#
2# Copyright (c) 2006 Martin Decky
3# All rights reserved.
4#
5# Redistribution and use in source and binary forms, with or without
6# modification, are permitted provided that the following conditions
7# are met:
8#
9# - Redistributions of source code must retain the above copyright
10# notice, this list of conditions and the following disclaimer.
11# - Redistributions in binary form must reproduce the above copyright
12# notice, this list of conditions and the following disclaimer in the
13# documentation and/or other materials provided with the distribution.
14# - The name of the author may not be used to endorse or promote products
15# derived from this software without specific prior written permission.
16#
17# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27#
28
29## Configuration
30#
31
32ROOT_PATH = ..
33
34VERSION_DEF = $(ROOT_PATH)/version
35
36COMMON_MAKEFILE = $(ROOT_PATH)/Makefile.common
37COMMON_HEADER = $(ROOT_PATH)/common.h
38
39CONFIG_MAKEFILE = $(ROOT_PATH)/Makefile.config
40CONFIG_HEADER = $(ROOT_PATH)/config.h
41
42-include $(VERSION_DEF)
43-include $(COMMON_MAKEFILE)
44-include $(CONFIG_MAKEFILE)
45
46KERNEL_PATH = $(ROOT_PATH)/kernel
47USPACE_PATH = $(ROOT_PATH)/uspace
48DIST_PATH = $(USPACE_PATH)/dist
49DIST_OVERLAY_PATH = $(USPACE_PATH)/overlay
50TOOLS_PATH = $(ROOT_PATH)/tools
51DRVS_PATH = drv
52
53MKARRAY = $(TOOLS_PATH)/mkarray.py
54MKFAT = $(TOOLS_PATH)/mkfat.py
55MKEXT4 = $(TOOLS_PATH)/mkext4.py
56MKUIMAGE = $(TOOLS_PATH)/mkuimage.py
57
58ifeq ($(PRECHECK),y)
59 JOBFILE = $(TOOLS_PATH)/jobfile.py
60 # XXX: Do not change the order of arguments.
61 CC_JOB = $(JOBFILE) $(JOB) $(CC) $< -o $@
62else
63 CC_JOB = $(CC) $< -o $@
64endif
65
66DISTROOT = distroot
67INITRD = initrd
68
69INIT_TASKS = \
70 $(USPACE_PATH)/srv/ns/ns \
71 $(USPACE_PATH)/srv/loader/loader \
72 $(USPACE_PATH)/app/init/init \
73 $(USPACE_PATH)/srv/locsrv/locsrv \
74 $(USPACE_PATH)/srv/bd/rd/rd \
75 $(USPACE_PATH)/srv/vfs/vfs \
76 $(USPACE_PATH)/srv/logger/logger
77
78ifeq ($(RDFMT),tmpfs)
79 INIT_TASKS += $(USPACE_PATH)/srv/fs/tmpfs/tmpfs
80endif
81
82ifeq ($(RDFMT),fat)
83 INIT_TASKS += $(USPACE_PATH)/srv/fs/fat/fat
84endif
85
86ifeq ($(RDFMT),ext4fs)
87 INIT_TASKS += $(USPACE_PATH)/srv/fs/ext4fs/ext4fs
88endif
89
90RD_SRVS_ESSENTIAL = \
91 hid/input \
92 hid/output \
93 hid/console \
94 devman \
95 fs/locfs \
96 hid/compositor \
97 klog
98
99RD_SRVS_NON_ESSENTIAL = \
100 bd/file_bd \
101 bd/sata_bd \
102 bd/vbd \
103 clipboard \
104 fs/tmpfs \
105 fs/fat \
106 fs/mfs \
107 fs/cdfs \
108 fs/exfat \
109 fs/udf \
110 fs/ext4fs \
111 hid/remcons \
112 hid/isdv4_tablet \
113 hid/rfb \
114 net/dhcp \
115 net/dnsrsrv \
116 net/ethip \
117 net/inetsrv \
118 net/loopip \
119 net/nconfsrv \
120 net/slip \
121 net/tcp \
122 net/udp \
123 taskmon \
124 test/chardev-test \
125 volsrv
126
127RD_DRVS_ESSENTIAL = \
128 root/root \
129 root/virt \
130 fb/kfb
131
132RD_DRVS_NON_ESSENTIAL = \
133 test/test1 \
134 test/test2 \
135 test/test3 \
136 nic/ne2k \
137 nic/e1k \
138 nic/rtl8139 \
139 nic/rtl8169 \
140 nic/ar9271 \
141 nic/virtio-net \
142 block/ahci
143
144RD_DRV_CFG =
145
146RD_DRVS_FW_NON_ESSENTIAL = \
147 nic/ar9271
148
149RD_LIBS =
150
151ifeq ($(CONFIG_DEVEL_FILES), y)
152 RD_LIBS += \
153 $(USPACE_PATH)/lib/c/libc.a
154endif
155
156ifeq ($(CONFIG_BUILD_SHARED_LIBS), y)
157 RD_LIBS += \
158 $(USPACE_PATH)/lib/c/libc.so.0 \
159 $(USPACE_PATH)/lib/math/libmath.so.0 \
160 $(USPACE_PATH)/lib/dltest/libdltest.so.0
161endif
162
163RD_APPS_ESSENTIAL = bdsh getterm kio vlaunch vterm
164
165RD_APPS_NON_ESSENTIAL = \
166 barber \
167 bithenge \
168 blkdump \
169 bnchmark \
170 contacts \
171 corecfg \
172 cpptest \
173 devctl \
174 dnscfg \
175 dnsres \
176 download \
177 edit \
178 fdisk \
179 gunzip \
180 inet \
181 kill \
182 killall \
183 loc \
184 mixerctl \
185 modplay \
186 logset \
187 mkfat \
188 mkexfat \
189 mkext4 \
190 mkmfs \
191 nic \
192 rcutest \
193 rcubench \
194 sbi \
195 sportdmp \
196 redir \
197 taskdump \
198 tester \
199 testread \
200 testrunner \
201 testwrit \
202 tetris \
203 tmon \
204 trace \
205 netecho \
206 nterm \
207 ping \
208 pkg \
209 stats \
210 sysinfo \
211 sysinst \
212 top \
213 untar \
214 usbinfo \
215 vol \
216 vuhid \
217 mkbd \
218 websrv \
219 date \
220 vcalc \
221 vdemo \
222 viewer \
223 df \
224 fontviewer \
225 wifi_supplicant
226
227ifeq ($(CONFIG_BUILD_SHARED_LIBS), y)
228 RD_APPS_NON_ESSENTIAL += dltest dltests
229endif
230
231RD_TESTS = \
232 $(USPACE_PATH)/lib/c/test-libc \
233 $(USPACE_PATH)/lib/label/test-liblabel \
234 $(USPACE_PATH)/lib/posix/test-libposix \
235 $(USPACE_PATH)/lib/sif/test-libsif \
236 $(USPACE_PATH)/lib/uri/test-liburi \
237 $(USPACE_PATH)/lib/math/test-libmath \
238 $(USPACE_PATH)/drv/bus/usb/xhci/test-xhci \
239 $(USPACE_PATH)/app/bdsh/test-bdsh \
240 $(USPACE_PATH)/srv/net/tcp/test-tcp \
241 $(USPACE_PATH)/srv/volsrv/test-volsrv \
242
243RD_DATA_ESSENTIAL = \
244 $(USPACE_PATH)/app/bdsh/demo.txt
245
246RD_DATA_NON_ESSENTIAL = \
247 $(USPACE_PATH)/app/modplay/demo.xm \
248 $(USPACE_PATH)/app/viewer/logo.tga
249
250
251COMPONENTS = \
252 $(KERNEL_PATH)/kernel.elf \
253 $(INIT_TASKS) \
254 $(INITRD).img
255
256
257LINK = arch/$(BARCH)/_link.ld
258COMP = component
259COMPS = $(COMP)s
260
261-include arch/$(BARCH)/Makefile.inc
262
263ifeq ($(CONFIG_BAREBONE),y)
264 RD_SRVS = $(RD_SRVS_ESSENTIAL)
265 RD_APPS = $(RD_APPS_ESSENTIAL)
266 RD_DRVS = $(RD_DRVS_ESSENTIAL)
267 RD_DRVS_FW = $(RD_DRVS_FW_ESSENTIAL)
268 RD_DATA = $(RD_DATA_ESSENTIAL)
269else
270 RD_SRVS = $(RD_SRVS_ESSENTIAL) $(RD_SRVS_NON_ESSENTIAL)
271 RD_APPS = $(RD_APPS_ESSENTIAL) $(RD_APPS_NON_ESSENTIAL)
272 RD_DRVS = $(RD_DRVS_ESSENTIAL) $(RD_DRVS_NON_ESSENTIAL)
273 RD_DRVS_FW = $(RD_DRVS_FW_ESSENTIAL) $(RD_DRVS_FW_NON_ESSENTIAL)
274 RD_DATA = $(RD_DATA_ESSENTIAL) $(RD_DATA_NON_ESSENTIAL)
275endif
276
277MODULES := $(notdir $(COMPONENTS))
278
279BOOT_OUTPUT ?= $(ROOT_PATH)/image.boot
280RAW ?= image.raw
281JOB ?= image.job
282MAP ?= image.map
283BUILD ?= Makefile.build
Note: See TracBrowser for help on using the repository browser.