183 lines
8.7 KiB
Makefile
183 lines
8.7 KiB
Makefile
|
|
SHELL = env bash
|
|
|
|
all:
|
|
@if [ -d obj ]; then \
|
|
$(MAKE) build_all; \
|
|
else \
|
|
echo "Call 'make setup' once for initial setup." ; \
|
|
exit 1; \
|
|
fi
|
|
|
|
clean:
|
|
@$(RM) -r obj pre-built-images
|
|
|
|
setup:
|
|
@+if [ -d obj ]; then \
|
|
echo "Snapshot has already been setup. Proceed with 'make setup' or 'make clean'."; \
|
|
else \
|
|
export PATH=$$(pwd)/bin:$$PATH; \
|
|
chmod +x ./bin/setup.d/*; \
|
|
for binary in bin/setup.d/*; do \
|
|
./$$binary config || exit 1; \
|
|
done; \
|
|
for binary in bin/setup.d/*; do \
|
|
./$$binary setup || exit 1; \
|
|
done; \
|
|
echo ====================================================================; \
|
|
echo ; \
|
|
echo Your L4Re tree is set up now. Type 'make' to build the tree. This; \
|
|
echo will take some time \(depending on the speed of your host system, of; \
|
|
echo course\).; \
|
|
echo ; \
|
|
echo Boot-images for ARM targets will be placed into obj/l4/arm-*/images.; \
|
|
echo Boot-images for MIPS targets will be placed into obj/l4/mips32/images.; \
|
|
echo Check obj/l4/.../conf/Makeconf.boot for path configuration during image builds.; \
|
|
echo ; \
|
|
fi
|
|
|
|
build_all: build_fiasco build_l4re build_l4linux
|
|
|
|
#.NOTPARALLEL: build_fiasco build_l4re build_l4linux build_images build_all
|
|
|
|
build_fiasco: $(addsuffix /fiasco,$(wildcard obj/fiasco/*))
|
|
build_l4re: $(addsuffix /l4defs.mk.inc,$(wildcard obj/l4/*))
|
|
build_l4linux: $(addsuffix /vmlinux,$(wildcard obj/l4linux/*))
|
|
|
|
$(addsuffix /fiasco,$(wildcard obj/fiasco/*)):
|
|
$(MAKE) -C $(@D)
|
|
|
|
$(addsuffix /l4defs.mk.inc,$(wildcard obj/l4/*)):
|
|
$(MAKE) -C $(@D)
|
|
|
|
obj/l4linux/amd64/vmlinux: obj/l4/amd64/l4defs.mk.inc
|
|
$(MAKE) -C src/l4linux O=$(abspath $(@D)) x86_64-mp_vPCI_defconfig
|
|
src/l4linux/scripts/config --file $(@D)/.config \
|
|
--set-str L4_OBJ_TREE $(abspath obj/l4/amd64)
|
|
# temporary quick fix
|
|
src/l4linux/scripts/config --file $(@D)/.config -e PCI -e L4_VPCI
|
|
$(MAKE) -C $(@D) olddefconfig
|
|
$(MAKE) -C $(@D)
|
|
|
|
obj/l4linux/ux/vmlinux: obj/l4/x86/l4defs.mk.inc
|
|
$(MAKE) -C src/l4linux O=$(abspath $(@D)) x86_32-ux_defconfig
|
|
src/l4linux/scripts/config --file $(@D)/.config \
|
|
--set-str L4_OBJ_TREE $(abspath obj/l4/x86)
|
|
$(MAKE) -C $(@D)
|
|
|
|
obj/l4linux/arm-mp/vmlinux: obj/l4/arm-v7/l4defs.mk.inc
|
|
+. obj/.config && $(MAKE) -C src/l4linux L4ARCH=arm \
|
|
CROSS_COMPILE=$$CROSS_COMPILE_ARM \
|
|
O=$(abspath $(@D)) arm-mp_defconfig
|
|
src/l4linux/scripts/config --file $(@D)/.config \
|
|
--set-str L4_OBJ_TREE $(abspath obj/l4/arm-v7)
|
|
+. obj/.config && $(MAKE) -C $(@D) CROSS_COMPILE=$$CROSS_COMPILE_ARM
|
|
|
|
obj/l4linux/arm-up/vmlinux: obj/l4/arm-v7/l4defs.mk.inc
|
|
+. obj/.config && $(MAKE) -C src/l4linux L4ARCH=arm \
|
|
CROSS_COMPILE=$$CROSS_COMPILE_ARM \
|
|
O=$(abspath $(@D)) arm_defconfig
|
|
src/l4linux/scripts/config --file $(@D)/.config \
|
|
--set-str L4_OBJ_TREE $(abspath obj/l4/arm-v7)
|
|
+. obj/.config && $(MAKE) -C $(@D) CROSS_COMPILE=$$CROSS_COMPILE_ARM
|
|
|
|
obj/l4linux/arm64/vmlinux: obj/l4/arm64/l4defs.mk.inc
|
|
+. obj/.config && $(MAKE) -C src/l4linux L4ARCH=arm64 \
|
|
CROSS_COMPILE=$$CROSS_COMPILE_ARM64 \
|
|
O=$(abspath $(@D)) arm64_defconfig
|
|
src/l4linux/scripts/config --file $(@D)/.config \
|
|
--set-str L4_OBJ_TREE $(abspath obj/l4/arm64)
|
|
+. obj/.config && $(MAKE) -C $(@D) CROSS_COMPILE=$$CROSS_COMPILE_ARM64
|
|
|
|
|
|
build_images: build_l4linux build_l4re build_fiasco
|
|
@echo "=============== Building Images ==============================="
|
|
@+set -e; \
|
|
export PATH=$$(pwd)/bin:$$PATH; \
|
|
[ -e obj/.config ] && . obj/.config; \
|
|
cd obj/l4; \
|
|
for d in *; do \
|
|
if [ -d "$$d" -a -e $$d/.imagebuilds ]; then \
|
|
cat $$d/.imagebuilds | while read args; do \
|
|
# Do EFI first, because the EFI build process also generates \
|
|
# an ELF file which is PIE and linked to 0 despite of any target \
|
|
# link address. \
|
|
if [ "$$d" = "amd64" ]; then \
|
|
$(MAKE) -C $$d efiimage $$args; \
|
|
fi; \
|
|
if [ "$$d" = "arm64" ]; then \
|
|
case "$$args" in \
|
|
*PT=arm_sbsa*) $(MAKE) -C $$d efiimage $$args;; \
|
|
esac; \
|
|
fi; \
|
|
if [ "$$d" != "amd64" -a "$$d" != "x86" ]; then \
|
|
$(MAKE) -C $$d uimage $$args; \
|
|
fi; \
|
|
$(MAKE) -C $$d elfimage $$args; \
|
|
if [ "$$d" = "amd64" -o "$$d" = "x86" ]; then \
|
|
if [ -z "$(GRUB_INST_PATH)" ]; then \
|
|
echo "Need to specify GRUB_INST_PATH"; exit 1; \
|
|
fi; \
|
|
PATH=$(GRUB_INST_PATH)/efi/bin:$$PATH $(MAKE) -C $$d grub2iso ISONAME_SUFFIX=.efi.iso $$args; \
|
|
PATH=$(GRUB_INST_PATH)/pc/bin:$$PATH $(MAKE) -C $$d grub2iso ISONAME_SUFFIX=.pc.iso $$args; \
|
|
fi; \
|
|
done; \
|
|
fi; \
|
|
done
|
|
@echo "=============== Build done ===================================="
|
|
|
|
gen_prebuilt: copy_prebuilt pre-built-images/l4image
|
|
|
|
copy_prebuilt2: build_images
|
|
@echo "Creating pre-built image directory"
|
|
@set -e; \
|
|
@cd obj/l4; \
|
|
for arch in *; do \
|
|
for i in $$arch/images/*; do \
|
|
if [ "$$arch" = "amd64" -o "$$arch" = "x86" ]; then \
|
|
mkdir -p ../../pre-built-images/$$arch; \
|
|
if [ -d $$i ]; then \
|
|
for f in $$i/*.elf; do \
|
|
cp $$f ../../pre-built-images/$$arch; \
|
|
done; \
|
|
fi; \
|
|
else \
|
|
if [ -d $$i ]; then \
|
|
pt=$${i#$$arch/images/}; \
|
|
mkdir -p ../../pre-built-images/$$arch/$$pt; \
|
|
for f in $$i/*.elf $$i/*.uimage; do \
|
|
cp $$f ../../pre-built-images/$$arch/$$pt; \
|
|
done; \
|
|
fi; \
|
|
fi; \
|
|
done; \
|
|
done
|
|
|
|
copy_prebuilt: build_images
|
|
@echo "Creating pre-built image directory"
|
|
@set -e; \
|
|
cd obj/l4; \
|
|
for arch in *; do \
|
|
mkdir -p ../../pre-built-images/$$arch; \
|
|
for i in $$arch/images/l4re_*.elf \
|
|
$$arch/images/l4re_*.efi \
|
|
$$arch/images/l4re_*.uimage; do \
|
|
[ -e $$i ] || continue; \
|
|
cp $$i ../../pre-built-images/$$arch; \
|
|
done; \
|
|
done
|
|
|
|
pre-built-images/l4image:
|
|
@echo Creating $@
|
|
@src/l4/tool/bin/l4image --create-l4image-binary $@
|
|
|
|
help:
|
|
@echo "Targets:"
|
|
@echo " all"
|
|
@echo " setup"
|
|
@echo " build_images"
|
|
@echo " gen_prebuilt"
|
|
|
|
.PHONY: setup all build_all clean help \
|
|
build_images build_fiasco build_l4re build_l4linux
|