path := collection ?= base suffix := iso name := $(collection) firmware_commit := master #firmware_commit := b87bc42057d0c98dd0a7f8a55d23a6111eaa6aba #firmware_version := $(if $(firmware_version),$(firmware_version),$(shell test -L src/firmware && readlink src/firmware | sed "s/.*-\|\///g" || $(MAKE) --no-print-directory -sf ../Makefile.getfile version file=src/raspberrypi-firmware.tgz rule=src/raspberrypi-HEAD)) #firmware_version := 2012.09.26 echoprefix := "Iso: " version := $(shell for modul in KERNEL INITRAMFS $(addon_list) $(addon_inactiv_list); do LC_ALL=C svn info ../$${modul%%.*} 2>/dev/null | grep "Last Changed Date" | cut -d " " -f 4 | tr - .; done | sort | tail -n1) kernel = $(shell ls -o ../KERNEL/kernel.gz | sed -e 's/.*-> //') initramfs = $(shell ls -o ../INITRAMFS/initramfs.gz | sed -e 's/.*-> //') deps = $(if $(findstring arm,$(ARCH)),syslinux-common,syslinux genisoimage) addon_lst = $(addprefix ../,$(addsuffix /$(modul).sfs,$(addon_list))) addon_inactiv_lst = $(addprefix ../,$(addsuffix /$(modul).sfs,$(addon_inactiv_list))) include ../Makefile.default include ../Makefile.tools all: $(name).$(suffix) clean: _clean rm -f *.$(suffix) rm -fr src/raspberrypi* $(name).$(suffix): $(modul) $(MAKE) $@.$(if $(findstring arm,$(ARCH)),tgz,isolinux) if [ "$(name)" = "base" ]; then \ cd $(modul); tar -czf ../$(basename $(modulname)).tgz *;\ fi #$(name).$(suffix).isolinux: src/syslinux/core/isolinux.bin src/syslinux/com32/menu/vesamenu.c32 ../LOGO/back.jpg $(name).$(suffix).isolinux: ../LOGO/back.jpg cp $(kernel) $(modul)/boot/kernel # ln -s kernel $(modul)/boot/$(notdir $(kernel)) touch $(modul)/boot/$(notdir $(kernel)) cp $(initramfs) $(modul)/boot/initrd # ln -s initrd $(modul)/boot/$(notdir $(initramfs)) touch $(modul)/boot/$(notdir $(initramfs)) dd if=/dev/zero of=$(modul)/boot/rootimg bs=1024 count=10000 2>/dev/null mkfs.ext3 -q -F -L rootimg $(modul)/boot/rootimg gzip $(modul)/boot/rootimg cp /usr/lib/syslinux/isolinux.bin /usr/lib/syslinux/vesamenu.c32 $(modul)/boot/isolinux cp $^ $(modul)/boot/isolinux test -e $(modul)/boot/isolinux/style_$(style).cfg && mv -f $(modul)/boot/isolinux/style_$(style).cfg $(modul)/boot/isolinux/style.cfg rm -f $(modul)/boot/isolinux/style_*.cfg mkisofs -R -J -V "$(DISTRI)-$(DISTRI_VER)" -publisher MLD -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o $(modulname) $(modul) 2>/dev/null isohybrid $(modulname) ln -fs $(modulname) $(name).$(suffix) ln -fs $(name).$(suffix) mld.$(suffix) $(name).$(suffix).tgz: src/raspberrypi rm -r $(modul)/boot/isolinux cp $(kernel) $(modul)/boot/kernel touch $(modul)/boot/$(notdir $(kernel)) cp $(initramfs) $(modul)/boot/initrd touch $(modul)/boot/$(notdir $(initramfs)) if [ "$(DESTINATION)" = "raspberrypi" ]; then \ cp src/raspberrypi/* $(modul); \ echo -e "#hdmi_mode=20\n#hdmi_group=1\nsdtv_mode=2\nsdtv_aspect=3\ndisable_splash=1\ngpu_mem=128\nkernel=boot/kernel\ninitramfs boot/initrd\ncmdline=boot/cmdline" > $(modul)/config.txt; \ echo "root=/dev/mmcblk0p1 initrd=/boot/initrd splash=silent quiet QUIET=1 smsc95xx.turbo_mode=N dwc_otg.lpm_enable=0" > $(modul)/boot/cmdline; \ # ln -fs /mnt/system/config.txt $(modul)/boot/config.txt; \ echo "Please edit /mnt/system/config.txt" > $(modul)/boot/config.txt; \ fi dd if=/dev/zero of=$(modul)/boot/rootimg bs=1024 count=100000 2>/dev/null mkfs.ext3 -q -F -L rootimg $(modul)/boot/rootimg cd $(modul); tar -czf ../$(basename $(modulname)).tgz * ln -fs $(basename $(modulname)).tgz mld.tgz $(modul): ../KERNEL/kernel.gz ../INITRAMFS/initramfs.gz ../LOGO $(addon_lst) $(addon_inactiv_lst) template $(MAKE) $(addon) for addon in `echo $(addon_lst)`; do \ file=$$(readlink $$addon); \ cp $$file $@/etc/addons/; \ echo $${file##*/} >> $@/etc/addons/active; \ done for addon in `echo $(addon_inactiv_lst)`; do \ file=`ls -o $$addon | sed -e 's/.*-> //'`; \ cp $$file $@/etc/addons/; \ done .PHONY: ../KERNEL/kernel.gz ../INITRAMFS/initramfs.gz $(addon_lst) $(addon_inactiv_lst) ../KERNEL/kernel.gz: ../KERNEL test -n "$(no_addon_build)" -a -e $@ || $(MAKE) -C ../KERNEL ../INITRAMFS/initramfs.gz: ../INITRAMFS test -n "$(no_addon_build)" -a -e $@ || $(MAKE) -C ../INITRAMFS $(addon_lst) $(addon_inactiv_lst): test -n "$(no_addon_build)" -a -e $(@D) || $(MAKE) $(@D) test -n "$(no_addon_build)" -a -e $@ || $(MAKE) -C $(@D) src/raspberrypi: src/raspberrypi-firmware.tgz rm -rf $@ tar xf $^ -C $(@D) mv src/raspberrypi-HEAD $@ src/raspberrypi-firmware.tgz: $(MAKE) -f ../Makefile.getfile file=$@ rule=src/raspberrypi-HEAD # $(MAKE) -f ../Makefile.getfile version=$(firmware_version) file=$@ rule=src/raspberrypi-HEAD src/raspberrypi-HEAD: mkdir -p $@ wget "https://github.com/raspberrypi/firmware/blob/$(firmware_commit)/boot/bootcode.bin?raw=true" -O $@/bootcode.bin wget "https://github.com/raspberrypi/firmware/blob/$(firmware_commit)/boot/start.elf?raw=true" -O $@/start.elf wget "https://github.com/raspberrypi/firmware/blob/$(firmware_commit)/boot/fixup.dat?raw=true" -O $@/fixup.dat tar -caf $(file) -C $(@D) $(@F) rm -rf $@