aboutsummaryrefslogtreecommitdiff
path: root/nix-rust/local.mk
blob: 9650cdf9321a829a012a676b2aa5cd6f88d57a35 (plain)
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
ifeq ($(OPTIMIZE), 1)
  RUST_MODE = --release
  RUST_DIR = release
else
  RUST_MODE =
  RUST_DIR = debug
endif

libnixrust_PATH := $(d)/target/$(RUST_DIR)/libnixrust.$(SO_EXT)
libnixrust_INSTALL_PATH := $(libdir)/libnixrust.$(SO_EXT)
libnixrust_LDFLAGS_USE := -L$(d)/target/$(RUST_DIR) -lnixrust
libnixrust_LDFLAGS_USE_INSTALLED := -L$(libdir) -lnixrust

ifeq ($(OS), Linux)
libnixrust_LDFLAGS_USE += -ldl
libnixrust_LDFLAGS_USE_INSTALLED += -ldl
endif

ifeq ($(OS), Darwin)
libnixrust_BUILD_FLAGS = NIX_LDFLAGS="-undefined dynamic_lookup"
else
libnixrust_LDFLAGS_USE += -Wl,-rpath,$(abspath $(d)/target/$(RUST_DIR))
libnixrust_LDFLAGS_USE_INSTALLED += -Wl,-rpath,$(libdir)
endif

$(libnixrust_PATH): $(call rwildcard, $(d)/src, *.rs) $(d)/Cargo.toml
	$(trace-gen) cd nix-rust && CARGO_HOME=$$(if [[ -d vendor ]]; then echo vendor; fi) \
	$(libnixrust_BUILD_FLAGS) \
	  cargo build $(RUST_MODE) $$(if [[ -d vendor ]]; then echo --offline; fi) \
	&& touch target/$(RUST_DIR)/libnixrust.$(SO_EXT)

$(libnixrust_INSTALL_PATH): $(libnixrust_PATH)
	$(target-gen) cp $^ $@
ifeq ($(OS), Darwin)
	install_name_tool -id $@ $@
endif

clean: clean-rust

clean-rust:
	$(suppress) rm -rfv nix-rust/target

ifneq ($(OS), Darwin)
check: rust-tests

rust-tests:
	$(trace-test) cd nix-rust && CARGO_HOME=$$(if [[ -d vendor ]]; then echo vendor; fi) cargo test --release $$(if [[ -d vendor ]]; then echo --offline; fi)
endif