Masatake YAMATO <yamato@xxxxxxxxxx> writes: > Though instructed as > > DESTDIR=~/obj ./scripts/env_use_destdir make test > > in README.md, compiling policy_define.c was failed with following errors: > > make[1]: Entering directory '/home/yamato/var/selinux/checkpolicy' > cc -O2 -Werror -Wall -Wextra -Wfloat-equal -Wformat=2 -Winit-self \ > -Wmissing-format-attribute -Wmissing-noreturn -Wmissing-prototypes \ > -Wnull-dereference -Wpointer-arith -Wshadow -Wstrict-prototypes \ > -Wundef -Wunused -Wwrite-strings -fno-common -I~/obj/usr/include \ > -o policy_define.o -c policy_define.c > policy_define.c: In function ‘define_te_avtab_xperms_helper’: > policy_define.c:2083:61: error: ‘RULE_NOTSELF’ undeclared (first use in this function); did you mean ‘RULE_SELF’? > 2083 | avrule->flags |= (add ? RULE_SELF : RULE_NOTSELF); > | ^~~~~~~~~~~~ > | RULE_SELF > > because cc cannot find the directory ~/obj/usr/include passed via -I option. > > cc doesn't expand "~". > > Signed-off-by: Masatake YAMATO <yamato@xxxxxxxxxx> It doesn't work when DESTDIR does not exist - If no existing file name matches a pattern, then that pattern is omitted from the output of the wildcard function, see https://www.gnu.org/software/make/manual/html_node/Wildcard-Function.html Petr > --- > Makefile | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/Makefile b/Makefile > index 2ffba8e9..053c6d3d 100644 > --- a/Makefile > +++ b/Makefile > @@ -26,11 +26,11 @@ else > endif > > ifneq ($(DESTDIR),) > - LIBDIR ?= $(DESTDIR)$(PREFIX)/lib > + LIBDIR ?= $(wildcard $(DESTDIR))$(PREFIX)/lib > LIBSEPOLA ?= $(LIBDIR)/libsepol.a > > - CFLAGS += -I$(DESTDIR)$(PREFIX)/include > - LDFLAGS += -L$(DESTDIR)$(PREFIX)/lib -L$(LIBDIR) > + CFLAGS += -I$(wildcard $(DESTDIR))$(PREFIX)/include > + LDFLAGS += -L$(wildcard $(DESTDIR))$(PREFIX)/lib -L$(LIBDIR) > export CFLAGS > export LDFLAGS > export LIBSEPOLA > -- > 2.40.1