1
- CFLAGS := -std=c99 - Wall -O2 -D_REENTRANT
2
- LIBS := -lpthread -lm -lcrypto -lssl
3
-
1
+ CFLAGS := -Wall -O2 -D_REENTRANT
2
+ LIBS := -lpthread -lm
3
+ GIT := git
4
4
TARGET := $(shell uname -s | tr '[A-Z]' '[a-z]' 2>/dev/null || echo unknown)
5
5
6
6
ifeq ($(TARGET ) , sunos)
@@ -11,10 +11,9 @@ else ifeq ($(TARGET), darwin)
11
11
# is not set then it's forced to 10.4, which breaks compile on Mojave.
12
12
export MACOSX_DEPLOYMENT_TARGET = $(shell sw_vers -productVersion)
13
13
LDFLAGS += -pagezero_size 10000 -image_base 100000000
14
- LIBS += -L/usr/local/opt/openssl/lib
15
- CFLAGS += -I/usr/local/include -I/usr/local/opt/openssl/include
14
+ CFLAGS += -I/usr/local/include
16
15
else ifeq ($(TARGET), linux)
17
- CFLAGS += -D_POSIX_C_SOURCE=200809L -D_BSD_SOURCE
16
+ CFLAGS += -D_POSIX_C_SOURCE=200809L -D_DEFAULT_SOURCE
18
17
LIBS += -ldl
19
18
LDFLAGS += -Wl,-E
20
19
else ifeq ($(TARGET), freebsd)
@@ -24,42 +23,71 @@ endif
24
23
25
24
SRC := wrk.c net.c ssl.c aprintf.c stats.c script.c units.c \
26
25
ae.c zmalloc.c http_parser.c tinymt64.c hdr_histogram.c
27
- BIN := wrk
26
+ BIN := wrk2
28
27
29
28
ODIR := obj
30
29
OBJ := $(patsubst % .c,$(ODIR ) /% .o,$(SRC ) ) $(ODIR ) /bytecode.o
31
30
32
31
LDIR = deps/luajit/src
33
- LIBS := -lluajit $(LIBS )
34
- CFLAGS += -I$(LDIR )
35
- LDFLAGS += -L$(LDIR )
32
+ SDIR = deps/openssl
33
+
34
+ LDIRFLAGS = BUILDMODE=static
35
+ SDIRFLAGS =
36
+
37
+ # Please do not enable static linking because
38
+ # OpenSSL seems to cause issues. This should probably
39
+ # get built and tested with MUSL for Linux.
40
+ #
41
+ # We localize these flags so that they are
42
+ # not passed into dependent projects.
43
+
44
+ ifeq ($(DEBUG ) , true)
45
+ LOCCFLAGS += -O0 -g3
46
+ LOCLDFLAGS += -g3
47
+ endif
36
48
37
- all : $(BIN )
49
+ LOCLIBS := $(LDIR ) /libluajit.a $(SDIR ) /libssl.a $(SDIR ) /libcrypto.a
50
+ CFLAGS += -I$(LDIR ) -I$(SDIR ) /include/
51
+ LDFLAGS += -L$(LDIR ) -L$(SDIR )
52
+
53
+ all : depends $(BIN )
54
+
55
+ depends :
56
+ $(GIT ) submodule update --init --recursive --force
38
57
39
58
clean :
40
59
$(RM ) $(BIN ) obj/*
41
60
@$(MAKE ) -C deps/luajit clean
61
+ @$(MAKE ) -C deps/openssl clean
42
62
43
- $(BIN ) : $(OBJ )
63
+ $(BIN ) : $(OBJ ) $( LOCLIBS )
44
64
@echo LINK $(BIN )
45
- @$(CC ) $(LDFLAGS ) -o $@ $^ $(LIBS )
65
+ @$(CC ) $(LOCLDFLAGS ) $( LDFLAGS ) -o $@ $^ $(LIBS )
46
66
47
- $(OBJ ) : config.h Makefile $( LDIR ) /libluajit.a | $(ODIR )
67
+ $(OBJ ) : config.h Makefile | $(ODIR )
48
68
49
69
$(ODIR ) :
50
70
@mkdir -p $@
51
71
52
- $(ODIR ) /bytecode.o : src/wrk.lua
72
+ $(ODIR ) /bytecode.o : src/wrk.lua $( LDIR ) /luajit
53
73
@echo LUAJIT $<
54
74
@$(SHELL ) -c ' cd $(LDIR) && ./luajit -b $(CURDIR)/$< $(CURDIR)/$@'
55
75
56
76
$(ODIR ) /% .o : % .c
57
77
@echo CC $<
58
- @$(CC ) $(CFLAGS ) -c -o $@ $<
78
+ @$(CC ) $(LOCCFLAGS ) $(CFLAGS ) -c -o $@ $<
79
+
80
+ $(LDIR ) $(SDIR ) : depends
59
81
60
- $(LDIR ) /libluajit.a :
82
+ $(LDIR ) /luajit $( LDIR ) / libluajit.a : $( LDIR )
61
83
@echo Building LuaJIT...
62
- @$(MAKE ) -C $(LDIR ) BUILDMODE=static
84
+ @$(MAKE ) -C $(LDIR ) $(LDIRFLAGS )
85
+
86
+ $(SDIR ) /libcrypto.a : $(SDIR )
87
+ @echo Building OpenSSL...
88
+ @cd $(SDIR ) && ./config $(SDIRFLAGS ) && $(MAKE )
89
+
90
+ $(SDIR ) /libssl.a : $(SDIR ) /libcrypto.a
63
91
64
92
.PHONY : all clean
65
93
.SUFFIXES :
0 commit comments