Makefile revision 8569b09417ac29b1792da6241f0745b76367f813
1# Installation directories. 2PREFIX ?= $(DESTDIR)/usr 3LIBDIR ?= $(PREFIX)/lib 4SHLIBDIR ?= $(DESTDIR)/lib 5INCLUDEDIR ?= $(PREFIX)/include 6PYLIBVER ?= $(shell python -c 'import sys;print "python%d.%d" % sys.version_info[0:2]') 7PYINC ?= /usr/include/$(PYLIBVER) 8PYLIB ?= /usr/lib/$(PYLIBVER) 9PYTHONLIBDIR ?= $(LIBDIR)/$(PYLIBVER) 10RUBYLIBVER ?= $(shell ruby -e 'print RUBY_VERSION.split(".")[0..1].join(".")') 11RUBYPLATFORM ?= $(shell ruby -e 'print RUBY_PLATFORM') 12RUBYINC ?= $(LIBDIR)/ruby/$(RUBYLIBVER)/$(RUBYPLATFORM) 13RUBYINSTALL ?= $(LIBDIR)/ruby/site_ruby/$(RUBYLIBVER)/$(RUBYPLATFORM) 14 15LIBVERSION = 1 16 17LIBA=libselinux.a 18TARGET=libselinux.so 19SWIGIF= selinuxswig_python.i selinuxswig_python_exception.i 20SWIGRUBYIF= selinuxswig_ruby.i 21SWIGCOUT= selinuxswig_wrap.c 22SWIGRUBYCOUT= selinuxswig_ruby_wrap.c 23SWIGLOBJ:= $(patsubst %.c,%.lo,$(SWIGCOUT)) 24SWIGRUBYLOBJ:= $(patsubst %.c,%.lo,$(SWIGRUBYCOUT)) 25SWIGSO=_selinux.so 26SWIGFILES=$(SWIGSO) selinux.py selinuxswig_python_exception.i 27SWIGRUBYSO=_rubyselinux.so 28LIBSO=$(TARGET).$(LIBVERSION) 29AUDIT2WHYSO=audit2why.so 30 31ifeq ($(DISABLE_AVC),y) 32 UNUSED_SRCS+=avc.c avc_internal.c avc_sidtab.c mapping.c stringrep.c checkAccess.c 33endif 34ifeq ($(DISABLE_BOOL),y) 35 UNUSED_SRCS+=booleans.c 36endif 37ifeq ($(DISABLE_RPM),y) 38 UNUSED_SRCS+=rpm.c 39endif 40 41GENERATED=$(SWIGCOUT) $(SWIGRUBYCOUT) 42SRCS= $(filter-out $(UNUSED_SRCS), $(filter-out audit2why.c $(GENERATED),$(wildcard *.c))) 43 44OBJS= $(patsubst %.c,%.o,$(SRCS)) 45LOBJS= $(patsubst %.c,%.lo,$(SRCS)) 46CFLAGS ?= -Werror -Wall -W -Wundef -Wshadow -Wmissing-noreturn -Wmissing-format-attribute 47override CFLAGS += -I../include -I$(INCLUDEDIR) -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 $(EMFLAGS) 48RANLIB=ranlib 49 50ARCH := $(patsubst i%86,i386,$(shell uname -m)) 51ifneq (,$(filter i386,$(ARCH))) 52TLSFLAGS += -mno-tls-direct-seg-refs 53endif 54 55SWIG = swig -Wall -python -o $(SWIGCOUT) -outdir ./ 56 57SWIGRUBY = swig -Wall -ruby -o $(SWIGRUBYCOUT) -outdir ./ 58 59all: $(LIBA) $(LIBSO) 60 61pywrap: all $(SWIGSO) $(AUDIT2WHYSO) 62 63rubywrap: all $(SWIGRUBYSO) 64 65$(LIBA): $(OBJS) 66 $(AR) rcs $@ $^ 67 $(RANLIB) $@ 68 69$(SWIGLOBJ): $(SWIGCOUT) 70 $(CC) $(filter-out -Werror,$(CFLAGS)) -I$(PYINC) -fPIC -DSHARED -c -o $@ $< 71 72$(SWIGRUBYLOBJ): $(SWIGRUBYCOUT) 73 $(CC) $(filter-out -Werror,$(CFLAGS)) -I$(RUBYINC) -fPIC -DSHARED -c -o $@ $< 74 75$(SWIGSO): $(SWIGLOBJ) 76 $(CC) $(CFLAGS) $(LDFLAGS) -shared -o $@ $< -L. -lselinux -L$(LIBDIR) -Wl,-soname,$@ 77 78$(SWIGRUBYSO): $(SWIGRUBYLOBJ) 79 $(CC) $(CFLAGS) $(LDFLAGS) -shared -o $@ $^ -L. -lselinux -L$(LIBDIR) -Wl,-soname,$@ 80 81$(LIBSO): $(LOBJS) 82 $(CC) $(CFLAGS) $(LDFLAGS) -shared -o $@ $^ -ldl -L$(LIBDIR) -Wl,-soname,$(LIBSO),-z,defs,-z,relro 83 ln -sf $@ $(TARGET) 84 85selinuxswig_python_exception.i: ../include/selinux/selinux.h 86 sh exception.sh > $@ 87 88audit2why.lo: audit2why.c 89 $(CC) $(CFLAGS) -I$(PYINC) -fPIC -DSHARED -c -o $@ $< 90 91$(AUDIT2WHYSO): audit2why.lo 92 $(CC) $(CFLAGS) $(LDFLAGS) -shared -o $@ $^ -L. -lselinux ${LIBDIR}/libsepol.a -L$(LIBDIR) -Wl,-soname,$@ 93 94%.o: %.c policy.h 95 $(CC) $(CFLAGS) $(TLSFLAGS) -c -o $@ $< 96 97%.lo: %.c policy.h 98 $(CC) $(CFLAGS) -fPIC -DSHARED -c -o $@ $< 99 100$(SWIGCOUT): $(SWIGIF) 101 $(SWIG) $^ 102 103$(SWIGRUBYCOUT): $(SWIGRUBYIF) 104 $(SWIGRUBY) $^ 105 106swigify: $(SWIGIF) 107 $(SWIG) $< 108 109install: all 110 test -d $(LIBDIR) || install -m 755 -d $(LIBDIR) 111 install -m 644 $(LIBA) $(LIBDIR) 112 test -d $(SHLIBDIR) || install -m 755 -d $(SHLIBDIR) 113 install -m 755 $(LIBSO) $(SHLIBDIR) 114 cd $(LIBDIR) && ln -sf ../../`basename $(SHLIBDIR)`/$(LIBSO) $(TARGET) 115 116install-pywrap: pywrap 117 test -d $(PYTHONLIBDIR)/site-packages/selinux || install -m 755 -d $(PYTHONLIBDIR)/site-packages/selinux 118 install -m 755 $(SWIGSO) $(PYTHONLIBDIR)/site-packages/selinux 119 install -m 755 $(AUDIT2WHYSO) $(PYTHONLIBDIR)/site-packages/selinux 120 install -m 644 selinux.py $(PYTHONLIBDIR)/site-packages/selinux/__init__.py 121 122install-rubywrap: rubywrap 123 test -d $(RUBYINSTALL) || install -m 755 -d $(RUBYINSTALL) 124 install -m 755 $(SWIGRUBYSO) $(RUBYINSTALL)/selinux.so 125 126relabel: 127 /sbin/restorecon $(SHLIBDIR)/$(LIBSO) 128 129clean: 130 -rm -f $(OBJS) $(LOBJS) $(LIBA) $(LIBSO) $(SWIGLOBJ) $(SWIGSO) $(TARGET) $(AUDIT2WHYSO) *.o *.lo *~ 131 132distclean: clean 133 rm -f $(GENERATED) $(SWIGFILES) 134 135indent: 136 ../../scripts/Lindent $(filter-out $(GENERATED),$(wildcard *.[ch])) 137 138