diff options
| author | Matthias Melcher <github@matthiasm.com> | 2023-01-01 17:29:23 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-01-01 17:29:23 +0100 |
| commit | c8024c7a3b8faec3b65d222c50fb4cfccd3ab03e (patch) | |
| tree | 409fd8adc7a0802a38804038a9634777859ae38e | |
| parent | 9a3f0f2089a98c3705d3f3e58aa235b808d51b8f (diff) | |
Make sure that zlib and png are both local or system (#621)
Autoconf syncs png and zlib configuration
Cmake png zlib selection
| -rw-r--r-- | CMake/options.cmake | 27 | ||||
| -rw-r--r-- | configure.ac | 62 |
2 files changed, 60 insertions, 29 deletions
diff --git a/CMake/options.cmake b/CMake/options.cmake index 25c5a181c..b45987d23 100644 --- a/CMake/options.cmake +++ b/CMake/options.cmake @@ -92,13 +92,34 @@ else () endif () ####################################################################### -# Bundled Compression Library : zlib +# Make sure that png and zlib are either system or local for compatibility ####################################################################### if (OPTION_USE_SYSTEM_ZLIB) find_package (ZLIB) endif () +if (OPTION_USE_SYSTEM_LIBPNG) + find_package (PNG) +endif () + +# If we use the system zlib, we must also use the system png zlib and vice versa +# If either of them is not available, we fall back to using both local libraries +if (OPTION_USE_SYSTEM_LIBPNG AND NOT (OPTION_USE_SYSTEM_ZLIB AND ZLIB_FOUND)) + set (PNG_FOUND FALSE) + set (OPTION_USE_SYSTEM_LIBPNG FALSE) + message (STATUS "Local z lib selected: overriding png lib to local for compatibility.\n") +endif () +if (OPTION_USE_SYSTEM_ZLIB AND NOT (OPTION_USE_SYSTEM_LIBPNG AND PNG_FOUND)) + set (ZLIB_FOUND FALSE) + set (OPTION_USE_SYSTEM_ZLIB FALSE) + message (STATUS "Local png lib selected: overriding z lib to local for compatibility.\n") +endif () + +####################################################################### +# Bundled Compression Library : zlib +####################################################################### + if (OPTION_USE_SYSTEM_ZLIB AND ZLIB_FOUND) set (FLTK_USE_BUILTIN_ZLIB FALSE) set (FLTK_ZLIB_LIBRARIES ${ZLIB_LIBRARIES}) @@ -146,10 +167,6 @@ set (HAVE_LIBJPEG 1) # Bundled Image Library : libpng ####################################################################### -if (OPTION_USE_SYSTEM_LIBPNG) - find_package (PNG) -endif () - if (OPTION_USE_SYSTEM_LIBPNG AND PNG_FOUND) set (FLTK_USE_BUILTIN_PNG FALSE) diff --git a/configure.ac b/configure.ac index e3384f9d0..7fdff4cfb 100644 --- a/configure.ac +++ b/configure.ac @@ -681,29 +681,6 @@ AS_IF([test x$enable_localzlib != xyes], [ ]) ]) -# Now set the Z lib and include flags according to the requested mode and availability -AS_IF([test x$enable_localzlib = xyes -o x$syszlib_ok = xno], [ - ZLIBINC="-I../zlib" - ZLIB="zlib" - LIBS="-lfltk_z $LIBS" - IMAGELIBS="-lfltk_z $IMAGELIBS" - STATICIMAGELIBS="\$libdir/libfltk_z.a $STATICIMAGELIBS" - AC_DEFINE([HAVE_LIBZ]) - ac_cv_lib_z_gzgets=no # fc: is still necessary ? - # Finally, warn user if system lib was requested but not found - AS_IF([test x$enable_localzlib = xno], [ - AC_MSG_WARN([Cannot find system z lib or header: choosing the local lib mode.]) - ]) -], [ - ZLIBINC="" - ZLIB="" - LIBS="-lz $LIBS" - IMAGELIBS="-lz $IMAGELIBS" - STATICIMAGELIBS="-lz $STATICIMAGELIBS" - AC_DEFINE([HAVE_LIBZ]) -]) - - # Handle the PNG lib linking mode (use fltk local or system lib) # If --enable-(resp. --disable-)localpng parameter is not set by user # Then we check the png lib usability with result in syspng_lib variable @@ -727,7 +704,44 @@ AS_IF([test x$enable_localpng != xyes], [ ]) ]) -# The following is executed if the lib was not found usable or if local lib is required explicitly +# If we use the system zlib, we must also use the system png zlib and vice versa +# If either of them is not available, we fall back to using both local libraries +AS_IF([test x$syspnglib_ok = xyes -a x$syszlib_ok != xyes], [ + syspnglib_ok=no + enable_localpng=yes + AC_MSG_WARN([Local z lib selected: overriding png lib to local for compatibility.]) +]) +AS_IF([test x$syszlib_ok = xyes -a x$syspnglib_ok != xyes], [ + syszlib_ok=no + enable_localzlib=yes + AC_MSG_WARN([Local png lib selected: overriding z lib to local for compatibility.]) +]) + + +# Now set the Z lib and include flags according to the requested mode and availability +AS_IF([test x$enable_localzlib = xyes -o x$syszlib_ok = xno], [ + ZLIBINC="-I../zlib" + ZLIB="zlib" + LIBS="-lfltk_z $LIBS" + IMAGELIBS="-lfltk_z $IMAGELIBS" + STATICIMAGELIBS="\$libdir/libfltk_z.a $STATICIMAGELIBS" + AC_DEFINE([HAVE_LIBZ]) + ac_cv_lib_z_gzgets=no # fc: is still necessary ? + # Finally, warn user if system lib was requested but not found + AS_IF([test x$enable_localzlib = xno], [ + AC_MSG_WARN([Cannot find system z lib or header: choosing the local lib mode.]) + ]) +], [ + ZLIBINC="" + ZLIB="" + LIBS="-lz $LIBS" + IMAGELIBS="-lz $IMAGELIBS" + STATICIMAGELIBS="-lz $STATICIMAGELIBS" + AC_DEFINE([HAVE_LIBZ]) +]) + + +# The following is executed if the png lib was not found usable or if local lib is required explicitly AS_IF([test x$enable_localpng = xyes -o x$syspnglib_ok = xno], [ PNGINC="-I../png" PNG="png" |
