1 M4 ?= m4 2 MKDIR ?= mkdir 3 EXE ?= libsepol-tests 4 5 CFLAGS += -g3 -gdwarf-2 -o0 -Wall -W -Wundef -Wmissing-noreturn -Wmissing-format-attribute -Wno-unused-parameter -Werror 6 7 # Statically link libsepol on the assumption that we are going to 8 # be testing internal functions. 9 LIBSEPOL := ../src/libsepol.a 10 11 # In order to load source policies we need to link in the checkpolicy/checkmodule parser and util code. 12 # This is less than ideal, but it makes the tests easier to maintain by allowing source policies 13 # to be loaded directly. 14 CHECKPOLICY := ../../checkpolicy/ 15 CPPFLAGS += -I../include/ -I$(CHECKPOLICY) 16 17 # test program object files 18 objs := $(patsubst %.c,%.o,$(wildcard *.c)) 19 parserobjs := $(CHECKPOLICY)queue.o $(CHECKPOLICY)y.tab.o \ 20 $(CHECKPOLICY)parse_util.o $(CHECKPOLICY)lex.yy.o \ 21 $(CHECKPOLICY)policy_define.o $(CHECKPOLICY)module_compiler.o 22 23 # test policy pieces 24 m4support := $(wildcard policies/support/*.spt) 25 testsuites := $(wildcard policies/test-*) 26 policysrc := $(foreach path,$(testsuites),$(wildcard $(path)/*.conf)) 27 stdpol := $(addsuffix .std,$(policysrc)) 28 mlspol := $(addsuffix .mls,$(policysrc)) 29 policies := $(stdpol) $(mlspol) 30 31 all: $(EXE) $(policies) 32 policies: $(policies) 33 34 $(EXE): $(objs) $(parserobjs) $(LIBSEPOL) 35 $(CC) $(CFLAGS) $(CPPFLAGS) $(objs) $(parserobjs) -lfl -lcunit -lcurses $(LIBSEPOL) -o $@ 36 37 %.conf.std: $(m4support) %.conf 38 $(M4) $(M4PARAMS) $^ > $@ 39 40 %.conf.mls: $(m4support) %.conf 41 $(M4) $(M4PARAMS) -D enable_mls $^ > $@ 42 43 clean: 44 rm -f $(objs) $(EXE) 45 rm -f $(policies) 46 rm -f policies/test-downgrade/policy.hi policies/test-downgrade/policy.lo 47 48 49 test: $(EXE) $(policies) 50 $(MKDIR) -p policies/test-downgrade 51 ../../checkpolicy/checkpolicy -M policies/test-cond/refpolicy-base.conf -o policies/test-downgrade/policy.hi 52 ./$(EXE) 53 54 .PHONY: all policies clean test 55