rust-postgres/Makefile.in
Steven Fackler d6aa529474 Move source files to src directory
The root was getting too crowded.
2014-02-02 23:28:59 -05:00

94 lines
2.7 KiB
Makefile

export RUSTC = rustc
RUSTDOC = rustdoc
export RUSTFLAGS = -O -Z debug-info
BUILDDIR = build
INSTALL_DIR = %PREFIX%
###############################################################################
# Reconfiguration
###############################################################################
CONFIGURE_ARGS = %CONFIGURE_ARGS%
NEED_GIT_RECONFIG = $(shell git submodule status | grep -c '^\(+|-\)')
ifeq ($(NEED_GIT_RECONFIG),0)
else
.PHONY: config.stamp
endif
Makefile: config.stamp
config.stamp: configure Makefile.in
./configure $(CONFIGURE_ARGS)
###############################################################################
# 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 = $(OPENSSL_DIR)/$(shell $(MAKE) -s -C $(OPENSSL_DIR) print-target)
$(PHF): config.stamp
$(MAKE) -C $(PHF_DIR)
touch $(PHF)
$(OPENSSL): config.stamp
$(MAKE) -C $(OPENSSL_DIR)
touch $(OPENSSL)
###############################################################################
# Main targets
###############################################################################
POSTGRES_LIB_FILE = src/lib.rs
POSTGRES_LIB = $(BUILDDIR)/$(shell $(RUSTC) --crate-file-name $(POSTGRES_LIB_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 = -L $(dir $(OPENSSL)) $(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: $(POSTGRES_TEST)
$(POSTGRES_TEST)
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 clean doc install