#
# Make the bootdisks
#

ARCH := $(patsubst i%86,i386,$(shell uname -m))

RHVERSION=5.2
DESTDIR=/mit/linux/redhat/redhat-$(RHVERSION)
DIST=$(ARCH)/images
INSTALL = install -s -m 0755
INSTALL_NOX = install -m 0644
LN = ln -sf
CHMOD = chmod -f
KERNEL=2.0.36

#
# Need to copy in the install program(s) as necessary to rebuild
# the boot disks
#
all: links exec
	@echo ""
	@echo "NOTE: You must be root to build the bootdisks"
	@echo ""
	@echo "Use \"make bootdisks\""
	@echo ""

depend:

clean:
	$(RM) .links .exec

#
# NOTE: you need to be root to build the bootdisks
# This presumes you do NOT rebuild boot1.img
#
bootdisks: links exec images/boot.img images/supp.img

rescue: images/rescue.img

images/boot.img: initrd.img
	$(RM) images/boot.img
	./mkboot

images/supp.img: supp/usr/bin/install2.bz2 supp/pcmcia.cgz
	$(RM) images/supp.img
	./mksupp

images/rescue.img:
	$(RM) images/rescue.img
	./mkrescue

initrd.img: initrd/sbin/install
	$(RM) initrd.img*

initrd/sbin/install: ../install/root.@sys/bin/install
	$(INSTALL) ../install/root.@sys/bin/install initrd/sbin/install

supp/usr/bin/install2.bz2: ../install/root.@sys/bin/install2.bz2
	$(INSTALL_NOX) ../install/root.@sys/bin/install2.bz2 supp/usr/bin/install2.bz2
	chmod +x supp/usr/bin/install2.bz2

supp/pcmcia.cgz: pcmcia pcmcia/lib/modules/$(KERNEL)
	./mkpcmcia

dist: bootdisks
	$(INSTALL_NOX) images/boot.img $(DESTDIR)/$(DIST)/athena-boot.img
	$(INSTALL_NOX) images/supp.img $(DESTDIR)/$(DIST)/athena-supp.img

#
# There are a number of symlinks which should be in place.  Make them
# here.   NOTE: This might need to change in the future.
links: .links

# These links were obtained by doing a diff between the CVS repository and
# the imported sources to find the differences.
.links:
	touch .links
	# initrd
	$(LN) /sbin/init initrd/linuxrc
	$(LN) sbin initrd/bin
	$(RM) initrd/sbin/sbin
	$(LN) /usr/etc/install2.tr initrd/etc
	$(LN) /proc/mounts initrd/etc/mtab
	$(LN) /lib/modules/2.0.36/pcmcia/ds.o initrd/modules
	$(LN) /lib/modules/2.0.36/pcmcia/i82365.o initrd/modules
	$(LN) /lib/modules/2.0.36/pcmcia/pcmcia_core.o initrd/modules
	$(LN) /lib/modules/2.0.36/pcmcia/tcic.o initrd/modules
	$(LN) install initrd/sbin/insmod
	$(LN) install initrd/sbin/rmmod
	$(LN) /usr/bin/sh initrd/sbin/sh
	$(LN) initrd/usr/lib initrd/usr/share

	# lib
	$(LN) ld-2.0.5.so lib/ld-linux.so.2
	$(LN) libc-2.0.5.so lib/libc.so.6
	$(LN) libcom_err.so.2.0 lib/libcom_err.so.2
	$(LN) libe2p.so.2.3 lib/libe2p.so.2
	$(LN) libext2fs.so.2.3 lib/libext2fs.so.2
	$(LN) /tmp/libext2fs.so.2.3 lib/libext2fs.so.2.3
	$(LN) /tmp/libnsl-2.0.5.so lib/libnsl-2.0.5.so
	$(LN) libnsl-2.0.5.so lib/libnsl.so.1
	$(LN) libnss_compat-2.0.5.so lib/libnss_compat.so.1
	$(LN) /tmp/libnss_files-2.0.5.so lib/libnss_files-2.0.5.so
	$(LN) libnss_files-2.0.5.so lib/libnss_files.so.1
	$(LN) libuuid.so.1.1 lib/libuuid.so.1
	$(LN) /tmp/libuuid.so.1.1 lib/libuuid.so.1.1
	$(LN) /tmp lib/modules

	# pcmcia
	$(LN) /modules pcmcia/lib/modules/2.0.36/block
	$(LN) /modules pcmcia/lib/modules/2.0.36/cdrom
	$(LN) /modules pcmcia/lib/modules/2.0.36/misc
	$(LN) /modules pcmcia/lib/modules/2.0.36/net
	$(LN) /modules pcmcia/lib/modules/2.0.36/scsi

	# rescue
	$(LN) gzip rescue/bin/gunzip
	$(LN) bash rescue/bin/sh
	$(LN) swapon rescue/bin/swapoff
	$(LN) vim rescue/bin/vi
	$(LN) ram0 rescue/dev/ramdisk
	$(LN) ld-2.0.7.so rescue/lib/ld-linux.so.2
	$(LN) libc-2.0.7.so rescue/lib/libc.so.6
	$(LN) libcom_err.so.2.0 rescue/lib/libcom_err.so.2
	$(LN) libe2p.so.2.3 rescue/lib/libe2p.so.2
	$(LN) libext2fs.so.2.4 rescue/lib/libext2fs.so.2
	$(LN) libnsl-2.0.7.so rescue/lib/libnsl.so.1
	$(LN) libnss_dns-2.0.7.so rescue/lib/libnss_dns.so.1
	$(LN) libnss_files-2.0.7.so rescue/lib/libnss_files.so.1
	$(LN) libtermcap.so.2.0.8 rescue/lib/libtermcap.so.2
	$(LN) libuuid.so.1.1 rescue/lib/libuuid.so.1
	$(LN) bin rescue/sbin
	$(RM) rescue/sbin/sbin
	$(LN) ../bin rescue/usr/bin
	$(RM) rescue/usr/bin/bin
	$(LN) ../bin rescue/usr/sbin
	$(RM) rescue/usr/bin/sbin

	# skeleton
	$(LN) gawk skeleton/bin/awk
	$(LN) gzip skeleton/bin/gunzip
	$(LN) bash skeleton/bin/sh
	$(LN) ld-linux.so.1.7.14 skeleton/lib/ld-linux.so.1
	$(LN) ld.so.1.7.14 skeleton/lib/ld.so
	$(LN) libc.so.5.3.12 skeleton/lib/libc.so.5
	$(LN) libm.so.5.0.6 skeleton/lib/libm.so.5
	$(LN) libtermcap.so.2.0.5 skeleton/lib/libtermcap.so.2

	# supp
	$(LN) ld-2.0.7.so supp/lib/ld-linux.so.2
	$(LN) libc-2.0.7.so supp/lib/libc.so.6
	$(LN) libcom_err.so.2.0 supp/lib/libcom_err.so.2
	$(LN) /tmp/libcom_err.so.2.0 supp/lib/libcom_err.so.2.0
	$(LN) libe2p.so.2.3 supp/lib/libe2p.so.2
	$(LN) /tmp/libe2p.so.2.3 supp/lib/libe2p.so.2.3
	$(LN) libext2fs.so.2.4 supp/lib/libext2fs.so.2
	$(LN) /tmp/libext2fs.so.2.4 supp/lib/libext2fs.so.2.4
	$(LN) libnsl-2.0.7.so supp/lib/libnsl.so.1
	$(LN) /tmp/libnsl-2.0.7.so supp/lib/libnsl-2.0.7.so
	$(LN) libnss_compat-2.0.7.so supp/lib/libnss_compat.so.1
	$(LN) /tmp/libnss_compat-2.0.7.so supp/lib/libnss_compat-2.0.7.so
	$(LN) libnss_files-2.0.7.so supp/lib/libnss_files.so.1
	$(LN) /tmp/libnss_files-2.0.7.so supp/lib/libnss_files-2.0.7.so
	$(LN) libuuid.so.1.1 supp/lib/libuuid.so.1
	$(LN) /tmp/libuuid.so.1.1 supp/lib/libuuid.so.1.1
	$(LN) /tmp supp/lib/modules
	$(LN) bzip2 supp/usr/bin/bunzip2
	$(LN) /sbin/install2 supp/usr/bin/cat
	$(LN) /tmp/fdisk supp/usr/bin/fdisk
	$(LN) /tmp/install2 supp/usr/bin/install2
	$(LN) /sbin/install2 supp/usr/bin/ln
	$(LN) /sbin/install2 supp/usr/bin/ls
	$(LN) /sbin/install2 supp/usr/bin/lsmod
	$(LN) /sbin/install2 supp/usr/bin/mkdir
	$(LN) /sbin/install2 supp/usr/bin/mknod
	$(LN) /sbin/install2 supp/usr/bin/mount
	$(LN) /sbin/install2 supp/usr/bin/rm
	$(LN) ash supp/usr/bin/sh
	$(LN) /sbin/install2 supp/usr/bin/umount
	$(LN) /sbin/install2 supp/usr/bin/uncpio

exec: .exec

.exec:
	-touch .exec
	-$(CHMOD) +x initrd/sbin/*
	-$(CHMOD) +x lib/*
	-$(CHMOD) +x pcmcia/etc/pcmcia/*
	-$(CHMOD) +x pcmcia/sbin/*
	-$(CHMOD) +x rescue/bin/*
	-$(CHMOD) +x rescue/lib/*
	-$(CHMOD) +x skeleton/bin/*
	-$(CHMOD) +x skeleton/lib/*
	-$(CHMOD) +x skeleton/sbin/*
	-$(CHMOD) +x skeleton/usr/bin/*
	-$(CHMOD) +x supp/lib/*
	-$(CHMOD) +x supp/usr/bin/*
