80 lines
2.3 KiB
Plaintext
80 lines
2.3 KiB
Plaintext
include_rules
|
|
export SYSLINUX
|
|
|
|
: $(GENODE_DIR)/repos/base-nova/<ld> |> ln -s %<ld> %o |> ld.lib.so {ld}
|
|
|
|
BOOT_MODULES = \
|
|
config \
|
|
ld.lib.so \
|
|
$(DEPOT_BIN_DIR)/file_terminal/current/file_terminal \
|
|
$(DEPOT_BIN_DIR)/fs_report/current/fs_report \
|
|
$(DEPOT_BIN_DIR)/fs_rom/current/fs_rom \
|
|
$(DEPOT_BIN_DIR)/init/current/init \
|
|
$(DEPOT_BIN_DIR)/libc/current/libc.lib.so \
|
|
$(DEPOT_BIN_DIR)/log_core/current/log_core \
|
|
$(DEPOT_BIN_DIR)/nova_timer_drv/current/timer \
|
|
$(DEPOT_BIN_DIR)/ram_fs/current/ram_fs \
|
|
$(DEPOT_BIN_DIR)/report_rom/current/report_rom \
|
|
$(DEPOT_BIN_DIR)/rom_filter/current/rom_filter \
|
|
$(DEPOT_BIN_DIR)/terminal_log/current/terminal_log \
|
|
$(DEPOT_BIN_DIR)/vfs/current/vfs \
|
|
$(DEPOT_BIN_DIR)/vfs/current/vfs.lib.so \
|
|
$(DEPOT_BIN_DIR)/vfs_import/current/vfs_import.lib.so \
|
|
$(DEPOT_BIN_DIR)/nitpicker/current/nitpicker \
|
|
|
|
ifeq (@(TUP_ARCH),i386)
|
|
ADDR_TYPE = .long
|
|
endif
|
|
ifeq (@(TUP_ARCH),x86_64)
|
|
ADDR_TYPE = .quad
|
|
endif
|
|
|
|
AWK_IT = awk -v RS=" " -v ADDR_TYPE="$(ADDR_TYPE)"
|
|
|
|
: $(DEPOT_DIR)/<bin> \
|
|
|> \
|
|
echo -n $(BOOT_MODULES) | $(AWK_IT) -f a.awk >> %o; \
|
|
echo -n $(BOOT_MODULES) | $(AWK_IT) -f b.awk >> %o; \
|
|
echo -n $(BOOT_MODULES) | $(AWK_IT) -f c.awk >> %o; \
|
|
|> modules.s
|
|
|
|
: modules.s {ld} | $(DEPOT_DIR)/<bin> |> $(CC) $(CC_MARCH) -c %f -o %o |> boot_modules.o
|
|
|
|
LINK_ADDRESS = 0x01000000
|
|
|
|
: boot_modules.o | $(GENODE_DIR)/repos/base-nova/<core> \
|
|
|> \
|
|
$(CXX) $(CC_MARCH) -nostdlib \
|
|
-Wl,-T -Wl,$(GENODE_DIR)/repos/base/src/ld/genode.ld \
|
|
-Wl,-T -Wl,$(GENODE_DIR)/repos/base-nova/src/core/core-bss.ld \
|
|
-Wl,-z -Wl,max-page-size=0x1000 \
|
|
-Wl,-Ttext=$(LINK_ADDRESS) -Wl,-gc-sections \
|
|
-Wl,-nostdlib \
|
|
-Wl,--whole-archive -Wl,--start-group \
|
|
%<core> %f \
|
|
-Wl,--no-whole-archive \
|
|
-Wl,--end-group \
|
|
`$(CXX) $(CC_MARCH) -print-libgcc-file-name` \
|
|
-o image.elf; \
|
|
strip image.elf; \
|
|
|> image.elf {image}
|
|
|
|
: $(GENODE_DIR)/repos/base-nova/src/NOVA/build/hypervisor-x86_64 {image} |> \
|
|
mkdir -p tmp/syslinux; \
|
|
cp \
|
|
$SYSLINUX/share/syslinux/isolinux.bin \
|
|
$SYSLINUX/share/syslinux/ldlinux.c32 \
|
|
$SYSLINUX/share/syslinux/libcom32.c32 \
|
|
$SYSLINUX/share/syslinux/mboot.c32 \
|
|
isolinux.cfg \
|
|
tmp/syslinux; \
|
|
cp %f tmp; \
|
|
chmod -R 777 tmp; \
|
|
mkisofs -o %o \
|
|
-b syslinux/isolinux.bin -c syslinux/boot.cat \
|
|
-no-emul-boot -boot-load-size 4 -boot-info-table \
|
|
-iso-level 2 \
|
|
tmp; \
|
|
rm -r tmp; \
|
|
|> output.iso
|