| From 7ee197885e113878aedab58bdda80302e42aff4c 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 | 28 ++++++++++++++-------------- |
| libcap/Makefile | 11 ++++++----- |
| pam_cap/Makefile | 6 +++--- |
| progs/Makefile | 2 +- |
| 4 files changed, 24 insertions(+), 23 deletions(-) |
| |
| diff --git a/Make.Rules b/Make.Rules |
| index 6e63a5b..32cb5ea 100644 |
| --- a/Make.Rules |
| +++ b/Make.Rules |
| @@ -42,27 +42,27 @@ MINOR=16 |
| |
| # Compilation specifics |
| |
| -KERNEL_HEADERS := $(topdir)/libcap/include |
| -IPATH += -I$(topdir)/libcap/include -I$(KERNEL_HEADERS) |
| - |
| -CC := gcc |
| -CFLAGS := -O2 |
| -BUILD_CC := $(CC) |
| -BUILD_CFLAGS := $(CFLAGS) $(IPATH) |
| -AR := ar |
| -RANLIB := ranlib |
| -DEBUG = -g #-DDEBUG |
| -WARNINGS=-fPIC -Wall -Wwrite-strings \ |
| +CC ?= gcc |
| +BUILD_CC ?= $(CC) |
| +AR ?= ar |
| +RANLIB ?= ranlib |
| +CFLAGS ?= -O2 |
| +BUILD_CFLAGS ?= -O2 -pipe |
| +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) |
| +BUILD_CPPFLAGS += $(LIBCAP_CPPFLAGS) |
| INCS=$(topdir)/libcap/include/sys/capability.h |
| LDFLAGS += -L$(topdir)/libcap |
| -CFLAGS += -Dlinux $(WARNINGS) $(DEBUG) $(IPATH) |
| +CPPFLAGS += -Dlinux |
| +CFLAGS += $(WARNINGS) |
| 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 8a61752..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) -c $< -o $@ |
| + $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@ |
| |
| cap_text.o: cap_text.c $(USE_GPERF_OUTPUT) $(INCLS) |
| - $(CC) $(CFLAGS) $(INCLUDE_GPERF_OUTPUT) -c $< -o $@ |
| + $(CC) $(CFLAGS) $(CPPFLAGS) $(INCLUDE_GPERF_OUTPUT) -c $< -o $@ |
| |
| install: all |
| mkdir -p -m 0755 $(INCDIR)/sys |
| diff --git a/pam_cap/Makefile b/pam_cap/Makefile |
| index eae88ed..bef59d2 100644 |
| --- a/pam_cap/Makefile |
| +++ b/pam_cap/Makefile |
| @@ -14,13 +14,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) -lpam |
| |
| pam_cap.o: pam_cap.c |
| - $(CC) $(CFLAGS) -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 a1542dc..612cf86 100644 |
| --- a/progs/Makefile |
| +++ b/progs/Makefile |
| @@ -22,7 +22,7 @@ $(BUILD): %: %.o |
| $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LDLIBS) |
| |
| %.o: %.c $(INCS) |
| - $(CC) $(CFLAGS) -c $< -o $@ |
| + $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@ |
| |
| install: all |
| mkdir -p -m 0755 $(SBINDIR) |
| -- |
| 1.6.0.4 |
| |