ynl.mk 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. # SPDX-License-Identifier: GPL-2.0
  2. # YNL selftest build snippet
  3. # Inputs:
  4. #
  5. # YNL_GENS: families we need in the selftests
  6. # YNL_GEN_PROGS: TEST_GEN_PROGS which need YNL
  7. # YNL_GEN_FILES: TEST_GEN_FILES which need YNL
  8. YNL_OUTPUTS := $(patsubst %,$(OUTPUT)/%,$(YNL_GEN_FILES)) \
  9. $(patsubst %,$(OUTPUT)/%,$(YNL_GEN_PROGS))
  10. YNL_SPECS := \
  11. $(patsubst %,$(top_srcdir)/Documentation/netlink/specs/%.yaml,$(YNL_GENS))
  12. $(YNL_OUTPUTS): $(OUTPUT)/libynl.a
  13. $(YNL_OUTPUTS): CFLAGS += \
  14. -I$(top_srcdir)/usr/include/ $(KHDR_INCLUDES) \
  15. -I$(top_srcdir)/tools/net/ynl/lib/ \
  16. -I$(top_srcdir)/tools/net/ynl/generated/
  17. # Make sure we rebuild libynl if user added a new family. We can't easily
  18. # depend on the contents of a variable so create a fake file with a hash.
  19. YNL_GENS_HASH := $(shell echo $(YNL_GENS) | sha1sum | cut -c1-8)
  20. $(OUTPUT)/.libynl-$(YNL_GENS_HASH).sig:
  21. $(Q)rm -f $(OUTPUT)/.libynl-*.sig
  22. $(Q)touch $(OUTPUT)/.libynl-$(YNL_GENS_HASH).sig
  23. $(OUTPUT)/libynl.a: $(YNL_SPECS) $(OUTPUT)/.libynl-$(YNL_GENS_HASH).sig
  24. $(Q)rm -f $(top_srcdir)/tools/net/ynl/libynl.a
  25. $(Q)$(MAKE) -C $(top_srcdir)/tools/net/ynl \
  26. GENS="$(YNL_GENS)" RSTS="" libynl.a
  27. $(Q)cp $(top_srcdir)/tools/net/ynl/libynl.a $(OUTPUT)/libynl.a
  28. EXTRA_CLEAN += \
  29. $(top_srcdir)/tools/net/ynl/pyynl/__pycache__ \
  30. $(top_srcdir)/tools/net/ynl/pyynl/lib/__pycache__ \
  31. $(top_srcdir)/tools/net/ynl/lib/*.[ado] \
  32. $(OUTPUT)/.libynl-*.sig \
  33. $(OUTPUT)/libynl.a