]> git.proxmox.com Git - rustc.git/blame - src/test/run-make-fulldeps/tools.mk
New upstream version 1.39.0+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)
e1599b0c 15RUSTDOC := $(RUSTDOC) -Clinker=$(RUSTC_LINKER)
abe05a73 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
48663c56 50LLVM_FILECHECK := $(shell cygpath -u "$(LLVM_FILECHECK)")
1a4d82fc
JJ
51else
52RUN = $(TARGET_RPATH_ENV) $(RUN_BINFILE)
53FAIL = $(TARGET_RPATH_ENV) $(RUN_BINFILE) && exit 1 || exit 0
54DYLIB_GLOB = lib$(1)*.so
55DYLIB = $(TMPDIR)/lib$(1).so
b039eaaf
SL
56STATICLIB = $(TMPDIR)/lib$(1).a
57STATICLIB_GLOB = lib$(1)*.a
58endif
1a4d82fc 59endif
b039eaaf
SL
60
61ifdef IS_MSVC
62COMPILE_OBJ = $(CC) -c -Fo:`cygpath -w $(1)` $(2)
94b46f34 63COMPILE_OBJ_CXX = $(CXX) -c -Fo:`cygpath -w $(1)` $(2)
b039eaaf
SL
64NATIVE_STATICLIB_FILE = $(1).lib
65NATIVE_STATICLIB = $(TMPDIR)/$(call NATIVE_STATICLIB_FILE,$(1))
66OUT_EXE=-Fe:`cygpath -w $(TMPDIR)/$(call BIN,$(1))` \
67 -Fo:`cygpath -w $(TMPDIR)/$(1).obj`
68else
69COMPILE_OBJ = $(CC) -c -o $(1) $(2)
94b46f34 70COMPILE_OBJ_CXX = $(CXX) -c -o $(1) $(2)
b039eaaf
SL
71NATIVE_STATICLIB_FILE = lib$(1).a
72NATIVE_STATICLIB = $(call STATICLIB,$(1))
73OUT_EXE=-o $(TMPDIR)/$(1)
1a4d82fc
JJ
74endif
75
b039eaaf 76
1a4d82fc
JJ
77# Extra flags needed to compile a working executable with the standard library
78ifdef IS_WINDOWS
b039eaaf 79ifdef IS_MSVC
0731742a 80 EXTRACFLAGS := ws2_32.lib userenv.lib advapi32.lib
b039eaaf 81else
85aaf69f 82 EXTRACFLAGS := -lws2_32 -luserenv
b039eaaf 83endif
1a4d82fc 84else
9346a6ac 85ifeq ($(UNAME),Darwin)
7cac9316 86 EXTRACFLAGS := -lresolv
1a4d82fc 87else
9346a6ac 88ifeq ($(UNAME),FreeBSD)
1a4d82fc 89 EXTRACFLAGS := -lm -lpthread -lgcc_s
85aaf69f 90else
7453a54e 91ifeq ($(UNAME),SunOS)
3b2f2976 92 EXTRACFLAGS := -lm -lpthread -lposix4 -lsocket -lresolv
7453a54e 93else
9346a6ac 94ifeq ($(UNAME),OpenBSD)
ff7c6d11 95 EXTRACFLAGS := -lm -lpthread -lc++abi
9cc50fc6 96 RUSTC := $(RUSTC) -C linker="$(word 1,$(CC:ccache=))"
1a4d82fc
JJ
97else
98 EXTRACFLAGS := -lm -lrt -ldl -lpthread
9346a6ac
AL
99 EXTRACXXFLAGS := -lstdc++
100endif
1a4d82fc
JJ
101endif
102endif
103endif
85aaf69f 104endif
1a4d82fc
JJ
105
106REMOVE_DYLIBS = rm $(TMPDIR)/$(call DYLIB_GLOB,$(1))
107REMOVE_RLIBS = rm $(TMPDIR)/$(call RLIB_GLOB,$(1))
108
109%.a: %.o
abe05a73 110 $(AR) crus $@ $<
7453a54e
SL
111ifdef IS_MSVC
112%.lib: lib%.o
113 $(MSVC_LIB) -out:`cygpath -w $@` $<
114else
b039eaaf 115%.lib: lib%.o
abe05a73 116 $(AR) crus $@ $<
7453a54e 117endif
1a4d82fc
JJ
118%.dylib: %.o
119 $(CC) -dynamiclib -Wl,-dylib -o $@ $<
120%.so: %.o
121 $(CC) -o $@ $< -shared
b039eaaf
SL
122
123ifdef IS_MSVC
124%.dll: lib%.o
125 $(CC) $< -link -dll -out:`cygpath -w $@`
126else
1a4d82fc
JJ
127%.dll: lib%.o
128 $(CC) -o $@ $< -shared
b039eaaf 129endif
1a4d82fc
JJ
130
131$(TMPDIR)/lib%.o: %.c
b039eaaf 132 $(call COMPILE_OBJ,$@,$<)