export RUSTC := rustc RUSTDOC := rustdoc RUSTFLAGS := -O --cfg ndebug BUILDDIR := build INSTALL_DIR := %PREFIX% LD_LIBRARY_PATH := $(LD_LIBRARY_PATH):build:submodules/rust-phf/build:submodules/rust-openssl/target ENV := LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) DYLD_LIBRARY_PATH=$(LD_LIBRARY_PATH) ############################################################################### # 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)) .NOTPARALLEL: $(PHF) $(PHF): | $(BUILDDIR) $(MAKE) -C $(PHF_DIR) .NOTPARALLEL: $(OPENSSL) $(OPENSSL): | $(BUILDDIR) $(MAKE) -C $(OPENSSL_DIR) ############################################################################### # Main targets ############################################################################### POSTGRES_LIB_FILE := src/lib/lib.rs POSTGRES_LIB := $(foreach file,$(shell $(RUSTC) --print-file-name $(POSTGRES_LIB_FILE)),$(BUILDDIR)/$(file)) POSTGRES_TEST_FILE := src/test/test.rs POSTGRES_TEST := $(BUILDDIR)/$(shell $(RUSTC) --test --print-file-name $(POSTGRES_TEST_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 $@ .NOTPARALLEL: $(POSTGRES_LIB) $(POSTGRES_LIB): $(POSTGRES_LIB_FILE) $(PHF) $(OPENSSL) | $(BUILDDIR) $(ENV) $(RUSTC) $(RUSTFLAGS) $(LINK_ARGS) --dep-info $(POSTGRES_LIB_DEPS) \ --out-dir $(@D) $< $(POSTGRES_TEST): $(POSTGRES_TEST_FILE) $(POSTGRES_LIB) | $(BUILDDIR) $(ENV) $(RUSTC) $(RUSTFLAGS) $(LINK_ARGS) -L $(BUILDDIR) --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) $(ENV) $(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 rm -f $(PHF_STAMP) $(OPENSSL_STAMP) doc: $(OPENSSL) $(PHF) $(ENV) $(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) print-targets: @echo $(POSTGRES_LIB) .PHONY: check-test check-doc check clean clean-deps doc install print-targets