Build static libs without -fPIC and only if BUILD_STATIC=yes https://bugs.gentoo.org/379849 Patch written by Kacper Kowalik --- a/Makefile +++ b/Makefile @@ -7,6 +7,8 @@ # for compatibility with old releases CFLAGS += ${OPT_CFLAGS} override CFLAGS += -I. +# build static libraries by default +BUILD_STATIC ?= yes # find out if compiler supports __thread THREAD_SUPPORT := $(shell if $(CC) $(CFLAGS) threadtest.c -o threadtest \ @@ -24,6 +26,7 @@ CLEANFILES := numactl.o libnuma.o numactl numademo numademo.o distance.o \ memhog libnuma.so libnuma.so.1 numamon numamon.o syscall.o bitops.o \ + distance.pic.o libnuma.pic.o syscall.pic.o \ memhog.o util.o stream_main.o stream_lib.o shm.o stream clearcache.o \ test/pagesize test/tshared test/mynode.o test/tshared.o mt.o empty.o empty.c \ test/mynode test/ftok test/prefered test/randmap \ @@ -40,11 +43,16 @@ libdir := ${prefix}/$(shell ./getlibdir) docdir := ${prefix}/share/doc +NUMA_LIBS = libnuma.so +ifeq ($(BUILD_STATIC),yes) +NUMA_LIBS+= libnuma.a +endif + all: numactl migratepages migspeed libnuma.so numademo numamon memhog \ test/tshared stream test/mynode test/pagesize test/ftok test/prefered \ test/randmap test/nodemap test/distance test/tbitmap test/move_pages \ test/mbind_mig_pages test/migrate_pages test/realloc_test libnuma.a \ - test/node-parse numastat + test/node-parse numastat ${NUMA_LIBS} numactl: numactl.o util.o shm.o bitops.o libnuma.so @@ -81,13 +89,14 @@ libnuma.so.1: versions.ldscript -libnuma.so.1: libnuma.o syscall.o distance.o affinity.o sysfs.o rtnetlink.o +libnuma.so.1: libnuma.pic.o syscall.pic.o distance.pic.o affinity.pic.o sysfs.pic.o rtnetlink.pic.o ${CC} ${LDFLAGS} -shared -Wl,-soname=libnuma.so.1 -Wl,--version-script,versions.ldscript -Wl,-init,numa_init -Wl,-fini,numa_fini -o libnuma.so.1 $(filter-out versions.ldscript,$^) libnuma.so: libnuma.so.1 ln -sf libnuma.so.1 libnuma.so -libnuma.o : CFLAGS += -fPIC +%.pic.o: %.c + ${CC} -fPIC ${CPPFLAGS} ${CFLAGS} -c $< -o $@ AR ?= ar RANLIB ?= ranlib @@ -95,16 +104,6 @@ $(AR) rc $@ $^ $(RANLIB) $@ -distance.o : CFLAGS += -fPIC - -syscall.o : CFLAGS += -fPIC - -affinity.o : CFLAGS += -fPIC - -sysfs.o : CFLAGS += -fPIC - -rtnetlink.o : CFLAGS += -fPIC - test/tshared: test/tshared.o libnuma.so test/mynode: test/mynode.o libnuma.so @@ -143,7 +148,9 @@ mkdir -p ${libdir} install -m 0755 libnuma.so.1 ${libdir} cd ${libdir} ; ln -sf libnuma.so.1 libnuma.so +ifeq ($(BUILD_STATIC),yes) install -m 0644 libnuma.a ${libdir} +endif mkdir -p ${prefix}/include install -m 0644 numa.h numaif.h numacompat1.h ${prefix}/include install -m 0755 numastat ${prefix}/bin