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 RUSTC
:= $(BARE_RUSTC
) --out-dir
$(TMPDIR
) -L
$(TMPDIR
) $(RUSTFLAGS
)
11 #CC := $(CC) -L $(TMPDIR)
12 HTMLDOCCK
:= $(PYTHON
) $(S
)/src
/etc
/htmldocck.py
14 # This is the name of the binary we will generate and run; use this
15 # e.g. for `$(CC) -o $(RUN_BINFILE)`.
16 RUN_BINFILE
= $(TMPDIR
)/$(1)
18 # RUN and FAIL are basic way we will invoke the generated binary. On
19 # non-windows platforms, they set the LD_LIBRARY_PATH environment
20 # variable before running the binary.
22 RLIB_GLOB
= lib
$(1)*.rlib
25 UNAME
= $(shell uname
)
27 ifeq ($(UNAME
),Darwin
)
28 RUN
= $(TARGET_RPATH_ENV
) $(RUN_BINFILE
)
29 FAIL
= $(TARGET_RPATH_ENV
) $(RUN_BINFILE
) && exit
1 || exit
0
30 DYLIB_GLOB
= lib
$(1)*.dylib
31 DYLIB
= $(TMPDIR
)/lib
$(1).dylib
32 STATICLIB
= $(TMPDIR
)/lib
$(1).a
33 STATICLIB_GLOB
= lib
$(1)*.a
36 RUN
= PATH
="$(PATH):$(TARGET_RPATH_DIR)" $(RUN_BINFILE
)
37 FAIL
= PATH
="$(PATH):$(TARGET_RPATH_DIR)" $(RUN_BINFILE
) && exit
1 || exit
0
38 DYLIB_GLOB
= $(1)*.dll
39 DYLIB
= $(TMPDIR
)/$(1).dll
40 STATICLIB
= $(TMPDIR
)/$(1).lib
41 STATICLIB_GLOB
= $(1)*.lib
44 RUN
= $(TARGET_RPATH_ENV
) $(RUN_BINFILE
)
45 FAIL
= $(TARGET_RPATH_ENV
) $(RUN_BINFILE
) && exit
1 || exit
0
46 DYLIB_GLOB
= lib
$(1)*.so
47 DYLIB
= $(TMPDIR
)/lib
$(1).so
48 STATICLIB
= $(TMPDIR
)/lib
$(1).a
49 STATICLIB_GLOB
= lib
$(1)*.a
54 COMPILE_OBJ
= $(CC
) -c
-Fo
:`cygpath -w $(1)` $(2)
55 NATIVE_STATICLIB_FILE
= $(1).lib
56 NATIVE_STATICLIB
= $(TMPDIR
)/$(call NATIVE_STATICLIB_FILE
,$(1))
57 OUT_EXE
=-Fe
:`cygpath -w $(TMPDIR)/$(call BIN,$(1))` \
58 -Fo
:`cygpath -w $(TMPDIR)/$(1).obj`
60 COMPILE_OBJ
= $(CC
) -c
-o
$(1) $(2)
61 NATIVE_STATICLIB_FILE
= lib
$(1).a
62 NATIVE_STATICLIB
= $(call STATICLIB
,$(1))
63 OUT_EXE
=-o
$(TMPDIR
)/$(1)
67 # Extra flags needed to compile a working executable with the standard library
70 EXTRACFLAGS
:= ws2_32.lib userenv.lib shell32.lib advapi32.lib
72 EXTRACFLAGS
:= -lws2_32
-luserenv
75 ifeq ($(UNAME
),Darwin
)
76 EXTRACFLAGS
:= -lresolv
78 ifeq ($(UNAME
),FreeBSD
)
79 EXTRACFLAGS
:= -lm
-lpthread
-lgcc_s
81 ifeq ($(UNAME
),Bitrig
)
82 EXTRACFLAGS
:= -lm
-lpthread
83 EXTRACXXFLAGS
:= -lc
++ -lc
++abi
86 EXTRACFLAGS
:= -lm
-lpthread
-lposix4
-lsocket
-lresolv
88 ifeq ($(UNAME
),OpenBSD
)
89 EXTRACFLAGS
:= -lm
-lpthread
90 RUSTC
:= $(RUSTC
) -C linker
="$(word 1,$(CC:ccache=))"
92 EXTRACFLAGS
:= -lm
-lrt
-ldl
-lpthread
93 EXTRACXXFLAGS
:= -lstdc
++
101 REMOVE_DYLIBS
= rm $(TMPDIR
)/$(call DYLIB_GLOB
,$(1))
102 REMOVE_RLIBS
= rm $(TMPDIR
)/$(call RLIB_GLOB
,$(1))
108 $(MSVC_LIB
) -out
:`cygpath -w $@` $<
114 $(CC
) -dynamiclib
-Wl
,-dylib
-o
$@
$<
116 $(CC
) -o
$@
$< -shared
120 $(CC
) $< -link
-dll
-out
:`cygpath -w $@`
123 $(CC
) -o
$@
$< -shared
126 $(TMPDIR
)/lib
%.o
: %.c
127 $(call COMPILE_OBJ
,$@
,$<)