# SPDX-License-Identifier: GPL-2.0

# Try to include uAPI headers from the kernel uapi/ path.
# Most code under tools/ requires the respective kernel uAPI headers
# to be copied to tools/include. The duplication is annoying.
# All the family headers should be self-contained. We avoid the copying
# by selectively including just the uAPI header of the family directly
# from the kernel sources.

UAPI_PATH:=../../../../include/uapi/

# scripts/headers_install.sh strips "_UAPI" from header guards so we
# need the explicit -D matching what's in /usr, to avoid multiple definitions.

get_hdr_inc=-D$(1) -include $(UAPI_PATH)/linux/$(2)

CFLAGS_devlink:=$(call get_hdr_inc,_LINUX_DEVLINK_H_,devlink.h)
CFLAGS_dpll:=$(call get_hdr_inc,_LINUX_DPLL_H,dpll.h)
CFLAGS_ethtool:=$(call get_hdr_inc,_LINUX_ETHTOOL_NETLINK_H_,ethtool_netlink.h)
CFLAGS_handshake:=$(call get_hdr_inc,_LINUX_HANDSHAKE_H,handshake.h)
CFLAGS_mptcp_pm:=$(call get_hdr_inc,_LINUX_MPTCP_PM_H,mptcp_pm.h)
CFLAGS_netdev:=$(call get_hdr_inc,_LINUX_NETDEV_H,netdev.h)
CFLAGS_nfsd:=$(call get_hdr_inc,_LINUX_NFSD_NETLINK_H,nfsd_netlink.h)
CFLAGS_ovs_datapath:=$(call get_hdr_inc,__LINUX_OPENVSWITCH_H,openvswitch.h)
CFLAGS_ovs_flow:=$(call get_hdr_inc,__LINUX_OPENVSWITCH_H,openvswitch.h)
CFLAGS_ovs_vport:=$(call get_hdr_inc,__LINUX_OPENVSWITCH_H,openvswitch.h)
