]> git.proxmox.com Git - rustc.git/blame - src/test/run-make-fulldeps/tools.mk
New upstream version 1.28.0~beta.14+dfsg1
[rustc.git] / src / test / run-make-fulldeps / tools.mk
CommitLineData
1a4d82fc
JJ
1# These deliberately use `=` and not `:=` so that client makefiles can
2# augment HOST_RPATH_DIR / TARGET_RPATH_DIR.
3HOST_RPATH_ENV = \
4 $(LD_LIB_PATH_ENVVAR)="$(TMPDIR):$(HOST_RPATH_DIR):$($(LD_LIB_PATH_ENVVAR))"
5TARGET_RPATH_ENV = \
6 $(LD_LIB_PATH_ENVVAR)="$(TMPDIR):$(TARGET_RPATH_DIR):$($(LD_LIB_PATH_ENVVAR))"
7
ea8adc8c 8RUSTC_ORIGINAL := $(RUSTC)
a7813a04 9BARE_RUSTC := $(HOST_RPATH_ENV) '$(RUSTC)'
abe05a73 10BARE_RUSTDOC := $(HOST_RPATH_ENV) '$(RUSTDOC)'
9cc50fc6 11RUSTC := $(BARE_RUSTC) --out-dir $(TMPDIR) -L $(TMPDIR) $(RUSTFLAGS)
0531ce1d 12RUSTDOC := $(BARE_RUSTDOC) -L $(TARGET_RPATH_DIR)
abe05a73
XL
13ifdef RUSTC_LINKER
14RUSTC := $(RUSTC) -Clinker=$(RUSTC_LINKER)
15RUSTDOC := $(RUSTDOC) --linker $(RUSTC_LINKER) -Z unstable-options
16endif
b039eaaf 17#CC := $(CC) -L $(TMPDIR)
85aaf69f 18HTMLDOCCK := $(PYTHON) $(S)/src/etc/htmldocck.py
ff7c6d11 19CGREP := "$(S)/src/etc/cat-and-grep.sh"
1a4d82fc
JJ
20
21# This is the name of the binary we will generate and run; use this
22# e.g. for `$(CC) -o $(RUN_BINFILE)`.
23RUN_BINFILE = $(TMPDIR)/$(1)
24
25# RUN and FAIL are basic way we will invoke the generated binary. On
26# non-windows platforms, they set the LD_LIBRARY_PATH environment
27# variable before running the binary.
28
29RLIB_GLOB = lib$(1)*.rlib
1a4d82fc
JJ
30BIN = $(1)
31
32UNAME = $(shell uname)
1a4d82fc
JJ
33
34ifeq ($(UNAME),Darwin)
35RUN = $(TARGET_RPATH_ENV) $(RUN_BINFILE)
36FAIL = $(TARGET_RPATH_ENV) $(RUN_BINFILE) && exit 1 || exit 0
37DYLIB_GLOB = lib$(1)*.dylib
38DYLIB = $(TMPDIR)/lib$(1).dylib
b039eaaf
SL
39STATICLIB = $(TMPDIR)/lib$(1).a
40STATICLIB_GLOB = lib$(1)*.a
1a4d82fc
JJ
41else
42ifdef IS_WINDOWS
43RUN = PATH="$(PATH):$(TARGET_RPATH_DIR)" $(RUN_BINFILE)
44FAIL = PATH="$(PATH):$(TARGET_RPATH_DIR)" $(RUN_BINFILE) && exit 1 || exit 0
45DYLIB_GLOB = $(1)*.dll
46DYLIB = $(TMPDIR)/$(1).dll
b039eaaf
SL
47STATICLIB = $(TMPDIR)/$(1).lib
48STATICLIB_GLOB = $(1)*.lib
1a4d82fc 49BIN = $(1).exe
1a4d82fc
JJ
50else
51RUN = $(TARGET_RPATH_ENV) $(RUN_BINFILE)
52FAIL = $(TARGET_RPATH_ENV) $(RUN_BINFILE) && exit 1 || exit 0
53DYLIB_GLOB = lib$(1)*.so
54DYLIB = $(TMPDIR)/lib$(1).so
b039eaaf
SL
55STATICLIB = $(TMPDIR)/lib$(1).a
56STATICLIB_GLOB = lib$(1)*.a
57endif
1a4d82fc 58endif
b039eaaf
SL
59
60ifdef IS_MSVC
61COMPILE_OBJ = $(CC) -c -Fo:`cygpath -w $(1)` $(2)
94b46f34 62COMPILE_OBJ_CXX = $(CXX) -c -Fo:`cygpath -w $(1)` $(2)
b039eaaf
SL
63NATIVE_STATICLIB_FILE = $(1).lib
64NATIVE_STATICLIB = $(TMPDIR)/$(call NATIVE_STATICLIB_FILE,$(1))
65OUT_EXE=-Fe:`cygpath -w $(TMPDIR)/$(call BIN,$(1))` \
66 -Fo:`cygpath -w $(TMPDIR)/$(1).obj`
67else
68COMPILE_OBJ = $(CC) -c -o $(1) $(2)
94b46f34 69COMPILE_OBJ_CXX = $(CXX) -c -o $(1) $(2)
b039eaaf
SL
70NATIVE_STATICLIB_FILE = lib$(1).a
71NATIVE_STATICLIB = $(call STATICLIB,$(1))
72OUT_EXE=-o $(TMPDIR)/$(1)
1a4d82fc
JJ
73endif
74
b039eaaf 75
1a4d82fc
JJ
76# Extra flags needed to compile a working executable with the standard library
77ifdef IS_WINDOWS
b039eaaf
SL
78ifdef IS_MSVC
79 EXTRACFLAGS := ws2_32.lib userenv.lib shell32.lib advapi32.lib
80else
85aaf69f 81 EXTRACFLAGS := -lws2_32 -luserenv
b039eaaf 82endif
1a4d82fc 83else
9346a6ac 84ifeq ($(UNAME),Darwin)
7cac9316 85 EXTRACFLAGS := -lresolv
1a4d82fc 86else
9346a6ac 87ifeq ($(UNAME),FreeBSD)
1a4d82fc 88 EXTRACFLAGS := -lm -lpthread -lgcc_s
85aaf69f 89else
9346a6ac
AL
90ifeq ($(UNAME),Bitrig)
91 EXTRACFLAGS := -lm -lpthread
92 EXTRACXXFLAGS := -lc++ -lc++abi
93else
7453a54e 94ifeq ($(UNAME),SunOS)
3b2f2976 95 EXTRACFLAGS := -lm -lpthread -lposix4 -lsocket -lresolv
7453a54e 96else
9346a6ac 97ifeq ($(UNAME),OpenBSD)
ff7c6d11 98 EXTRACFLAGS := -lm -lpthread -lc++abi
9cc50fc6 99 RUSTC := $(RUSTC) -C linker="$(word 1,$(CC:ccache=))"
1a4d82fc
JJ
100else
101 EXTRACFLAGS := -lm -lrt -ldl -lpthread
9346a6ac
AL
102 EXTRACXXFLAGS := -lstdc++
103endif
1a4d82fc
JJ
104endif
105endif
106endif
85aaf69f 107endif
7453a54e 108endif
1a4d82fc
JJ
109
110REMOVE_DYLIBS = rm $(TMPDIR)/$(call DYLIB_GLOB,$(1))
111REMOVE_RLIBS = rm $(TMPDIR)/$(call RLIB_GLOB,$(1))
112
113%.a: %.o
abe05a73 114 $(AR) crus $@ $<
7453a54e
SL
115ifdef IS_MSVC
116%.lib: lib%.o
117 $(MSVC_LIB) -out:`cygpath -w $@` $<
118else
b039eaaf 119%.lib: lib%.o
abe05a73 120 $(AR) crus $@ $<
7453a54e 121endif
1a4d82fc
JJ
122%.dylib: %.o
123 $(CC) -dynamiclib -Wl,-dylib -o $@ $<
124%.so: %.o
125 $(CC) -o $@ $< -shared
b039eaaf
SL
126
127ifdef IS_MSVC
128%.dll: lib%.o
129 $(CC) $< -link -dll -out:`cygpath -w $@`
130else
1a4d82fc
JJ
131%.dll: lib%.o
132 $(CC) -o $@ $< -shared
b039eaaf 133endif
1a4d82fc
JJ
134
135$(TMPDIR)/lib%.o: %.c
b039eaaf 136 $(call COMPILE_OBJ,$@,$<)