#
# Makefile for the SELinux labeled networking support code.
#
# This file is GPL.
#
VERSION:=0.08

# Installation directories.
PREFIX:=/usr/local/selinux
LIBDIR:=$(PREFIX)/lib
BINDIR:=$(PREFIX)/bin
SBINDIR:=$(PREFIX)/sbin

#
# Paths to the selinux kernel and plug module directories.
#
LSMVER=-2.4
KERNELDIR:=../../lsm$(LSMVER)
PLUGDIR:=../../lsm$(LSMVER)/security/selinux

# Commonly used include directories
KERNELINC:=-I$(KERNELDIR)/include
PLUGINC:=-I$(PLUGDIR)/include

CC:=gcc
COPT_FLAGS:=-g #-O2
CFLAGS:=$(COPT_FLAGS) -Wall -Wunused -Wshadow -Wstrict-prototypes -Wmissing-prototypes -Werror
LDFLAGS:=-g

CFLAGS+=$(KERNELINC) $(PLUGINC)

OBJ_CFLAGS=$(CFLAGS)

DEPFILES = $(OBJ_TARGS:%.o=%.d)

default: all

include libflnetlink/Module.mk
include libflutil/Module.mk
include scmpd/Module.mk
include utils/Module.mk
-include .makefirst
-include $(DEPFILES)

all: $(LIB_TARGS) $(EXE_TARGS)

distclean: clean
	@rm -fv TAGS `find . -name '*~' -o -name '.*~'` `find . -name '*.rej'` `find . -name '*.d'` .makefirst

dist: targz

targz: distclean
	@(cd .. ; tar --exclude test --exclude CVS -czvf selopt-$(VERSION).tar.gz selopt)

clean: 
	@rm -fv $(EXE_TARGS) $(OBJ_TARGS) $(LIB_TARGS)
	@find . -name '*.[ao]' -name '*.so' | xargs rm -fv

install: $(INST_TARGS)

uninstall: $(UNINST_TARGS)

dep: $(DEPFILES)
	@echo Dependencies will be generated on next make.
	rm -f $(DEPFILES) .makefirst

$(OBJ_TARGS:%.o=%.d): %.d: %.c
	@-$(CC) -M -MG $(OBJ_CFLAGS) $< | sed -e 's@^.*\.o:@$*.o:@' > $@

.makefirst:
	@echo Making dependencies: please wait...
	@touch .makefirst

# This is useful for when dependencies completely screwed
%.h::
	@echo Something wrong... deleting dependencies.
	@-rm -f $(DEPFILES) .makefirst
	@exit 1

debug:
	@echo OBJ_TARGS=$(OBJ_TARGS)
	@echo LIB_TARGS=$(LIB_TARGS)
	@echo EXE_TARGS=$(EXE_TARGS)
