# SPDX-License-Identifier: GPL-2.0

obj-$(CONFIG_TYPEC_MUX_FSA4480)		+= fsa4480-drv.o
fsa4480-drv-y += fsa4480.o
obj-$(CONFIG_TYPEC_MUX_GPIO_SBU)	+= gpio-sbu-mux.o
obj-$(CONFIG_TYPEC_MUX_PI3USB30532)	+= pi3usb30532-drv.o
pi3usb30532-drv-y += pi3usb30532.o
obj-$(CONFIG_TYPEC_MUX_INTEL_PMC)	+= intel_pmc_mux.o
obj-$(CONFIG_TYPEC_MUX_NB7VPQ904M)	+= nb7vpq904m-drv.o
nb7vpq904m-drv-y += nb7vpq904m.o

# Option B: Link Rust only when built-in (=y), avoiding symbol pollution during module build.
ifdef CONFIG_RUST_DRIVERS
RUST_DRV := usb/typec
include $(srctree)/drivers/rust/templates/kbuild-rust-driver.mk

ifneq ($(CONFIG_TYPEC_MUX_FSA4480),)
$(obj)/rust/typec_fsa4480_rust.o: FORCE
	$(Q)mkdir -p $(dir $@)
	$(Q)OBJTREE=$(abspath $(objtree)) OBJ=$(abspath $(obj)) OUTPUT_FILE=$(abspath $@).__rust_tmp CARGO_FEATURES=fsa4480 CROSS_COMPILE="$(CROSS_COMPILE)" $(RUST_BUILD_SH)
	$(Q)if [ ! -f $@ ] || ! cmp -s $@.__rust_tmp $@; then mv $@.__rust_tmp $@; else rm -f $@.__rust_tmp; fi
	$(Q)echo 'savedcmd_$@ := rust-build $(RUST_BUILD_SH)' > $(dir $@).$(notdir $@).cmd
OBJECT_FILES_NON_STANDARD_typec_fsa4480_rust.o := y
fsa4480-drv-y += rust/typec_fsa4480_rust.o
endif

ifneq ($(CONFIG_TYPEC_MUX_PI3USB30532),)
$(obj)/rust/typec_pi3usb30532_rust.o: FORCE
	$(Q)mkdir -p $(dir $@)
	$(Q)OBJTREE=$(abspath $(objtree)) OBJ=$(abspath $(obj)) OUTPUT_FILE=$(abspath $@).__rust_tmp CARGO_FEATURES=pi3usb30532 CROSS_COMPILE="$(CROSS_COMPILE)" $(RUST_BUILD_SH)
	$(Q)if [ ! -f $@ ] || ! cmp -s $@.__rust_tmp $@; then mv $@.__rust_tmp $@; else rm -f $@.__rust_tmp; fi
	$(Q)echo 'savedcmd_$@ := rust-build $(RUST_BUILD_SH)' > $(dir $@).$(notdir $@).cmd
OBJECT_FILES_NON_STANDARD_typec_pi3usb30532_rust.o := y
pi3usb30532-drv-y += rust/typec_pi3usb30532_rust.o
endif

ifneq ($(CONFIG_TYPEC_MUX_NB7VPQ904M),)
$(obj)/rust/typec_nb7vpq904m_rust.o: FORCE
	$(Q)mkdir -p $(dir $@)
	$(Q)OBJTREE=$(abspath $(objtree)) OBJ=$(abspath $(obj)) OUTPUT_FILE=$(abspath $@).__rust_tmp CARGO_FEATURES=nb7vpq904m CROSS_COMPILE="$(CROSS_COMPILE)" $(RUST_BUILD_SH)
	$(Q)if [ ! -f $@ ] || ! cmp -s $@.__rust_tmp $@; then mv $@.__rust_tmp $@; else rm -f $@.__rust_tmp; fi
	$(Q)echo 'savedcmd_$@ := rust-build $(RUST_BUILD_SH)' > $(dir $@).$(notdir $@).cmd
OBJECT_FILES_NON_STANDARD_typec_nb7vpq904m_rust.o := y
nb7vpq904m-drv-y += rust/typec_nb7vpq904m_rust.o
endif

endif
