configure.ac 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. AC_INIT([OpenFst], [1.7.2], [help@www.openfst.org])
  2. AM_INIT_AUTOMAKE([foreign nostdinc -Wall -Werror subdir-objects])
  3. AM_PROG_AR
  4. # OpenFst does not throw exceptions, so we do not generate exception handling
  5. # code. However, users are free to re-enable exception handling.
  6. # OpenFst assumes char is unsigned; -fsigned-char is likely unsafe.
  7. CPPFLAGS="$CPPFLAGS -fno-exceptions -funsigned-char"
  8. CXXFLAGS="$CXXFLAGS -std=c++11"
  9. AC_PROG_CXX
  10. AC_DISABLE_STATIC
  11. AC_PROG_LIBTOOL
  12. AC_CONFIG_HEADERS([config.h src/include/fst/config.h])
  13. AC_CONFIG_SRCDIR([src/lib/fst.cc])
  14. AC_CONFIG_FILES([
  15. Makefile
  16. src/Makefile
  17. src/include/Makefile
  18. src/lib/Makefile
  19. src/bin/Makefile
  20. src/test/Makefile
  21. src/extensions/Makefile
  22. src/extensions/compact/Makefile
  23. src/extensions/compress/Makefile
  24. src/extensions/const/Makefile
  25. src/extensions/far/Makefile
  26. src/extensions/linear/Makefile
  27. src/extensions/lookahead/Makefile
  28. src/extensions/mpdt/Makefile
  29. src/extensions/ngram/Makefile
  30. src/extensions/pdt/Makefile
  31. src/extensions/python/Makefile
  32. src/extensions/special/Makefile
  33. src/script/Makefile
  34. ])
  35. AC_CONFIG_MACRO_DIR([m4])
  36. AC_LANG([C++])
  37. AC_ARG_ENABLE([compact-fsts],
  38. [AS_HELP_STRING([--enable-compact-fsts],
  39. [enable CompactFst extensions])],
  40. [],
  41. [enable_compact_fsts=no])
  42. AM_CONDITIONAL([HAVE_COMPACT], [test "x$enable_compact_fsts" != xno])
  43. AC_ARG_ENABLE([compress],
  44. [AS_HELP_STRING([--enable-compress],
  45. [enable compression extension])],
  46. [],
  47. [enable_compress=no])
  48. AM_CONDITIONAL([HAVE_COMPRESS], [test "x$enable_compress" != xno])
  49. AC_ARG_ENABLE([const-fsts],
  50. [AS_HELP_STRING([--enable-const-fsts],
  51. [enable ConstFst extensions])],
  52. [],
  53. [enable_const_fsts=no])
  54. AM_CONDITIONAL([HAVE_CONST], [test "x$enable_const_fsts" != xno])
  55. AC_ARG_ENABLE([far],
  56. [AS_HELP_STRING([--enable-far], [enable FAR extensions])],
  57. [],
  58. [enable_far=no])
  59. AM_CONDITIONAL([HAVE_FAR], [test "x$enable_far" != xno])
  60. AC_ARG_ENABLE([linear-fsts],
  61. [AS_HELP_STRING([--enable-linear-fsts],
  62. [enable LinearTagger/ClassifierFst extensions])],
  63. [],
  64. [enable_linear_fsts=no])
  65. AM_CONDITIONAL([HAVE_LINEAR], [test "x$enable_linear_fsts" != xno])
  66. AC_ARG_ENABLE([lookahead-fsts],
  67. [AS_HELP_STRING([--enable-lookahead-fsts],
  68. [enable LookAheadFst extensions])],
  69. [],
  70. [enable_lookahead_fsts=no])
  71. AM_CONDITIONAL([HAVE_LOOKAHEAD], [test "x$enable_lookahead_fsts" != xno])
  72. AC_ARG_ENABLE([mpdt],
  73. [AS_HELP_STRING([--enable-mpdt],
  74. [enable MPDT extensions])],
  75. [],
  76. [enable_mpdt=no])
  77. AM_CONDITIONAL([HAVE_MPDT], [test "x$enable_mpdt" != xno])
  78. AC_ARG_ENABLE([ngram-fsts],
  79. [AS_HELP_STRING([--enable-ngram-fsts],
  80. [enable NGramFst extension])],
  81. [],
  82. [enable_ngram_fsts=no])
  83. AM_CONDITIONAL([HAVE_NGRAM], [test "x$enable_ngram_fsts" != xno])
  84. AC_ARG_ENABLE([pdt],
  85. [AS_HELP_STRING([--enable-pdt],
  86. [enable PDT extensions])],
  87. [],
  88. [enable_pdt=no])
  89. AM_CONDITIONAL([HAVE_PDT], [test "x$enable_pdt" != xno])
  90. AC_ARG_ENABLE([python],
  91. [AS_HELP_STRING([--enable-python],
  92. [enable Python extensions])],
  93. [],
  94. [enable_python=no])
  95. AM_CONDITIONAL([HAVE_PYTHON], [test "x$enable_python" != xno])
  96. if test "x$enable_python" != xno; then
  97. AM_PATH_PYTHON(2.7)
  98. AC_PYTHON_DEVEL([>= '2.7'])
  99. fi
  100. AC_ARG_ENABLE([special],
  101. [AS_HELP_STRING([--enable-special],
  102. [enable special-matcher extensions])],
  103. [],
  104. [enable_special=no])
  105. AM_CONDITIONAL([HAVE_SPECIAL], [test "x$enable_special" != xno])
  106. # --enable-bin enables script and bin "extensions".
  107. AC_ARG_ENABLE([bin],
  108. [AS_HELP_STRING([--enable-bin],
  109. [enable fst::script and command-line binaries])],
  110. [],
  111. [enable_bin=yes])
  112. AM_CONDITIONAL([HAVE_BIN], [test "x$enable_bin" != xno])
  113. AM_CONDITIONAL([HAVE_SCRIPT], [test "x$enable_bin" != xno])
  114. # --enable-grm enables dependencies of OpenGrm: far, mpdt, and pdt.
  115. AC_ARG_ENABLE([grm],
  116. [AS_HELP_STRING([--enable-grm],
  117. [enable all dependencies of OpenGrm])],
  118. [],
  119. [enable_grm=no])
  120. AM_CONDITIONAL([HAVE_GRM], [test "x$enable_grm" != xno])
  121. AC_ARG_WITH([libfstdir],
  122. [--with-libfstdir[=DIR] fst dynamic extensions [[LIBDIR/fst]]],
  123. [], [with_libfstdir=[${libdir}/fst]])
  124. AC_SUBST([libfstdir], $with_libfstdir)
  125. # Flags may be changed after configuring, so this is checked again by
  126. # weight_test.cc. The check here is to save time in the common case,
  127. # or when someone does not run `make check`.
  128. AC_RUN_IFELSE([AC_LANG_PROGRAM([
  129. #include <cstdio>
  130. template <typename T>
  131. bool FloatEqIsReflexive(T m) {
  132. volatile T x = 1.111;
  133. x *= m;
  134. T y = 1.111;
  135. y *= m;
  136. return x == y;
  137. }
  138. ], [
  139. volatile double test_value = 1.1;
  140. if (!FloatEqIsReflexive(static_cast<float>(test_value))) {
  141. printf("float FAIL\n");
  142. return 1;
  143. }
  144. if (!FloatEqIsReflexive(test_value)) {
  145. printf("double FAIL\n");
  146. return 1;
  147. }
  148. ])],
  149. [echo "Float equality is good"],
  150. [AC_MSG_FAILURE(m4_normalize([
  151. Test float equality failed!
  152. Compile with -msse -mfpmath=sse if using g++.
  153. ]))])
  154. AC_CHECK_LIB([dl], dlopen, [DL_LIBS=-ldl])
  155. AC_SUBST([DL_LIBS])
  156. AC_OUTPUT