--- nono/configure.ac 2026/04/29 17:05:47 1.1.1.18 +++ nono/configure.ac 2026/04/29 17:05:56 1.1.1.20 @@ -98,6 +98,7 @@ AC_DEFUN([ADD_CXX_WARN_IF],[ ]) ADD_CXX_WARN_IF(-Wcast-qual) ADD_CXX_WARN_IF(-Wextra-semi) +ADD_CXX_WARN_IF(-Wimplicit-fallthrough) ADD_CXX_WARN_IF(-Winconsistent-missing-destructor-override) ADD_CXX_WARN_IF(-Winconsistent-missing-override) ADD_CXX_WARN_IF(-Wlogical-op) @@ -111,6 +112,8 @@ fi ADD_CXX_WARN_IF(-Wstring-conversion) ADD_CXX_WARN_IF(-Wsuggest-destructor-override) ADD_CXX_WARN_IF(-Wsuggest-override) +# gcc14 が C++14 に対しても C++20 のエラーを出そうとする。は?? +ADD_CXX_WARN_IF(-Wno-template-id-cdtor) ADD_CXX_WARN_IF(-Wtype-limits) ADD_CXX_WARN_IF(-Wvla-extension) AC_SUBST([WARNFLAGS_CXX]) @@ -184,6 +187,7 @@ AS_IF([test x"${enable_neon}" != x"no"], # Checks for libraries. # Checks for header files. +AC_CHECK_HEADERS([alsa/asoundlib.h]) AC_CHECK_HEADERS([bsd/bsd.h]) AC_CHECK_HEADERS([bsd/stdio.h]) AC_CHECK_HEADERS([byteswap.h]) @@ -191,6 +195,8 @@ AC_CHECK_HEADERS([endian.h]) AC_CHECK_HEADERS([kqueue/sys/event.h]) AC_CHECK_HEADERS([pthread_np.h]) AC_CHECK_HEADERS([sched.h]) +AC_CHECK_HEADERS([sndio.h]) +AC_CHECK_HEADERS([sys/audioio.h]) AC_CHECK_HEADERS([sys/cpuset.h]) AC_CHECK_HEADERS([sys/endian.h]) AC_CHECK_HEADERS([sys/event.h]) @@ -622,6 +628,30 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ AC_MSG_RESULT([no]) ]) +dnl HTOBE16(x) は x = htobe16(x) するもので、htobe16() とは別物。 +dnl ところが autoconf は小文字を大文字にした変数名を作る文化なので +dnl こっちは INPLACE_HTOBE16 とかにしておく。 +AC_MSG_CHECKING(for HTOBE16) +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ + #if defined(HAVE_ENDIAN_H) + #include + #endif + #if defined(HAVE_SYS_ENDIAN_H) + #include + #endif + #if defined(HAVE_MACHINE_ENDIAN_H) + #include + #endif + ], [ + uint16_t x = 0; + HTOBE16(x); + ])], [ + AC_MSG_RESULT([yes]) + AC_DEFINE([HAVE_INPLACE_HTOBE16]) + ], [ + AC_MSG_RESULT([no]) + ]) + AC_MSG_CHECKING(for CPU_COUNT) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ #if defined(HAVE_SCHED_H) @@ -928,8 +958,10 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_HOSTNET_AFPACKET) AC_SUBST(HOSTNET_AFPACKET, yes) + netdriver_afpacket=yes ], [ AC_MSG_RESULT(no) + netdriver_afpacket=no ]) AC_MSG_CHECKING(for tap(4)) @@ -962,8 +994,10 @@ if test x"$ac_cv_header_net_bpf_h" = xye AC_MSG_RESULT([yes]) AC_DEFINE([HAVE_HOSTNET_BPF]) AC_SUBST([HOSTNET_BPF], [yes]) + netdriver_bpf=yes else AC_MSG_RESULT([no]) + netdriver_bpf=no fi # @@ -1089,6 +1123,72 @@ AS_IF([test "x$with_libslirp" != "xno"], AC_SUBST([HOSTNET_SLIRP], [no]) ]) +# ALSA +case "${host_os}" in + linux*) + default_alsa=yes + ;; + *) + default_alsa=no + ;; +esac +AC_ARG_WITH([alsa], + [AS_HELP_STRING([--with-alsa], + [enable ALSA support (default:yes on Linux, otherwise no)])], + [with_alsa=${withval}], + [with_alsa=${default_alsa}]) +sounddriver_alsa=no +if test x"${with_alsa}" = xyes; then + AC_CHECK_LIB(asound, snd_pcm_open, + [has_asound=yes], + [has_asound=no]) + if test x"${ac_cv_header_alsa_asoundlib_h}" = xyes -a \ + x"${ac_cv_lib_asound_snd_pcm_open}" = xyes; then + AC_DEFINE([HAVE_HOSTSOUND_ALSA]) + AC_SUBST([HOSTSOUND_ALSA], [yes]) + LIBS_SOUND="${LIBS_SOUND} -lasound" + sounddriver_alsa=yes + else + AC_MSG_ERROR([*** or libasound not found. +*** If you use Ubuntu, sudo apt install libasound2-dev. +*** Or specify --without-alsa (it disables hostsound-driver=alsa).]) + fi +fi + +# NetBSD audio +if test x"${ac_cv_header_sys_audioio_h}" = xyes; then + AC_MSG_CHECKING(for AUDIO_GETINFO) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ + #include + #include + #include + ], [ + struct audio_info info; + AUDIO_INITINFO(&info); + ioctl(0, AUDIO_GETINFO, &info); + ])], [ + AC_MSG_RESULT([yes]) + AC_DEFINE([HAVE_HOSTSOUND_NETBSD]) + AC_SUBST([HOSTSOUND_NETBSD], [yes]) + sounddriver_netbsd=yes + ], [ + AC_MSG_RESULT([no]) + sounddriver_netbsd=no + ]) +fi + +# OpenBSD sndio +if test x"${ac_cv_header_sndio_h}" = xyes; then + AC_DEFINE([HAVE_HOSTSOUND_SNDIO]) + AC_SUBST([HOSTSOUND_SNDIO], [yes]) + LIBS_SOUND="${LIBS_SOUND} -lsndio" + sounddriver_sndio=yes +else + sounddriver_sndio=no +fi + +AC_SUBST([LIBS_SOUND], [${LIBS_SOUND}]) + # wxWidgets AC_ARG_WITH([gui], [AS_HELP_STRING([--without-gui], [disable GUI support])], @@ -1197,3 +1297,32 @@ fi AC_CONFIG_FILES([Makefile.cfg]) AC_CONFIG_HEADERS([config-nono.h]) AC_OUTPUT + +# サマリを表示 +echo "" +echo "Configuration summary:" +echo -n "HostNet supports: " +if test x"$netdriver_afpacket" = xyes; then + echo -n " afpacket" +fi +if test x"$netdriver_bpf" = xyes; then + echo -n " bpf" +fi +if test x"$has_libslirp" = xyes; then + echo -n " slirp" +fi +if test x"$netdriver_tap" = xyes; then + echo -n " tap" +fi +echo "" +echo -n "HostSound supports: " +if test x"$sounddriver_alsa" = xyes; then + echo -n " alsa" +fi +if test x"$sounddriver_netbsd" = xyes; then + echo -n " netbsd" +fi +if test x"$sounddriver_sndio" = xyes; then + echo -n " sndio" +fi +echo ""