--- nono/configure.ac 2026/04/29 17:04:33 1.1.1.3 +++ nono/configure.ac 2026/04/29 17:04:43 1.1.1.5 @@ -14,6 +14,27 @@ AC_PROG_CC AC_PROG_INSTALL AC_C_BIGENDIAN +# コンパイラをチェック。今のところ clang/gcc のみ。 +# (autoconf がやってる gcc かどうかのチェックは clang を検出できず使えない) +AC_MSG_CHECKING(for compiler) +if test -n "`${CC} -v 2>&1 | grep clang`" ; then + AC_MSG_RESULT([clang]) + COMPILER=CLANG +elif test -n "`${CC} -v 2>&1 | grep GCC`"; then + AC_MSG_RESULT([gcc]) + COMPILER=GCC +else + AC_MSG_RESULT([unknown]) + COMPILER= +fi +AC_SUBST([COMPILER]) + +# アーキテクチャのチェック。 +AC_MSG_CHECKING(for architecture) +ARCH=`${CC} -v 2>&1 | awk '/Target:/ {print \$2}' | sed -e 's/-.*//'` +AC_MSG_RESULT([${ARCH}]) +AC_SUBST([ARCH]) + # C++ のバージョンをチェック CXX_STD=-std=c++14 AC_LANG_PUSH([C++]) @@ -29,7 +50,7 @@ AC_LANG_POP([C++]) # C コンパイラのワーニングオプション AC_LANG_PUSH([C]) -AC_DEFUN([ADD_CC_FLAG_IF],[ +AC_DEFUN([ADD_CC_WARN_IF],[ AC_MSG_CHECKING([whether cc accepts $1]) old_CFLAGS="${CFLAGS}" CFLAGS="${CFLAGS} -Werror $1" @@ -39,19 +60,19 @@ AC_DEFUN([ADD_CC_FLAG_IF],[ AC_MSG_RESULT([no])) CFLAGS="${old_CFLAGS}" ]) -ADD_CC_FLAG_IF(-Wcast-qual) -ADD_CC_FLAG_IF(-Wdisabled-macro-expansion) -ADD_CC_FLAG_IF(-Wextra-semi) -ADD_CC_FLAG_IF(-Wlogical-op) -ADD_CC_FLAG_IF(-Wmissing-prototypes) -ADD_CC_FLAG_IF(-Wmissing-variable-declarations) +ADD_CC_WARN_IF(-Wcast-qual) +ADD_CC_WARN_IF(-Wdisabled-macro-expansion) +ADD_CC_WARN_IF(-Wextra-semi) +ADD_CC_WARN_IF(-Wlogical-op) +ADD_CC_WARN_IF(-Wmissing-prototypes) +ADD_CC_WARN_IF(-Wmissing-variable-declarations) AC_LANG_POP([C]) AC_SUBST([WARNFLAGS_C]) # C++ コンパイラのワーニングオプション # (AC_LANG は C++ のまま継続する) AC_LANG_CPLUSPLUS -AC_DEFUN([ADD_CXX_FLAG_IF],[ +AC_DEFUN([ADD_CXX_WARN_IF],[ AC_MSG_CHECKING([whether c++ accepts $1]) old_CXXFLAGS="${CXXFLAGS}" CXXFLAGS="${CXXFLAGS} -Werror $1" @@ -61,15 +82,15 @@ AC_DEFUN([ADD_CXX_FLAG_IF],[ AC_MSG_RESULT([no])) CXXFLAGS="${old_CXXFLAGS}" ]) -ADD_CXX_FLAG_IF(-Wcast-qual) -ADD_CXX_FLAG_IF(-Wdisabled-macro-expansion) -ADD_CXX_FLAG_IF(-Wextra-semi) -ADD_CXX_FLAG_IF(-Winconsistent-missing-override) -ADD_CXX_FLAG_IF(-Winconsistent-missing-destructor-override) -ADD_CXX_FLAG_IF(-Wlogical-op) -ADD_CXX_FLAG_IF(-Wmissing-prototypes) -ADD_CXX_FLAG_IF(-Wmissing-variable-declarations) -ADD_CXX_FLAG_IF(-Wvla-extension) +ADD_CXX_WARN_IF(-Wcast-qual) +ADD_CXX_WARN_IF(-Wdisabled-macro-expansion) +ADD_CXX_WARN_IF(-Wextra-semi) +ADD_CXX_WARN_IF(-Winconsistent-missing-override) +ADD_CXX_WARN_IF(-Winconsistent-missing-destructor-override) +ADD_CXX_WARN_IF(-Wlogical-op) +ADD_CXX_WARN_IF(-Wmissing-prototypes) +ADD_CXX_WARN_IF(-Wmissing-variable-declarations) +ADD_CXX_WARN_IF(-Wvla-extension) AC_SUBST([WARNFLAGS_CXX]) # Checks for libraries. @@ -367,9 +388,26 @@ AC_MSG_RESULT([$netdriver]) AC_SUBST([NETDRIVER], [$netdriver]) # libbsd on Linux +AC_CHECK_LIB(c, getprogname, ,) AC_CHECK_LIB(bsd, getprogname, AC_SUBST([LIBBSD_LIBS], [-lbsd]), ) +# なければ停止する +AC_COMPILE_IFELSE([AC_LANG_PROGRAM( + [ + #include + #include "confdefs.h" + #if defined(HAVE_BSD_BSD_H) + #include + #endif + ], [ + getprogname() + ])], + # nothing to do on success + , [AC_MSG_ERROR([*** getprogname is not found. + On Ubuntu, sudo apt install libbsd-dev]) + ] +) # libedit (editline) if test x"$ac_cv_header_histedit_h" = xyes; then @@ -381,6 +419,12 @@ AC_CHECK_LIB(kqueue, kqueue, AC_SUBST([LIBKQUEUE_LIBS], [-lkqueue]), ) +AC_CHECK_LIB(z, gzclose, + AC_SUBST([LIBZ_LIBS], [-lz]), + [AC_MSG_ERROR([*** zlib is not found. + On Ubuntu, sudo apt install zlib1g-dev])] +) + # wxWidgets AC_MSG_CHECKING(for wx-config) wxconfig_paths="${WX_CONFIG} wx-config-3.0 wx-config" @@ -418,6 +462,13 @@ else AC_SUBST([WXWIDGETS_LIBS], [$wxlibs]) fi +# gettext +AC_CHECK_TOOL([MSGFMT], [msgfmt], [:]) +if test $MSGFMT = [:]; then + AC_MSG_ERROR([*** msgfmt not found. + On Ubuntu, sudo apt install gettext]) +fi + AC_CONFIG_FILES([Makefile.cfg host/Makefile wx/Makefile