summaryrefslogtreecommitdiffstats
path: root/tests/run-make/redundant-libs/Makefile
blob: 0a48b2b2801367d7bd65b3627621875056978cdf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# ignore-cross-compile
include ../tools.mk

# ignore-windows-msvc

# rustc will remove one of the two redundant references to foo below.  Depending
# on which one gets removed, we'll get a linker error on SOME platforms (like
# Linux).  On these platforms, when a library is referenced, the linker will
# only pull in the symbols needed _at that point in time_.  If a later library
# depends on additional symbols from the library, they will not have been pulled
# in, and you'll get undefined symbols errors.
#
# So in this example, we need to ensure that rustc keeps the _later_ reference
# to foo, and not the former one.
RUSTC_FLAGS = \
    -l static=bar \
    -l foo \
    -l static=baz \
    -l foo \
    --print link-args

all: $(call DYLIB,foo) $(call STATICLIB,bar) $(call STATICLIB,baz)
	$(RUSTC) $(RUSTC_FLAGS) main.rs
	$(call RUN,main)