113cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle# Installation directories.
213cd4c8960688af11ad23b4c946149015c80d54Joshua BrindlePREFIX ?= $(DESTDIR)/usr
312777502c638698a9e1dd6748a2309cb87946a65Eamon WalshINCLUDEDIR ?= $(PREFIX)/include
413cd4c8960688af11ad23b4c946149015c80d54Joshua BrindleLIBDIR ?= $(PREFIX)/lib
513cd4c8960688af11ad23b4c946149015c80d54Joshua BrindleSHLIBDIR ?= $(DESTDIR)/lib
6c450d6e1e297c4b4b1726899424bf5ed655aa253Sven VermeulenRANLIB ?= ranlib
795eda43741ca7aeda2052f78877ec7feff3c9ab4Laurent BigonvilleLIBBASE ?= $(shell basename $(LIBDIR))
8416f150f1a56589839ef000fd9dfa021d567a1c7Steve LawrenceCILDIR ?= ../cil
913cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle
1012777502c638698a9e1dd6748a2309cb87946a65Eamon WalshVERSION = $(shell cat ../VERSION)
1113cd4c8960688af11ad23b4c946149015c80d54Joshua BrindleLIBVERSION = 1
1213cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle
13416f150f1a56589839ef000fd9dfa021d567a1c7Steve LawrenceLEX = flex
14416f150f1a56589839ef000fd9dfa021d567a1c7Steve LawrenceCIL_GENERATED = $(CILDIR)/src/cil_lexer.c
15416f150f1a56589839ef000fd9dfa021d567a1c7Steve Lawrence
1613cd4c8960688af11ad23b4c946149015c80d54Joshua BrindleLIBA=libsepol.a 
1713cd4c8960688af11ad23b4c946149015c80d54Joshua BrindleTARGET=libsepol.so
1812777502c638698a9e1dd6748a2309cb87946a65Eamon WalshLIBPC=libsepol.pc
19416f150f1a56589839ef000fd9dfa021d567a1c7Steve LawrenceLIBMAP=libsepol.map
2013cd4c8960688af11ad23b4c946149015c80d54Joshua BrindleLIBSO=$(TARGET).$(LIBVERSION)
21fb85e5cc95c327bab89d0592b67291b200717792Laurent BigonvilleOBJS= $(patsubst %.c,%.o,$(sort $(wildcard *.c)))
22fb85e5cc95c327bab89d0592b67291b200717792Laurent BigonvilleLOBJS= $(patsubst %.c,%.lo,$(sort $(wildcard *.c)))
2376ea9f898747bc11f27ad4598700e8f81cbc76e7John BrooksCFLAGS ?= -Werror -Wall -W -Wundef -Wshadow -Wmissing-format-attribute -O2
24416f150f1a56589839ef000fd9dfa021d567a1c7Steve Lawrence
2513cd4c8960688af11ad23b4c946149015c80d54Joshua Brindleoverride CFLAGS += -I. -I../include -D_GNU_SOURCE
2613cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle
27416f150f1a56589839ef000fd9dfa021d567a1c7Steve Lawrenceifneq ($(DISABLE_CIL),y)
28fb85e5cc95c327bab89d0592b67291b200717792Laurent BigonvilleOBJS += $(sort $(patsubst %.c,%.o,$(sort $(wildcard $(CILDIR)/src/*.c)) $(CIL_GENERATED)))
29fb85e5cc95c327bab89d0592b67291b200717792Laurent BigonvilleLOBJS += $(sort $(patsubst %.c,%.lo,$(sort $(wildcard $(CILDIR)/src/*.c)) $(CIL_GENERATED)))
30416f150f1a56589839ef000fd9dfa021d567a1c7Steve Lawrenceoverride CFLAGS += -I$(CILDIR)/include
31416f150f1a56589839ef000fd9dfa021d567a1c7Steve Lawrenceendif
32416f150f1a56589839ef000fd9dfa021d567a1c7Steve Lawrence
333340d851dfcb2c803fe470b116c5f1dff909308fWilliam RobertsLD_SONAME_FLAGS=-soname,$(LIBSO),--version-script=$(LIBMAP),-z,defs
343340d851dfcb2c803fe470b116c5f1dff909308fWilliam Roberts
354a05e95f196604495642978993bbc90766ec42f6Karl MacMillanLN=ln
363340d851dfcb2c803fe470b116c5f1dff909308fWilliam RobertsOS := $(shell uname)
373340d851dfcb2c803fe470b116c5f1dff909308fWilliam Robertsifeq ($(OS), Darwin)
383340d851dfcb2c803fe470b116c5f1dff909308fWilliam RobertsLD_SONAME_FLAGS=-install_name,$(LIBSO)
393340d851dfcb2c803fe470b116c5f1dff909308fWilliam RobertsLDFLAGS += -undefined dynamic_lookup
404a05e95f196604495642978993bbc90766ec42f6Karl MacMillanLN=gln
413340d851dfcb2c803fe470b116c5f1dff909308fWilliam Robertsendif
42416f150f1a56589839ef000fd9dfa021d567a1c7Steve Lawrence
4312777502c638698a9e1dd6748a2309cb87946a65Eamon Walshall: $(LIBA) $(LIBSO) $(LIBPC)
4413cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle
45416f150f1a56589839ef000fd9dfa021d567a1c7Steve Lawrence
4613cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle$(LIBA):  $(OBJS)
4713cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle	$(AR) rcs $@ $^
48c450d6e1e297c4b4b1726899424bf5ed655aa253Sven Vermeulen	$(RANLIB) $@
4913cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle
50416f150f1a56589839ef000fd9dfa021d567a1c7Steve Lawrence$(LIBSO): $(LOBJS) $(LIBMAP)
513340d851dfcb2c803fe470b116c5f1dff909308fWilliam Roberts	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o $@ $(LOBJS) -Wl,$(LD_SONAME_FLAGS)
5213cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle	ln -sf $@ $(TARGET) 
5313cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle
54c81a43c753efbda6f2106dbf0a291005683474f8Eric Paris$(LIBPC): $(LIBPC).in ../VERSION
557420787817c4949276d7947202b49d78eba37c13Daniel J Walsh	sed -e 's/@VERSION@/$(VERSION)/; s:@prefix@:$(PREFIX):; s:@libdir@:$(LIBBASE):; s:@includedir@:$(INCLUDEDIR):' < $< > $@
5612777502c638698a9e1dd6748a2309cb87946a65Eamon Walsh
57416f150f1a56589839ef000fd9dfa021d567a1c7Steve Lawrence$(LIBMAP): $(LIBMAP).in
58416f150f1a56589839ef000fd9dfa021d567a1c7Steve Lawrenceifneq ($(DISABLE_CIL),y)
59416f150f1a56589839ef000fd9dfa021d567a1c7Steve Lawrence	cp $< $@
60416f150f1a56589839ef000fd9dfa021d567a1c7Steve Lawrenceelse
61416f150f1a56589839ef000fd9dfa021d567a1c7Steve Lawrence	sed -e '/^\s*cil_/d' < $< > $@
62416f150f1a56589839ef000fd9dfa021d567a1c7Steve Lawrenceendif
63416f150f1a56589839ef000fd9dfa021d567a1c7Steve Lawrence
64416f150f1a56589839ef000fd9dfa021d567a1c7Steve Lawrenceifneq ($(DISABLE_CIL),y)
657a4db1566a970788e6e83a5f083a2ffb96b66a76Stephen Smalley$(CILDIR)/src/cil_lexer.o: $(CILDIR)/src/cil_lexer.c
667a4db1566a970788e6e83a5f083a2ffb96b66a76Stephen Smalley	$(CC) $(filter-out -Werror, $(CFLAGS)) -fPIC -c -o $@ $<
677a4db1566a970788e6e83a5f083a2ffb96b66a76Stephen Smalley
687a4db1566a970788e6e83a5f083a2ffb96b66a76Stephen Smalley$(CILDIR)/src/cil_lexer.lo: $(CILDIR)/src/cil_lexer.c
697a4db1566a970788e6e83a5f083a2ffb96b66a76Stephen Smalley	$(CC) $(filter-out -Werror, $(CFLAGS)) -fPIC -DSHARED -c -o $@ $<
707a4db1566a970788e6e83a5f083a2ffb96b66a76Stephen Smalley
71416f150f1a56589839ef000fd9dfa021d567a1c7Steve Lawrence$(CILDIR)/src/cil_lexer.c: $(CILDIR)/src/cil_lexer.l
72ab270850998191a41abb47d929ab816259d3428eNicolas Iooss	$(LEX) -o $@ $<
73ab270850998191a41abb47d929ab816259d3428eNicolas Iooss
74416f150f1a56589839ef000fd9dfa021d567a1c7Steve Lawrenceendif
75416f150f1a56589839ef000fd9dfa021d567a1c7Steve Lawrence
7613cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle%.o:  %.c 
7713cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle	$(CC) $(CFLAGS) -fPIC -c -o $@ $<
7813cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle
7913cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle%.lo:  %.c
8013cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle	$(CC) $(CFLAGS) -fPIC -DSHARED -c -o $@ $<
8113cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle
8213cd4c8960688af11ad23b4c946149015c80d54Joshua Brindleinstall: all
8313cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle	test -d $(LIBDIR) || install -m 755 -d $(LIBDIR)
8413cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle	install -m 644 $(LIBA) $(LIBDIR)
8513cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle	test -d $(SHLIBDIR) || install -m 755 -d $(SHLIBDIR)
8613cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle	install -m 755 $(LIBSO) $(SHLIBDIR)
8712777502c638698a9e1dd6748a2309cb87946a65Eamon Walsh	test -d $(LIBDIR)/pkgconfig || install -m 755 -d $(LIBDIR)/pkgconfig
8812777502c638698a9e1dd6748a2309cb87946a65Eamon Walsh	install -m 644 $(LIBPC) $(LIBDIR)/pkgconfig
894a05e95f196604495642978993bbc90766ec42f6Karl MacMillan	$(LN) -sf --relative $(SHLIBDIR)/$(LIBSO) $(LIBDIR)/$(TARGET)
9013cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle
9113cd4c8960688af11ad23b4c946149015c80d54Joshua Brindlerelabel:
9213cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle	/sbin/restorecon $(SHLIBDIR)/$(LIBSO)
9313cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle
9413cd4c8960688af11ad23b4c946149015c80d54Joshua Brindleclean: 
952c2c81dcdc2719c73a19b01b692b31c8e903965fNicolas Iooss	-rm -f $(LIBPC) $(LIBMAP) $(OBJS) $(LOBJS) $(LIBA) $(LIBSO) $(TARGET) $(CIL_GENERATED)
9613cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle
9713cd4c8960688af11ad23b4c946149015c80d54Joshua Brindleindent:
9813cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle	../../scripts/Lindent $(wildcard *.[ch])
9913cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle
100