# Makefile for GRUB for diskless Linux, FreeBSD, NetBSD, and OpenBSD systems GRUB = grub-0.93 GRUBTGZ = $(GRUB).tar.gz GRUBURL = ftp://alpha.gnu.org/gnu/grub/$(GRUBTGZ) GRUBPATCH = $(GRUB)-openbsd.patch GRUBCONFIG = --enable-diskless \ --enable-eepro100 \ --enable-lance \ --enable-ns8390 \ --enable-via-rhine TARGETS = linux.nbgrub \ linux.pxegrub \ freebsd.nbgrub \ freebsd.pxegrub \ netbsd.nbgrub \ netbsd.pxegrub \ openbsd.nbgrub \ openbsd.pxegrub CC = gcc32 default: $(TARGETS) # Fetch, unpack, and patch GRUB source code $(GRUBTGZ): wget -nv $(GRUBURL) $(GRUB): $(GRUBTGZ) tar xzf $(GRUBTGZ) patch -d $(GRUB) -p1 <../OpenBSD/$(GRUBPATCH) # Build GRUB for Linux linux.nbgrub: $(GRUB) if [ -f $(GRUB)/Makefile ]; then $(MAKE) -C $(GRUB) distclean ; fi cd $(GRUB) ; ./configure $(GRUBCONFIG) --enable-preset-menu=../../Linux/grub.conf $(MAKE) -C $(GRUB) CC=$(CC) cp $(GRUB)/stage2/nbgrub linux.nbgrub cp $(GRUB)/stage2/pxegrub linux.pxegrub touch *grub # Build GRUB for FreeBSD freebsd.nbgrub: $(GRUB) if [ -f $(GRUB)/Makefile ]; then $(MAKE) -C $(GRUB) distclean ; fi cd $(GRUB) ; ./configure $(GRUBCONFIG) --enable-preset-menu=../../FreeBSD/grub.conf $(MAKE) -C $(GRUB) CC=$(CC) cp $(GRUB)/stage2/nbgrub freebsd.nbgrub cp $(GRUB)/stage2/pxegrub freebsd.pxegrub touch *grub # Build GRUB for NetBSD netbsd.nbgrub: $(GRUB) if [ -f $(GRUB)/Makefile ]; then $(MAKE) -C $(GRUB) distclean ; fi cd $(GRUB) ; ./configure $(GRUBCONFIG) --enable-preset-menu=../../NetBSD/grub.conf $(MAKE) -C $(GRUB) CC=$(CC) cp $(GRUB)/stage2/nbgrub netbsd.nbgrub cp $(GRUB)/stage2/pxegrub netbsd.pxegrub touch *grub # Build GRUB for OpenBSD openbsd.nbgrub: $(GRUB) if [ -f $(GRUB)/Makefile ]; then $(MAKE) -C $(GRUB) distclean ; fi cd $(GRUB) ; ./configure $(GRUBCONFIG) --enable-preset-menu=../../OpenBSD/grub.conf $(MAKE) -C $(GRUB) CC=$(CC) cp $(GRUB)/stage2/nbgrub openbsd.nbgrub cp $(GRUB)/stage2/pxegrub openbsd.pxegrub touch *grub # Install to /tftpboot install: $(TARGETS) scp $(TARGETS) $(TFTPSERVER)/tftpboot # Clean out working files clean: -rm $(TARGETS) -rm -rf $(GRUB) reallyclean: clean -rm $(GRUBTGZ)