~ubuntu-branches/ubuntu/saucy/haproxy/saucy

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# This makefile is dedicated to darwin (and possibly other BSDs)
# You should use it this way :
#   make TARGET=os CPU=cpu
#
# Some optional components may be added, such as DLMALLOC :
#
#   make DLMALLOC_SRC=/usr/local/src/dlmalloc.c \
#        OPT_OBJS=src/dlmalloc.o

# Select target OS. TARGET must match a system for which COPTS and LIBS are
# correctly defined below.
TARGET = generic

# pass CPU=<cpu_name> to make to optimize for a particular CPU
CPU = generic
#CPU = native
#CPU = i586
#CPU = i686
#CPU = ultrasparc

# By default, we use libc's regex. WARNING! On Solaris 8/Sparc, group
# references seem broken using libc ! Use pcre instead.
REGEX=libc
#REGEX=pcre
#REGEX=static-pcre

# tools options
CC = gcc
LD = gcc

# This is the directory hosting include/pcre.h and lib/libpcre.* when REGEX=pcre
PCREDIR!= pcre-config --prefix 2>/dev/null || :
#PCREDIR=/usr/local

# This one can be changed to look for ebtree files in an external directory
EBTREE_DIR = ebtree

# This is for darwin 3.0 and above
COPTS.darwin = -DENABLE_POLL -DENABLE_KQUEUE
LIBS.darwin =

# CPU dependant optimizations
COPTS.generic = -O2
COPTS.native = -O2 -march=native
COPTS.i586 = -O2 -march=i586
COPTS.i686 = -O2 -march=i686
COPTS.ultrasparc = -O6 -mcpu=v9 -mtune=ultrasparc

# options for standard regex library
COPTS.libc=
LIBS.libc=

# options for libpcre
COPTS.pcre=-DUSE_PCRE -I$(PCREDIR)/include
LIBS.pcre=-L$(PCREDIR)/lib -lpcreposix -lpcre

# options for static libpcre
COPTS.static-pcre=-DUSE_PCRE -I$(PCREDIR)/include
LIBS.static-pcre=-L$(PCREDIR)/lib -Wl,-Bstatic -lpcreposix -lpcre -Wl,-Bdynamic

# you can enable debug arguments with "DEBUG=-g" or disable them with "DEBUG="
#DEBUG = -g -DDEBUG_MEMORY -DDEBUG_FULL
DEBUG = -g

# if small memory footprint is required, you can reduce the buffer size. There
# are 2 buffers per concurrent session, so 16 kB buffers will eat 32 MB memory
# with 1000 concurrent sessions. Putting it slightly lower than a page size
# will avoid the additionnal paramters to overflow a page. 8030 bytes is
# exactly 5.5 TCP segments of 1460 bytes.
#SMALL_OPTS =
SMALL_OPTS = -DBUFSIZE=8030 -DMAXREWRITE=1030 -DSYSTEM_MAXCONN=1024

# redefine this if you want to add some special PATH to include/libs
ADDINC =
ADDLIB =

# set some defines when needed.
# Known ones are -DENABLE_POLL
# - use -DTPROXY to compile with transparent proxy support.
DEFINE = -DTPROXY 

# May be changed to patch PAGE_SIZE on every platform when using dlmalloc
DLMALLOC_THRES=4096

# global options
TARGET_OPTS=$(COPTS.$(TARGET))
REGEX_OPTS=$(COPTS.$(REGEX))
CPU_OPTS=$(COPTS.$(CPU))
SPEC_OPTS=-fno-strict-aliasing

VERSION != cat VERSION 2>/dev/null || touch VERSION
SUBVERS != cat SUBVERS 2>/dev/null || touch SUBVERS
VERDATE != cat VERDATE 2>/dev/null || touch VERDATE

VER_OPTS := -DCONFIG_HAPROXY_VERSION=\"$(VERSION)$(SUBVERS)\" \
            -DCONFIG_HAPROXY_DATE=\"$(VERDATE)\"

COPTS   = -Iinclude -I$(EBTREE_DIR) $(ADDINC) $(CPU_OPTS) $(TARGET_OPTS) \
          $(SPEC_OPTS) $(REGEX_OPTS) $(SMALL_OPTS) $(VER_OPTS) $(DEFINE)
LIBS    = $(LIBS.$(TARGET)) $(LIBS.$(REGEX)) $(ADDLIB)
CFLAGS  = -Wall $(COPTS) $(DEBUG) -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386 -mmacosx-version-min=10.4
LDFLAGS = -g -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386 -mmacosx-version-min=10.4

OBJS = src/haproxy.o src/sessionhash.o src/base64.o src/protocols.o \
       src/uri_auth.o src/standard.o src/buffers.o src/log.o src/task.o \
       src/time.o src/fd.o src/pipe.o src/regex.o src/cfgparse.o src/server.o \
       src/checks.o src/queue.o src/client.o src/proxy.o src/proto_uxst.o \
       src/proto_http.o src/stream_sock.o src/appsession.o src/backend.o \
       src/stream_interface.o src/dumpstats.o src/proto_tcp.o \
       src/session.o src/hdr_idx.o src/ev_select.o src/signal.o \
       src/lb_chash.o src/lb_fwlc.o src/lb_fwrr.o src/lb_map.o \
       src/ev_poll.o \
       src/acl.o src/memory.o src/freq_ctr.o \
       src/auth.o src/stick_table.o src/pattern.o

EBTREE_OBJS = $(EBTREE_DIR)/ebtree.o \
              $(EBTREE_DIR)/eb32tree.o $(EBTREE_DIR)/eb64tree.o \
              $(EBTREE_DIR)/ebmbtree.o $(EBTREE_DIR)/ebsttree.o \
              $(EBTREE_DIR)/ebimtree.o $(EBTREE_DIR)/ebistree.o

all: haproxy

haproxy: $(OBJS) $(EBTREE_OBJS)
	$(LD) $(LDFLAGS) $(OBJS) $(EBTREE_OBJS) -o $@

.SUFFIXES: .c.o

.c.o:
	$(CC) $(CFLAGS) -c -o $@ $<

src/haproxy.o: src/haproxy.c
	$(CC) $(CFLAGS) -DBUILD_TARGET='"$(TARGET)"' -DBUILD_CC='"$(CC)"' \
	                -DBUILD_CPU='"$(CPU)"' -DBUILD_REGEX='"$(REGEX)"' \
	                -DBUILD_OPTS='"$(COPTS)"' -c -o $@ $<

src/dlmalloc.o: $(DLMALLOC_SRC)
	$(CC) $(CFLAGS) -DDEFAULT_MMAP_THRESHOLD=$(DLMALLOC_THRES) -c -o $@ $<

clean:
	rm -f *.[oas] src/*.[oas] ebtree/*.[oas] haproxy test
	for dir in . src include/* doc ebtree; do rm -f $$dir/*~ $$dir/*.rej $$dir/core; done
	rm -f haproxy-$(VERSION).tar.gz haproxy-$(VERSION) nohup.out gmon.out

version:
	@echo "VERSION: $(VERSION)"
	@echo "SUBVERS: $(SUBVERS)"
	@echo "VERDATE: $(VERDATE)"