diff options
-rw-r--r-- | meson.build | 108 | ||||
-rw-r--r-- | subprojects/libjpeg-turbo.wrap | 12 | ||||
-rw-r--r-- | subprojects/libjpeg.wrap | 12 |
3 files changed, 55 insertions, 77 deletions
diff --git a/meson.build b/meson.build index 8328fcbc3..fde0e9ade 100644 --- a/meson.build +++ b/meson.build @@ -254,56 +254,40 @@ enabled_loaders = [] loaders_deps = [] if get_option('png') - # We have a vast selection of libpng versions to choose from - foreach png: [ 'libpng16', 'libpng15', 'libpng14', 'libpng13', 'libpng12', 'libpng10' ] - if not enabled_loaders.contains('png') - png_dep = dependency(png, required: false) + png_dep = dependency('libpng', required: false) + + if not png_dep.found() and cc.has_header('png.h') + # MSVC: First look for the DLL + import .lib build of libpng, + # which is normally libpngxx.lib, when libpng's pkg-config can't + # be found, which is quite normal on MSVC. + foreach png: [ 'libpng16', 'libpng15', 'libpng14', 'libpng12', 'libpng13', 'libpng10' ] + png_dep = cc.find_library(png, required: false) if png_dep.found() - enabled_loaders += 'png' - loaders_deps += png_dep + break endif - endif - endforeach - - if not enabled_loaders.contains('png') - if cc.get_id() == 'msvc' and cc.has_header('png.h') - # MSVC: First look for the DLL + import .lib build of libpng, - # which is normally libpngxx.lib, when libpng's pkg-config can't - # be found, which is quite normal on MSVC. - foreach png: [ 'libpng16', 'libpng15', 'libpng14', 'libpng12', 'libpng13', 'libpng10' ] - if not enabled_loaders.contains('png') - png_dep = cc.find_library(png, required: false) - if png_dep.found() - enabled_loaders += 'png' - loaders_deps += png_dep - endif - endif - endforeach - - # If we still can't find libpng, try looking for the static libpng.lib, - # which means we need to ensure we have the static zlib .lib as well - if not enabled_loaders.contains('png') - png_dep = cc.find_library('libpng', required: false) - zlib_dep = cc.find_library('zlib', required: false) - if png_dep.found() and zlib_dep.found() - enabled_loaders += 'png' - loaders_deps += [ png_dep, zlib_dep ] - endif - endif - endif + endforeach - # Finally, look for the dependency in a fallback subproject if allowed by - # the --wrap-mode option. We don't directly call subproject() here because - # that will bypass --wrap-mode and cause issues for distro packagers. - # See: https://mesonbuild.com/Reference-manual.html#dependency + # If we still can't find libpng, try looking for the static libpng.lib, + # which means we need to ensure we have the static zlib .lib as well if not png_dep.found() - png_dep = dependency('', required: false, fallback: ['libpng', 'png_dep']) - if png_dep.found() - enabled_loaders += 'png' - loaders_deps += png_dep + png_dep = cc.find_library('libpng', required: false) + zlib_dep = cc.find_library('zlib', required: false) + if png_dep.found() and zlib_dep.found() + loaders_deps += zlib_dep endif endif endif + + # Finally, look for the dependency in a fallback subproject if allowed by + # the --wrap-mode option. We don't directly call subproject() here because + # that will bypass --wrap-mode and cause issues for distro packagers. + # See: https://mesonbuild.com/Reference-manual.html#dependency + if not png_dep.found() + png_dep = dependency('libpng', fallback: ['libpng', 'png_dep']) + endif + + enabled_loaders += 'png' + loaders_deps += png_dep endif # On Windows, check whether we are building the native Windows loaders @@ -335,28 +319,24 @@ if get_option('jpeg') and not native_windows_loaders endif endif - # If we couldn't find libjpeg in our include/linker paths, - # then use pkg-config, and if that fails, fall back to the - # wrap + # Finally, look for the dependency in a fallback if not jpeg_dep.found() - jpeg_dep = dependency('libjpeg', required: false, fallback: ['libjpeg', 'jpeg_dep']) + jpeg_dep = dependency('libjpeg', fallback: ['libjpeg-turbo', 'jpeg_dep']) endif - if jpeg_dep.found() - enabled_loaders += 'jpeg' - loaders_deps += jpeg_dep + enabled_loaders += 'jpeg' + loaders_deps += jpeg_dep - if jpeg_dep.type_name() == 'internal' - has_destroy_decompress = true - has_simple_progression = true - else - has_destroy_decompress = cc.has_function('jpeg_destroy_decompress', dependencies: jpeg_dep) - has_simple_progression = cc.has_function('jpeg_simple_progression', dependencies: jpeg_dep) - endif + if jpeg_dep.type_name() == 'internal' + has_destroy_decompress = true + has_simple_progression = true + else + has_destroy_decompress = cc.has_function('jpeg_destroy_decompress', dependencies: jpeg_dep) + has_simple_progression = cc.has_function('jpeg_simple_progression', dependencies: jpeg_dep) + endif - if has_destroy_decompress and has_simple_progression - gdk_pixbuf_conf.set('HAVE_PROGRESSIVE_JPEG', has_simple_progression) - endif + if has_destroy_decompress and has_simple_progression + gdk_pixbuf_conf.set('HAVE_PROGRESSIVE_JPEG', has_simple_progression) endif endif @@ -372,14 +352,12 @@ if get_option('tiff') and not native_windows_loaders if not tiff_dep.found() # For the static lib, zlib and libjpeg .lib's have been looked for first, and # they are optional for libtiff - tiff_dep = cc.find_library('libtiff', required: false) + tiff_dep = cc.find_library('libtiff') endif endif endif - if tiff_dep.found() - enabled_loaders += 'tiff' - loaders_deps += tiff_dep - endif + enabled_loaders += 'tiff' + loaders_deps += tiff_dep endif # Determine whether we enable application bundle relocation support, and we use diff --git a/subprojects/libjpeg-turbo.wrap b/subprojects/libjpeg-turbo.wrap new file mode 100644 index 000000000..f425824a9 --- /dev/null +++ b/subprojects/libjpeg-turbo.wrap @@ -0,0 +1,12 @@ +[wrap-file] +directory = libjpeg-turbo-2.1.0 +source_url = https://sourceforge.net/projects/libjpeg-turbo/files/2.1.0/libjpeg-turbo-2.1.0.tar.gz +source_filename = libjpeg-turbo-2.1.0.tar.gz +source_hash = bef89803e506f27715c5627b1e3219c95b80fc31465d4452de2a909d382e4444 +patch_url = https://wrapdb.mesonbuild.com/v1/projects/libjpeg-turbo/2.1.0/1/get_zip +patch_filename = libjpeg-turbo-2.1.0-1-wrap.zip +patch_hash = 1bef2d46d99118d9693b8e248d2ae86a72f0651a74340ae925190c2a2f7d08c7 + +[provide] +dependency_names = libjpeg + diff --git a/subprojects/libjpeg.wrap b/subprojects/libjpeg.wrap deleted file mode 100644 index 54a7fe624..000000000 --- a/subprojects/libjpeg.wrap +++ /dev/null @@ -1,12 +0,0 @@ -[wrap-file] -directory = jpeg-9c -source_url = http://ijg.org/files/jpegsrc.v9c.tar.gz -source_filename = jpegsrc.v9c.tar.gz -source_hash = 1e9793e1c6ba66e7e0b6e5fe7fd0f9e935cc697854d5737adec54d93e5b3f730 -patch_url = https://wrapdb.mesonbuild.com/v1/projects/libjpeg/9c/3/get_zip -patch_filename = libjpeg-9c-3-wrap.zip -patch_hash = 2d66676d254be9198d8b6b62a798d6858c7f7cea9ed0e93809d6c035351a9bba - -[provide] -libjpeg = jpeg_dep - |