ETCDIR=/etc
LIBDIR=/lib
EXTDIR=${DESTDIR}${ETCDIR}
MODE=754
DIRMODE=755
CONFMODE=644

all: install

create-dirs:
	install -d -m ${DIRMODE} ${EXTDIR}/rc.d/rc0.d
	install -d -m ${DIRMODE} ${EXTDIR}/rc.d/rc1.d
	install -d -m ${DIRMODE} ${EXTDIR}/rc.d/rc2.d
	install -d -m ${DIRMODE} ${EXTDIR}/rc.d/rc3.d
	install -d -m ${DIRMODE} ${EXTDIR}/rc.d/rc4.d
	install -d -m ${DIRMODE} ${EXTDIR}/rc.d/rc5.d
	install -d -m ${DIRMODE} ${EXTDIR}/rc.d/rc6.d
	install -d -m ${DIRMODE} ${EXTDIR}/rc.d/rcsysinit.d
	install -d -m ${DIRMODE} ${EXTDIR}/rc.d/init.d
	install -d -m ${DIRMODE} ${EXTDIR}/sysconfig

create-service-dir:
	install -d -m ${DIRMODE} ${EXTDIR}/sysconfig/network-devices/services

udev_device_dirs:
	install -d -m ${DIRMODE} ${DESTDIR}${LIBDIR}/udev/devices
	install -d -m ${DIRMODE} ${DESTDIR}${LIBDIR}/udev/devices/pts
	install -d -m ${DIRMODE} ${DESTDIR}${LIBDIR}/udev/devices/shm
	install -d -m ${DIRMODE} ${DESTDIR}${LIBDIR}/udev/devices/net

udev_device_links: udev_device_dirs
	ln -snf /proc/self/fd ${DESTDIR}${LIBDIR}/udev/devices/fd
	ln -snf /proc/self/fd/0 ${DESTDIR}${LIBDIR}/udev/devices/stdin
	ln -snf /proc/self/fd/1 ${DESTDIR}${LIBDIR}/udev/devices/stdout
	ln -snf /proc/self/fd/2 ${DESTDIR}${LIBDIR}/udev/devices/stderr
	ln -snf /proc/kcore ${DESTDIR}${LIBDIR}/udev/devices/core

mknod_devices: udev_device_dirs
	@if [ "$$UID" = "0" ]; then \
		if ! [ -e ${DESTDIR}${LIBDIR}/udev/devices/null ]; then \
			mknod -m 0666 ${DESTDIR}${LIBDIR}/udev/devices/null c 1 3 ;\
		fi \
	fi
	@if [ "$$UID" = "0" ]; then \
		if ! [ -e ${DESTDIR}${LIBDIR}/udev/devices/console ]; then \
			mknod -m 0600 ${DESTDIR}${LIBDIR}/udev/devices/console c 5 1 ;\
		fi \
	fi
	@if [ "$$UID" != "0" ]; then \
		if ! [ -e ${DESTDIR}${LIBDIR}/udev/devices/null ]; then \
			echo "You will need to issue the following command as the root user" ;\
			echo "" ;\
			echo "mknod -m 0666 ${DESTDIR}${LIBDIR}/udev/devices/null c 1 3" ;\
		fi \
	fi
	@if [ "$$UID" != "0" ]; then \
		if ! [ -e ${DESTDIR}${LIBDIR}/udev/devices/console ]; then \
			echo "mknod -m 0600 ${DESTDIR}${LIBDIR}/udev/devices/console c 5 1" ;\
			echo "" ;\
		fi \
	fi

install: create-dirs create-service-dir udev_device_dirs udev_device_links
	install -m ${MODE} clfs/init.d/checkfs       ${EXTDIR}/rc.d/init.d/
	install -m ${MODE} clfs/init.d/cleanfs       ${EXTDIR}/rc.d/init.d/
	install -m ${CONFMODE} clfs/init.d/functions ${EXTDIR}/rc.d/init.d/
	install -m ${MODE} clfs/init.d/halt          ${EXTDIR}/rc.d/init.d/
	install -m ${MODE} clfs/init.d/console       ${EXTDIR}/rc.d/init.d/
	install -m ${MODE} clfs/init.d/localnet      ${EXTDIR}/rc.d/init.d/
	install -m ${MODE} clfs/init.d/modules       ${EXTDIR}/rc.d/init.d/
	install -m ${MODE} clfs/init.d/mountfs       ${EXTDIR}/rc.d/init.d/
	install -m ${MODE} clfs/init.d/mountkernfs   ${EXTDIR}/rc.d/init.d/
	install -m ${MODE} clfs/init.d/network       ${EXTDIR}/rc.d/init.d/
	install -m ${MODE} clfs/init.d/rc            ${EXTDIR}/rc.d/init.d/
	install -m ${MODE} clfs/init.d/reboot        ${EXTDIR}/rc.d/init.d/
	install -m ${MODE} clfs/init.d/sendsignals   ${EXTDIR}/rc.d/init.d/
	install -m ${MODE} clfs/init.d/setclock	     ${EXTDIR}/rc.d/init.d/
	install -m ${MODE} clfs/init.d/sysklogd      ${EXTDIR}/rc.d/init.d/
	install -m ${MODE} clfs/init.d/swap          ${EXTDIR}/rc.d/init.d/
	install -m ${MODE} clfs/init.d/sysctl        ${EXTDIR}/rc.d/init.d/
	install -m ${MODE} clfs/init.d/template      ${EXTDIR}/rc.d/init.d/
	install -m ${MODE} clfs/init.d/udev          ${EXTDIR}/rc.d/init.d/
	ln -sf ../init.d/network     ${EXTDIR}/rc.d/rc0.d/K80network
	ln -sf ../init.d/sysklogd    ${EXTDIR}/rc.d/rc0.d/K90sysklogd
	ln -sf ../init.d/sendsignals ${EXTDIR}/rc.d/rc0.d/S60sendsignals
	ln -sf ../init.d/mountfs     ${EXTDIR}/rc.d/rc0.d/S70mountfs
	ln -sf ../init.d/swap        ${EXTDIR}/rc.d/rc0.d/S80swap
	ln -sf ../init.d/localnet    ${EXTDIR}/rc.d/rc0.d/S90localnet
	ln -sf ../init.d/halt        ${EXTDIR}/rc.d/rc0.d/S99halt
	ln -sf ../init.d/network     ${EXTDIR}/rc.d/rc1.d/K80network
	ln -sf ../init.d/sysklogd    ${EXTDIR}/rc.d/rc1.d/S10sysklogd
	ln -sf ../init.d/network     ${EXTDIR}/rc.d/rc2.d/S20network
	ln -sf ../init.d/sysklogd    ${EXTDIR}/rc.d/rc2.d/S10sysklogd
	ln -sf ../init.d/sysklogd    ${EXTDIR}/rc.d/rc3.d/S10sysklogd
	ln -sf ../init.d/network     ${EXTDIR}/rc.d/rc3.d/S20network
	ln -sf ../init.d/sysklogd    ${EXTDIR}/rc.d/rc4.d/S10sysklogd
	ln -sf ../init.d/network     ${EXTDIR}/rc.d/rc4.d/S20network
	ln -sf ../init.d/sysklogd    ${EXTDIR}/rc.d/rc5.d/S10sysklogd
	ln -sf ../init.d/network     ${EXTDIR}/rc.d/rc5.d/S20network
	ln -sf ../init.d/network     ${EXTDIR}/rc.d/rc6.d/K80network
	ln -sf ../init.d/sysklogd    ${EXTDIR}/rc.d/rc6.d/K90sysklogd
	ln -sf ../init.d/sendsignals ${EXTDIR}/rc.d/rc6.d/S60sendsignals
	ln -sf ../init.d/mountfs     ${EXTDIR}/rc.d/rc6.d/S70mountfs
	ln -sf ../init.d/swap        ${EXTDIR}/rc.d/rc6.d/S80swap
	ln -sf ../init.d/localnet    ${EXTDIR}/rc.d/rc6.d/S90localnet
	ln -sf ../init.d/reboot      ${EXTDIR}/rc.d/rc6.d/S99reboot
	ln -sf ../init.d/mountkernfs ${EXTDIR}/rc.d/rcsysinit.d/S00mountkernfs
	ln -sf ../init.d/modules     ${EXTDIR}/rc.d/rcsysinit.d/S05modules
	ln -sf ../init.d/udev        ${EXTDIR}/rc.d/rcsysinit.d/S10udev
	ln -sf ../init.d/checkfs     ${EXTDIR}/rc.d/rcsysinit.d/S20checkfs
	ln -sf ../init.d/mountfs     ${EXTDIR}/rc.d/rcsysinit.d/S30mountfs
	ln -sf ../init.d/swap        ${EXTDIR}/rc.d/rcsysinit.d/S40swap
	ln -sf ../init.d/cleanfs     ${EXTDIR}/rc.d/rcsysinit.d/S50cleanfs
	ln -sf ../init.d/setclock    ${EXTDIR}/rc.d/rcsysinit.d/S60setclock
	ln -sf ../init.d/console     ${EXTDIR}/rc.d/rcsysinit.d/S70console
	ln -sf ../init.d/localnet    ${EXTDIR}/rc.d/rcsysinit.d/S80localnet
	ln -sf ../init.d/sysctl      ${EXTDIR}/rc.d/rcsysinit.d/S90sysctl
	if [ ! -f ${EXTDIR}/sysconfig/bootscripts ]; then install -m ${CONFMODE} clfs/sysconfig/bootscripts ${EXTDIR}/sysconfig/bootscripts; fi
	if [ ! -f ${EXTDIR}/sysconfig/console     ]; then install -m ${CONFMODE} clfs/sysconfig/console     ${EXTDIR}/sysconfig/; fi
	if [ ! -f ${EXTDIR}/sysconfig/createfiles ]; then install -m ${CONFMODE} clfs/sysconfig/createfiles ${EXTDIR}/sysconfig/; fi
	if [ ! -f ${EXTDIR}/sysconfig/modules     ]; then install -m ${CONFMODE} clfs/sysconfig/modules     ${EXTDIR}/sysconfig/; fi
	if [ ! -f ${EXTDIR}/sysconfig/rc          ]; then install -m ${CONFMODE} clfs/sysconfig/rc          ${EXTDIR}/sysconfig/; fi
	install                   -m ${MODE} clfs/sysconfig/network-devices/ifup   ${EXTDIR}/sysconfig/network-devices/
	install                   -m ${MODE} clfs/sysconfig/network-devices/ifdown ${EXTDIR}/sysconfig/network-devices/
	install                   -m ${MODE} clfs/sysconfig/network-devices/services/ipv4-static       ${EXTDIR}/sysconfig/network-devices/services/
	install                   -m ${MODE} clfs/sysconfig/network-devices/services/ipv4-static-route ${EXTDIR}/sysconfig/network-devices/services/
	@$(MAKE) mknod_devices

install-consolelog: create-dirs
	install -m ${MODE} contrib/init.d/consolelog   ${EXTDIR}/rc.d/init.d
	ln -sf ../init.d/consolelog  ${EXTDIR}/rc.d/rcsysinit.d/S00consolelog
	install --backup=numbered -m ${CONFMODE} contrib/sysconfig/consolelog  ${EXTDIR}/sysconfig/

install-service-mtu: create-service-dir
	install -m ${MODE} contrib/sysconfig/network-devices/services/mtu ${EXTDIR}/sysconfig/network-devices/services

minimal: create-dirs create-service-dir udev_device_dirs udev_device_links
	sed -e 's|/bin:/usr/bin:/sbin:/usr/sbin|/tools/bin:/tools/sbin:/bin:/sbin|g' clfs/init.d/functions > clfs/init.d/functions.minimal
	install -m ${MODE} clfs/init.d/checkfs       		${EXTDIR}/rc.d/init.d/
	install -m ${MODE} clfs/init.d/cleanfs       		${EXTDIR}/rc.d/init.d/
	install -m ${CONFMODE} clfs/init.d/functions.minimal	${EXTDIR}/rc.d/init.d/functions
	install -m ${MODE} clfs/init.d/halt          		${EXTDIR}/rc.d/init.d/
	install -m ${MODE} clfs/init.d/localnet      		${EXTDIR}/rc.d/init.d/
	install -m ${MODE} clfs/init.d/mountfs       		${EXTDIR}/rc.d/init.d/
	install -m ${MODE} clfs/init.d/mountkernfs   		${EXTDIR}/rc.d/init.d/
	install -m ${MODE} clfs/init.d/rc            		${EXTDIR}/rc.d/init.d/
	install -m ${MODE} clfs/init.d/reboot        		${EXTDIR}/rc.d/init.d/
	install -m ${MODE} clfs/init.d/sendsignals   		${EXTDIR}/rc.d/init.d/
	install -m ${MODE} clfs/init.d/setclock      		${EXTDIR}/rc.d/init.d/
	install -m ${MODE} clfs/init.d/swap          		${EXTDIR}/rc.d/init.d/
	ln -sf ../init.d/sendsignals ${EXTDIR}/rc.d/rc0.d/S60sendsignals
	ln -sf ../init.d/mountfs     ${EXTDIR}/rc.d/rc0.d/S70mountfs
	ln -sf ../init.d/swap        ${EXTDIR}/rc.d/rc0.d/S80swap
	ln -sf ../init.d/halt        ${EXTDIR}/rc.d/rc0.d/S99halt
	ln -sf ../init.d/sendsignals ${EXTDIR}/rc.d/rc6.d/S60sendsignals
	ln -sf ../init.d/mountfs     ${EXTDIR}/rc.d/rc6.d/S70mountfs
	ln -sf ../init.d/swap        ${EXTDIR}/rc.d/rc6.d/S80swap
	ln -sf ../init.d/reboot      ${EXTDIR}/rc.d/rc6.d/S99reboot
	ln -sf ../init.d/mountkernfs ${EXTDIR}/rc.d/rcsysinit.d/S00mountkernfs
	ln -sf ../init.d/udev        ${EXTDIR}/rc.d/rcsysinit.d/S10udev
	ln -sf ../init.d/checkfs     ${EXTDIR}/rc.d/rcsysinit.d/S20checkfs
	ln -sf ../init.d/mountfs     ${EXTDIR}/rc.d/rcsysinit.d/S30mountfs
	ln -sf ../init.d/swap        ${EXTDIR}/rc.d/rcsysinit.d/S40swap
	ln -sf ../init.d/cleanfs     ${EXTDIR}/rc.d/rcsysinit.d/S50cleanfs
	ln -sf ../init.d/setclock    ${EXTDIR}/rc.d/rcsysinit.d/S60setclock
	if [ ! -f ${EXTDIR}/sysconfig/rc          ]; then install -m ${CONFMODE} clfs/sysconfig/rc          ${EXTDIR}/sysconfig/; fi
	if [ ! -f ${EXTDIR}/sysconfig/createfiles ]; then install -m ${CONFMODE} clfs/sysconfig/createfiles ${EXTDIR}/sysconfig/; fi
	@$(MAKE) mknod_devices

install-raq2: 
	install -m ${MODE} clfs/init.d/paneld        ${EXTDIR}/rc.d/init.d/
	ln -sf ../init.d/paneld      ${EXTDIR}/rc.d/rc0.d/K01paneld
	ln -sf ../init.d/paneld      ${EXTDIR}/rc.d/rc1.d/S99paneld
	ln -sf ../init.d/paneld      ${EXTDIR}/rc.d/rc2.d/S99paneld
	ln -sf ../init.d/paneld      ${EXTDIR}/rc.d/rc3.d/S99paneld
	ln -sf ../init.d/paneld      ${EXTDIR}/rc.d/rc4.d/S99paneld
	ln -sf ../init.d/paneld      ${EXTDIR}/rc.d/rc5.d/S99paneld
	ln -sf ../init.d/paneld      ${EXTDIR}/rc.d/rc6.d/K01paneld
	if [ ! -f ${EXTDIR}/sysconfig/lcd          ]; then install -m ${CONFMODE} clfs/sysconfig/lcd-raq2   ${EXTDIR}/sysconfig/lcd; fi

install-raq3: 
	install -m ${MODE} clfs/init.d/setlcd        ${EXTDIR}/rc.d/init.d/
	ln -sf ../init.d/setlcd      ${EXTDIR}/rc.d/rc0.d/K01setlcd
	ln -sf ../init.d/setlcd      ${EXTDIR}/rc.d/rc1.d/S99setlcd
	ln -sf ../init.d/setlcd      ${EXTDIR}/rc.d/rc2.d/S99setlcd
	ln -sf ../init.d/setlcd      ${EXTDIR}/rc.d/rc3.d/S99setlcd
	ln -sf ../init.d/setlcd      ${EXTDIR}/rc.d/rc4.d/S99setlcd
	ln -sf ../init.d/setlcd      ${EXTDIR}/rc.d/rc5.d/S99setlcd
	ln -sf ../init.d/setlcd      ${EXTDIR}/rc.d/rc6.d/K01setlcd
	if [ ! -f ${EXTDIR}/sysconfig/lcd          ]; then install -m ${CONFMODE} clfs/sysconfig/lcd-raq3   ${EXTDIR}/sysconfig/lcd; fi

install-lcd: 
	if [ ! -f ${EXTDIR}/sysconfig/lcd          ]; then install -m ${CONFMODE} clfs/sysconfig/lcd        ${EXTDIR}/sysconfig/lcd; fi

.PHONY: all create-dirs create-service-dir install install-consolelog \
	install-service-mtu minimal install-lcd install-raq2 install-raq3
