Commit 07c3cc51 authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files

tools: net: package libynl for use in selftests



Support building the C YNL userspace library into one big static file.
We can then link selftests against it for easy to use C netlink
interface.

Signed-off-by: default avatarMina Almasry <almasrymina@google.com>
Link: https://patch.msgid.link/20240628003253.1694510-14-almasrymina@google.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 4dec64c5
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -2,9 +2,12 @@

SUBDIRS = lib generated samples

all: $(SUBDIRS)
all: $(SUBDIRS) libynl.a

samples: | lib generated
libynl.a: | lib generated
	@echo -e "\tAR $@"
	@ar rcs $@ lib/ynl.o generated/*-user.o

$(SUBDIRS):
	@if [ -f "$@/Makefile" ] ; then \
@@ -17,5 +20,6 @@ clean distclean:
			$(MAKE) -C $$dir $@; \
		fi \
	done
	rm -f libynl.a

.PHONY: all clean distclean $(SUBDIRS)
+3 −1
Original line number Diff line number Diff line
@@ -14,7 +14,9 @@ include $(wildcard *.d)
all: ynl.a

ynl.a: $(OBJS)
	ar rcs $@ $(OBJS)
	@echo -e "\tAR $@"
	@ar rcs $@ $(OBJS)

clean:
	rm -f *.o *.d *~
	rm -rf __pycache__
+21 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0

# YNL selftest build snippet

# Inputs:
#
# YNL_GENS:      families we need in the selftests
# YNL_PROGS:     TEST_PROGS which need YNL (TODO, none exist, yet)
# YNL_GEN_FILES: TEST_GEN_FILES which need YNL

YNL_OUTPUTS := $(patsubst %,$(OUTPUT)/%,$(YNL_GEN_FILES))

$(YNL_OUTPUTS): $(OUTPUT)/libynl.a
$(YNL_OUTPUTS): CFLAGS += \
	-I$(top_srcdir)/usr/include/ $(KHDR_INCLUDES) \
	-I$(top_srcdir)/tools/net/ynl/lib/ \
	-I$(top_srcdir)/tools/net/ynl/generated/

$(OUTPUT)/libynl.a:
	$(Q)$(MAKE) -C $(top_srcdir)/tools/net/ynl GENS="$(YNL_GENS)" libynl.a
	$(Q)cp $(top_srcdir)/tools/net/ynl/libynl.a $(OUTPUT)/libynl.a