|
1 |
| -VPATH=%VPATH% |
2 |
| - |
3 |
| -RUST ?= rust |
| 1 | +SSL_LIB ?= %SSL_LIB% |
| 2 | +SSL_CFG ?= %SSL_CFG% |
| 3 | +ifdef SSL_LIB |
| 4 | + SSL_CFG += -L "$(SSL_LIB)" |
| 5 | +endif |
4 | 6 | RUSTC ?= rustc
|
5 |
| -RUSTFLAGS ?= -O |
6 |
| -HOST_RUSTFLAGS ?= -O |
| 7 | +RUSTDOC ?= rustdoc |
| 8 | +RUSTPKG ?= rustpkg |
| 9 | +RUSTFLAGS ?= -O $(SSL_CFG) |
| 10 | +RUST_REPOSITORY ?= ../rust |
| 11 | +RUST_CTAGS ?= $(RUST_REPOSITORY)/src/etc/ctags.rust |
7 | 12 | VERSION=0.1-pre
|
8 | 13 |
|
9 |
| -libhttp_files=$(shell find $(VPATH)/src/http/ -type f -name '*.rs') \ |
10 |
| - $(VPATH)/src/http/generated/read_method.rs \ |
11 |
| - $(VPATH)/src/http/generated/status.rs |
| 14 | +codegen_files=\ |
| 15 | + src/codegen/branchify.rs \ |
| 16 | + src/codegen/main.rs \ |
| 17 | + src/codegen/read_method.rs \ |
| 18 | + src/codegen/status.rs \ |
| 19 | + |
| 20 | +libhttp_so=build/.libhttp.timestamp |
| 21 | +http_files=\ |
| 22 | + $(wildcard src/http/*.rs) \ |
| 23 | + src/http/generated/read_method.rs \ |
| 24 | + src/http/generated/status.rs \ |
| 25 | + $(wildcard src/http/headers/*.rs) \ |
| 26 | + $(wildcard src/http/client/*.rs) \ |
| 27 | + $(wildcard src/http/server/*.rs) |
| 28 | + |
| 29 | +http: $(libhttp_so) |
| 30 | + |
| 31 | +Makefile: configure Makefile.in |
| 32 | + @echo "configure or Makefile.in changed, regenerating Makefile" |
| 33 | + @DOING_RECONFIGURE=1 SSL_LIB="$(SSL_LIB)" SSL_CFG="$(SSL_CFG)" ./configure |
| 34 | + @echo |
| 35 | + @echo ====================== |
| 36 | + @echo Please run make again! |
| 37 | + @echo ====================== |
| 38 | + @echo |
| 39 | + @exit 1 |
| 40 | + |
| 41 | +$(libhttp_so): Makefile $(http_files) |
| 42 | + mkdir -p build/ |
| 43 | + $(RUSTC) $(RUSTFLAGS) src/http/lib.rs --out-dir=build |
| 44 | + @touch build/.libhttp.timestamp |
| 45 | + |
| 46 | +all: http examples docs |
| 47 | + |
| 48 | +build/codegen: $(codegen_files) |
| 49 | + mkdir -p build/ |
| 50 | + $(RUSTC) src/codegen/main.rs --out-dir=build |
| 51 | + |
| 52 | +src/http/generated: |
| 53 | + mkdir -p src/http/generated |
| 54 | + |
| 55 | +src/http/generated/%.rs: build/codegen src/http/generated |
| 56 | + build/codegen $(patsubst src/http/generated/%,%,$@) src/http/generated/ |
| 57 | + |
| 58 | +build/%:: src/%/main.rs $(libhttp_so) |
| 59 | + mkdir -p "$(dir $@)" |
| 60 | + $(RUSTC) $(RUSTFLAGS) $< -o $@ -L build/ |
12 | 61 |
|
13 |
| -all: libhttp.dummy |
| 62 | +examples: $(patsubst src/examples/%/main.rs,build/examples/%,$(wildcard src/examples/*/main.rs)) \ |
| 63 | + $(patsubst src/examples/%/main.rs,build/examples/%,$(wildcard src/examples/*/*/main.rs)) |
14 | 64 |
|
15 |
| -codegen: $(wildcard $(VPATH)/src/codegen/*.rs) |
16 |
| - $(RUSTC) $(HOST_RUSTFLAGS) $(VPATH)/src/codegen/main.rs -o codegen |
| 65 | +docs: doc/http/index.html |
17 | 66 |
|
18 |
| -$(VPATH)/src/http/generated: |
19 |
| - mkdir -p $(VPATH)/src/http/generated |
| 67 | +doc/http/index.html: $(http_files) |
| 68 | + $(RUSTDOC) src/http/lib.rs |
20 | 69 |
|
21 |
| -$(VPATH)/src/http/generated/%.rs: codegen $(VPATH)/src/http/generated |
22 |
| - ./codegen $(patsubst $(VPATH)/src/http/generated/%,%,$@) $(VPATH)/src/http/generated/ |
| 70 | +build/tests: $(http_files) |
| 71 | + $(RUSTC) $(RUSTFLAGS) --test -o build/tests src/http/lib.rs |
23 | 72 |
|
24 |
| -libhttp.dummy: $(libhttp_files) |
25 |
| - $(RUSTC) $(RUSTFLAGS) $(VPATH)/src/http/lib.rs --out-dir . |
26 |
| - touch $@ |
| 73 | +build/quicktests: $(http_files) |
| 74 | + $(RUSTC) --test -o build/quicktests src/http/lib.rs |
27 | 75 |
|
28 |
| -check: tests |
29 |
| - ./tests --test |
| 76 | +# Can't wait for everything to build, optimised too? OK, you can save some time here. |
| 77 | +quickcheck: build/quicktests |
| 78 | + build/quicktests --test |
30 | 79 |
|
31 |
| -tests: $(libhttp_files) |
32 |
| - $(RUSTC) $(RUSTFLAGS) --test -o tests $(VPATH)/src/http/lib.rs |
| 80 | +check: all build/tests |
| 81 | + build/tests --test |
33 | 82 |
|
34 |
| -clean-tests: |
35 |
| - rm -f tests |
| 83 | +clean: |
| 84 | + rm -rf src/http/generated/ src/http/codegen/codegen |
| 85 | + rm -rf build/ |
| 86 | + rm -rf bin/ .rust/ |
36 | 87 |
|
37 |
| -clean: clean-tests |
38 |
| - rm -rf $(VPATH)src/http/generated/ codegen |
39 |
| - rm -rf libhttp.dummy |
40 |
| - rm -f *.so *.dylib *.rlib *.dll |
| 88 | +TAGS: |
| 89 | + ctags -f TAGS --options=$(RUST_CTAGS) -R src |
41 | 90 |
|
42 |
| -.PHONY: all examples clean clean-tests |
| 91 | +.PHONY: all http examples docs clean check quickcheck |
0 commit comments