# SPDX-License-Identifier: GPL-2.0
#
# Makefile for Qlogic 1G/10G Ethernet Driver for CNA devices
#

obj-$(CONFIG_QLCNIC) := qlcnic.o

qlcnic-y := qlcnic_hw.o qlcnic_main.o qlcnic_init.o \
	qlcnic_ethtool.o qlcnic_ctx.o qlcnic_io.o \
	qlcnic_sysfs.o qlcnic_minidump.o qlcnic_83xx_hw.o \
	qlcnic_83xx_init.o qlcnic_83xx_vnic.o \
	qlcnic_sriov_common.o

qlcnic-$(CONFIG_QLCNIC_SRIOV) += qlcnic_sriov_pf.o

qlcnic-$(CONFIG_QLCNIC_DCB) += qlcnic_dcb.o

# Rust driver support (same pattern as netxen)
ifeq ($(CONFIG_RUST_DRIVERS),y)
RUST_DRV := net/ethernet/qlogic
CARGO_FEATURES := qlcnic
RUST_DRV_OBJ := rust/qlcnic_rust.o
include $(srctree)/drivers/rust/templates/kbuild-rust-driver.mk
qlcnic-y += $(RUST_DRV_OBJ)
# When CONFIG_QLCNIC=m, shim source stays in bindings; build .o here and link into module.
# (Kbuild prepends $(obj)/ to qlcnic-y entries, so cross-dir .o path cannot be used)
ifeq ($(CONFIG_QLCNIC),m)
qlcnic-y += qlcnic_rust_shim.o
CFLAGS_qlcnic_rust_shim.o := -I$(srctree)/drivers/rust/bindings/include \
	-I$(srctree)/drivers/net/ethernet/qlogic/qlcnic
$(obj)/qlcnic_rust_shim.o: $(srctree)/drivers/rust/bindings/src/qlogic_shim.c FORCE
	$(call if_changed_rule,cc_o_c)
endif
endif
