123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350 |
- AC_PREREQ([2.63])
- AC_INIT([eSpeak NG], [1.49.3-dev], [https://github.com/espeak-ng/espeak-ng/issues], [espeak-ng], [https://github.com/espeak-ng/espeak-ng])
- AM_INIT_AUTOMAKE()
- LT_INIT
- m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES])
- AM_SILENT_RULES([yes])
- AC_CONFIG_SRCDIR([src])
- AC_CONFIG_MACRO_DIR([m4])
- AC_CONFIG_HEADERS([config.h])
- dnl ================================================================
- dnl configure arguments
- dnl ================================================================
- AC_ARG_ENABLE([rpath],
- [AS_HELP_STRING([--enable-rpath], [set hardcoded rpaths in the executable @<:@default=yes@:>@])],
- [],
- [enable_rpath=yes])
- AC_ARG_WITH([gradle],
- [AS_HELP_STRING([--with-gradle], [specify the gradle program to use @<:@default=gradle@:>@])],
- [GRADLE=$with_gradle],
- [GRADLE=gradle])
- AC_ARG_WITH([pcaudiolib],
- [AS_HELP_STRING([--with-pcaudiolib], [use the pcaudiolib library for audio output @<:@default=yes@:>@])],
- [])
- AC_ARG_WITH([klatt],
- [AS_HELP_STRING([--with-klatt], [enable the Klatt formant synthesizer @<:@default=yes@:>@])],
- [])
- AC_ARG_WITH([mbrola],
- [AS_HELP_STRING([--with-mbrola], [enable the MBROLA speech synthesizer @<:@default=yes@:>@])],
- [])
- AC_ARG_WITH([sonic],
- [AS_HELP_STRING([--with-sonic], [enable the sonic library to speed up the audio @<:@default=yes@:>@])],
- [])
- AC_ARG_WITH([async],
- [AS_HELP_STRING([--with-async], [enable support for async command processing @<:@default=yes@:>@])],
- [])
- AC_ARG_WITH([extdict-ru],
- [AS_HELP_STRING([--with-extdict-ru], [use the extended Russian Dictionary file @<:@default=no@:>@])],
- [])
- AC_ARG_WITH([extdict-zh],
- [AS_HELP_STRING([--with-extdict-zh], [use the extended Mandarin Chinese Dictionary file @<:@default=no@:>@])],
- [])
- AC_ARG_WITH([extdict-zhy],
- [AS_HELP_STRING([--with-extdict-zhy], [use the extended Cantonese Chinese Dictionary file @<:@default=no@:>@])],
- [])
- AC_ARG_WITH([libfuzzer],
- [AS_HELP_STRING([--with-libfuzzer], [enable libFuzzer in the fuzzer tests @<:@default=no@:>@])],
- [])
- dnl ================================================================
- dnl Program checks.
- dnl ================================================================
- AC_PROG_CC
- AC_PROG_MAKE_SET
- AC_PROG_LIBTOOL
- AC_PROG_LN_S
- AC_CHECK_PROG(NDKBUILD_CHECK,[ndk-build],yes)
- dnl ================================================================
- dnl gradle checks.
- dnl ================================================================
- AC_MSG_CHECKING([for gradle])
- if test -e ${GRADLE} ; then
- AC_MSG_RESULT([${GRADLE}])
- AM_CONDITIONAL(HAVE_GRADLE, [1])
- else
- AC_MSG_RESULT([no])
- AM_CONDITIONAL(HAVE_GRADLE, [0])
- fi
- AC_SUBST(GRADLE)
- dnl ================================================================
- dnl C99 compiler checks.
- dnl ================================================================
- AC_LANG_PUSH(C)
- AC_MSG_CHECKING([if $CC supports C99 without any flags])
- AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM(
- [[static inline int c99_restrict(int *restrict c99_restrict) {}]],
- [[]])],
- [AC_MSG_RESULT([yes])
- have_c99_native=yes],
- [AC_MSG_RESULT([no])
- have_c99_native=no])
- AC_LANG_POP(C)
- AC_LANG_PUSH(C)
- TEMP_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -std=c99"
- AC_MSG_CHECKING([if $CC supports C99 with the -std=c99 flag])
- AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM(
- [[static inline int c99_restrict(int *restrict c99_restrict) {}]],
- [[]])],
- [AC_MSG_RESULT([yes])
- have_c99_c99=yes],
- [AC_MSG_RESULT([no])
- have_c99_c99=no])
- CFLAGS="$TEMP_CFLAGS"
- AC_LANG_POP(C)
- AC_MSG_CHECKING([if $CC supports C99])
- if test "$have_c99_c99" = yes ; then
- AC_MSG_RESULT([-std=c99])
- CFLAGS="$CFLAGS -std=c99"
- elif test "$have_c99_native" = yes ; then
- AC_MSG_RESULT([yes])
- else
- AC_MSG_RESULT([no])
- AC_MSG_ERROR([C99 is not supported by $CC.])
- fi
- dnl ================================================================
- dnl FreeBSD check.
- dnl ================================================================
- AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
- #if ! defined(__FreeBSD__)
- #error macro not defined
- #endif
- ]])], [FREEBSD_FOUND="yes"], [FREEBSD_FOUND="no"])
- AC_MSG_CHECKING([if targeting FreeBSD])
- if test "$FREEBSD_FOUND" = "yes" ; then
- AC_MSG_RESULT([-D__BSD_VISIBLE])
- CFLAGS="$CFLAGS -D__BSD_VISIBLE"
- else
- AC_MSG_RESULT([no])
- fi
- dnl ================================================================
- dnl library checks.
- dnl ================================================================
- AC_CHECK_HEADERS([endian.h]) dnl Linux
- AC_CHECK_HEADERS([fcntl.h]) dnl POSIX
- AC_CHECK_HEADERS([getopt.h]) dnl POSIX
- AC_CHECK_HEADERS([locale.h]) dnl C89
- AC_CHECK_HEADERS([stddef.h]) dnl C89
- AC_CHECK_HEADERS([stdbool.h]) dnl C99
- AC_CHECK_HEADERS([sys/endian.h]) dnl BSD
- AC_CHECK_HEADERS([sys/time.h]) dnl POSIX
- AC_CHECK_HEADERS([wchar.h]) dnl C89
- AC_CHECK_HEADERS([wctype.h]) dnl C89
- AC_TYPE_SIZE_T
- AC_TYPE_SSIZE_T
- AC_TYPE_UINT16_T
- AC_TYPE_UINT32_T
- AC_TYPE_UINT64_T
- AC_FUNC_FORK
- AC_FUNC_STRCOLL
- AC_FUNC_ERROR_AT_LINE
- AC_CHECK_FUNCS([dup2])
- AC_CHECK_FUNCS([getopt_long])
- AC_CHECK_FUNCS([gettimeofday])
- AC_CHECK_FUNCS([malloc]) dnl Avoid "Undefined reference to rpl_malloc" when using AC_FUNC_MALLOC.
- AC_CHECK_FUNCS([memchr])
- AC_CHECK_FUNCS([memmove])
- AC_CHECK_FUNCS([memset])
- AC_CHECK_FUNCS([mkdir])
- AC_CHECK_FUNCS([mkstemp])
- AC_CHECK_FUNCS([pow])
- AC_CHECK_FUNCS([realloc]) dnl Avoid "Undefined reference to rpl_malloc" when using AC_FUNC_REALLOC.
- AC_CHECK_FUNCS([setlocale])
- AC_CHECK_FUNCS([sqrt])
- AC_CHECK_FUNCS([strchr])
- AC_CHECK_FUNCS([strdup])
- AC_CHECK_FUNCS([strerror])
- AC_CHECK_FUNCS([strrchr])
- AC_CHECK_FUNCS([strstr])
- dnl ================================================================
- dnl PCAudioLib checks.
- dnl ================================================================
- if test "$with_pcaudiolib" = "no"; then
- echo "Disabling audio output support via pcaudiolib"
- have_pcaudiolib=no
- else
- AC_CHECK_HEADERS([pcaudiolib/audio.h],
- [
- have_pcaudiolib=yes
- PCAUDIOLIB_CFLAGS=
- PCAUDIOLIB_LIBS=-lpcaudio
- ],[
- have_pcaudiolib=no
- ])
- fi
- AC_SUBST(PCAUDIOLIB_CFLAGS)
- AC_SUBST(PCAUDIOLIB_LIBS)
- dnl ================================================================
- dnl Optional compilation checks.
- dnl ================================================================
- if test "$with_klatt" = "no" ; then
- have_klatt=no
- else
- have_klatt=yes
- fi
- if test "$with_mbrola" = "no" ; then
- have_mbrola=no
- else
- have_mbrola=yes
- fi
- if test "$with_sonic" = "no" ; then
- have_sonic=no
- else
- AC_CHECK_HEADERS([sonic.h],
- [
- AC_CHECK_LIB([sonic], [sonicCreateStream])
- have_sonic=yes
- ],[
- have_sonic=no
- ])
- fi
- if test "$with_async" = "no" ; then
- have_async=no
- else
- have_async=yes
- fi
- AM_CONDITIONAL(OPT_KLATT, [test x"$have_klatt" = xyes])
- AM_CONDITIONAL(OPT_MBROLA, [test x"$have_mbrola" = xyes])
- AM_CONDITIONAL(OPT_ASYNC, [test x"$have_async" = xyes])
- dnl ================================================================
- dnl ronn checks.
- dnl ================================================================
- AC_CHECK_PROG(RONN, ronn, ronn, no)
- AM_CONDITIONAL(HAVE_RONN, [test ! x"$RONN" = xno])
- dnl ================================================================
- dnl Extended dictionary checks.
- dnl ================================================================
- if test "$with_extdict_ru" = "yes" ; then
- have_extdict_ru=yes
- else
- have_extdict_ru=no
- fi
- if test "$with_extdict_zh" = "yes" ; then
- have_extdict_zh=yes
- else
- have_extdict_zh=no
- fi
- if test "$with_extdict_zhy" = "yes" ; then
- have_extdict_zhy=yes
- else
- have_extdict_zhy=no
- fi
- AM_CONDITIONAL(HAVE_RU_EXTENDED_DICTIONARY, [test x"$have_extdict_ru" = xyes])
- AM_CONDITIONAL(HAVE_ZH_EXTENDED_DICTIONARY, [test x"$have_extdict_zh" = xyes])
- AM_CONDITIONAL(HAVE_ZHY_EXTENDED_DICTIONARY, [test x"$have_extdict_zhy" = xyes])
- dnl ================================================================
- dnl Compiler warnings.
- dnl
- dnl Reference: https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
- dnl ================================================================
- AX_CHECK_COMPILE_FLAG([-Wimplicit], [CFLAGS="-Wimplicit $CFLAGS"])
- AX_CHECK_COMPILE_FLAG([-Wmissing-prototypes], [CFLAGS="-Wmissing-prototypes $CFLAGS"])
- AX_CHECK_COMPILE_FLAG([-Wreturn-type], [CFLAGS="-Wreturn-type $CFLAGS"])
- AX_CHECK_COMPILE_FLAG([-Wuninitialized], [CFLAGS="-Wuninitialized $CFLAGS"])
- AX_CHECK_COMPILE_FLAG([-Wunused], [CFLAGS="-Wunused $CFLAGS"])
- AX_CHECK_COMPILE_FLAG([-Wunused-parameter], [CFLAGS="-Wunused-parameter $CFLAGS"])
- dnl ================================================================
- dnl libFuzzer checks.
- dnl ================================================================
- if test "$with_libfuzzer" = "yes" ; then
- have_libfuzzer=yes
- else
- have_libfuzzer=no
- fi
- AM_CONDITIONAL(HAVE_LIBFUZZER, [test x"$have_libfuzzer" = xyes])
- dnl ================================================================
- dnl Generate output.
- dnl ================================================================
- AC_CONFIG_FILES([Makefile espeak-ng.pc])
- AC_OUTPUT
- if test "$enable_rpath" = "yes" ; then
- true
- else
- # See https://old-en.opensuse.org/openSUSE:Packaging_Guidelines#Removing_Rpath
- sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
- sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
- fi
- AC_MSG_NOTICE([
- Configuration for eSpeak NG complete.
- Source code location: ${srcdir}
- C99 Compiler: ${CC}
- C99 Compiler flags: ${CFLAGS}
- Sonic: ${have_sonic}
- PCAudioLib: ${have_pcaudiolib}
- gradle (Android): ${GRADLE}
- ndk-build (Android): ${NDKBUILD_CHECK}
- Klatt: ${have_klatt}
- MBROLA: ${have_mbrola}
- Async: ${have_async}
- Extended Dictionaries:
- Russian: ${have_extdict_ru}
- Chinese (Mandarin): ${have_extdict_zh}
- Chinese (Cantonese): ${have_extdict_zhy}
- ])
|