]>
Commit | Line | Data |
---|---|---|
1a4d82fc JJ |
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 | ||
ea8adc8c | 8 | RUSTC_ORIGINAL := $(RUSTC) |
a7813a04 | 9 | BARE_RUSTC := $(HOST_RPATH_ENV) '$(RUSTC)' |
abe05a73 | 10 | BARE_RUSTDOC := $(HOST_RPATH_ENV) '$(RUSTDOC)' |
9cc50fc6 | 11 | RUSTC := $(BARE_RUSTC) --out-dir $(TMPDIR) -L $(TMPDIR) $(RUSTFLAGS) |
0531ce1d | 12 | RUSTDOC := $(BARE_RUSTDOC) -L $(TARGET_RPATH_DIR) |
abe05a73 XL |
13 | ifdef RUSTC_LINKER |
14 | RUSTC := $(RUSTC) -Clinker=$(RUSTC_LINKER) | |
e1599b0c | 15 | RUSTDOC := $(RUSTDOC) -Clinker=$(RUSTC_LINKER) |
abe05a73 | 16 | endif |
b039eaaf | 17 | #CC := $(CC) -L $(TMPDIR) |
85aaf69f | 18 | HTMLDOCCK := $(PYTHON) $(S)/src/etc/htmldocck.py |
ff7c6d11 | 19 | CGREP := "$(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)`. | |
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 | |
1a4d82fc JJ |
30 | BIN = $(1) |
31 | ||
32 | UNAME = $(shell uname) | |
1a4d82fc JJ |
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 | |
b039eaaf SL |
39 | STATICLIB = $(TMPDIR)/lib$(1).a |
40 | STATICLIB_GLOB = lib$(1)*.a | |
1a4d82fc JJ |
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 | |
b039eaaf SL |
47 | STATICLIB = $(TMPDIR)/$(1).lib |
48 | STATICLIB_GLOB = $(1)*.lib | |
1a4d82fc | 49 | BIN = $(1).exe |
48663c56 | 50 | LLVM_FILECHECK := $(shell cygpath -u "$(LLVM_FILECHECK)") |
1a4d82fc JJ |
51 | else |
52 | RUN = $(TARGET_RPATH_ENV) $(RUN_BINFILE) | |
53 | FAIL = $(TARGET_RPATH_ENV) $(RUN_BINFILE) && exit 1 || exit 0 | |
54 | DYLIB_GLOB = lib$(1)*.so | |
55 | DYLIB = $(TMPDIR)/lib$(1).so | |
b039eaaf SL |
56 | STATICLIB = $(TMPDIR)/lib$(1).a |
57 | STATICLIB_GLOB = lib$(1)*.a | |
58 | endif | |
1a4d82fc | 59 | endif |
b039eaaf SL |
60 | |
61 | ifdef IS_MSVC | |
62 | COMPILE_OBJ = $(CC) -c -Fo:`cygpath -w $(1)` $(2) | |
94b46f34 | 63 | COMPILE_OBJ_CXX = $(CXX) -c -Fo:`cygpath -w $(1)` $(2) |
b039eaaf SL |
64 | NATIVE_STATICLIB_FILE = $(1).lib |
65 | NATIVE_STATICLIB = $(TMPDIR)/$(call NATIVE_STATICLIB_FILE,$(1)) | |
66 | OUT_EXE=-Fe:`cygpath -w $(TMPDIR)/$(call BIN,$(1))` \ | |
67 | -Fo:`cygpath -w $(TMPDIR)/$(1).obj` | |
68 | else | |
69 | COMPILE_OBJ = $(CC) -c -o $(1) $(2) | |
94b46f34 | 70 | COMPILE_OBJ_CXX = $(CXX) -c -o $(1) $(2) |
b039eaaf SL |
71 | NATIVE_STATICLIB_FILE = lib$(1).a |
72 | NATIVE_STATICLIB = $(call STATICLIB,$(1)) | |
73 | OUT_EXE=-o $(TMPDIR)/$(1) | |
1a4d82fc JJ |
74 | endif |
75 | ||
b039eaaf | 76 | |
1a4d82fc JJ |
77 | # Extra flags needed to compile a working executable with the standard library |
78 | ifdef IS_WINDOWS | |
b039eaaf | 79 | ifdef IS_MSVC |
0731742a | 80 | EXTRACFLAGS := ws2_32.lib userenv.lib advapi32.lib |
b039eaaf | 81 | else |
85aaf69f | 82 | EXTRACFLAGS := -lws2_32 -luserenv |
b039eaaf | 83 | endif |
1a4d82fc | 84 | else |
9346a6ac | 85 | ifeq ($(UNAME),Darwin) |
7cac9316 | 86 | EXTRACFLAGS := -lresolv |
1a4d82fc | 87 | else |
9346a6ac | 88 | ifeq ($(UNAME),FreeBSD) |
1a4d82fc | 89 | EXTRACFLAGS := -lm -lpthread -lgcc_s |
85aaf69f | 90 | else |
7453a54e | 91 | ifeq ($(UNAME),SunOS) |
3b2f2976 | 92 | EXTRACFLAGS := -lm -lpthread -lposix4 -lsocket -lresolv |
7453a54e | 93 | else |
9346a6ac | 94 | ifeq ($(UNAME),OpenBSD) |
ff7c6d11 | 95 | EXTRACFLAGS := -lm -lpthread -lc++abi |
9cc50fc6 | 96 | RUSTC := $(RUSTC) -C linker="$(word 1,$(CC:ccache=))" |
1a4d82fc JJ |
97 | else |
98 | EXTRACFLAGS := -lm -lrt -ldl -lpthread | |
9346a6ac AL |
99 | EXTRACXXFLAGS := -lstdc++ |
100 | endif | |
1a4d82fc JJ |
101 | endif |
102 | endif | |
103 | endif | |
85aaf69f | 104 | endif |
1a4d82fc JJ |
105 | |
106 | REMOVE_DYLIBS = rm $(TMPDIR)/$(call DYLIB_GLOB,$(1)) | |
107 | REMOVE_RLIBS = rm $(TMPDIR)/$(call RLIB_GLOB,$(1)) | |
108 | ||
109 | %.a: %.o | |
abe05a73 | 110 | $(AR) crus $@ $< |
7453a54e SL |
111 | ifdef IS_MSVC |
112 | %.lib: lib%.o | |
113 | $(MSVC_LIB) -out:`cygpath -w $@` $< | |
114 | else | |
b039eaaf | 115 | %.lib: lib%.o |
abe05a73 | 116 | $(AR) crus $@ $< |
7453a54e | 117 | endif |
1a4d82fc JJ |
118 | %.dylib: %.o |
119 | $(CC) -dynamiclib -Wl,-dylib -o $@ $< | |
120 | %.so: %.o | |
121 | $(CC) -o $@ $< -shared | |
b039eaaf SL |
122 | |
123 | ifdef IS_MSVC | |
124 | %.dll: lib%.o | |
125 | $(CC) $< -link -dll -out:`cygpath -w $@` | |
126 | else | |
1a4d82fc JJ |
127 | %.dll: lib%.o |
128 | $(CC) -o $@ $< -shared | |
b039eaaf | 129 | endif |
1a4d82fc JJ |
130 | |
131 | $(TMPDIR)/lib%.o: %.c | |
b039eaaf | 132 | $(call COMPILE_OBJ,$@,$<) |