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