]> git.proxmox.com Git - ceph.git/blame - ceph/src/isa-l/configure.ac
import quincy beta 17.1.0
[ceph.git] / ceph / src / isa-l / configure.ac
CommitLineData
7c673cae
FG
1# -*- Autoconf -*-
2# Process this file with autoconf to produce a configure script.
3
4AC_PREREQ(2.69)
5AC_INIT([libisal],
20effc67 6 [2.30.0],
7c673cae
FG
7 [sg.support.isal@intel.com],
8 [isa-l],
9 [http://01.org/storage-acceleration-library])
10AC_CONFIG_SRCDIR([])
11AC_CONFIG_AUX_DIR([build-aux])
12AM_INIT_AUTOMAKE([
13 foreign
14 1.11
15 -Wall
16 -Wno-portability
17 silent-rules
18 tar-pax
19 no-dist-gzip
20 dist-xz
21 subdir-objects
22])
23AM_PROG_AS
24
224ce89b
WB
25AC_CANONICAL_HOST
26CPU=""
27AS_CASE([$host_cpu],
28 [x86_64], [CPU="x86_64"],
29 [amd64], [CPU="x86_64"],
30 [i?86], [CPU="x86_32"],
f91f0fd5
TL
31 [aarch64], [CPU="aarch64"],
32 [arm64], [CPU="aarch64"],
33 [powerpc64le], [CPU="ppc64le"],
34 [ppc64le], [CPU="ppc64le"],
224ce89b
WB
35)
36AM_CONDITIONAL([CPU_X86_64], [test "$CPU" = "x86_64"])
37AM_CONDITIONAL([CPU_X86_32], [test "$CPU" = "x86_32"])
f91f0fd5
TL
38AM_CONDITIONAL([CPU_AARCH64], [test "$CPU" = "aarch64"])
39AM_CONDITIONAL([CPU_PPC64LE], [test "$CPU" = "ppc64le"])
224ce89b
WB
40AM_CONDITIONAL([CPU_UNDEFINED], [test "x$CPU" = "x"])
41
f91f0fd5
TL
42if test "$CPU" = "x86_64"; then
43 is_x86=yes
44else
45 if test "$CPU" = "x86_32"; then
46 is_x86=yes
47 else
48 is_x86=no
49 fi
50fi
51
7c673cae
FG
52# Check for programs
53AC_PROG_CC_STDC
20effc67 54AC_PROG_LD
7c673cae
FG
55AC_USE_SYSTEM_EXTENSIONS
56AM_SILENT_RULES([yes])
57LT_INIT
58AC_PREFIX_DEFAULT([/usr])
59AC_PROG_SED
60AC_PROG_MKDIR_P
61
62# Options
63AC_ARG_ENABLE([debug],
64 AS_HELP_STRING([--enable-debug], [enable debug messages @<:@default=disabled@:>@]),
65 [], [enable_debug=no])
66AS_IF([test "x$enable_debug" = "xyes"], [
67 AC_DEFINE(ENABLE_DEBUG, [1], [Debug messages.])
68])
69
f91f0fd5
TL
70# If this build is for x86, look for yasm and nasm
71if test x"$is_x86" = x"yes"; then
20effc67
TL
72 AC_MSG_CHECKING([whether Intel CET is enabled])
73 AC_TRY_COMPILE([],[
74#ifndef __CET__
75# error CET is not enabled
76#endif],
77 [AC_MSG_RESULT([yes])
78 intel_cet_enabled=yes],
79 [AC_MSG_RESULT([no])
80 intel_cet_enabled=no])
81
82
f91f0fd5
TL
83 # Pick an assembler yasm or nasm
84 if test x"$AS" = x""; then
85 # Check for yasm and yasm features
86 yasm_feature_level=0
87 AC_CHECK_PROG(HAVE_YASM, yasm, yes, no)
88 if test "$HAVE_YASM" = "yes"; then
89 yasm_feature_level=1
7c673cae 90 else
f91f0fd5
TL
91 AC_MSG_RESULT([no yasm])
92 fi
93 if test x"$yasm_feature_level" = x"1"; then
94 AC_MSG_CHECKING([for modern yasm])
95 AC_LANG_CONFTEST([AC_LANG_SOURCE([[vmovdqa %xmm0, %xmm1;]])])
96 if yasm -f elf64 -p gas conftest.c ; then
97 AC_MSG_RESULT([yes])
98 yasm_feature_level=4
99 else
100 AC_MSG_RESULT([no])
101 fi
102 fi
103 if test x"$yasm_feature_level" = x"4"; then
104 AC_MSG_CHECKING([for optional yasm AVX512 support])
105 AC_LANG_CONFTEST([AC_LANG_SOURCE([[vpshufb %zmm0, %zmm1, %zmm2;]])])
106 if yasm -f elf64 -p gas conftest.c 2> /dev/null; then
107 AC_MSG_RESULT([yes])
108 yasm_feature_level=6
109 else
110 AC_MSG_RESULT([no])
111 fi
112 fi
113 if test x"$yasm_feature_level" = x"6"; then
114 AC_MSG_CHECKING([for additional yasm AVX512 support])
115 AC_LANG_CONFTEST([AC_LANG_SOURCE([[vpcompressb zmm0, k1, zmm1;]])])
116 sed -i -e '/vpcompressb/!d' conftest.c
117 if yasm -f elf64 conftest.c 2> /dev/null; then
118 AC_MSG_RESULT([yes])
119 yasm_feature_level=10
120 else
121 AC_MSG_RESULT([no])
122 fi
7c673cae 123 fi
7c673cae 124
f91f0fd5
TL
125 # Check for nasm and nasm features
126 nasm_feature_level=0
127 AC_CHECK_PROG(HAVE_NASM, nasm, yes, no)
128 if test "$HAVE_NASM" = "yes"; then
129 nasm_feature_level=1
130 else
131 AC_MSG_RESULT([no nasm])
132 fi
133
134 if test x"$nasm_feature_level" = x"1"; then
135 AC_MSG_CHECKING([for modern nasm])
136 AC_LANG_CONFTEST([AC_LANG_SOURCE([[pblendvb xmm2, xmm1;]])])
137 sed -i -e '/pblendvb/!d' conftest.c
138 if nasm -f elf64 conftest.c 2> /dev/null; then
139 AC_MSG_RESULT([yes])
140 nasm_feature_level=4
141 else
142 AC_MSG_RESULT([no])
143 fi
144 fi
145 if test x"$nasm_feature_level" = x"4"; then
146 AC_MSG_CHECKING([for optional nasm AVX512 support])
147 AC_LANG_CONFTEST([AC_LANG_SOURCE([[vinserti32x8 zmm0, ymm1, 1;]])])
148 sed -i -e '/vinsert/!d' conftest.c
149 if nasm -f elf64 conftest.c 2> /dev/null; then
150 AC_MSG_RESULT([yes])
151 nasm_feature_level=6
152 else
153 AC_MSG_RESULT([no])
154 fi
155 fi
156 if test x"$nasm_feature_level" = x"6"; then
157 AC_MSG_CHECKING([for additional nasm AVX512 support])
158 AC_LANG_CONFTEST([AC_LANG_SOURCE([[vpcompressb zmm0 {k1}, zmm1;]])])
159 sed -i -e '/vpcompressb/!d' conftest.c
160 if nasm -f elf64 conftest.c 2> /dev/null; then
161 AC_MSG_RESULT([yes])
162 nasm_feature_level=10
163 else
164 AC_MSG_RESULT([no])
165 fi
166 fi
167
168 if test $nasm_feature_level -ge $yasm_feature_level ; then
169 AS=nasm
170 as_feature_level=$nasm_feature_level
7c673cae 171 else
f91f0fd5
TL
172 AS=yasm
173 as_feature_level=$yasm_feature_level
7c673cae 174 fi
f91f0fd5 175
7c673cae 176 else
f91f0fd5
TL
177 # Check for $AS supported features
178 as_feature_level=0
179 AC_CHECK_PROG(HAVE_AS, $AS, yes, no)
180 if test "$HAVE_AS" = "yes"; then
181 as_feature_level=1
182 else
183 AC_MSG_ERROR([no $AS])
184 fi
185
186 if test x"$as_feature_level" = x"1"; then
187 AC_MSG_CHECKING([for modern $AS])
188 AC_LANG_CONFTEST([AC_LANG_SOURCE([[pblendvb xmm2, xmm1;]])])
189 sed -i -e '/pblendvb/!d' conftest.c
190 if $AS -f elf64 conftest.c 2> /dev/null; then
191 AC_MSG_RESULT([yes])
192 as_feature_level=4
193 else
194 AC_MSG_RESULT([no])
195 fi
196 fi
197 if test x"$as_feature_level" = x"4"; then
198 AC_MSG_CHECKING([for optional as AVX512 support])
199 AC_LANG_CONFTEST([AC_LANG_SOURCE([[vinserti32x8 zmm0, ymm1, 1;]])])
200 sed -i -e '/vinsert/!d' conftest.c
201 if $AS -f elf64 conftest.c 2> /dev/null; then
202 AC_MSG_RESULT([yes])
203 as_feature_level=6
204 else
205 AC_MSG_RESULT([no])
206 fi
207 fi
208 if test x"$as_feature_level" = x"6"; then
209 AC_MSG_CHECKING([for additional as AVX512 support])
210 AC_LANG_CONFTEST([AC_LANG_SOURCE([[vpcompressb zmm0, k1, zmm1;]])])
211 sed -i -e '/vpcompressb/!d' conftest.c
212 if $AS -f elf64 conftest.c 2> /dev/null; then
213 AC_MSG_RESULT([yes])
214 as_feature_level=10
215 else
216 AC_MSG_RESULT([no])
217 fi
218 fi
7c673cae 219 fi
7c673cae 220
f91f0fd5
TL
221 if test $as_feature_level -lt 2 ; then
222 AC_MSG_ERROR([No modern nasm or yasm found as required. Nasm should be v2.11.01 or later (v2.13 for AVX512) and yasm should be 1.2.0 or later.])
223 fi
224
225 case $host_os in
226 *linux*) arch=linux yasm_args="-f elf64";;
227 *darwin*) arch=darwin yasm_args="-f macho64 --prefix=_ ";;
228 *netbsd*) arch=netbsd yasm_args="-f elf64";;
229 *mingw*) arch=mingw yasm_args="-f win64";;
230 *) arch=unknown yasm_args="-f elf64";;
231 esac
232
233 # Fix for nasm missing windows features
234 if test x"$arch" = x"mingw"; then
7c673cae 235 AS=yasm
f91f0fd5
TL
236 as_feature_level=$yasm_feature_level
237 if test $as_feature_level -lt 2 ; then
238 AC_MSG_ERROR([Mingw build requires Yasm 1.2.0 or later.])
239 fi
240 fi
241
242 AC_DEFINE_UNQUOTED(AS_FEATURE_LEVEL, [$as_feature_level], [Assembler feature level.])
243 if test $as_feature_level -ge 6 ; then
244 AC_DEFINE(HAVE_AS_KNOWS_AVX512, [1], [Assembler can do AVX512.])
245 have_as_knows_avx512=yes
7c673cae 246 else
f91f0fd5 247 AC_MSG_RESULT([Assembler does not understand AVX512 opcodes. Consider upgrading for best performance.])
7c673cae 248 fi
7c673cae 249
f91f0fd5
TL
250 AM_CONDITIONAL(USE_YASM, test x"$AS" = x"yasm")
251 AM_CONDITIONAL(USE_NASM, test x"$AS" = x"nasm")
252 AM_CONDITIONAL(WITH_AVX512, test x"$have_as_knows_avx512" = x"yes")
253 AC_SUBST([yasm_args])
254 AM_CONDITIONAL(DARWIN, test x"$arch" = x"darwin")
255 AC_MSG_RESULT([Using $AS args target "$arch" "$yasm_args"])
7c673cae 256else
f91f0fd5
TL
257 # Disable below conditionals if not x86
258 AM_CONDITIONAL(USE_YASM, test "x" = "y")
259 AM_CONDITIONAL(USE_NASM, test "x" = "y")
260 AM_CONDITIONAL(WITH_AVX512, test "x" = "y")
261 AM_CONDITIONAL(DARWIN, test "x" = "y")
7c673cae 262fi
7c673cae 263
20effc67 264AM_CONDITIONAL(INTEL_CET_ENABLED, [test x"$intel_cet_enabled" = x"yes"])
7c673cae
FG
265
266# Check for header files
267AC_CHECK_HEADERS([limits.h stdint.h stdlib.h string.h])
268
269# Checks for typedefs, structures, and compiler characteristics.
270AC_C_INLINE
271AC_TYPE_SIZE_T
272AC_TYPE_UINT16_T
273AC_TYPE_UINT32_T
274AC_TYPE_UINT64_T
275AC_TYPE_UINT8_T
276
277# Checks for library functions.
278AC_FUNC_MALLOC # Used only in tests
f91f0fd5 279AC_CHECK_FUNCS([memmove memset getopt])
7c673cae
FG
280
281my_CFLAGS="\
282-Wall \
283-Wchar-subscripts \
284-Wformat-security \
285-Wnested-externs \
286-Wpointer-arith \
287-Wshadow \
288-Wstrict-prototypes \
289-Wtype-limits \
290"
291AC_SUBST([my_CFLAGS])
292
293AC_CONFIG_FILES([\
294 Makefile\
295 libisal.pc
296])
297
298AC_OUTPUT
299AC_MSG_RESULT([
300 $PACKAGE $VERSION
301 =====
302
303 prefix: ${prefix}
304 sysconfdir: ${sysconfdir}
305 libdir: ${libdir}
306 includedir: ${includedir}
307
308 compiler: ${CC}
309 cflags: ${CFLAGS}
310 ldflags: ${LDFLAGS}
311
312 debug: ${enable_debug}
313])