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