include ../tools.mk

# ignore-stage1

# This test both exists as a check that -Zcodegen-backend is capable of loading external codegen
# backends and that this external codegen backend is only included in the dep info if
# -Zbinary-dep-depinfo is used.

all:
	/bin/echo || exit 0 # This test requires /bin/echo to exist
	$(RUSTC) the_backend.rs --crate-name the_backend --crate-type dylib \
		-o $(TMPDIR)/the_backend.dylib

	$(RUSTC) some_crate.rs --crate-name some_crate --crate-type lib -o $(TMPDIR)/some_crate \
		-Z codegen-backend=$(TMPDIR)/the_backend.dylib -Z unstable-options \
		--emit link,dep-info
	grep -x "This has been \"compiled\" successfully." $(TMPDIR)/libsome_crate.rlib
	# don't declare a dependency on the codegen backend if -Zbinary-dep-depinfo isn't used.
	grep -v "the_backend.dylib" $(TMPDIR)/some_crate.d
	
	$(RUSTC) some_crate.rs --crate-name some_crate --crate-type lib -o $(TMPDIR)/some_crate \
		-Z codegen-backend=$(TMPDIR)/the_backend.dylib -Z unstable-options \
		--emit link,dep-info -Zbinary-dep-depinfo
	grep -x "This has been \"compiled\" successfully." $(TMPDIR)/libsome_crate.rlib
	# but declare a dependency on the codegen backend if -Zbinary-dep-depinfo it used.
	grep "the_backend.dylib" $(TMPDIR)/some_crate.d
