1 # These deliberately use `=` and not `:=` so that client makefiles can
2 # augment HOST_RPATH_DIR / TARGET_RPATH_DIR.
4 $(LD_LIB_PATH_ENVVAR
)="$(TMPDIR):$(HOST_RPATH_DIR):$($(LD_LIB_PATH_ENVVAR))"
6 $(LD_LIB_PATH_ENVVAR
)="$(TMPDIR):$(TARGET_RPATH_DIR):$($(LD_LIB_PATH_ENVVAR))"
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
)
14 RUSTC
:= $(RUSTC
) -Clinker
=$(RUSTC_LINKER
)
15 RUSTDOC
:= $(RUSTDOC
) --linker
$(RUSTC_LINKER
) -Z unstable-options
17 #CC := $(CC) -L $(TMPDIR)
18 HTMLDOCCK
:= $(PYTHON
) $(S
)/src
/etc
/htmldocck.py
20 # This is the name of the binary we will generate and run; use this
21 # e.g. for `$(CC) -o $(RUN_BINFILE)`.
22 RUN_BINFILE
= $(TMPDIR
)/$(1)
24 # RUN and FAIL are basic way we will invoke the generated binary. On
25 # non-windows platforms, they set the LD_LIBRARY_PATH environment
26 # variable before running the binary.
28 RLIB_GLOB
= lib
$(1)*.rlib
31 UNAME
= $(shell uname
)
33 ifeq ($(UNAME
),Darwin
)
34 RUN
= $(TARGET_RPATH_ENV
) $(RUN_BINFILE
)
35 FAIL
= $(TARGET_RPATH_ENV
) $(RUN_BINFILE
) && exit
1 || exit
0
36 DYLIB_GLOB
= lib
$(1)*.dylib
37 DYLIB
= $(TMPDIR
)/lib
$(1).dylib
38 STATICLIB
= $(TMPDIR
)/lib
$(1).a
39 STATICLIB_GLOB
= lib
$(1)*.a
42 RUN
= PATH
="$(PATH):$(TARGET_RPATH_DIR)" $(RUN_BINFILE
)
43 FAIL
= PATH
="$(PATH):$(TARGET_RPATH_DIR)" $(RUN_BINFILE
) && exit
1 || exit
0
44 DYLIB_GLOB
= $(1)*.dll
45 DYLIB
= $(TMPDIR
)/$(1).dll
46 STATICLIB
= $(TMPDIR
)/$(1).lib
47 STATICLIB_GLOB
= $(1)*.lib
50 RUN
= $(TARGET_RPATH_ENV
) $(RUN_BINFILE
)
51 FAIL
= $(TARGET_RPATH_ENV
) $(RUN_BINFILE
) && exit
1 || exit
0
52 DYLIB_GLOB
= lib
$(1)*.so
53 DYLIB
= $(TMPDIR
)/lib
$(1).so
54 STATICLIB
= $(TMPDIR
)/lib
$(1).a
55 STATICLIB_GLOB
= lib
$(1)*.a
60 COMPILE_OBJ
= $(CC
) -c
-Fo
:`cygpath -w $(1)` $(2)
61 NATIVE_STATICLIB_FILE
= $(1).lib
62 NATIVE_STATICLIB
= $(TMPDIR
)/$(call NATIVE_STATICLIB_FILE
,$(1))
63 OUT_EXE
=-Fe
:`cygpath -w $(TMPDIR)/$(call BIN,$(1))` \
64 -Fo
:`cygpath -w $(TMPDIR)/$(1).obj`
66 COMPILE_OBJ
= $(CC
) -c
-o
$(1) $(2)
67 NATIVE_STATICLIB_FILE
= lib
$(1).a
68 NATIVE_STATICLIB
= $(call STATICLIB
,$(1))
69 OUT_EXE
=-o
$(TMPDIR
)/$(1)
73 # Extra flags needed to compile a working executable with the standard library
76 EXTRACFLAGS
:= ws2_32.lib userenv.lib shell32.lib advapi32.lib
78 EXTRACFLAGS
:= -lws2_32
-luserenv
81 ifeq ($(UNAME
),Darwin
)
82 EXTRACFLAGS
:= -lresolv
84 ifeq ($(UNAME
),FreeBSD
)
85 EXTRACFLAGS
:= -lm
-lpthread
-lgcc_s
87 ifeq ($(UNAME
),Bitrig
)
88 EXTRACFLAGS
:= -lm
-lpthread
89 EXTRACXXFLAGS
:= -lc
++ -lc
++abi
92 EXTRACFLAGS
:= -lm
-lpthread
-lposix4
-lsocket
-lresolv
94 ifeq ($(UNAME
),OpenBSD
)
95 EXTRACFLAGS
:= -lm
-lpthread
96 RUSTC
:= $(RUSTC
) -C linker
="$(word 1,$(CC:ccache=))"
98 EXTRACFLAGS
:= -lm
-lrt
-ldl
-lpthread
99 EXTRACXXFLAGS
:= -lstdc
++
107 REMOVE_DYLIBS
= rm $(TMPDIR
)/$(call DYLIB_GLOB
,$(1))
108 REMOVE_RLIBS
= rm $(TMPDIR
)/$(call RLIB_GLOB
,$(1))
114 $(MSVC_LIB
) -out
:`cygpath -w $@` $<
120 $(CC
) -dynamiclib
-Wl
,-dylib
-o
$@
$<
122 $(CC
) -o
$@
$< -shared
126 $(CC
) $< -link
-dll
-out
:`cygpath -w $@`
129 $(CC
) -o
$@
$< -shared
132 $(TMPDIR
)/lib
%.o
: %.c
133 $(call COMPILE_OBJ
,$@
,$<)