diff --git a/Makefile b/Makefile index 1d5a4bc4c..63ba90fff 100644 --- a/Makefile +++ b/Makefile @@ -9,7 +9,6 @@ TARGET = linux24 #TARGET = linux24e #TARGET = linux22 #TARGET = solaris -#TARGET = openbsd # pass CPU= to make to optimize for a particular CPU CPU = generic @@ -54,10 +53,6 @@ LIBS.linux22 = COPTS.solaris = -fomit-frame-pointer -DENABLE_POLL -DFD_SETSIZE=65536 LIBS.solaris = -lnsl -lsocket -# This is for OpenBSD 3.0 -COPTS.openbsd = -DENABLE_POLL -LIBS.openbsd = - # CPU dependant optimizations COPTS.generic = -O2 COPTS.i586 = -O2 -march=i586 @@ -77,14 +72,15 @@ 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 +#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. -#SMALL_OPTS = -DBUFSIZE=8100 -DMAXREWRITE=1000 -DSYSTEM_MAXCONN=1024 +# will avoid the additionnal paramters to overflow a page. 8030 bytes is +# exactly 5.5 TCP segments of 1460 bytes. +#SMALL_OPTS = -DBUFSIZE=8030 -DMAXREWRITE=1030 -DSYSTEM_MAXCONN=1024 SMALL_OPTS = # redefine this if you want to add some special PATH to include/libs @@ -93,7 +89,10 @@ ADDLIB = # set some defines when needed. # Known ones are -DENABLE_POLL, -DENABLE_EPOLL, and -DUSE_MY_EPOLL -DEFINE = +# - use -DSTATTIME=0 to disable statistics, else specify an interval in +# milliseconds. +# - use -DTPROXY to compile with transparent proxy support. +DEFINE = -DSTATTIME=0 -DTPROXY # global options TARGET_OPTS=$(COPTS.$(TARGET)) @@ -103,18 +102,11 @@ CPU_OPTS=$(COPTS.$(CPU)) COPTS=-I. $(ADDINC) $(CPU_OPTS) $(TARGET_OPTS) $(REGEX_OPTS) $(SMALL_OPTS) $(DEFINE) LIBS=$(LIBS.$(TARGET)) $(LIBS.$(REGEX)) $(ADDLIB) -# - use -DSTATTIME=0 to disable statistics, else specify an interval in -# milliseconds. -# - use -DTPROXY to compile with transparent proxy support. -CFLAGS = -Wall $(COPTS) $(DEBUG) -DSTATTIME=0 -DTPROXY +CFLAGS = -Wall $(COPTS) $(DEBUG) LDFLAGS = -g all: haproxy -# on OpenBSD, you have to do it this way : -haproxy.bsd: src/list.o src/chtbl.o src/hashpjw.o haproxy.o - $(LD) $(LDFLAGS) -o $@ $> $(LIBS) - haproxy: src/list.o src/chtbl.o src/hashpjw.o haproxy.o $(LD) $(LDFLAGS) -o $@ $^ $(LIBS) diff --git a/Makefile.bsd b/Makefile.bsd new file mode 100644 index 000000000..4d3951ef6 --- /dev/null +++ b/Makefile.bsd @@ -0,0 +1,100 @@ +# This makefile is dedicated to OpenBSD (and possibly other BSDs) + +# Select target OS. TARGET must match a system for which COPTS and LIBS are +# correctly defined below. +TARGET = openbsd + +# pass CPU= to make to optimize for a particular CPU +CPU = generic +#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 + +PCREDIR=/usr/local + +# This is for OpenBSD 3.0 +COPTS.openbsd = -DENABLE_POLL +LIBS.openbsd = + +# CPU dependant optimizations +COPTS.generic = -O2 +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, -DENABLE_EPOLL, and -DUSE_MY_EPOLL +# - use -DSTATTIME=0 to disable statistics, else specify an interval in +# milliseconds. +# - use -DTPROXY to compile with transparent proxy support. +DEFINE = -DSTATTIME=0 -DTPROXY + +# global options +TARGET_OPTS=$(COPTS.$(TARGET)) +REGEX_OPTS=$(COPTS.$(REGEX)) +CPU_OPTS=$(COPTS.$(CPU)) + +COPTS=-I. $(ADDINC) $(CPU_OPTS) $(TARGET_OPTS) $(REGEX_OPTS) $(SMALL_OPTS) $(DEFINE) +LIBS=$(LIBS.$(TARGET)) $(LIBS.$(REGEX)) $(ADDLIB) + +CFLAGS = -Wall $(COPTS) $(DEBUG) +LDFLAGS = -g + +all: haproxy + +haproxy: src/list.o src/chtbl.o src/hashpjw.o haproxy.o + $(LD) $(LDFLAGS) -o $@ $> $(LIBS) + +src/list.o: src/list.c + $(CC) $(CFLAGS) -c -o $@ $< + +src/chtbl.o: src/chtbl.c + $(CC) $(CFLAGS) -c -o $@ $< + +src/hashpjw.o: src/hashpjw.c + $(CC) $(CFLAGS) -c -o $@ $< + +haproxy.o: haproxy.c + $(CC) $(CFLAGS) -c -o $@ $< + +clean: + rm -f *.[oas] *~ *.rej core haproxy test nohup.out gmon.out src/*.[oas] + diff --git a/README b/README index b88904576..49414596a 100644 --- a/README +++ b/README @@ -63,6 +63,10 @@ For example, I use this to build for Solaris 8 : $ make TARGET=solaris CPU=ultrasparc REGEX=static-pcre +And I build it this way on OpenBSD : + + $ make -f Makefile.bsd REGEX=pcre DEBUG= COPTS.generic="-Os -fomit-frame-pointer -mgnu" + If you need to pass other defines, includes, libraries, etc... then please check the Makefile to see which ones will be available in your case, and use the ADDINC, ADDLIB, and DEFINE variables for this.