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:
parent
28233246cd
commit
ad2a7bd1e4
|
@ -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 +1,2 @@
|
||||||
libnl.so*
|
libnl.so*
|
||||||
|
libnl-*.so*
|
||||||
|
|
93
lib/Makefile
93
lib/Makefile
|
@ -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"; \
|
||||||
|
|
Reference in New Issue