1# SPDX-License-Identifier: GPL-2.0
2
3CC=gcc
4CFLAGS=-std=gnu11 -O2 -W -Wall -Wextra -Wno-unused-parameter -Wshadow \
5	-I../lib/ -idirafter $(UAPI_PATH)
6ifeq ("$(DEBUG)","1")
7  CFLAGS += -g -fsanitize=address -fsanitize=leak -static-libasan
8endif
9
10include ../Makefile.deps
11
12YNL_GEN_ARG_ethtool:=--user-header linux/ethtool_netlink.h \
13	--exclude-op stats-get
14
15TOOL:=../ynl-gen-c.py
16
17GENS_PATHS=$(shell grep -nrI --files-without-match \
18		'protocol: netlink' \
19		../../../../Documentation/netlink/specs/)
20GENS=$(patsubst ../../../../Documentation/netlink/specs/%.yaml,%,${GENS_PATHS})
21SRCS=$(patsubst %,%-user.c,${GENS})
22HDRS=$(patsubst %,%-user.h,${GENS})
23OBJS=$(patsubst %,%-user.o,${GENS})
24
25all: protos.a $(HDRS) $(SRCS) $(KHDRS) $(KSRCS) $(UAPI)
26
27protos.a: $(OBJS)
28	@echo -e "\tAR $@"
29	@ar rcs $@ $(OBJS)
30
31%-user.h: ../../../../Documentation/netlink/specs/%.yaml $(TOOL)
32	@echo -e "\tGEN $@"
33	@$(TOOL) --mode user --header --spec $< -o $@ $(YNL_GEN_ARG_$*)
34
35%-user.c: ../../../../Documentation/netlink/specs/%.yaml $(TOOL)
36	@echo -e "\tGEN $@"
37	@$(TOOL) --mode user --source --spec $< -o $@ $(YNL_GEN_ARG_$*)
38
39%-user.o: %-user.c %-user.h
40	@echo -e "\tCC $@"
41	@$(COMPILE.c) $(CFLAGS_$*) -o $@ $<
42
43clean:
44	rm -f *.o
45
46distclean: clean
47	rm -f *.c *.h *.a
48
49regen:
50	@../ynl-regen.sh
51
52.PHONY: all clean distclean regen
53.DEFAULT_GOAL: all
54