|
1 | 1 | #
|
2 |
| -# Create 'crustls.lib' and 'src/crustls.h' for Windows using |
3 |
| -# 'cl' or 'clang-cl'. |
| 2 | +# A GNU Makefile that creates: |
| 3 | +# target/release/rustls_ffi.lib -- using 'cargo build' |
| 4 | +# target/client.exe |
| 5 | +# target/server.exe |
| 6 | +# |
| 7 | +# for Windows using 'cl' or 'clang-cl'. |
4 | 8 | #
|
5 | 9 | export CL=
|
6 | 10 |
|
7 |
| -CRUSTLS_LIB = target/release/crustls.lib |
| 11 | +VPATH = tests |
| 12 | + |
| 13 | +RUSTLS_LIB = target/release/rustls_ffi.lib |
| 14 | + |
| 15 | +USE_CLANG_CL ?= 0 |
8 | 16 |
|
9 |
| -USE_CLANG_CL ?= 1 |
| 17 | +green_msg = @echo -e "\e[1;32m$(strip $(1))\e[0m" |
10 | 18 |
|
11 |
| -CFLAGS = -nologo -MD -Zi -W3 -O2 -I. -Dssize_t=int -D_CRT_SECURE_NO_WARNINGS |
12 |
| -LDFLAGS = -nologo -incremental:no |
13 |
| -CARGOFLAGS = --color never --release |
| 19 | +CFLAGS = -nologo -MD -Zi -W3 -O2 \ |
| 20 | + -I./src \ |
| 21 | + -D_WIN32_WINNT=0x601 \ |
| 22 | + -Dssize_t=int \ |
| 23 | + -D_CRT_SECURE_NO_WARNINGS \ |
| 24 | + -D_CRT_NONSTDC_NO_WARNINGS |
| 25 | + |
| 26 | +LDFLAGS = -nologo -incremental:no -debug |
14 | 27 |
|
15 | 28 | ifeq ($(USE_CLANG_CL),1)
|
16 | 29 | CC = clang-cl
|
17 |
| - CFLAGS += -ferror-limit=5 |
| 30 | + CFLAGS += -ferror-limit=5 -Wno-pointer-sign |
18 | 31 | else
|
19 | 32 | CC = cl
|
20 | 33 | endif
|
21 | 34 |
|
22 |
| -all: crustls.h $(CRUSTLS_LIB) # crustls-demo.exe |
| 35 | +all: $(RUSTLS_LIB) target/client.exe target/server.exe |
23 | 36 |
|
24 | 37 | test: all
|
25 |
| - crustls-demo.exe httpbin.org /headers |
26 |
| - |
27 |
| -crustls.h: src/lib.rs |
28 |
| - cbindgen --lang C --output $@ |
29 |
| - @echo |
| 38 | + $(call green_msg, getting 'https://httpbin.org/headers' ...) |
| 39 | + target/client.exe httpbin.org 443 /headers |
| 40 | + $(call green_msg, Running 'cargo test') |
| 41 | + cargo test |
30 | 42 |
|
31 |
| -# |
32 |
| -# Currently impossible on Windows since it used epoll API. |
33 |
| -# |
34 |
| -crustls-demo.exe: main.obj $(CRUSTLS_LIB) |
35 |
| - link $(LDFLAGS) -out:$@ $^ |
36 |
| - @echo |
37 |
| - |
38 |
| -$(CRUSTLS_LIB): src/lib.rs Cargo.toml |
39 |
| - cargo build $(CARGOFLAGS) |
| 43 | +$(RUSTLS_LIB): src/lib.rs Cargo.toml |
| 44 | + $(call green_msg, Building '$@') |
| 45 | + cargo build --release |
40 | 46 | @echo
|
41 | 47 |
|
42 |
| -main.obj: src/main.c crustls.h |
| 48 | +%.obj: tests/%.c |
43 | 49 | $(CC) -Fo$@ -c $< $(CFLAGS)
|
44 | 50 | @echo
|
45 | 51 |
|
| 52 | +target/%.exe: common.obj %.obj $(RUSTLS_LIB) |
| 53 | + $(call link_EXE, $@, $^ advapi32.lib userenv.lib ws2_32.lib) |
| 54 | + |
46 | 55 | clean:
|
47 |
| - rm -f *.obj target/.rustc_info.json $(CRUSTLS_LIB) crustls.h vc1*.pdb |
| 56 | + rm -f *.obj target/.rustc_info.json $(RUSTLS_LIB) vc1*.pdb |
48 | 57 | rm -fR target/*
|
49 | 58 | rmdir target
|
50 | 59 |
|
| 60 | +define link_EXE |
| 61 | + $(call green_msg, Linking $(1)) |
| 62 | + link $(LDFLAGS) -out:$(strip $(1)) $(2) |
| 63 | + @echo |
| 64 | +endef |
| 65 | + |
0 commit comments