#sechecker
OBJS 		  = sechecker.o register_list.o sechk_parse.o
LIBAPOL 	  = ../libapol/libapol.a
ifeq ($(USE_LIBSEFS), 1)
LIBSEFS           = ../libsefs/libsefs.a
all: libsefs
INCLUDE           += -I../libsefs
else
LIBSEFS           =
endif
MODULES 	  = $(patsubst %.c, %.o, $(wildcard ./modules/*.c))
INCLUDE 	  += -I. -I../libapol
LDFLAGS 	  += -lfl -lm $(LIBSELINUX)
SECHECKER_VERSION = '"$(shell cat ./VERSION)"'
LIBXML_FLAGS	  = `pkg-config --cflags libxml-2.0`
LIBXML_LIBS       = `pkg-config --libs libxml-2.0`
CFLAGS 		  += -D_GNU_SOURCE
SECHK_BASE_INSTALL_DIR = sechecker
PROF_INSTALL_DIR = profiles

all: libapol sechecker

sechecker: $(LIBAPOL) $(LIBSEFS) modules $(OBJS) sechecker_cli.o
	$(CC) $(CFLAGS) -o $@ sechecker_cli.o  $(OBJS) $(LIBXML_LIBS) $(MODULES) $(LIBAPOL) $(LIBSEFS) $(LDFLAGS)

sechecker_cli.o: sechecker_cli.c register_list.h sechecker.h
	$(CC) $(CFLAGS) $(INCLUDE) $(LIBXML_FLAGS) -DSECHECKER_VERSION=$(SECHECKER_VERSION) -c $<

%.o: %.c
	$(CC) $(CFLAGS) $(INCLUDE) $(LIBXML_FLAGS) -c $< 

libapol:
	$(MAKE) -C .. libapol

libsefs:
	$(MAKE) -C .. libsefs

modules: 
	$(MAKE) -C ./modules all

register_list.o : register_list.h

sechecker.o: sechecker.h 
sechecker.o: CFLAGS+=-DPROFILE_INSTALL_DIR='"$(SECHK_BASE_INSTALL_DIR)/$(PROF_INSTALL_DIR)"'
sechecker.o: CFLAGS+=-DPROF_SUBDIR='"$(PROF_INSTALL_DIR)"'

sechk_parse.o: sechk_parse.h
sechk_parse.o: CFLAGS+=-DSECHECKER_VERSION=$(SECHECKER_VERSION) -DPROFILE_INSTALL_DIR='"$(SECHK_BASE_INSTALL_DIR)/$(PROF_INSTALL_DIR)"' -DBASE_PATH='"$(INSTALL_LIBDIR)"'

install: all install-profiles
	install -m 755 sechecker $(BINDIR)
	install -m 644 sechecker_help.txt $(INSTALL_HELPDIR)
	test -d $(MANDIR)/man1 || install -m 755 -d $(MANDIR)/man1
	install -m 644 ../man/sechecker.1 $(MANDIR)/man1

install-profiles:
	mkdir -m 755 -p $(INSTALL_LIBDIR)/$(SECHK_BASE_INSTALL_DIR)/$(PROF_INSTALL_DIR)
	install -m 644 profiles/*.sechecker profiles/*.dtd $(INSTALL_LIBDIR)/$(SECHK_BASE_INSTALL_DIR)/$(PROF_INSTALL_DIR)

clean:
	rm -f sechecker *.o; $(MAKE) -C ./modules clean

bare: clean
	rm -f *~ core core.*; $(MAKE) -C ./modules bare

.PHONY: clean bare libapol libsefs modules


