| From d5a0c023a7f3deefd471d7b97ef4fa40ed374645 Mon Sep 17 00:00:00 2001 |
| From: Mike Frysinger <vapier@gentoo.org> |
| Date: Wed, 10 Feb 2016 09:47:27 +0100 |
| Subject: [PATCH] build system fixes |
| |
| This touches up the homebrewed build system to work much better "out of the |
| box" for people. Specifically: |
| - allow toolchain vars to be set via environment |
| - CC / BUILD_CC / AR / RANLIB |
| - CFLAGS / CPPFLAGS / LDFLAGS |
| - split CPPFLAGS out of CFLAGS |
| - break -fPIC out of global CFLAGS and only use where needed |
| - use LDLIBS for libraries, not LDFLAGS |
| |
| Signed-off-by: Mike Frysinger <vapier@gentoo.org> |
| |
| Forward ported from libcap-2.24 to libcap-2.25 |
| |
| Signed-off-by: Lars Wendler <polynomial-c@gentoo.org> |
| --- |
| Make.Rules | 26 ++++++++++++++------------ |
| libcap/Makefile | 7 ++++--- |
| pam_cap/Makefile | 8 +++++--- |
| progs/Makefile | 2 +- |
| 4 files changed, 24 insertions(+), 19 deletions(-) |
| |
| diff --git a/Make.Rules b/Make.Rules |
| index 8347b26..d7196ef 100644 |
| --- a/Make.Rules |
| +++ b/Make.Rules |
| @@ -45,28 +45,30 @@ MINOR=25 |
| |
| # Compilation specifics |
| |
| -KERNEL_HEADERS := $(topdir)/libcap/include/uapi |
| -IPATH += -fPIC -I$(KERNEL_HEADERS) -I$(topdir)/libcap/include |
| - |
| -CC := gcc |
| -CFLAGS := -O2 -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 |
| -BUILD_CC := $(CC) |
| -BUILD_CFLAGS := $(CFLAGS) $(IPATH) |
| -AR := ar |
| -RANLIB := ranlib |
| +CC ?= gcc |
| +CFLAGS ?= -O2 |
| +BUILD_CC ?= $(CC) |
| +BUILD_CFLAGS ?= $(CFLAGS) |
| +AR ?= ar |
| +RANLIB ?= ranlib |
| DEBUG = -g #-DDEBUG |
| WARNINGS=-Wall -Wwrite-strings \ |
| -Wpointer-arith -Wcast-qual -Wcast-align \ |
| -Wstrict-prototypes -Wmissing-prototypes \ |
| -Wnested-externs -Winline -Wshadow |
| LD=$(CC) -Wl,-x -shared |
| -LDFLAGS := #-g |
| +LDFLAGS ?= #-g |
| BUILD_GPERF := $(shell which gperf >/dev/null 2>/dev/null && echo yes) |
| |
| -SYSTEM_HEADERS = /usr/include |
| +KERNEL_HEADERS = $(topdir)/libcap/include/uapi |
| +LIBCAP_CPPFLAGS = -I$(KERNEL_HEADERS) -I$(topdir)/libcap/include |
| +LIBCAP_CPPFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 |
| +CPPFLAGS += $(LIBCAP_CPPFLAGS) |
| +BUILD_CPPFLAGS += $(LIBCAP_CPPFLAGS) |
| INCS=$(topdir)/libcap/include/sys/capability.h |
| LDFLAGS += -L$(topdir)/libcap |
| -CFLAGS += -Dlinux $(WARNINGS) $(DEBUG) |
| +CPPFLAGS += -Dlinux |
| +CFLAGS += $(WARNINGS) $(DEBUG) |
| PAM_CAP := $(shell if [ -f /usr/include/security/pam_modules.h ]; then echo yes ; else echo no ; fi) |
| INDENT := $(shell if [ -n "$$(which indent 2>/dev/null)" ]; then echo "| indent -kr" ; fi) |
| DYNAMIC := $(shell if [ ! -d "$(topdir)/.git" ]; then echo yes; fi) |
| diff --git a/libcap/Makefile b/libcap/Makefile |
| index d189777..b99740f 100644 |
| --- a/libcap/Makefile |
| +++ b/libcap/Makefile |
| @@ -17,6 +17,7 @@ OBJS=$(addsuffix .o, $(FILES)) |
| MAJLIBNAME=$(LIBNAME).$(VERSION) |
| MINLIBNAME=$(MAJLIBNAME).$(MINOR) |
| GPERF_OUTPUT = _caps_output.gperf |
| +CFLAGS += -fPIC |
| |
| all: $(MINLIBNAME) $(STALIBNAME) libcap.pc |
| |
| @@ -35,7 +36,7 @@ libcap.pc: libcap.pc.in |
| $< >$@ |
| |
| _makenames: _makenames.c cap_names.list.h |
| - $(BUILD_CC) $(BUILD_CFLAGS) $< -o $@ |
| + $(BUILD_CC) $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $< -o $@ |
| |
| cap_names.h: _makenames |
| ./_makenames > cap_names.h |
| @@ -57,10 +58,10 @@ $(MINLIBNAME): $(OBJS) |
| ln -sf $(MAJLIBNAME) $(LIBNAME) |
| |
| %.o: %.c $(INCLS) |
| - $(CC) $(CFLAGS) $(IPATH) -c $< -o $@ |
| + $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@ |
| |
| cap_text.o: cap_text.c $(USE_GPERF_OUTPUT) $(INCLS) |
| - $(CC) $(CFLAGS) $(IPATH) $(INCLUDE_GPERF_OUTPUT) -c $< -o $@ |
| + $(CC) $(CFLAGS) $(CPPFLAGS) $(INCLUDE_GPERF_OUTPUT) -c $< -o $@ |
| |
| install: all |
| mkdir -p -m 0755 $(FAKEROOT)$(INCDIR)/sys |
| diff --git a/pam_cap/Makefile b/pam_cap/Makefile |
| index cc32fb6..6f07b6b 100644 |
| --- a/pam_cap/Makefile |
| +++ b/pam_cap/Makefile |
| @@ -9,6 +9,8 @@ include ../Make.Rules |
| # written (and you know why it fails), email me and explain why. Thanks! |
| LDLIBS += -L../libcap -lcap |
| |
| +CFLAGS += -fPIC |
| + |
| all: pam_cap.so |
| $(MAKE) testcompile |
| |
| @@ -17,13 +19,13 @@ install: all |
| install -m 0755 pam_cap.so $(FAKEROOT)$(LIBDIR)/security |
| |
| pam_cap.so: pam_cap.o |
| - $(LD) $(LDFLAGS) -o pam_cap.so $< $(LDLIBS) |
| + $(LD) $(CFLAGS) $(LDFLAGS) -o pam_cap.so $< $(LDLIBS) |
| |
| pam_cap.o: pam_cap.c |
| - $(CC) $(CFLAGS) $(IPATH) -c $< -o $@ |
| + $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@ |
| |
| testcompile: test.c pam_cap.o |
| - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $+ -lpam -ldl $(LDLIBS) |
| + $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ $+ -lpam -ldl $(LDLIBS) |
| |
| clean: |
| rm -f *.o *.so testcompile *~ |
| diff --git a/progs/Makefile b/progs/Makefile |
| index c094a24..b9f0d3f 100644 |
| --- a/progs/Makefile |
| +++ b/progs/Makefile |
| @@ -19,7 +19,7 @@ $(BUILD): %: %.o |
| $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LDLIBS) |
| |
| %.o: %.c $(INCS) |
| - $(CC) $(IPATH) $(CFLAGS) -c $< -o $@ |
| + $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@ |
| |
| install: all |
| mkdir -p -m 0755 $(FAKEROOT)$(SBINDIR) |
| -- |
| 2.7.1 |
| |