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)
@@ -9,57 +9,103 @@ ifeq ($(TARGET), sunos)
9
9
else ifeq ($(TARGET), darwin)
10
10
# Per https://luajit.org/install.html: If MACOSX_DEPLOYMENT_TARGET
11
11
# is not set then it's forced to 10.4, which breaks compile on Mojave.
12
- export MACOSX_DEPLOYMENT_TARGET = $(shell sw_vers -productVersion)
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
12
+ MACOSX_DEPLOYMENT_TARGET ?= $(shell sw_vers -productVersion)
13
+ export MACOSX_DEPLOYMENT_TARGET
14
+
15
+ CFLAGS += -I/usr/local/include
16
+
17
+ # Per macOS, the below options are deprecated and going to be removed.
18
+ # They cause host/minilua build process to fail, so please remove.
19
+ # LDFLAGS += -pagezero_size 10000 -image_base 100000000
20
+
16
21
else ifeq ($(TARGET), linux)
17
- CFLAGS += -D_POSIX_C_SOURCE=200809L -D_BSD_SOURCE
22
+ CFLAGS += -D_POSIX_C_SOURCE=200809L -D_DEFAULT_SOURCE
18
23
LIBS += -ldl
19
24
LDFLAGS += -Wl,-E
20
25
else ifeq ($(TARGET), freebsd)
21
26
CFLAGS += -D_DECLARE_C99_LDBL_MATH
22
27
LDFLAGS += -Wl,-E
23
28
endif
24
29
25
- SRC := wrk.c net.c ssl.c aprintf.c stats.c script.c units.c \
26
- ae.c zmalloc.c http_parser.c tinymt64.c hdr_histogram.c
27
- BIN := wrk
30
+ SRC := wrk.c \
31
+ net.c \
32
+ ssl.c \
33
+ aprintf.c \
34
+ stats.c \
35
+ script.c \
36
+ units.c \
37
+ ae.c \
38
+ zmalloc.c \
39
+ http_parser.c \
40
+ tinymt64.c \
41
+ hdr_histogram.c
42
+ BIN := wrk2
28
43
29
44
ODIR := obj
30
45
OBJ := $(patsubst % .c,$(ODIR ) /% .o,$(SRC ) ) $(ODIR ) /bytecode.o
31
46
32
47
LDIR = deps/luajit/src
33
- LIBS := -lluajit $(LIBS )
34
- CFLAGS += -I$(LDIR )
35
- LDFLAGS += -L$(LDIR )
48
+ SDIR = deps/openssl
49
+
50
+ LDIRFLAGS = BUILDMODE=static
51
+ SDIRFLAGS =
52
+
53
+ # Please do not enable static linking because
54
+ # OpenSSL seems to cause issues. This should probably
55
+ # get built and tested with MUSL for Linux.
56
+ #
57
+ # We localize these flags so that they are
58
+ # not passed into dependent projects.
59
+
60
+ ifeq ($(DEBUG ) , true)
61
+ LOCCFLAGS += -O0 -g3
62
+ LOCLDFLAGS += -g3
63
+ endif
64
+
65
+ LOCLIBS := $(LDIR ) /libluajit.a $(SDIR ) /libssl.a $(SDIR ) /libcrypto.a
66
+ CFLAGS += -I$(LDIR ) -I$(SDIR ) /include/
67
+ LDFLAGS += -L$(LDIR ) -L$(SDIR )
36
68
37
- all : $(BIN )
69
+ all : depends $(BIN )
70
+
71
+ depends :
72
+ $(GIT ) submodule update --init --recursive --force
38
73
39
74
clean :
40
75
$(RM ) $(BIN ) obj/*
41
76
@$(MAKE ) -C deps/luajit clean
77
+ @$(MAKE ) -C deps/openssl clean
42
78
43
- $(BIN ) : $(OBJ )
79
+ $(BIN ) : $(OBJ ) $( LOCLIBS )
44
80
@echo LINK $(BIN )
45
- @$(CC ) $(LDFLAGS ) -o $@ $^ $(LIBS )
81
+ @$(CC ) $(LOCLDFLAGS ) $( LDFLAGS ) -o $@ $^ $(LIBS )
46
82
47
- $(OBJ ) : config.h Makefile $( LDIR ) /libluajit.a | $(ODIR )
83
+ $(OBJ ) : config.h Makefile | $(ODIR )
48
84
49
85
$(ODIR ) :
50
86
@mkdir -p $@
51
87
52
- $(ODIR ) /bytecode.o : src/wrk.lua
88
+ $(ODIR ) /bytecode.o : src/wrk.lua $( LDIR ) /luajit
53
89
@echo LUAJIT $<
54
90
@$(SHELL ) -c ' cd $(LDIR) && ./luajit -b $(CURDIR)/$< $(CURDIR)/$@'
55
91
56
- $(ODIR ) /% .o : % .c
92
+ $(ODIR ) /% .o : % .c | $( LOCLIBS )
57
93
@echo CC $<
58
- @$(CC ) $(CFLAGS ) -c -o $@ $<
94
+ @$(CC ) $(LOCCFLAGS ) $(CFLAGS ) -c -o $@ $<
95
+
96
+ $(LDIR ) $(SDIR ) : depends
59
97
60
- $(LDIR ) /libluajit.a :
98
+ $(LDIR ) /libluajit.a : $( LDIR )
61
99
@echo Building LuaJIT...
62
- @$(MAKE ) -C $(LDIR ) BUILDMODE=static
100
+ @[ -f " $@ " ] || $(MAKE ) -C $(LDIR ) $(LDIRFLAGS )
101
+
102
+ $(LDIR ) /luajit : $(LDIR ) /libluajit.a
103
+
104
+ $(SDIR ) /libcrypto.a : $(SDIR )
105
+ @echo Building OpenSSL...
106
+ @[ -f " $@ " ] || { cd $( SDIR) && ./config $( SDIRFLAGS) && $( MAKE) ; }
107
+
108
+ $(SDIR ) /libssl.a : $(SDIR ) /libcrypto.a
63
109
64
110
.PHONY : all clean
65
111
.SUFFIXES :
0 commit comments