# Makefile for cpudyn
# Ricardo Galli <gallir@uib.es>
#


CC = gcc
CFLAGS := -O2 -fkeep-inline-functions -Waggregate-return -Wnested-externs -Wtrigraphs $(CFLAGS)
#CFLAGS := -O2 -W -Wall -Wbad-function-cast -Wcast-align -Wpointer-arith -Wcast-qual -Wshadow -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -fkeep-inline-functions -Wwrite-strings -Waggregate-return -Wnested-externs -Wtrigraphs $(CFLAGS)

LDFLAGS = -s
INSTALL = install
INSTALL_DATA = $(INSTALL) -m 644
INSTALL_PROGRAM = $(INSTALL)


all: cpudynd cpudynd.8.gz

cpudynd: cpudynd.o disks.o cpus.o
	$(CC) $(LDFLAGS) cpudynd.o disks.o cpus.o -o cpudynd

cpudynd.o: cpudynd.c cpudynd.h
	$(CC) $(CFLAGS) -c cpudynd.c 

disks.o: disks.c disks.h cpudynd.h
	$(CC) $(CFLAGS) -c disks.c

cpus.o: cpus.c cpus.h cpus.h cpudynd.h
	$(CC) $(CFLAGS) -c cpus.c

cpudynd.8.gz: cpudynd.8
	gzip -9c cpudynd.8 > cpudynd.8.gz

install: cpudynd cpudynd.8.gz
	if [ -x /etc/init.d/cpudyn ]; then \
		/etc/init.d/cpudyn stop; \
		sleep 1; \
		echo -e "\n\nNot installing the new /etc/init.d/cpudyn, check /etc/init.d/cpudyn.new \n"; \
		if [ -d /etc/SuSEconfig ]; then \
			$(INSTALL) cpudyn.suse /etc/init.d/cpudyn.new; \
		elif [ -d /etc/sysconfig ]; then \
			$(INSTALL) cpudyn.redhat /etc/init.d/cpudyn.new; \
		elif [ -f /etc/slackware-version ]; then \
			$(INSTALL) cpudyn.slackware /etc/rc.d/rc.cpudynd.new; \
		else \
			$(INSTALL) cpudyn /etc/init.d/cpudyn.new; \
		fi \
	else \
		if [ -d /etc/SuSEconfig ]; then \
			$(INSTALL) cpudyn.suse /etc/init.d/cpudyn ; \
			echo -e "#OPTS=\"-d -i 1 -p 0.5 0.90\"\nOPTS=\"-d -i 1 -p 0.5 0.90 -t 120\"\n" >/etc/sysconfig/cpudyn ; \
		elif [ -d /etc/sysconfig ]; then \
			$(INSTALL) cpudyn.redhat /etc/init.d/cpudyn ; \
			echo -e "#OPTS=\"-d -i 1 -p 0.5 0.90\"\nOPTS=\"-d -i 1 -p 0.5 0.90 -t 120\"\n" >/etc/sysconfig/cpudyn ; \
		elif [ -f /etc/slackware-version ]; then \
			$(INSTALL) cpudyn.slackware /etc/rc.d/rc.cpudynd; \
		else \
			$(INSTALL) cpudyn /etc/init.d/cpudyn; \
		fi \
	fi
	$(INSTALL) cpudynd /usr/sbin/cpudynd
	$(INSTALL) cpudynd.8.gz /usr/share/man/man8/cpudynd.8.gz
	if [ -f /etc/slackware-version ]; then \
	  echo -e "\n\nStarting /etc/rc.d/rc.cpudynd\n"; \
	  /etc/rc.d/rc.cpudynd start; \
	else \
	  echo -e "\n\nStarting /etc/init.d/cpudyn\n"; \
	  /etc/init.d/cpudyn start; \
	fi
install-debian: install
	update-rc.d	-f cpudyn remove
	update-rc.d cpudyn defaults 20

clean:
	rm -f cpudynd cpudynd.8.gz *.o *~

uninstall: clean
	if [ -x /etc/init.d/cpudyn ]; then \
		/etc/init.d/cpudyn stop; \
		sleep 1; \
	else \
		/etc/rc.d/rc.cpudynd stop; \
		sleep 1; \
	fi
	rm -f /usr/sbin/cpudynd /etc/init.d/cpudyn /usr/share/man/man8/cpudynd.8.gz

uninstall-debian: uninstall
	update-rc.d	cpudyn remove

install-deb: cpudynd
	$(INSTALL) -d $(DESTDIR)/usr/sbin $(DESTDIR)/etc
	$(INSTALL) cpudynd $(DESTDIR)/usr/sbin
	$(INSTALL_DATA) debian/cpudyn.conf $(DESTDIR)/etc



