dect
/
libnl
Archived
13
0
Fork 0

Build separate libraries for each netilnk family

This reduces the footprint on systems which only require a small
subset of the library.
This commit is contained in:
Thomas Graf 2008-05-15 18:01:50 +02:00
parent 28233246cd
commit ad2a7bd1e4
3 changed files with 64 additions and 34 deletions

View File

@ -16,7 +16,7 @@ CPPFLAGS := @CPPFLAGS@
PACKAGE_NAME := @PACKAGE_NAME@ PACKAGE_NAME := @PACKAGE_NAME@
PACKAGE_VERSION := @PACKAGE_VERSION@ PACKAGE_VERSION := @PACKAGE_VERSION@
LIBNL_LIB := @LIBNL_LIB@ LIBNL_LIB := @LIBNL_LIB@ -lc -L.
prefix := @prefix@ prefix := @prefix@
exec_prefix := @exec_prefix@ exec_prefix := @exec_prefix@

1
lib/.gitignore vendored
View File

@ -1 +1,2 @@
libnl.so* libnl.so*
libnl-*.so*

View File

@ -6,55 +6,84 @@
# License as published by the Free Software Foundation version 2.1 # License as published by the Free Software Foundation version 2.1
# of the License. # of the License.
# #
# Copyright (c) 2003-2006 Thomas Graf <tgraf@suug.ch> # Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
# #
ifeq ($(shell [ ! -r ../Makefile.opts ] && echo 1),) ifeq ($(shell [ ! -r ../Makefile.opts ] && echo 1),)
include ../Makefile.opts include ../Makefile.opts
endif endif
# Core CORE_C := $(wildcard *.c)
CIN := $(wildcard *.c) CORE_OBJ := $(CORE_C:%.c=%.o)
# NETLINK_ROUTE
CIN += $(wildcard route/*.c) ROUTE_C := $(wildcard route/*.c)
# Schedulers ROUTE_C += $(wildcard route/cls/*.c)
CIN += $(wildcard route/sch/*.c) ROUTE_C += $(wildcard route/sch/*.c)
# Classifiers ROUTE_C += $(wildcard route/link/*.c)
CIN += $(wildcard route/cls/*.c) ROUTE_C += $(wildcard fib_lookup/*.c)
# Link Info Modules ROUTE_OBJ := $(ROUTE_C:%.c=%.o)
CIN += $(wildcard route/link/*.c)
# NETLINK_GENERIC GENL_C := $(wildcard genl/*.c)
CIN += $(wildcard genl/*.c) GENL_OBJ := $(GENL_C:%.c=%.o)
# fib lookup
CIN += $(wildcard fib_lookup/*.c) NF_C := $(wildcard netfilter/*.c)
# Netfilter NF_OBJ := $(NF_C:%.c=%.o)
CIN += $(wildcard netfilter/*.c)
ALL_C := $(CORE_C) $(ROUTE_C) $(GENL_C) $(NF_C)
ALL_OBJ := $(ALL_C:%.c=%.o)
DEPS := $(ALL_C:%.c=%.d)
DEPS := $(CIN:%.c=%.d)
OBJ := $(CIN:%.c=%.o)
CFLAGS += -fPIC CFLAGS += -fPIC
OUT_SLIB := $(PACKAGE_NAME).so.$(PACKAGE_VERSION)
LN_SLIB := $(PACKAGE_NAME).so CORE_LIB := $(PACKAGE_NAME).so
ROUTE_LIB := $(PACKAGE_NAME)-route.so
GENL_LIB := $(PACKAGE_NAME)-genl.so
NF_LIB := $(PACKAGE_NAME)-nf.so
LIBS := $(CORE_LIB) $(ROUTE_LIB) $(GENL_LIB) $(NF_LIB)
export export
.PHONY: all clean install librtn.a $(OUT_SLIB) .PHONY: all clean install $(LIBS)
all: all:
@echo " MAKE $(OUT_SLIB)"; \ @echo " MAKE $(LIBS)"; \
$(MAKE) $(OUT_SLIB) $(MAKE) $(LIBS)
$(OUT_SLIB): ../Makefile.opts $(OBJ) $(CORE_LIB).$(PACKAGE_VERSION): $(CORE_OBJ)
@echo " LD $(OUT_SLIB)"; \ @echo " LD $@"; \
$(CC) -shared -Wl,-soname=libnl.so.1.2 -o $(OUT_SLIB) $(OBJ) $(LIBNL_LIB) -lc $(CC) -shared -Wl,-soname=$@ -o $@ $^ $(LIBNL_LIB)
@echo " LN $(LN1_SLIB) $(LN_SLIB)"; \
$(RM) -f $(LN_SLIB) ; $(LN) -s $(OUT_SLIB) $(LN_SLIB) $(CORE_LIB): $(CORE_LIB).$(PACKAGE_VERSION)
@echo " LN $@ -> $<"; \
$(RM) -f $@; $(LN) $< -s $@
$(ROUTE_LIB).$(PACKAGE_VERSION): $(ROUTE_OBJ)
@echo " LD $@"; \
$(CC) -shared -Wl,-soname=$@ -o $@ $^ $(LIBNL_LIB)
$(ROUTE_LIB): $(ROUTE_LIB).$(PACKAGE_VERSION)
@echo " LN $@ -> $<"; \
$(RM) -f $@; $(LN) $< -s $@
$(GENL_LIB).$(PACKAGE_VERSION): $(GENL_OBJ)
@echo " LD $@"; \
$(CC) -shared -Wl,-soname=$@ -o $@ $^ $(LIBNL_LIB)
$(GENL_LIB): $(GENL_LIB).$(PACKAGE_VERSION)
@echo " LN $@ -> $<"; \
$(RM) -f $@; $(LN) $< -s $@
$(NF_LIB).$(PACKAGE_VERSION): $(NF_OBJ)
@echo " LD $@"; \
$(CC) -shared -Wl,-soname=$@ -o $@ $^ $(LIBNL_LIB)
$(NF_LIB): $(NF_LIB).$(PACKAGE_VERSION)
@echo " LN $@ -> $<"; \
$(RM) -f $@; $(LN) $< -s $@
clean: clean:
@echo " CLEAN lib"; \ @echo " CLEAN lib"; \
$(RM) -f $(OBJ) $(OUT_SLIB) $(LN_SLIB) $(LN1_SLIB); \ $(RM) -f $(ALL_OBJ) $(LIBS) $(DEPS)
$(RM) -f $(DEPS) $(OUT_SLIB) $(LN_SLIB) $(LN1_SLIB)
distclean: distclean:
@echo " DISTCLEAN lib"; \ @echo " DISTCLEAN lib"; \