# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ([2.67]) AC_INIT([marisa], [0.2.6], [susumu.yata@gmail.com]) AC_CONFIG_SRCDIR([include/marisa.h]) AM_INIT_AUTOMAKE([foreign]) # Checks for programs. LT_INIT AC_PROG_CXX AC_PROG_INSTALL AC_CONFIG_MACRO_DIR([m4]) # Macros for SSE availability check. AC_DEFUN([MARISA_ENABLE_SSE2], [AC_EGREP_CPP([yes], [ #ifdef __SSE2__ yes #endif ], [enable_sse2="yes"], [enable_sse2="no"])]) AC_DEFUN([MARISA_ENABLE_SSE3], [AC_EGREP_CPP([yes], [ #ifdef __SSE3__ yes #endif ], [enable_sse3="yes"], [enable_sse3="no"])]) AC_DEFUN([MARISA_ENABLE_SSSE3], [AC_EGREP_CPP([yes], [ #ifdef __SSSE3__ yes #endif ], [enable_ssse3="yes"], [enable_ssse3="no"])]) AC_DEFUN([MARISA_ENABLE_SSE4_1], [AC_EGREP_CPP([yes], [ #ifdef __SSE4_1__ yes #endif ], [enable_sse4_1="yes"], [enable_sse4_1="no"])]) AC_DEFUN([MARISA_ENABLE_SSE4_2], [AC_EGREP_CPP([yes], [ #ifdef __SSE4_2__ yes #endif ], [enable_sse4_2="yes"], [enable_sse4_2="no"])]) AC_DEFUN([MARISA_ENABLE_SSE4], [AC_EGREP_CPP([yes], [ #if defined(__POPCNT__) && defined(__SSE4_2__) yes #endif ], [enable_sse4="yes"], [enable_sse4="no"])]) AC_DEFUN([MARISA_ENABLE_SSE4A], [AC_EGREP_CPP([yes], [ #ifdef __SSE4A__ yes #endif ], [enable_sse4a="yes"], [enable_sse4a="no"])]) AC_DEFUN([MARISA_ENABLE_POPCNT], [AC_EGREP_CPP([yes], [ #ifdef __POPCNT__ yes #endif ], [enable_popcnt="yes"], [enable_popcnt="no"])]) AC_DEFUN([MARISA_ENABLE_BMI], [AC_EGREP_CPP([yes], [ #ifdef __BMI__ yes #endif ], [enable_bmi="yes"], [enable_bmi="no"])]) AC_DEFUN([MARISA_ENABLE_BMI2], [AC_EGREP_CPP([yes], [ #ifdef __BMI2__ yes #endif ], [enable_bmi2="yes"], [enable_bmi2="no"])]) # Enable native cpu instructions. AC_MSG_CHECKING([whether to enable optimization for native cpu]) AC_ARG_ENABLE([native-code], [AS_HELP_STRING([--enable-native-code], [generate instructions for native cpu [default=no]])], [], [enable_native_code="no"]) AS_IF([test "x${enable_native_code}" != "xno"], [ CPPFLAGS="$CPPFLAGS -march=native" MARISA_ENABLE_SSE2 MARISA_ENABLE_SSE3 MARISA_ENABLE_SSE4_1 MARISA_ENABLE_SSE4_2 MARISA_ENABLE_SSE4 MARISA_ENABLE_SSE4A MARISA_ENABLE_POPCNT MARISA_ENABLE_BMI MARISA_ENABLE_BMI2 ]) AC_MSG_RESULT([${enable_native_code}]) # Checks for SSE availability. AC_MSG_CHECKING([whether to use SSE2]) AC_ARG_ENABLE([sse2], [AS_HELP_STRING([--enable-sse2], [use SSE2 [default=no]])], [], [enable_sse2="no"]) AS_IF([test "x${enable_sse2}" != "xno"], [enable_sse2="yes"]) AC_MSG_RESULT([${enable_sse2}]) AC_MSG_CHECKING([whether to use SSE3]) AC_ARG_ENABLE([sse3], [AS_HELP_STRING([--enable-sse3], [use SSE3 [default=no]])], [], [enable_sse3="no"]) AS_IF([test "x${enable_sse3}" != "xno"], [enable_sse3="yes"]) AC_MSG_RESULT([${enable_sse3}]) AC_MSG_CHECKING([whether to use SSSE3]) AC_ARG_ENABLE([ssse3], [AS_HELP_STRING([--enable-ssse3], [use SSSE3 [default=no]])], [], [enable_ssse3="no"]) AS_IF([test "x${enable_ssse3}" != "xno"], [enable_ssse3="yes"]) AC_MSG_RESULT([${enable_ssse3}]) AC_MSG_CHECKING([whether to use SSE4.1]) AC_ARG_ENABLE([sse4.1], [AS_HELP_STRING([--enable-sse4.1], [use SSE4.1 [default=no]])], [], [enable_sse4_1="no"]) AS_IF([test "x${enable_sse4_1}" != "xno"], [enable_sse4_1="yes"]) AC_MSG_RESULT([${enable_sse4_1}]) AC_MSG_CHECKING([whether to use SSE4.2]) AC_ARG_ENABLE([sse4.2], [AS_HELP_STRING([--enable-sse4.2], [use SSE4.2 [default=no]])], [], [enable_sse4_2="no"]) AS_IF([test "x${enable_sse4_2}" != "xno"], [enable_sse4_2="yes"]) AC_MSG_RESULT([${enable_sse4_2}]) AC_MSG_CHECKING([whether to use SSE4]) AC_ARG_ENABLE([sse4], [AS_HELP_STRING([--enable-sse4], [use SSE4 [default=no]])], [], [enable_sse4="no"]) AS_IF([test "x${enable_sse4}" != "xno"], [enable_sse4="yes"]) AC_MSG_RESULT([${enable_sse4}]) AC_MSG_CHECKING([whether to use SSE4a]) AC_ARG_ENABLE([sse4a], [AS_HELP_STRING([--enable-sse4a], [use SSE4a [default=no]])], [], [enable_sse4a="no"]) AS_IF([test "x${enable_sse4a}" != "xno"], [enable_sse4a="yes"]) AC_MSG_RESULT([${enable_sse4a}]) AC_MSG_CHECKING([whether to use popcnt]) AC_ARG_ENABLE([popcnt], [AS_HELP_STRING([--enable-popcnt], [use POPCNT [default=no]])], [], [enable_popcnt="no"]) AS_IF([test "x${enable_popcnt}" != "xno"], [enable_popcnt="yes"]) AC_MSG_RESULT([${enable_popcnt}]) AC_MSG_CHECKING([whether to use BMI]) AC_ARG_ENABLE([bmi], [AS_HELP_STRING([--enable-bmi], [use BMI [default=no]])], [], [enable_bmi="no"]) AS_IF([test "x${enable_bmi}" != "xno"], [enable_bmi="yes"]) AC_MSG_RESULT([${enable_bmi}]) AC_MSG_CHECKING([whether to use BMI2]) AC_ARG_ENABLE([bmi2], [AS_HELP_STRING([--enable-bmi2], [use BMI2 [default=no]])], [], [enable_bmi2="no"]) AS_IF([test "x${enable_bmi2}" != "xno"], [enable_bmi2="yes"]) AC_MSG_RESULT([${enable_bmi2}]) AS_IF([test "x${enable_bmi2}" != "xno"], [ enable_bmi="yes" ]) AS_IF([test "x${enable_bmi}" != "xno"], [ enable_sse4="yes" ]) AS_IF([test "x${enable_popcnt}" != "xno"], [ enable_sse3="yes" ]) AS_IF([test "x${enable_sse4a}" != "xno"], [ enable_popcnt="yes" enable_sse3="yes" ]) AS_IF([test "x${enable_sse4}" != "xno"], [ enable_popcnt="yes" enable_sse4_2="yes" ]) AS_IF([test "x${enable_sse4_2}" != "xno"], [ enable_popcnt="yes" enable_sse4_1="yes" ]) AS_IF([test "x${enable_sse4_1}" != "xno"], [ enable_ssse3="yes" ]) AS_IF([test "x${enable_ssse3}" != "xno"], [ enable_sse3="yes" ]) AS_IF([test "x${enable_sse3}" != "xno"], [ enable_sse2="yes" ]) AS_IF([test "x${enable_popcnt}" != "xno"], [ CXXFLAGS="$CXXFLAGS -DMARISA_USE_POPCNT -mpopcnt" ]) if test "x${enable_bmi2}" != "xno"; then CXXFLAGS="$CXXFLAGS -DMARISA_USE_BMI2 -mbmi2 -msse4" elif test "x${enable_bmi}" != "xno"; then CXXFLAGS="$CXXFLAGS -DMARISA_USE_BMI -mbmi -msse4" elif test "x${enable_sse4a}" != "xno"; then CXXFLAGS="$CXXFLAGS -DMARISA_USE_SSE4A -msse4a" elif test "x${enable_sse4}" != "xno"; then CXXFLAGS="$CXXFLAGS -DMARISA_USE_SSE4 -msse4" elif test "x${enable_sse4_2}" != "xno"; then CXXFLAGS="$CXXFLAGS -DMARISA_USE_SSE4_2 -msse4.2" elif test "x${enable_sse4_1}" != "xno"; then CXXFLAGS="$CXXFLAGS -DMARISA_USE_SSE4_1 -msse4.1" elif test "x${enable_ssse3}" != "xno"; then CXXFLAGS="$CXXFLAGS -DMARISA_USE_SSSE3 -mssse3" elif test "x${enable_sse3}" != "xno"; then CXXFLAGS="$CXXFLAGS -DMARISA_USE_SSE3 -msse3" elif test "x${enable_sse2}" != "xno"; then CXXFLAGS="$CXXFLAGS -DMARISA_USE_SSE2 -msse2" fi AC_CONFIG_FILES([Makefile marisa.pc include/Makefile include/marisa/Makefile lib/Makefile lib/marisa/Makefile lib/marisa/grimoire/Makefile lib/marisa/grimoire/algorithm/Makefile lib/marisa/grimoire/io/Makefile lib/marisa/grimoire/trie/Makefile lib/marisa/grimoire/vector/Makefile tests/Makefile tools/Makefile]) AC_OUTPUT AS_ECHO([]) AS_ECHO(["${PACKAGE_NAME} ${PACKAGE_VERSION} configuration:"]) AS_ECHO(["-------------------------------"]) AS_ECHO([" HOST: ${host}"]) AS_ECHO([" CXX: ${CXX}"]) AS_ECHO([" CXXFLAGS: ${CXXFLAGS}"]) AS_ECHO([" LDFLAGS: ${LDFLAGS}"]) AS_ECHO([" PREFIX: ${prefix}"]) AS_ECHO([]) AS_ECHO([" NATIVE: ${enable_native_code}"]) AS_ECHO([" SSE2: ${enable_sse2}"]) AS_ECHO([" SSE3: ${enable_sse3}"]) AS_ECHO([" SSSE3: ${enable_ssse3}"]) AS_ECHO([" SSE4.1: ${enable_sse4_1}"]) AS_ECHO([" SSE4.2: ${enable_sse4_2}"]) AS_ECHO([" SSE4a: ${enable_sse4a}"]) AS_ECHO([" POPCNT: ${enable_popcnt}"]) AS_ECHO([" BMI: ${enable_bmi}"]) AS_ECHO([" BMI2: ${enable_bmi2}"]) AS_ECHO([])