# ignore-cross-compile
include ../tools.mk

# Different optimization levels imply different values for `-Zshare-generics`,
# so try out a whole bunch of combinations to make sure everything is compatible
all:
	# First up, try some defaults
	$(RUSTC) --crate-type rlib foo.rs
	$(RUSTC) --crate-type dylib bar.rs -C opt-level=3

	# Next try mixing up some things explicitly
	$(RUSTC) --crate-type rlib foo.rs -Z share-generics=no
	$(RUSTC) --crate-type dylib bar.rs -Z share-generics=no
	$(RUSTC) --crate-type rlib foo.rs -Z share-generics=no
	$(RUSTC) --crate-type dylib bar.rs -Z share-generics=yes
	$(RUSTC) --crate-type rlib foo.rs -Z share-generics=yes
	$(RUSTC) --crate-type dylib bar.rs -Z share-generics=no
	$(RUSTC) --crate-type rlib foo.rs -Z share-generics=yes
	$(RUSTC) --crate-type dylib bar.rs -Z share-generics=yes

	# Now combine a whole bunch of options together
	$(RUSTC) --crate-type rlib foo.rs
	$(RUSTC) --crate-type dylib bar.rs
	$(RUSTC) --crate-type dylib bar.rs -Z share-generics=no
	$(RUSTC) --crate-type dylib bar.rs -Z share-generics=yes
	$(RUSTC) --crate-type dylib bar.rs -C opt-level=1
	$(RUSTC) --crate-type dylib bar.rs -C opt-level=1 -Z share-generics=no
	$(RUSTC) --crate-type dylib bar.rs -C opt-level=1 -Z share-generics=yes
	$(RUSTC) --crate-type dylib bar.rs -C opt-level=2
	$(RUSTC) --crate-type dylib bar.rs -C opt-level=2 -Z share-generics=no
	$(RUSTC) --crate-type dylib bar.rs -C opt-level=2 -Z share-generics=yes
	$(RUSTC) --crate-type dylib bar.rs -C opt-level=3
	$(RUSTC) --crate-type dylib bar.rs -C opt-level=3 -Z share-generics=no
	$(RUSTC) --crate-type dylib bar.rs -C opt-level=3 -Z share-generics=yes
	$(RUSTC) --crate-type dylib bar.rs -C opt-level=s
	$(RUSTC) --crate-type dylib bar.rs -C opt-level=s -Z share-generics=no
	$(RUSTC) --crate-type dylib bar.rs -C opt-level=s -Z share-generics=yes
	$(RUSTC) --crate-type dylib bar.rs -C opt-level=z
	$(RUSTC) --crate-type dylib bar.rs -C opt-level=z -Z share-generics=no
	$(RUSTC) --crate-type dylib bar.rs -C opt-level=z -Z share-generics=yes
