mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-01-16 06:11:00 +01:00
The build process was getting annoying under some conditions, especially on platforms which are used to set CFLAGS, as well as those which set a lot of complex defines. The new Makefile takes care of this situation by not mixing TARGET, CPU and user values, and by making privileging the pre-setting of common variables with the ability to override them. Now CFLAGS and LDFLAGS are set by default and may be overridden without the risk of breaking useful defines. Options are better dealt with, and as a bonus, it was possible to merge the FreeBSD and OpenBSD targets into the common GNU Makefile. The report of build options by "haproxy -vv" has been slightly adapted to the new mode. Options implied by architecture are not reported, only user-specified options are. It is also possible to add options which will not be reported in order not to mangle the output when specifying dirty informations such as URLs... The Makefile was copiously documented and it should be easier to build for any target now. Backwards compatibility with older build processes was kept, and warnings are emitted for deprecated build options.
-------------------
H A - P r o x y
How to build it
-------------------
version 1.2.7
willy tarreau
2005/10/25
To build haproxy, you will need :
- GNU make. Neither Solaris nor OpenBSD's make work with this makefile.
- GCC between 2.91 and 3.4. Others may work, but not tested.
- GNU ld
Also, you might want to build with libpcre support, which will provide a very
efficient regex implementation and will also fix some badness on Solaris's one.
To build haproxy, you have to choose your target OS amongst the following ones
and assign it to the TARGET variable :
- linux24 for Linux 2.4 and above (default)
- linux24e for Linux 2.4 with support for epoll
- linux26 for Linux 2.6 and above
- linux22 for Linux 2.2
- solaris for Solaris 8 or 10 (others untested)
- openbsd for OpenBSD 3.1 to 3.7 (others untested)
- generic for any other OS.
You may also choose your CPU to benefit from some optimizations. This is
particularly important on UltraSparc machines. For this, you can assign
one of the following choices to the CPU variable :
- i686 for intel PentiumPro, Pentium 2 and above, AMD Athlon
- i586 for intel Pentium, AMD K6, VIA C3.
- ultrasparc : Sun UltraSparc I/II/III/IV processor
- generic : any other processor or no specific optimization. (default)
If your system supports PCRE (Perl Compatible Regular Expressions), then you
really should build with libpcre which is between 2 and 10 times faster than
other libc implementations. Regex are used for header processing (deletion,
rewriting, allow, deny). The only inconvenient of libpcre is that it is not
yet widely spread, so if you build for other systems, you might get into
trouble if they don't have the dynamic library. In this situation, you should
statically link libpcre into haproxy so that it will not be necessary to
install it on target systems. Available options for the REGEX variable are :
- libc to use your OS libc's standard regex implemntation (default).
Warning! group references on Solaris seem broken. Use static-pcre whenever
possible.
- pcre to use libpcre, in whatever form it is available on your system
(shared or static)
- static-pcre to use a static version of libpcre even if the dynamic one is
available. This will enhance portability.
By default, the DEBUG variable is set to '-g' to enable debug symbols. It is
not wise to disable it on uncommon systems, because it's often the only way to
get a complete core when you need one. Otherwise, you can set DEBUG to '-s' to
strip the binary.
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.
-- end
Description
Languages
C
98%
Shell
0.9%
Makefile
0.5%
Lua
0.2%
Python
0.2%