# SPDX-License-Identifier: GPL-2.0-only
obj-$(CONFIG_HINIC) += hinic.o

hinic-y := hinic_nic_cfg.o hinic_nic_io.o hinic_nic_dbg.o \
           hinic_hwif.o hinic_msix_attr.o hinic_eqs.o \
           hinic_mbox.o hinic_api_cmd.o hinic_mgmt.o \
           hinic_wq.o hinic_cmdq.o hinic_hwdev.o hinic_cfg.o \
           hinic_sml_counter.o hinic_sml_lt.o \
           hinic_multi_host_mgmt.o hinic_main.o hinic_lld.o \
           hinic_qp.o hinic_rx.o hinic_tx.o hinic_dbgtool_knl.o \
           hinic_nictool.o hinic_sriov.o hinic_dcb.o\
           hinic_ethtool.o

$(obj)/hinic_ethtool.o \
$(obj)/hinic_dbgtool_knl.o \
$(obj)/hinic_nictool.o \
$(obj)/hinic_main.o \
$(obj)/hinic_tx.o \
$(obj)/hinic_hwdev.o \
$(obj)/hinic_lld.o \
$(obj)/hinic_rx.o \
	: $(obj)/feature_test.h

feature_test := \
	always_true \
	struct_rxfh \
	add_class_one \
	napi_add_tx_weight \
	ethtool_get_ringparam_four \
	eth_hw_addr_set \
	kmap_local_page \
	ethtool_get_coalesce_four \
	ndo_tx_timeout_two \
	ethtool_supported_coalesce_params \
	timer_delete_sync \
	napi_gro_flush_in_gro_h \

$(obj)/feature_test_%.result: $(src)/feature_test_%.c
	$(Q)echo "Checking feature test for $*..."; \
	if env - PATH=$$PATH $(MAKE) -C "$(objtree)" M="$(M)" "feature_test_$*.o" "obj-y+=feature_test_$*.o" ; then \
		echo "$*: yes"; \
		echo "Y" > $@; \
	elif [ "$*" = "always_true" ] ; then \
		echo "Problem with feature test"; \
		exit 1; \
	else \
		echo "$*: no"; \
		echo "N" > $@; \
	fi; \
	rm -f "$(obj)/feature_test_$*.o";

$(obj)/feature_test.h: $(addsuffix .result,$(addprefix $(obj)/feature_test_,$(feature_test)))
	$(Q)echo "/* This file is automatically generated. Do not edit. */" > $@.tmp
	$(Q)for i in $^; do \
		basename=$$(basename -- $$i .result); \
		result=$$(cat $$i); \
		if [ "$$result" = "Y" ] ; then \
			echo "#define HAVE_$$(echo "$$basename" | sed 's/feature_test_//; s/.*/\U&/')" >> $@.tmp; \
		else \
			echo "/* #undef HAVE_$$(echo "$$basename" | sed 's/feature_test_//; s/.*/\U&/') */" >> $@.tmp; \
		fi; \
		echo "" >> $@.tmp; \
	done
	mv $@.tmp $@

clean-files += feature_test.h
clean-files += $(addsuffix .result,$(addprefix feature_test_,$(feature_test)))
