Separated OpenBSD build from the main Makefile into a new one.
diff --git a/Makefile b/Makefile
index 1d5a4bc..63ba90f 100644
--- a/Makefile
+++ b/Makefile
@@ -9,7 +9,6 @@
 #TARGET = linux24e
 #TARGET = linux22
 #TARGET = solaris
-#TARGET = openbsd
 
 # pass CPU=<cpu_name> to make to optimize for a particular CPU
 CPU = generic
@@ -54,10 +53,6 @@
 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 @@
 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 @@
 
 # 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 @@
 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 0000000..4d3951e
--- /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=<cpu_name> 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 b889045..4941459 100644
--- a/README
+++ b/README
@@ -63,6 +63,10 @@
 
     $ 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.