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

#
# Configuration
#

VERSION		:= 1.3.6
LIBVERSION 	:= 1

INSTALL		:= install
LIBTOOL 	:= libtool
CC		:= gcc
ECHO		:= $(shell which echo)
ifeq ($(ECHO),)
ECHO		:= echo
endif

DESTDIR		:= 
PREFIX		:= /usr/local
ifeq ($(DIR_LIBS),)
LIBDIR		:= $(PREFIX)/lib
else
LIBDIR		:= $(DIR_LIBS)
endif
LOCALEDIR	:= $(PREFIX)/share/locale

RSBACLIB 	:= librsbac.la

NLS		:= 1

CFLAGS		:= -fPIC -O2 -fomit-frame-pointer
CFLAGS		+= -I../headers -I/usr/include -I/usr/local/include  \
		   -I$(PREFIX)/include
LDFLAGS		:=
DEFINES		:= -DPACKAGE=\"rsbac-admin\" \
                   -DVERSION=\"$(VERSION)\" \
		   -DLOCALEDIR=\"$(LOCALEDIR)\" \
		   -DENABLE_NLS=$(NLS)

QUIET 		:= > /dev/null

LIBS		:= 

ARCH            := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
		     -e s/arm.*/arm/ -e s/sa110/arm/ \
		     -e s/s390x/s390/ -e s/parisc64/parisc/ )

FILES_LIBS	:= $(wildcard helpers/*.c)

#
# Architecture checks
#

ASM_DIR		:= asm-arches/asm-$(ARCH)/unistd.h

CFLAGS		+= -include ./$(ASM_DIR)

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

#
# Targets
#

all: $(RSBACLIB)

$(RSBACLIB): $(FILES_LIBS)
	$(foreach f, $(FILES_LIBS), $(ECHO) -e "  CC\t\t$(f)"; \
	$(LIBTOOL) --mode=compile $(CC) $(CFLAGS) $(LDFLAGS) $(DEFINES) -c $(f) $(QUIET) -o $(f:.c=.lo);)
	$(E) "LD\t\t$(RSBACLIB)"
	$(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) $(DEFINES) $(LIBS) \
	-o $@ $(FILES_LIBS:.c=.lo) -rpath $(LIBDIR) -version-info $(LIBVERSION) \
	$(QUIET)
        
clean:
	$(E) "CLEAN\t\t$(RSBACLIB) librsbac.a"
	rm -f $(RSBACLIB) librsbac.a
	$(E) "CLEAN\t\tLibtool objects"
	rm -rf $(FILES_LIBS:.c=.lo) $(FILES_LIBS:.c=.o) helpers/.libs
	rm -rf .libs

distclean: clean
	
install: all
	$(E) "INTO\t\t$(DESTDIR) ($(PREFIX))"
	$(E) "DIR\t\t$(LIBDIR)"
	$(INSTALL) -d $(DESTDIR)/$(LIBDIR)
	$(E) "INSTALL\t$(RSBACLIB)"
	$(LIBTOOL) --mode=install install -c $(RSBACLIB) \
	$(DESTDIR)/$(LIBDIR)/$(RSBACLIB) $(QUIET)
	$(E) "LIBTOOL\t$(RSBACLIB)"
	$(LIBTOOL) -n --mode=finish $(DESTDIR)/$(LIBDIR) $(QUIET)

uninstall:
	$(E) "UNINSTALL\t $(LIBDIR)/$(RSBACLIB) \
	$(LIBDIR)/librsbac.so $(LIBDIR)/librsbac.a"
	$(LIBTOOL) --mode=uninstall rm \
	$(DESTDIR)/$(LIBDIR)/$(RSBACLIB) $(QUIET)


.PHONY: all clean distclean
