|  | # SPDX-License-Identifier: GPL-2.0 | 
|  |  | 
|  | CC=gcc | 
|  | CFLAGS=-std=gnu11 -O2 -W -Wall -Wextra -Wno-unused-parameter -Wshadow \ | 
|  | -I../lib/ -idirafter $(UAPI_PATH) | 
|  | ifeq ("$(DEBUG)","1") | 
|  | CFLAGS += -g -fsanitize=address -fsanitize=leak -static-libasan | 
|  | endif | 
|  |  | 
|  | include ../Makefile.deps | 
|  |  | 
|  | YNL_GEN_ARG_ethtool:=--user-header linux/ethtool_netlink.h \ | 
|  | --exclude-op stats-get | 
|  |  | 
|  | TOOL:=../ynl-gen-c.py | 
|  |  | 
|  | GENS_PATHS=$(shell grep -nrI --files-without-match \ | 
|  | 'protocol: netlink' \ | 
|  | ../../../../Documentation/netlink/specs/) | 
|  | GENS=$(patsubst ../../../../Documentation/netlink/specs/%.yaml,%,${GENS_PATHS}) | 
|  | SRCS=$(patsubst %,%-user.c,${GENS}) | 
|  | HDRS=$(patsubst %,%-user.h,${GENS}) | 
|  | OBJS=$(patsubst %,%-user.o,${GENS}) | 
|  |  | 
|  | all: protos.a $(HDRS) $(SRCS) $(KHDRS) $(KSRCS) $(UAPI) | 
|  |  | 
|  | protos.a: $(OBJS) | 
|  | @echo -e "\tAR $@" | 
|  | @ar rcs $@ $(OBJS) | 
|  |  | 
|  | %-user.h: ../../../../Documentation/netlink/specs/%.yaml $(TOOL) | 
|  | @echo -e "\tGEN $@" | 
|  | @$(TOOL) --mode user --header --spec $< -o $@ $(YNL_GEN_ARG_$*) | 
|  |  | 
|  | %-user.c: ../../../../Documentation/netlink/specs/%.yaml $(TOOL) | 
|  | @echo -e "\tGEN $@" | 
|  | @$(TOOL) --mode user --source --spec $< -o $@ $(YNL_GEN_ARG_$*) | 
|  |  | 
|  | %-user.o: %-user.c %-user.h | 
|  | @echo -e "\tCC $@" | 
|  | @$(COMPILE.c) $(CFLAGS_$*) -o $@ $< | 
|  |  | 
|  | clean: | 
|  | rm -f *.o | 
|  |  | 
|  | distclean: clean | 
|  | rm -f *.c *.h *.a | 
|  |  | 
|  | regen: | 
|  | @../ynl-regen.sh | 
|  |  | 
|  | .PHONY: all clean distclean regen | 
|  | .DEFAULT_GOAL: all |