# SPDX-License-Identifier: GPL-2.0-only
# Copyright (C) 2018-2024 Intel Corporation

COMMON_MK = $(wildcard $(src)/common.mk)
include ${COMMON_MK}

ccflags-y += -I$(src)
subdir-ccflags-y += -I$(src)

obj-$(CONFIG_ICE) += ice.o

ice-y := ice_main.o	\
	 ice_controlq.o	\
	 ice_common.o	\
	 ice_nvm.o	\
	 ice_switch.o	\
	 ice_sched.o	\
	 ice_base.o	\
	 ice_lib.o	\
	 ice_txrx_lib.o	\
	 ice_txrx.o	\
	 ice_fltr.o	\
	 ice_irq.o	\
	 ice_pf_vsi_vlan_ops.o \
	 ice_vsi_vlan_ops.o \
	 ice_vsi_vlan_lib.o \
	 ice_hwmon.o \
	 ice_tc_lib.o	\
	 ice_fdir.o	\
	 ice_ethtool_fdir.o	\
	 ice_acl_main.o		\
	 ice_acl.o		\
	 ice_acl_ctrl.o		\
	 ice_vlan_mode.o	\
	 ice_ddp.o		\
	 ice_flex_pipe.o	\
	 ice_flow.o		\
	 ice_parser.o		\
	 ice_imem.o		\
	 ice_pg_cam.o		\
	 ice_metainit.o		\
	 ice_bst_tcam.o		\
	 ice_ptype_mk.o		\
	 ice_mk_grp.o		\
	 ice_proto_grp.o	\
	 ice_flg_rd.o		\
	 ice_xlt_kb.o		\
	 ice_parser_rt.o	\
	ice_aux_support.o	\
	 ice_lag.o		\
	 ice_ieps.o		\
	 ice_gnss.o		\
	 ice_ethtool.o
ice-$(CONFIG_NET_DEVLINK:m=y) += ice_devlink.o devlink/ice_devlink_health.o ice_fw_update.o
ice-$(CONFIG_NET_DEVLINK:m=y) += ice_eswitch.o ice_repr.o
ice-y += ice_aux_support.o
ice-y += ice_idc.o
ice-$(CONFIG_DEBUG_FS) += ice_debugfs.o
ice-$(CONFIG_DEBUG_FS) += ice_fwlog.o

ice-$(CONFIG_PCI_IOV) +=		\
	ice_dcf.o			\
	ice_sriov.o			\
	ice_vf_mbx.o			\
	ice_vf_vsi_vlan_ops.o		\
	ice_virtchnl_allowlist.o	\
	ice_vf_adq.o			\
	ice_virtchnl.o			\
	ice_virtchnl_fdir.o		\
	ice_virtchnl_fsub.o		\
	ice_vf_lib.o

ice-$(CONFIG_VFIO_MDEV:m=y) += ice_vdcm.o ice_siov.o

ifneq (${CONFIG_DPLL},)
ice-$(CONFIG_PTP_1588_CLOCK:m=y) += ice_ptp.o ice_ptp_hw.o ice_dpll.o
else
ice-$(CONFIG_PTP_1588_CLOCK:m=y) += ice_ptp.o ice_ptp_hw.o
endif
ice-$(CONFIG_PTP_1588_CLOCK:m=y) += ice_cpi.o
ice-$(CONFIG_PTP_1588_CLOCK:m=y) += ice_tspll.o
ice-$(CONFIG_DCB) += ice_dcb.o ice_dcb_nl.o ice_dcb_lib.o
ice-$(CONFIG_RFS_ACCEL) += ice_arfs.o
ice-$(CONFIG_XDP_SOCKETS) += ice_xsk.o
ice-y += kcompat.o
# Use kcompat pldmfw.c if kernel does not provide CONFIG_PLDMFW
ifndef CONFIG_PLDMFW
ice-y += kcompat_pldmfw.o
endif
# Use kcompat DIMLIB if kernel doesn't provide it
ifndef CONFIG_DIMLIB
ice-y += kcompat_dim.o kcompat_net_dim.o
endif
# Use kcompat GNSS if kernel doesn't provide it
ifneq (${CONFIG_GNSS}, y)
ifneq (${CONFIG_GNSS}, m)
ice-y += kcompat_gnss.o
endif
endif

ifeq (${CONFIG_SUSE_KERNEL}, y)
ice-y += kcompat_gnss.o
endif

ifneq (,$(wildcard $(src)/kcompat_generated_defs.h))
ifneq ($(shell grep HAVE_LMV1_SUPPORT $(src)/kcompat_generated_defs.h),)
obj-$(CONFIG_VFIO_PCI_CORE:y=m) += ice-vfio-pci.o

ice-vfio-pci-y := ice_vfio_pci.o
ice-$(CONFIG_VFIO_PCI_CORE:m=y) += ice_migration.o
endif
endif

ifeq (${NEED_AUX_BUS},2)
intel_auxiliary-objs := auxiliary.o
obj-m += intel_auxiliary.o
endif
