| From 5540f3c2a3bd70ebc8140b74ac5a0aecdbc53234 Mon Sep 17 00:00:00 2001 |
| From: Mike Frysinger <vapier@gentoo.org> |
| Date: Sun, 16 Nov 2008 09:10:31 -0500 |
| 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> |
| --- |
| Make.Rules | 25 +++++++++++++------------ |
| libcap/Makefile | 11 ++++++----- |
| pam_cap/Makefile | 8 +++++--- |
| progs/Makefile | 2 +- |
| 4 files changed, 25 insertions(+), 21 deletions(-) |
| |
| diff --git a/Make.Rules b/Make.Rules |
| index 011aa14..6e432a6 100644 |
| --- a/Make.Rules |
| +++ b/Make.Rules |
| @@ -44,27 +44,28 @@ MINOR=19 |
| |
| # Compilation specifics |
| |
| -KERNEL_HEADERS := $(topdir)/libcap/include |
| -IPATH += -fPIC -I$(topdir)/libcap/include -I$(KERNEL_HEADERS) |
| - |
| -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 |
| |
| -SYSTEM_HEADERS = /usr/include |
| +KERNEL_HEADERS = $(topdir)/libcap/include |
| +LIBCAP_CPPFLAGS = -I$(topdir)/libcap/include -I$(KERNEL_HEADERS) |
| +CPPFLAGS += $(LIBCAP_CPPFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 |
| +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 4762c60..cf99523 100644 |
| --- a/libcap/Makefile |
| +++ b/libcap/Makefile |
| @@ -16,7 +16,7 @@ FILES=cap_alloc cap_proc cap_extint cap_flag cap_text |
| # no support). |
| ifeq ($(LIBATTR),yes) |
| FILES += cap_file |
| -LDFLAGS += -lattr |
| +LDLIBS += -lattr |
| endif |
| |
| INCLS=libcap.h cap_names.h $(INCS) |
| @@ -24,6 +24,7 @@ OBJS=$(addsuffix .o, $(FILES)) |
| MAJLIBNAME=$(LIBNAME).$(VERSION) |
| MINLIBNAME=$(MAJLIBNAME).$(MINOR) |
| GPERF_OUTPUT = _caps_output.gperf |
| +CFLAGS += -fPIC |
| |
| all: $(MINLIBNAME) $(STALIBNAME) |
| |
| @@ -33,7 +34,7 @@ INCLUDE_GPERF_OUTPUT = -include $(GPERF_OUTPUT) |
| endif |
| |
| _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 |
| @@ -50,15 +51,15 @@ $(STALIBNAME): $(OBJS) |
| $(RANLIB) $@ |
| |
| $(MINLIBNAME): $(OBJS) |
| - $(LD) $(CFLAGS) $(LDFLAGS) -Wl,-soname,$(MAJLIBNAME) -o $@ $^ |
| + $(LD) $(CFLAGS) $(LDFLAGS) -Wl,-soname,$(MAJLIBNAME) -o $@ $^ $(LDLIBS) |
| ln -sf $(MINLIBNAME) $(MAJLIBNAME) |
| 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 $(INCDIR)/sys |
| @@ -77,7 +77,7 @@ install: all |
| install -m 0644 include/sys/capability.h $(INCDIR)/sys |
| mkdir -p -m 0755 $(LIBDIR) |
| install -m 0644 $(STALIBNAME) $(LIBDIR)/$(STALIBNAME) |
| - install -m 0644 $(MINLIBNAME) $(LIBDIR)/$(MINLIBNAME) |
| + install -m 0755 $(MINLIBNAME) $(LIBDIR)/$(MINLIBNAME) |
| ln -sf $(MINLIBNAME) $(LIBDIR)/$(MAJLIBNAME) |
| ln -sf $(MAJLIBNAME) $(LIBDIR)/$(LIBNAME) |
| ifeq ($(FAKEROOT),) |
| diff --git a/pam_cap/Makefile b/pam_cap/Makefile |
| index 9ca5bef..bdae933 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 $(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 ef51dc6..c261f57 100644 |
| --- a/progs/Makefile |
| +++ b/progs/Makefile |
| @@ -22,7 +22,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 $(SBINDIR) |
| -- |
| 1.7.4.rc2 |
| |