#!/usr/bin/make -f
# Licensed under the terms of the GPLv2
# Guillaume Destuynder <kang@rsbac.org>

#
# Configuration
#

VERSION		:= 1.2
PACKAGE		:= rklogd
INSTALL		:= install
STRIP		:= strip
CC		:= gcc
GZIP		:= gzip
ECHO		:= $(shell which echo)
ifeq ($(ECHO),)
ECHO		:= echo
endif

DESTDIR		:= 
PREFIX		:= /usr/local
LOCALEDIR	:= $(PREFIX)/share/locale
DIR_BIN		:= $(PREFIX)/bin
DIR_SBIN	:= $(PREFIX)/sbin
DIR_MAN		:= $(PREFIX)/share/man/man8

CFLAGS		:= -fPIC -O2 -fomit-frame-pointer
CFLAGS		+= -Isrc -I. -I../headers -I/usr/include -I/usr/local/include \
		   -I$(PREFIX)/include
LDFLAGS		:=

DEFINES		:= -DVERSION=\"$(VERSION)\" \
		   -DLOCALEDIR=\"$(LOCALEDIR)\" \
		   -DPACKAGE=\"$(PACKAGE)\"

LIBS		:= -L../libs/.libs -L$(PREFIX)/lib -lrsbac

FILES_RKLOGD	:= $(wildcard src/*.c)
FILES_RKLOGDV	:= $(wildcard viewer/*.c)
FILES_MAN	:= $(wildcard man/*.8)

#
# Nice make. Use make VERBOSE=1 to verbose compilation.
#
ifneq ($(VERBOSE), 1)
.SILENT:
E = @$(ECHO) -e " "
else
E = @:
endif

#
# Targets
#

all: rklogd rklogd-viewer

rklogd: $(FILES_RKLOGD:.c=.o)
	$(E) "CC\t\t$@"
	$(CC) $(CFLAGS) $(LDFLAGS) $(DEFINES) $(LIBS)  $(FILES_RKLOGD:.c=.o) -o $@

$(FILES_RKLOGD:.c=): $(FILES_RKLOGD)
	$(E) "CC\t\t$@"
	$(CC) $(CFLAGS) $(LDFLAGS) $(DEFINES) -c $@.c -o $@.o

rklogd-viewer: $(FILES_RKLOGDV:.c=.o)
	$(E) "CC\t\t$@"
	$(CC) $(CFLAGS) $(LDFLAGS) $(DEFINES) $(LIBS) -lncurses  $(FILES_RKLOGDV:.c=.o) -o $@

$(FILES_RKLOGDV:.c=): $(FILES_RKLOGDV)
	$(E) "CC\t\t$@"
	$(CC) $(CFLAGS) $(LDFLAGS) $(DEFINES) -c $@.c -o $@.o
	
clean:
	$(E) "CLEAN\t\t$(FILES_RKLOGD:.c=.o)"
	rm -f $(FILES_RKLOGD:.c=.o)
	$(E) "CLEAN\t\t$(FILES_RKLOGDV:.c=.o)"
	rm -f $(FILES_RKLOGDV:.c=.o)

distclean: clean
	$(E) "CLEAN\t\trklogd"
	rm -f rklogd
	$(E) "CLEAN\t\trklogd-viewer"
	rm -f rklogd-viewer
	$(E) "CLEAN\t\t$(FILES_MAN:.8=.8.gz)"
	rm -f $(FILES_MAN:.8=.8.gz)
	
install: all
	$(E) "INTO\t\t$(DESTDIR) ($(PREFIX))"
	$(E) "DIR\t\t$(DIR_SBIN) $(DIR_BIN) $(DIR_MAN)"
	$(INSTALL) -d $(DESTDIR)/$(DIR_SBIN) $(DESTDIR)/$(DIR_BIN) $(DESTDIR)/$(DIR_MAN)
	$(E) "INSTALL\trklogd"
	$(INSTALL) -m755 rklogd $(DESTDIR)/$(DIR_SBIN)
	$(E) "INSTALL\trklogd-viewer"
	$(INSTALL) -m755 rklogd-viewer $(DESTDIR)/$(DIR_BIN)
	$(foreach f, $(FILES_MAN), $(ECHO) -e "  GZIP\t\t$(f)"; \
	$(GZIP) -9c $(f) > $(f:.8=.8.gz);)
	$(foreach f, $(FILES_MAN), $(ECHO) -e "  INSTALL\t$(f:.8=.8.gz)"; \
	$(INSTALL) -m664 $(f:.8=.8.gz) $(DESTDIR)/$(DIR_MAN);)

install-strip: install
	$(E) "STRIP\t\trklogd rklogd-viewer"
	$(STRIP) -s $(DESTDIR)/$(DIR_SBIN)/rklogd $(DESTDIR)/$(DIR_BIN)/rklogd-viewer

uninstall:
	$(E) "UNINSTALL\trklogd"
	rm -f $(DESTDIR)/$(DIR_SBIN)/rklogd
	$(E) "UNINSTALL\trklogd-viewer"
	rm -f $(DESTDIR)/$(DIR_BIN)/rklogd-viewer
	$(foreach f, $(FILES_MAN), $(ECHO) -e "  UINSTALL\t$(f:.8=.8.gz)"; \
	rm -f $(DESTDIR)/$(DIR_MAN)/$(f:.8=.8.gz);)


.PHONY: all install uninstall clean distclean
