• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#                                               -*- Autoconf -*-
2# Process this file with autoconf to produce a configure script.
3
4AC_PREREQ([2.67])
5AC_INIT([marisa], [0.2.6], [susumu.yata@gmail.com])
6AC_CONFIG_SRCDIR([include/marisa.h])
7AM_INIT_AUTOMAKE([foreign])
8
9# Checks for programs.
10LT_INIT
11AC_PROG_CXX
12AC_PROG_INSTALL
13
14AC_CONFIG_MACRO_DIR([m4])
15
16# 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"])])
65AC_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"])])
77
78# 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"], [
86  CPPFLAGS="$CPPFLAGS -march=native"
87  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
94  MARISA_ENABLE_BMI
95  MARISA_ENABLE_BMI2
96])
97AC_MSG_RESULT([${enable_native_code}])
98
99# 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"])
106AS_IF([test "x${enable_sse2}" != "xno"], [enable_sse2="yes"])
107AC_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"])
115AS_IF([test "x${enable_sse3}" != "xno"], [enable_sse3="yes"])
116AC_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"])
124AS_IF([test "x${enable_ssse3}" != "xno"], [enable_ssse3="yes"])
125AC_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"])
133AS_IF([test "x${enable_sse4_1}" != "xno"], [enable_sse4_1="yes"])
134AC_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"])
142AS_IF([test "x${enable_sse4_2}" != "xno"], [enable_sse4_2="yes"])
143AC_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"])
151AS_IF([test "x${enable_sse4}" != "xno"], [enable_sse4="yes"])
152AC_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"])
160AS_IF([test "x${enable_sse4a}" != "xno"], [enable_sse4a="yes"])
161AC_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"])
169AS_IF([test "x${enable_popcnt}" != "xno"], [enable_popcnt="yes"])
170AC_MSG_RESULT([${enable_popcnt}])
171
172AC_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])
196AS_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])
224if 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
229  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
246                 include/Makefile
247                 include/marisa/Makefile
248                 lib/Makefile
249                 lib/marisa/Makefile
250                 lib/marisa/grimoire/Makefile
251                 lib/marisa/grimoire/algorithm/Makefile
252                 lib/marisa/grimoire/io/Makefile
253                 lib/marisa/grimoire/trie/Makefile
254                 lib/marisa/grimoire/vector/Makefile
255                 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([])
268AS_ECHO(["  NATIVE:    ${enable_native_code}"])
269AS_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}"])
276AS_ECHO(["  BMI:       ${enable_bmi}"])
277AS_ECHO(["  BMI2:      ${enable_bmi2}"])
278AS_ECHO([])
279