From f1f27bc37c5ec0c6ff24719338da666e5186cafc Mon Sep 17 00:00:00 2001 From: Hertatijanto Hartono Date: Mon, 13 Jul 2020 02:53:55 +0700 Subject: [PATCH] Checks for 3rdparty libraries availability in configure Abort configure run with an error if a 3rd party library doesn't seem to be present, when it's supposed to be used during the build, as this is better than postponing the error until make runs into it much later and also allows us to give a hopefully helpful message telling people that they might be missing the relevant submodules. Also add --disable-tests configure option to allow skipping building tests entirely. In particular, this allows to avoid cloning any submodules at all when using system libraries on a Unix system. Closes https://github.com/wxWidgets/wxWidgets/pull/1954 --- configure | 165 ++++++++++++++++++++++++++++++++++++++++++++++++++- configure.in | 116 +++++++++++++++++++++++++++++++++++- 2 files changed, 278 insertions(+), 3 deletions(-) diff --git a/configure b/configure index 843fe1bbb5..977eee3b90 100755 --- a/configure +++ b/configure @@ -1028,6 +1028,7 @@ infodir docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -1059,6 +1060,7 @@ enable_official_build enable_vendor enable_all_features enable_sys_libs +enable_tests with_dpi enable_universal with_themes @@ -1454,6 +1456,7 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1706,6 +1709,15 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1843,7 +1855,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1996,6 +2008,7 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -2040,6 +2053,7 @@ Optional Features: --enable-vendor=VENDOR vendor name (win32 DLL only) --disable-all-features disable all optional features to build minimal library --disable-sys-libs disable all use of system libraries, use only built-in ones + --disable-tests disable building tests --enable-universal use wxWidgets GUI controls instead of native ones --enable-nanox use NanoX --enable-gpe use GNOME PDA Environment features if possible @@ -4292,6 +4306,35 @@ fi eval "$wx_cv_use_sys_libs" + enablestring=disable + defaultval= + if test -z "$defaultval"; then + if test x"$enablestring" = xdisable; then + defaultval=yes + else + defaultval=no + fi + fi + + # Check whether --enable-tests was given. +if test "${enable_tests+set}" = set; then : + enableval=$enable_tests; + if test "$enableval" = yes; then + wx_cv_use_tests='wxUSE_TESTS_SUBDIR=yes' + else + wx_cv_use_tests='wxUSE_TESTS_SUBDIR=no' + fi + +else + + wx_cv_use_tests='wxUSE_TESTS_SUBDIR=${'DEFAULT_wxUSE_TESTS_SUBDIR":-$defaultval}" + +fi + + + eval "$wx_cv_use_tests" + + if test "$wxUSE_ALL_FEATURES" = "no"; then DEFAULT_wxUSE_ARTPROVIDER_TANGO=no DEFAULT_wxUSE_MEDIACTRL=no @@ -21524,6 +21567,26 @@ $as_echo "$as_me: WARNING: zlib library not found or too old, will use built-in else wxUSE_ZLIB=sys fi + fi + + if test "$wxUSE_ZLIB" = "builtin" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether zlib.h file exists" >&5 +$as_echo_n "checking whether zlib.h file exists... " >&6; } + if ! test -f "$ac_confdir/src/zlib/zlib.h" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + as_fn_error $? " + Configured to use built-in zlib library, but the required file + $ac_confdir/src/zlib/zlib.h couldn't be found. + You might need to run + + git submodule update --init src/zlib + + to fix this." "$LINENO" 5 + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + fi fi fi @@ -21640,6 +21703,26 @@ $as_echo "$as_me: WARNING: system png library not found or too old, will use bui else wxUSE_LIBPNG=sys fi + fi + + if test "$wxUSE_LIBPNG" = "builtin" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether png.c file exists" >&5 +$as_echo_n "checking whether png.c file exists... " >&6; } + if ! test -f "$ac_confdir/src/png/png.c" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + as_fn_error $? " + Configured to use built-in png library, but the required file + $ac_confdir/src/png/png.c couldn't be found. + You might need to run + + git submodule update --init src/png + + to fix this." "$LINENO" 5 + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + fi fi fi @@ -21795,6 +21878,26 @@ fi fi fi + fi + + if test "$wxUSE_LIBJPEG" = "builtin" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether jpeglib.h file exists" >&5 +$as_echo_n "checking whether jpeglib.h file exists... " >&6; } + if ! test -f "$ac_confdir/src/jpeg/jpeglib.h" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + as_fn_error $? " + Configured to use built-in jpeg library, but the required file + $ac_confdir/src/jpeg/jpeglib.h couldn't be found. + You might need to run + + git submodule update --init src/jpeg + + to fix this." "$LINENO" 5 + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + fi fi fi @@ -22134,6 +22237,24 @@ $as_echo "$as_me: WARNING: system tiff library not found, will use built-in inst fi fi if test "$wxUSE_LIBTIFF" = "builtin" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether tiff.h file exists" >&5 +$as_echo_n "checking whether tiff.h file exists... " >&6; } + if ! test -f "$ac_confdir/src/tiff/libtiff/tiff.h" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + as_fn_error $? " + Configured to use built-in tiff library, but the required file + $ac_confdir/src/tiff/libtiff/tiff.h couldn't be found. + You might need to run: + + git submodule update --init src/tiff + + to fix this." "$LINENO" 5 + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + fi + ac_configure_args="$ac_configure_args --disable-webp --disable-zstd" if test "$wxUSE_LIBLZMA" = "no"; then ac_configure_args="$ac_configure_args --disable-lzma" @@ -22263,6 +22384,24 @@ $as_echo "$as_me: WARNING: system expat library not found, will use built-in ins fi fi if test "$wxUSE_EXPAT" = "builtin" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether expat.h file exists" >&5 +$as_echo_n "checking whether expat.h file exists... " >&6; } + if ! test -f "$ac_confdir/src/expat/expat/lib/expat.h" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + as_fn_error $? " + Configured to use built-in expat library, but the required file + $ac_confdir/src/expat/expat/lib/expat.h couldn't be found. + You might need to run: + + git submodule update --init src/expat + + to fix this." "$LINENO" 5 + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + fi + save_CC="$CC" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5 $as_echo_n "checking for $CC option to accept ISO C99... " >&6; } @@ -40448,7 +40587,29 @@ if test "$wxUSE_GUI" = "yes"; then else SUBDIRS="samples utils" fi -SUBDIRS="$SUBDIRS tests" + +if test "$wxUSE_TESTS_SUBDIR" != "no"; then + SUBDIRS="$SUBDIRS tests" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether catch.hpp file exists" >&5 +$as_echo_n "checking whether catch.hpp file exists... " >&6; } + if ! test -f "$ac_confdir/3rdparty/catch/include/catch.hpp" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + as_fn_error $? " + CATCH (C++ Automated Test Cases in Headers) is required, the required file + $ac_confdir/3rdparty/catch/include/catch.hpp couldn't found. + + You might need to run + + git submodule update --init 3rdparty/catch + + to fix this." "$LINENO" 5 + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + fi +fi for subdir in $SUBDIRS; do if test -d ${srcdir}/${subdir} ; then diff --git a/configure.in b/configure.in index 620c99ba3a..5be318d8dd 100644 --- a/configure.in +++ b/configure.in @@ -402,6 +402,7 @@ fi WX_ARG_DISABLE(all-features,[ --disable-all-features disable all optional features to build minimal library], wxUSE_ALL_FEATURES) WX_ARG_DISABLE(sys-libs, [ --disable-sys-libs disable all use of system libraries, use only built-in ones], wxUSE_SYS_LIBS) +WX_ARG_DISABLE(tests, [ --disable-tests disable building tests], wxUSE_TESTS_SUBDIR) if test "$wxUSE_ALL_FEATURES" = "no"; then dnl this is a bit ugly but currently we have no choice but to manually @@ -2487,6 +2488,26 @@ if test "$wxUSE_ZLIB" != "no" ; then wxUSE_ZLIB=sys fi fi + + dnl We should test if built-in zlib library is avalable, preferably + dnl downloaded through --recurse-submodules option if cloned from git. + dnl Would be available when downloaded as a zipped or tarball release. + if test "$wxUSE_ZLIB" = "builtin" ; then + AC_MSG_CHECKING([whether zlib.h file exists]) + if ! test -f "$ac_confdir/src/zlib/zlib.h" ; then + AC_MSG_RESULT([no]) + AC_MSG_ERROR([ + Configured to use built-in zlib library, but the required file + $ac_confdir/src/zlib/zlib.h couldn't be found. + You might need to run + + git submodule update --init src/zlib + + to fix this.]) + else + AC_MSG_RESULT([yes]) + fi + fi fi dnl ------------------------------------------------------------------------ @@ -2547,6 +2568,26 @@ if test "$wxUSE_LIBPNG" != "no" ; then wxUSE_LIBPNG=sys fi fi + + dnl We should test if built-in png library is avalable, preferably + dnl downloaded through --recurse-submodules option if cloned from git. + dnl Would be available when downloaded as a zipped or tarball release. + if test "$wxUSE_LIBPNG" = "builtin" ; then + AC_MSG_CHECKING([whether png.c file exists]) + if ! test -f "$ac_confdir/src/png/png.c" ; then + AC_MSG_RESULT([no]) + AC_MSG_ERROR([ + Configured to use built-in png library, but the required file + $ac_confdir/src/png/png.c couldn't be found. + You might need to run + + git submodule update --init src/png + + to fix this.]) + else + AC_MSG_RESULT([yes]) + fi + fi fi dnl ------------------------------------------------------------------------ @@ -2619,6 +2660,26 @@ if test "$wxUSE_LIBJPEG" != "no" ; then fi fi fi + + dnl We should test if built-in jpeg library is avalable, preferably + dnl downloaded through --recurse-submodules option if cloned from git. + dnl Would be available when downloaded as a zipped or tarball release. + if test "$wxUSE_LIBJPEG" = "builtin" ; then + AC_MSG_CHECKING([whether jpeglib.h file exists]) + if ! test -f "$ac_confdir/src/jpeg/jpeglib.h" ; then + AC_MSG_RESULT([no]) + AC_MSG_ERROR([ + Configured to use built-in jpeg library, but the required file + $ac_confdir/src/jpeg/jpeglib.h couldn't be found. + You might need to run + + git submodule update --init src/jpeg + + to fix this.]) + else + AC_MSG_RESULT([yes]) + fi + fi fi dnl ------------------------------------------------------------------------ @@ -2715,6 +2776,22 @@ if test "$wxUSE_LIBTIFF" != "no" ; then fi fi if test "$wxUSE_LIBTIFF" = "builtin" ; then + dnl Test for built-in tiff library avalability. + AC_MSG_CHECKING([whether tiff.h file exists]) + if ! test -f "$ac_confdir/src/tiff/libtiff/tiff.h" ; then + AC_MSG_RESULT([no]) + AC_MSG_ERROR([ + Configured to use built-in tiff library, but the required file + $ac_confdir/src/tiff/libtiff/tiff.h couldn't be found. + You might need to run: + + git submodule update --init src/tiff + + to fix this.]) + else + AC_MSG_RESULT([yes]) + fi + dnl Disable the use of lzma, webp and zstd in built-in libtiff explicitly, as dnl otherwise we'd depend on the system libraries, which is typically dnl undesirable when using builtin libraries. If we use lzma ourselves, keep it @@ -2780,6 +2857,22 @@ if test "$wxUSE_EXPAT" != "no"; then fi fi if test "$wxUSE_EXPAT" = "builtin" ; then + dnl Test for built-in expat library avalability. + AC_MSG_CHECKING([whether expat.h file exists]) + if ! test -f "$ac_confdir/src/expat/expat/lib/expat.h" ; then + AC_MSG_RESULT([no]) + AC_MSG_ERROR([ + Configured to use built-in expat library, but the required file + $ac_confdir/src/expat/expat/lib/expat.h couldn't be found. + You might need to run: + + git submodule update --init src/expat + + to fix this.]) + else + AC_MSG_RESULT([yes]) + fi + dnl Expat requires C99 compiler, so define wxCFLAGS_C99 variable which dnl is used when compiling it in our makefiles. save_CC="$CC" @@ -8445,7 +8538,28 @@ else dnl there are no wxBase programs in demos SUBDIRS="samples utils" fi -SUBDIRS="$SUBDIRS tests" + +if test "$wxUSE_TESTS_SUBDIR" != "no"; then + dnl Configure tests directory + SUBDIRS="$SUBDIRS tests" + + dnl Check for catch (C++ Automated Test Cases in Headers) availability. + AC_MSG_CHECKING([whether catch.hpp file exists]) + if ! test -f "$ac_confdir/3rdparty/catch/include/catch.hpp" ; then + AC_MSG_RESULT([no]) + AC_MSG_ERROR([ + CATCH (C++ Automated Test Cases in Headers) is required, the required file + $ac_confdir/3rdparty/catch/include/catch.hpp couldn't found. + + You might need to run + + git submodule update --init 3rdparty/catch + + to fix this.]) + else + AC_MSG_RESULT([yes]) + fi +fi for subdir in $SUBDIRS; do if test -d ${srcdir}/${subdir} ; then