mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-10-31 13:38:47 +00:00
Previously, the configure script would only successfully determine that gradle exists if the user specified an absolute path to the executable. It would fail if the user specified only an executable name or if the default value of "gradle" were used. Now it should succeed in either situation.
366 lines
11 KiB
Plaintext
366 lines
11 KiB
Plaintext
AC_PREREQ([2.63])
|
|
AC_INIT([eSpeak NG], [1.51-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([speechplayer],
|
|
[AS_HELP_STRING([--with-speechplayer], [enable the speechPlayer Klatt implementation @<:@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-cmn],
|
|
[AS_HELP_STRING([--with-extdict-cmn], [use the extended Mandarin Chinese Dictionary file @<:@default=no@:>@])],
|
|
[])
|
|
|
|
AC_ARG_WITH([extdict-yue],
|
|
[AS_HELP_STRING([--with-extdict-yue], [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_CXX
|
|
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 command -v "$GRADLE" >/dev/null; then
|
|
AC_MSG_RESULT([${GRADLE}])
|
|
AM_CONDITIONAL(HAVE_GRADLE, [test 1 = 1])
|
|
else
|
|
AC_MSG_RESULT([no])
|
|
AM_CONDITIONAL(HAVE_GRADLE, [test 1 = 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_speechplayer" = "no" ; then
|
|
have_speechplayer=no
|
|
else
|
|
have_speechplayer=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_SPEECHPLAYER, [test x"$have_speechplayer" = 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])
|
|
|
|
AC_CHECK_PROG(KRAMDOWN, kramdown, kramdown, no)
|
|
|
|
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_cmn" = "yes" ; then
|
|
have_extdict_cmn=yes
|
|
else
|
|
have_extdict_cmn=no
|
|
fi
|
|
|
|
if test "$with_extdict_yue" = "yes" ; then
|
|
have_extdict_yue=yes
|
|
else
|
|
have_extdict_yue=no
|
|
fi
|
|
|
|
AM_CONDITIONAL(HAVE_RU_EXTENDED_DICTIONARY, [test x"$have_extdict_ru" = xyes])
|
|
AM_CONDITIONAL(HAVE_CMN_EXTENDED_DICTIONARY, [test x"$have_extdict_cmn" = xyes])
|
|
AM_CONDITIONAL(HAVE_YUE_EXTENDED_DICTIONARY, [test x"$have_extdict_yue" = 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([-Wint-conversion], [CFLAGS="-Wint-conversion $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}
|
|
speechPlayer: ${have_speechplayer}
|
|
MBROLA: ${have_mbrola}
|
|
Async: ${have_async}
|
|
|
|
Extended Dictionaries:
|
|
Russian: ${have_extdict_ru}
|
|
Chinese (Mandarin): ${have_extdict_cmn}
|
|
Chinese (Cantonese): ${have_extdict_yue}
|
|
])
|