blob: 118a6770f63ee5bafeef432f28cef138a44763da [file] [log] [blame]
Susumu Yata3b5f9642016-01-28 23:52:25 +09001# -*- Autoconf -*-
2# Process this file with autoconf to produce a configure script.
3
4AC_PREREQ([2.67])
Susumu Yata7f940de2018-05-20 05:00:35 +09005AC_INIT([marisa], [0.2.6], [susumu.yata@gmail.com])
Susumu Yata30fe22e2016-03-17 00:08:03 +09006AC_CONFIG_SRCDIR([include/marisa.h])
Susumu Yatabb5b2062016-03-18 03:32:03 +09007AM_INIT_AUTOMAKE([foreign])
Susumu Yata3b5f9642016-01-28 23:52:25 +09008
9# Checks for programs.
10LT_INIT
11AC_PROG_CXX
12AC_PROG_INSTALL
13
14AC_CONFIG_MACRO_DIR([m4])
15
J.Wd93f1b62017-06-01 16:57:46 +080016# Macros for SSE availability check.
17AC_DEFUN([MARISA_ENABLE_SSE2],
18 [AC_EGREP_CPP([yes], [
19#ifdef __SSE2__
20yes
21#endif
22 ], [enable_sse2="yes"], [enable_sse2="no"])])
23AC_DEFUN([MARISA_ENABLE_SSE3],
24 [AC_EGREP_CPP([yes], [
25#ifdef __SSE3__
26yes
27#endif
28 ], [enable_sse3="yes"], [enable_sse3="no"])])
29AC_DEFUN([MARISA_ENABLE_SSSE3],
30 [AC_EGREP_CPP([yes], [
31#ifdef __SSSE3__
32yes
33#endif
34 ], [enable_ssse3="yes"], [enable_ssse3="no"])])
35AC_DEFUN([MARISA_ENABLE_SSE4_1],
36 [AC_EGREP_CPP([yes], [
37#ifdef __SSE4_1__
38yes
39#endif
40 ], [enable_sse4_1="yes"], [enable_sse4_1="no"])])
41AC_DEFUN([MARISA_ENABLE_SSE4_2],
42 [AC_EGREP_CPP([yes], [
43#ifdef __SSE4_2__
44yes
45#endif
46 ], [enable_sse4_2="yes"], [enable_sse4_2="no"])])
47AC_DEFUN([MARISA_ENABLE_SSE4],
48 [AC_EGREP_CPP([yes], [
49#if defined(__POPCNT__) && defined(__SSE4_2__)
50yes
51#endif
52 ], [enable_sse4="yes"], [enable_sse4="no"])])
53AC_DEFUN([MARISA_ENABLE_SSE4A],
54 [AC_EGREP_CPP([yes], [
55#ifdef __SSE4A__
56yes
57#endif
58 ], [enable_sse4a="yes"], [enable_sse4a="no"])])
59AC_DEFUN([MARISA_ENABLE_POPCNT],
60 [AC_EGREP_CPP([yes], [
61#ifdef __POPCNT__
62yes
63#endif
64 ], [enable_popcnt="yes"], [enable_popcnt="no"])])
Susumu Yatabbcff462019-10-13 22:27:07 +090065AC_DEFUN([MARISA_ENABLE_BMI],
66 [AC_EGREP_CPP([yes], [
67#ifdef __BMI__
68yes
69#endif
70 ], [enable_bmi="yes"], [enable_bmi="no"])])
71AC_DEFUN([MARISA_ENABLE_BMI2],
72 [AC_EGREP_CPP([yes], [
73#ifdef __BMI2__
74yes
75#endif
76 ], [enable_bmi2="yes"], [enable_bmi2="no"])])
J.Wd93f1b62017-06-01 16:57:46 +080077
J.W4a23d6d2017-06-01 17:00:48 +080078# Enable native cpu instructions.
79AC_MSG_CHECKING([whether to enable optimization for native cpu])
80AC_ARG_ENABLE([native-code],
81 [AS_HELP_STRING([--enable-native-code],
82 [generate instructions for native cpu [default=no]])],
83 [],
84 [enable_native_code="no"])
85AS_IF([test "x${enable_native_code}" != "xno"], [
J.W4a23d6d2017-06-01 17:00:48 +080086 CPPFLAGS="$CPPFLAGS -march=native"
J.W4a23d6d2017-06-01 17:00:48 +080087 MARISA_ENABLE_SSE2
88 MARISA_ENABLE_SSE3
89 MARISA_ENABLE_SSE4_1
90 MARISA_ENABLE_SSE4_2
91 MARISA_ENABLE_SSE4
92 MARISA_ENABLE_SSE4A
93 MARISA_ENABLE_POPCNT
Susumu Yatabbcff462019-10-13 22:27:07 +090094 MARISA_ENABLE_BMI
95 MARISA_ENABLE_BMI2
J.W4a23d6d2017-06-01 17:00:48 +080096])
97AC_MSG_RESULT([${enable_native_code}])
98
Susumu Yata3b5f9642016-01-28 23:52:25 +090099# Checks for SSE availability.
100AC_MSG_CHECKING([whether to use SSE2])
101AC_ARG_ENABLE([sse2],
102 [AS_HELP_STRING([--enable-sse2],
103 [use SSE2 [default=no]])],
104 [],
105 [enable_sse2="no"])
Susumu Yatabbcff462019-10-13 22:27:07 +0900106AS_IF([test "x${enable_sse2}" != "xno"], [enable_sse2="yes"])
Susumu Yata3b5f9642016-01-28 23:52:25 +0900107AC_MSG_RESULT([${enable_sse2}])
108
109AC_MSG_CHECKING([whether to use SSE3])
110AC_ARG_ENABLE([sse3],
111 [AS_HELP_STRING([--enable-sse3],
112 [use SSE3 [default=no]])],
113 [],
114 [enable_sse3="no"])
Susumu Yatabbcff462019-10-13 22:27:07 +0900115AS_IF([test "x${enable_sse3}" != "xno"], [enable_sse3="yes"])
Susumu Yata3b5f9642016-01-28 23:52:25 +0900116AC_MSG_RESULT([${enable_sse3}])
117
118AC_MSG_CHECKING([whether to use SSSE3])
119AC_ARG_ENABLE([ssse3],
120 [AS_HELP_STRING([--enable-ssse3],
121 [use SSSE3 [default=no]])],
122 [],
123 [enable_ssse3="no"])
Susumu Yatabbcff462019-10-13 22:27:07 +0900124AS_IF([test "x${enable_ssse3}" != "xno"], [enable_ssse3="yes"])
Susumu Yata3b5f9642016-01-28 23:52:25 +0900125AC_MSG_RESULT([${enable_ssse3}])
126
127AC_MSG_CHECKING([whether to use SSE4.1])
128AC_ARG_ENABLE([sse4.1],
129 [AS_HELP_STRING([--enable-sse4.1],
130 [use SSE4.1 [default=no]])],
131 [],
132 [enable_sse4_1="no"])
Susumu Yatabbcff462019-10-13 22:27:07 +0900133AS_IF([test "x${enable_sse4_1}" != "xno"], [enable_sse4_1="yes"])
Susumu Yata3b5f9642016-01-28 23:52:25 +0900134AC_MSG_RESULT([${enable_sse4_1}])
135
136AC_MSG_CHECKING([whether to use SSE4.2])
137AC_ARG_ENABLE([sse4.2],
138 [AS_HELP_STRING([--enable-sse4.2],
139 [use SSE4.2 [default=no]])],
140 [],
141 [enable_sse4_2="no"])
Susumu Yatabbcff462019-10-13 22:27:07 +0900142AS_IF([test "x${enable_sse4_2}" != "xno"], [enable_sse4_2="yes"])
Susumu Yata3b5f9642016-01-28 23:52:25 +0900143AC_MSG_RESULT([${enable_sse4_2}])
144
145AC_MSG_CHECKING([whether to use SSE4])
146AC_ARG_ENABLE([sse4],
147 [AS_HELP_STRING([--enable-sse4],
148 [use SSE4 [default=no]])],
149 [],
150 [enable_sse4="no"])
Susumu Yatabbcff462019-10-13 22:27:07 +0900151AS_IF([test "x${enable_sse4}" != "xno"], [enable_sse4="yes"])
Susumu Yata3b5f9642016-01-28 23:52:25 +0900152AC_MSG_RESULT([${enable_sse4}])
153
154AC_MSG_CHECKING([whether to use SSE4a])
155AC_ARG_ENABLE([sse4a],
156 [AS_HELP_STRING([--enable-sse4a],
157 [use SSE4a [default=no]])],
158 [],
159 [enable_sse4a="no"])
Susumu Yatabbcff462019-10-13 22:27:07 +0900160AS_IF([test "x${enable_sse4a}" != "xno"], [enable_sse4a="yes"])
Susumu Yata3b5f9642016-01-28 23:52:25 +0900161AC_MSG_RESULT([${enable_sse4a}])
162
163AC_MSG_CHECKING([whether to use popcnt])
164AC_ARG_ENABLE([popcnt],
165 [AS_HELP_STRING([--enable-popcnt],
166 [use POPCNT [default=no]])],
167 [],
168 [enable_popcnt="no"])
Susumu Yatabbcff462019-10-13 22:27:07 +0900169AS_IF([test "x${enable_popcnt}" != "xno"], [enable_popcnt="yes"])
Susumu Yata3b5f9642016-01-28 23:52:25 +0900170AC_MSG_RESULT([${enable_popcnt}])
171
Susumu Yatabbcff462019-10-13 22:27:07 +0900172AC_MSG_CHECKING([whether to use BMI])
173AC_ARG_ENABLE([bmi],
174 [AS_HELP_STRING([--enable-bmi],
175 [use BMI [default=no]])],
176 [],
177 [enable_bmi="no"])
178AS_IF([test "x${enable_bmi}" != "xno"], [enable_bmi="yes"])
179AC_MSG_RESULT([${enable_bmi}])
180
181AC_MSG_CHECKING([whether to use BMI2])
182AC_ARG_ENABLE([bmi2],
183 [AS_HELP_STRING([--enable-bmi2],
184 [use BMI2 [default=no]])],
185 [],
186 [enable_bmi2="no"])
187AS_IF([test "x${enable_bmi2}" != "xno"], [enable_bmi2="yes"])
188AC_MSG_RESULT([${enable_bmi2}])
189
190AS_IF([test "x${enable_bmi2}" != "xno"], [
191 enable_bmi="yes"
192])
193AS_IF([test "x${enable_bmi}" != "xno"], [
194 enable_sse4="yes"
195])
Susumu Yata3b5f9642016-01-28 23:52:25 +0900196AS_IF([test "x${enable_popcnt}" != "xno"], [
197 enable_sse3="yes"
198])
199AS_IF([test "x${enable_sse4a}" != "xno"], [
200 enable_popcnt="yes"
201 enable_sse3="yes"
202])
203AS_IF([test "x${enable_sse4}" != "xno"], [
204 enable_popcnt="yes"
205 enable_sse4_2="yes"
206])
207AS_IF([test "x${enable_sse4_2}" != "xno"], [
208 enable_popcnt="yes"
209 enable_sse4_1="yes"
210])
211AS_IF([test "x${enable_sse4_1}" != "xno"], [
212 enable_ssse3="yes"
213])
214AS_IF([test "x${enable_ssse3}" != "xno"], [
215 enable_sse3="yes"
216])
217AS_IF([test "x${enable_sse3}" != "xno"], [
218 enable_sse2="yes"
219])
220
221AS_IF([test "x${enable_popcnt}" != "xno"], [
222 CXXFLAGS="$CXXFLAGS -DMARISA_USE_POPCNT -mpopcnt"
223])
Susumu Yatabbcff462019-10-13 22:27:07 +0900224if test "x${enable_bmi2}" != "xno"; then
225 CXXFLAGS="$CXXFLAGS -DMARISA_USE_BMI2 -mbmi2 -msse4"
226elif test "x${enable_bmi}" != "xno"; then
227 CXXFLAGS="$CXXFLAGS -DMARISA_USE_BMI -mbmi -msse4"
228elif test "x${enable_sse4a}" != "xno"; then
Susumu Yata3b5f9642016-01-28 23:52:25 +0900229 CXXFLAGS="$CXXFLAGS -DMARISA_USE_SSE4A -msse4a"
230elif test "x${enable_sse4}" != "xno"; then
231 CXXFLAGS="$CXXFLAGS -DMARISA_USE_SSE4 -msse4"
232elif test "x${enable_sse4_2}" != "xno"; then
233 CXXFLAGS="$CXXFLAGS -DMARISA_USE_SSE4_2 -msse4.2"
234elif test "x${enable_sse4_1}" != "xno"; then
235 CXXFLAGS="$CXXFLAGS -DMARISA_USE_SSE4_1 -msse4.1"
236elif test "x${enable_ssse3}" != "xno"; then
237 CXXFLAGS="$CXXFLAGS -DMARISA_USE_SSSE3 -mssse3"
238elif test "x${enable_sse3}" != "xno"; then
239 CXXFLAGS="$CXXFLAGS -DMARISA_USE_SSE3 -msse3"
240elif test "x${enable_sse2}" != "xno"; then
241 CXXFLAGS="$CXXFLAGS -DMARISA_USE_SSE2 -msse2"
242fi
243
244AC_CONFIG_FILES([Makefile
245 marisa.pc
Susumu Yata30fe22e2016-03-17 00:08:03 +0900246 include/Makefile
247 include/marisa/Makefile
Susumu Yata3b5f9642016-01-28 23:52:25 +0900248 lib/Makefile
Susumu Yata30fe22e2016-03-17 00:08:03 +0900249 lib/marisa/Makefile
Susumu Yata2af0f622016-03-18 03:34:12 +0900250 lib/marisa/grimoire/Makefile
Susumu Yata92f1bf22016-03-18 03:47:34 +0900251 lib/marisa/grimoire/algorithm/Makefile
252 lib/marisa/grimoire/io/Makefile
253 lib/marisa/grimoire/trie/Makefile
254 lib/marisa/grimoire/vector/Makefile
Susumu Yata3b5f9642016-01-28 23:52:25 +0900255 tests/Makefile
256 tools/Makefile])
257AC_OUTPUT
258
259AS_ECHO([])
260AS_ECHO(["${PACKAGE_NAME} ${PACKAGE_VERSION} configuration:"])
261AS_ECHO(["-------------------------------"])
262AS_ECHO([" HOST: ${host}"])
263AS_ECHO([" CXX: ${CXX}"])
264AS_ECHO([" CXXFLAGS: ${CXXFLAGS}"])
265AS_ECHO([" LDFLAGS: ${LDFLAGS}"])
266AS_ECHO([" PREFIX: ${prefix}"])
267AS_ECHO([])
J.Wd93f1b62017-06-01 16:57:46 +0800268AS_ECHO([" NATIVE: ${enable_native_code}"])
Susumu Yata3b5f9642016-01-28 23:52:25 +0900269AS_ECHO([" SSE2: ${enable_sse2}"])
270AS_ECHO([" SSE3: ${enable_sse3}"])
271AS_ECHO([" SSSE3: ${enable_ssse3}"])
272AS_ECHO([" SSE4.1: ${enable_sse4_1}"])
273AS_ECHO([" SSE4.2: ${enable_sse4_2}"])
274AS_ECHO([" SSE4a: ${enable_sse4a}"])
275AS_ECHO([" POPCNT: ${enable_popcnt}"])
Susumu Yatabbcff462019-10-13 22:27:07 +0900276AS_ECHO([" BMI: ${enable_bmi}"])
277AS_ECHO([" BMI2: ${enable_bmi2}"])
Susumu Yata3b5f9642016-01-28 23:52:25 +0900278AS_ECHO([])