From: Willy Tarreau Date: Sun, 28 Nov 2010 06:41:00 +0000 (+0100) Subject: [BUILD] add the CPU=native and ARCH=32/64 build options X-Git-Tag: v1.5-dev8~362 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a5899aaad5328f692bd642c40a4069434858de9d;p=thirdparty%2Fhaproxy.git [BUILD] add the CPU=native and ARCH=32/64 build options Hank A. Paulson suggested to add CPU=native to optimize the code for the build machine. This makes sense in a lot of situations. Since it is often possible to have both 32 and 64 bits supported on recent systems, the ARCH=32 and ARCH=64 build options were also added. --- diff --git a/Makefile b/Makefile index 51bbefc6f3..fc7d85f112 100644 --- a/Makefile +++ b/Makefile @@ -78,14 +78,14 @@ TARGET = #### TARGET CPU # Use CPU= to optimize for a particular CPU, among the following # list : -# generic, i586, i686, ultrasparc, custom +# generic, native, i586, i686, ultrasparc, custom CPU = generic #### Architecture, used when not building for native architecture # Use ARCH= to force build for a specific architecture. Known # architectures will lead to "-m32" or "-m64" being added to CFLAGS and # LDFLAGS. This can be required to build 32-bit binaries on 64-bit targets. -# Currently, only x86_64, i386, i486, i586 and i686 are understood. +# Currently, only 32, 64, x86_64, i386, i486, i586 and i686 are understood. ARCH = #### Toolchain options. @@ -134,12 +134,15 @@ SILENT_DEFINE = # them. You should not have to change these options. Better use CPU_CFLAGS or # even CFLAGS instead. CPU_CFLAGS.generic = -O2 +CPU_CFLAGS.native = -O2 -march=native CPU_CFLAGS.i586 = -O2 -march=i586 CPU_CFLAGS.i686 = -O2 -march=i686 CPU_CFLAGS.ultrasparc = -O6 -mcpu=v9 -mtune=ultrasparc CPU_CFLAGS = $(CPU_CFLAGS.$(CPU)) #### ARCH dependant flags, may be overriden by CPU flags +ARCH_FLAGS.32 = -m32 +ARCH_FLAGS.64 = -m64 ARCH_FLAGS.i386 = -m32 -march=i386 ARCH_FLAGS.i486 = -m32 -march=i486 ARCH_FLAGS.i586 = -m32 -march=i586 diff --git a/Makefile.bsd b/Makefile.bsd index ca2347bd0a..5027830431 100644 --- a/Makefile.bsd +++ b/Makefile.bsd @@ -13,6 +13,7 @@ TARGET = openbsd # pass CPU= to make to optimize for a particular CPU CPU = generic +#CPU = native #CPU = i586 #CPU = i686 #CPU = ultrasparc @@ -37,6 +38,7 @@ LIBS.openbsd = # 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 diff --git a/Makefile.osx b/Makefile.osx index 7caa20b7ab..ab15e10764 100644 --- a/Makefile.osx +++ b/Makefile.osx @@ -13,6 +13,7 @@ TARGET = generic # pass CPU= to make to optimize for a particular CPU CPU = generic +#CPU = native #CPU = i586 #CPU = i686 #CPU = ultrasparc @@ -40,6 +41,7 @@ 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 diff --git a/README b/README index c4d92ff7be..d16dadd371 100644 --- a/README +++ b/README @@ -39,6 +39,7 @@ 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 + - native : use the build machine's specific processor optimizations - generic : any other processor or no specific optimization. (default) Alternatively, you may just set the CPU_CFLAGS value to the optimal GCC options @@ -47,8 +48,8 @@ for your platform. You may want to build specific target binaries which do not match your native compiler's target. This is particularly true on 64-bit systems when you want to build a 32-bit binary. Use the ARCH variable for this purpose. Right now -it only knows about a few x86 variants (i386,i486,i586,i686,x86_64) and sets --m32/-m64 as well as -march= accordingly. +it only knows about a few x86 variants (i386,i486,i586,i686,x86_64), two +generic ones (32,64) and sets -m32/-m64 as well as -march= accordingly. 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