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