forked from sfackler/rust-postgres
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile.in
80 lines (60 loc) · 2.47 KB
/
Makefile.in
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
export RUSTC := rustc
RUSTDOC := rustdoc
export RUSTFLAGS := -O --cfg ndebug
BUILDDIR := build
INSTALL_DIR := %PREFIX%
###############################################################################
# Dependencies
###############################################################################
PHF_DIR := submodules/rust-phf
PHF := $(foreach file,$(shell $(MAKE) -s -C $(PHF_DIR) print-targets),$(PHF_DIR)/$(file))
OPENSSL_DIR := submodules/rust-openssl
OPENSSL := $(foreach file,$(shell $(MAKE) -s -C $(OPENSSL_DIR) print-target),$(OPENSSL_DIR)/$(file))
$(PHF):
$(MAKE) -C $(PHF_DIR)
touch $(PHF)
$(OPENSSL):
$(MAKE) -C $(OPENSSL_DIR)
touch $(OPENSSL)
###############################################################################
# Main targets
###############################################################################
POSTGRES_LIB_FILE := src/lib.rs
POSTGRES_LIB := $(foreach file,$(shell $(RUSTC) --crate-file-name $(POSTGRES_LIB_FILE)),$(BUILDDIR)/$(file))
POSTGRES_TEST := $(BUILDDIR)/$(shell $(RUSTC) --test --crate-file-name $(POSTGRES_LIB_FILE))
POSTGRES_LIB_DEPS := $(BUILDDIR)/postgres.d
POSTGRES_TEST_DEPS := $(BUILDDIR)/postgres_test.d
LINK_ARGS := $(foreach file,$(OPENSSL),-L $(dir $(file))) $(foreach file,$(PHF),-L $(dir $(file)))
-include $(POSTGRES_LIB_DEPS)
-include $(POSTGRES_TEST_DEPS)
$(BUILDDIR):
mkdir -p $@
$(POSTGRES_LIB): $(POSTGRES_LIB_FILE) $(PHF) $(OPENSSL) | $(BUILDDIR)
$(RUSTC) $(RUSTFLAGS) $(LINK_ARGS) --dep-info $(POSTGRES_LIB_DEPS) \
--out-dir $(@D) $<
$(POSTGRES_TEST): $(POSTGRES_LIB_FILE) $(PHF) $(OPENSSL) | $(BUILDDIR)
$(RUSTC) $(RUSTFLAGS) $(LINK_ARGS) --dep-info $(POSTGRES_TEST_DEPS) \
--out-dir $(@D) --test $<
all: $(POSTGRES_LIB)
.DEFAULT_GOAL := all
.PHONY: all
###############################################################################
# Utility
###############################################################################
check-test: $(POSTGRES_TEST)
$(POSTGRES_TEST)
check-doc: $(POSTGRES_LIB)
$(RUSTDOC) $(LINK_ARGS) -L $(BUILDDIR) --test $(POSTGRES_LIB_FILE)
check: check-test check-doc
clean:
rm -rf $(BUILDDIR)
clean-deps:
$(MAKE) -C $(PHF_DIR) clean
$(MAKE) -C $(OPENSSL_DIR) clean
doc: $(OPENSSL) $(PHF)
$(RUSTDOC) $(LINK_ARGS) $(POSTGRES_LIB_FILE)
install: $(POSTGRES_LIB)
$(MAKE) -C $(PHF_DIR) install INSTALL_DIR=$(abspath $(INSTALL_DIR))
$(MAKE) -C $(PHF_DIR) install INSTALL_DIR=$(abspath $(INSTALL_DIR))
install $(POSTGRES_LIB) $(INSTALL_DIR)
.PHONY: check-test check-doc check clean clean-deps doc install