1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/node/ synced 2025-03-09 00:00:00 +01:00

new "libext" library for external programs using shmem

This commit is contained in:
Georg Reinke 2017-04-15 15:38:37 +02:00
parent 766097f83f
commit 3c48b4f557
3 changed files with 34 additions and 5 deletions

View file

@ -15,7 +15,7 @@
###################################################################################
# Project modules
MODULES = lib plugins src tests thirdparty tools packaging doc etc web
MODULES = lib libext plugins src tests thirdparty tools packaging doc etc web
# Default prefix for install target
PREFIX ?= /usr/local
@ -132,4 +132,4 @@ clean: $(addprefix clean-,$(filter-out thirdparty doc,$(MODULES)))
.PHONY: all everything clean install
-include $(wildcard $(BUILDDIR)/**/*.d)
-include $(addsuffix /Makefile.inc,$(MODULES))
-include $(addsuffix /Makefile.inc,$(MODULES))

View file

@ -1,7 +1,10 @@
LIB_NAME = libvillas
LIBEXT_NAME = libvillas-ext
LIB_ABI_VERSION = 1
LIBEXT_ABI_VERSION = 1
LIB = $(BUILDDIR)/$(LIB_NAME).so.$(LIB_ABI_VERSION)
LIBEXT = $(BUILDDIR)/$(LIBEXT_NAME).so.$(LIBEXT_ABI_VERSION)
# Object files for libvillas
LIB_SRCS = $(addprefix lib/nodes/, file.c cbuilder.c shmem.c) \
@ -12,10 +15,18 @@ LIB_SRCS = $(addprefix lib/nodes/, file.c cbuilder.c shmem.c) \
plugin.c node_type.c stats.c mapping.c sample_io.c shmem.c \
)
LIBEXT_SRCS = $(addprefix lib/, sample.c node.c queue.c queue_signalled.c \
memory.c shmem.c utils.c kernel/kernel.c log.c list.c sample_io.c \
plugin.c timing.c)
LIB_CFLAGS = $(CFLAGS) -fPIC
LIB_LDFLAGS = -shared
LIB_LDLIBS = $(LDLIBS) -ldl -lrt -Wl,-soname,$(LIB_NAME).so.$(LIB_ABI_VERSION)
LIBEXT_CFLAGS = $(CFLAGS) -fPIC
LIBEXT_LDFLAGS = -shared
LIBEXT_LDLIBS = -ljansson -lcrypto -lrt -Wl,-soname,$(LIBEXT_NAME).so.$(LIBEXT_ABI_VERSION)
-include lib/hooks/Makefile.inc
-include lib/apis/Makefile.inc
-include lib/fpga/Makefile.inc
@ -102,4 +113,19 @@ install-lib: lib
clean-lib:
rm -rf $(BUILDDIR)/lib $(LIB)
.PHONY: lib install-lib clean-lib $(BUILDDIR)/lib/defines
LIBEXT_OBJS = $(patsubst %.c, $(BUILDDIR)/%.o, $(LIBEXT_SRCS))
libext: $(LIBEXT)
$(LIBEXT): $(LIBEXT_OBJS)
$(CC) $(LIBEXT_LDFLAGS) -o $@ $^ $(LIBEXT_LDLIBS)
ln -srf $@ $(BUILDDIR)/$(LIBEXT_NAME).so
install-libext: libext
install -m 0755 -D -T $(LIBEXT) $(DESTDIR)$(PREFIX)/lib/$(LIBEXT_NAME).so.$(LIBEXT_ABI_VERSION)
ln -srf $(DESTDIR)$(PREFIX)/lib/$(LIBEXT_NAME).so.$(LIBEXT_ABI_VERSION) $(DESTDIR)$(PREFIX)/lib/$(LIBEXT_NAME).so
clean-libext:
rm -rf $(BUILDDIR)/lib $(LIBEXT)
.PHONY: lib install-lib libext install-libext clean-lib $(BUILDDIR)/lib/defines

View file

@ -2,7 +2,6 @@
TARGETS = $(BUILDDIR)/villas-node \
$(BUILDDIR)/villas-pipe \
$(BUILDDIR)/villas-signal \
$(BUILDDIR)/villas-shmem \
$(BUILDDIR)/villas-test-rtt \
$(BUILDDIR)/villas-test-cmp \
$(BUILDDIR)/villas-hook
@ -26,7 +25,7 @@ ifeq ($(shell pkg-config libxil; echo $$?),0)
endif
endif
src: $(TARGETS)
src: $(TARGETS) $(BUILDDIR)/villas-shmem
$(TARGETS): $(BUILDDIR)/villas-%: $(BUILDDIR)/src/%.o
@ -37,6 +36,10 @@ $(BUILDDIR)/villas-fpga: $(addprefix $(BUILDDIR)/src/,fpga-bench.o $(BENCH_OBJS)
$(BUILDDIR)/src/%.o: src/%.c $(BUILDDIR)/defines | $$(dir $$@)
$(CC) $(SRC_CFLAGS) -c $< -o $@
# Build villas-shmem only with libext (to ensure that libext contains everything needed)
$(BUILDDIR)/villas-shmem: $(BUILDDIR)/src/shmem.o $(LIBS) libext
$(CC) $(SRC_LDFLAGS) $(BUILDDIR)/src/shmem.o $(filter-out -lvillas,$(SRC_LDLIBS)) -lvillas-ext -o $@
# Link target executables
$(TARGETS): | $(LIBS)
$(CC) $(SRC_LDFLAGS) $^ $(SRC_LDLIBS) -o $@