xref: /third_party/selinux/libsepol/tests/Makefile (revision 6cd6a6ac)
16cd6a6acSopenharmony_ciENV ?= env
26cd6a6acSopenharmony_ciM4 ?= m4 -E -E
36cd6a6acSopenharmony_ciMKDIR ?= mkdir
46cd6a6acSopenharmony_ciEXE ?= libsepol-tests
56cd6a6acSopenharmony_ci
66cd6a6acSopenharmony_ciCFLAGS += -g3 -gdwarf-2 -O0 \
76cd6a6acSopenharmony_ci	-Werror -Wall -Wextra \
86cd6a6acSopenharmony_ci	-Wfloat-equal \
96cd6a6acSopenharmony_ci	-Wformat=2 \
106cd6a6acSopenharmony_ci	-Winit-self \
116cd6a6acSopenharmony_ci	-Wmissing-format-attribute \
126cd6a6acSopenharmony_ci	-Wmissing-noreturn \
136cd6a6acSopenharmony_ci	-Wmissing-prototypes \
146cd6a6acSopenharmony_ci	-Wnull-dereference \
156cd6a6acSopenharmony_ci	-Wpointer-arith \
166cd6a6acSopenharmony_ci	-Wshadow \
176cd6a6acSopenharmony_ci	-Wstrict-prototypes \
186cd6a6acSopenharmony_ci	-Wundef \
196cd6a6acSopenharmony_ci	-Wunused \
206cd6a6acSopenharmony_ci	-Wwrite-strings \
216cd6a6acSopenharmony_ci	-fno-common
226cd6a6acSopenharmony_ci
236cd6a6acSopenharmony_ci# Statically link libsepol on the assumption that we are going to
246cd6a6acSopenharmony_ci# be testing internal functions.
256cd6a6acSopenharmony_ciLIBSEPOL := ../src/libsepol.a
266cd6a6acSopenharmony_ci
276cd6a6acSopenharmony_ci# In order to load source policies we need to link in the checkpolicy/checkmodule parser and util code.
286cd6a6acSopenharmony_ci# This is less than ideal, but it makes the tests easier to maintain by allowing source policies
296cd6a6acSopenharmony_ci# to be loaded directly.
306cd6a6acSopenharmony_ciCHECKPOLICY := ../../checkpolicy/
316cd6a6acSopenharmony_cioverride CPPFLAGS += -I../include/ -I$(CHECKPOLICY)
326cd6a6acSopenharmony_ci
336cd6a6acSopenharmony_ci# test program object files
346cd6a6acSopenharmony_ciobjs := $(patsubst %.c,%.o,$(sort $(wildcard *.c)))
356cd6a6acSopenharmony_ciparserobjs := $(CHECKPOLICY)queue.o $(CHECKPOLICY)y.tab.o \
366cd6a6acSopenharmony_ci	$(CHECKPOLICY)parse_util.o $(CHECKPOLICY)lex.yy.o \
376cd6a6acSopenharmony_ci	$(CHECKPOLICY)policy_define.o $(CHECKPOLICY)module_compiler.o
386cd6a6acSopenharmony_ci
396cd6a6acSopenharmony_ci# test policy pieces
406cd6a6acSopenharmony_cim4support := $(wildcard policies/support/*.spt)
416cd6a6acSopenharmony_citestsuites := $(wildcard policies/test-*)
426cd6a6acSopenharmony_cipolicysrc := $(foreach path,$(testsuites),$(wildcard $(path)/*.conf))
436cd6a6acSopenharmony_cistdpol := $(addsuffix .std,$(policysrc))
446cd6a6acSopenharmony_cimlspol := $(addsuffix .mls,$(policysrc))
456cd6a6acSopenharmony_cipolicies := $(stdpol) $(mlspol)
466cd6a6acSopenharmony_ci
476cd6a6acSopenharmony_ciall: $(EXE) $(policies)
486cd6a6acSopenharmony_cipolicies: $(policies)
496cd6a6acSopenharmony_ci
506cd6a6acSopenharmony_ci$(EXE): $(objs) $(parserobjs) $(LIBSEPOL)
516cd6a6acSopenharmony_ci	$(CC) $(LDFLAGS) $(objs) $(parserobjs) -lcunit $(LIBSEPOL) -o $@
526cd6a6acSopenharmony_ci
536cd6a6acSopenharmony_ci%.conf.std: $(m4support) %.conf
546cd6a6acSopenharmony_ci	$(M4) $(M4PARAMS) $^ > $@
556cd6a6acSopenharmony_ci
566cd6a6acSopenharmony_ci%.conf.mls: $(m4support) %.conf
576cd6a6acSopenharmony_ci	$(M4) $(M4PARAMS) -D enable_mls $^ > $@
586cd6a6acSopenharmony_ci
596cd6a6acSopenharmony_ciclean: 
606cd6a6acSopenharmony_ci	rm -f $(objs) $(EXE)
616cd6a6acSopenharmony_ci	rm -f $(policies)
626cd6a6acSopenharmony_ci	rm -f policies/test-downgrade/policy.hi policies/test-downgrade/policy.lo
636cd6a6acSopenharmony_ci
646cd6a6acSopenharmony_ci# mkdir is run in a clean environment created by env -i to avoid failing under ASan with:
656cd6a6acSopenharmony_ci#
666cd6a6acSopenharmony_ci#   ASan runtime does not come first in initial library list;
676cd6a6acSopenharmony_ci#   you should either link runtime to your application or manually preload it with LD_PRELOAD
686cd6a6acSopenharmony_ci#
696cd6a6acSopenharmony_ci# when the source code is built with ASan
706cd6a6acSopenharmony_citest: $(EXE) $(policies)
716cd6a6acSopenharmony_ci	$(ENV) -i $(MKDIR) -p policies/test-downgrade
726cd6a6acSopenharmony_ci	../../checkpolicy/checkpolicy -M policies/test-cond/refpolicy-base.conf -o policies/test-downgrade/policy.hi	
736cd6a6acSopenharmony_ci	./$(EXE)
746cd6a6acSopenharmony_ci
756cd6a6acSopenharmony_ci.PHONY: all policies clean test
76