genode/tool/create_iso
Christian Helmuth 6f2e36279a Use mkisofs to create ISO images
mkisofs is the original ISO creation tool from cdrtools available on
many UNIX systems. genisoimage on the other hand is part of a mostly
unmaintained fork of cdrtools very specific to Debian Linux and its
derivates (e.g., Ubuntu). Fortunately, genisoimage (as we used it) is
completely invocation-compatible to mkisofs.

Fixes #627.
2013-03-07 13:41:30 +01:00

71 lines
2.1 KiB
Makefile
Executable File

#!/usr/bin/make -f
#
# \brief ISO image creation tool
# \author Christian Helmuth
# \date 2009-02-05
ISO ?= genode
ISODIR = $(abspath $(ISO))
ISOIMG = $(abspath $(ISO).iso)
default help:
@echo "--- available commands ---"
@echo "iso - create ISO image of directory \"$(ISO)\""
@echo "tiny.iso - create tiny ISO image of directory \"$(ISO)\""
@echo "compress - create bzip2 compressed ISO image"
@echo "clean - cleanup everything"
@echo
@echo "--- configuration options ---"
@echo "ISO=<name> Overwrites basename of cd image file."
@echo
@echo "Please, place your binaries and config files in appropriate subdirectories in"
@echo " $(ISODIR)"
@echo "and adapt"
@echo " $(ISODIR)/boot/grub/menu.lst"
@echo "to your configuration's needs. A sample directory tree can be found in"
@echo "tool/boot/genode."
#
# Function to generate bootable ISO images
#
# parameter 1 filename of ISO image
# parameter 2 path of directory containing file tree for the ISO image
#
gen_iso_image = mkisofs -f -l -R -hide-rr-moved -jcharset utf-8 \
-no-emul-boot -boot-load-size 4 -boot-info-table \
-b boot/isolinux/isolinux.bin \
-o $(1) $(2)
$(ISOIMG) iso:
@$(call gen_iso_image, $(ISOIMG) $(ISODIR))
@which isohybrid > /dev/null && isohybrid $(ISOIMG)
STRIP_FILES = $(wildcard genode/*) $(wildcard pistachio/*)
#
# Compact all files in a directory using strip and gzip
#
# parameter 1 directory containing the files to strip and gzip
#
compact_files = for f in `find $(1) -type f`; do \
strip $$f -o strip.tmp; \
gzip -c strip.tmp > $$f; \
done; rm -f strip.tmp
tiny.iso:
@rm -rf $(@:.iso=.dir)
@cp -Lrp $(ISODIR) $(@:.iso=.dir)
@$(call compact_files, $(@:.iso=.dir)/fiasco)
@$(call compact_files, $(@:.iso=.dir)/pistachio)
@$(call compact_files, $(@:.iso=.dir)/genode)
@$(call gen_iso_image, $@ $(@:.iso=.dir))
@rm -rf $(@:.iso=.dir)
compress: $(ISOIMG)
@bzip2 -f -c $< > $).bz2
clean:
@rm -rf tiny.dir tiny.iso $(ISOIMG)
.PHONY: $(ISOIMG) tiny.iso clean