Add meson build system (#2637)
Allows to use the Meson build system to build the project.
This commit is contained in:
parent
0d8056b8c5
commit
02901436d4
@ -58,7 +58,7 @@ PROJECT_LOGO =
|
|||||||
# entered, it will be relative to the location where doxygen was started. If
|
# entered, it will be relative to the location where doxygen was started. If
|
||||||
# left blank the current directory will be used.
|
# left blank the current directory will be used.
|
||||||
|
|
||||||
OUTPUT_DIRECTORY =
|
OUTPUT_DIRECTORY = @OUTPUT_DIRECTORY@
|
||||||
|
|
||||||
# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
|
# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
|
||||||
# directories (in 2 levels) under the output directory of each output format and
|
# directories (in 2 levels) under the output directory of each output format and
|
||||||
|
14
cplusplus/include/vips/meson.build
Normal file
14
cplusplus/include/vips/meson.build
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
public_cpp_headers = files(
|
||||||
|
'VError8.h',
|
||||||
|
'VImage8.h',
|
||||||
|
'VInterpolate8.h',
|
||||||
|
'VConnection8.h',
|
||||||
|
'vips8',
|
||||||
|
)
|
||||||
|
|
||||||
|
install_headers(
|
||||||
|
public_cpp_headers,
|
||||||
|
subdir: 'vips'
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_cpp_includedir = include_directories('..')
|
60
cplusplus/meson.build
Normal file
60
cplusplus/meson.build
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
subdir('include/vips')
|
||||||
|
|
||||||
|
libvips_cpp_lib = library('vips-cpp',
|
||||||
|
'VImage.cpp',
|
||||||
|
'VInterpolate.cpp',
|
||||||
|
'VConnection.cpp',
|
||||||
|
'VError.cpp',
|
||||||
|
dependencies: libvips_dep,
|
||||||
|
include_directories: libvips_cpp_includedir,
|
||||||
|
version: library_version,
|
||||||
|
install: true,
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_cpp_dep = declare_dependency(
|
||||||
|
link_with: libvips_cpp_lib,
|
||||||
|
dependencies: libvips_dep,
|
||||||
|
include_directories: libvips_cpp_includedir,
|
||||||
|
)
|
||||||
|
|
||||||
|
pkg.generate(
|
||||||
|
libvips_cpp_lib,
|
||||||
|
requires: [ libvips_lib, glib_dep, gobject_dep ],
|
||||||
|
name: 'vips-cpp',
|
||||||
|
description: 'C++ API for vips8 image processing library',
|
||||||
|
)
|
||||||
|
|
||||||
|
custom_target('vips-operators-header',
|
||||||
|
command: [ 'gen-operators.py', '-g', 'h'],
|
||||||
|
capture: true,
|
||||||
|
output: 'vips-operators.h'
|
||||||
|
)
|
||||||
|
|
||||||
|
custom_target('vips-operators-source',
|
||||||
|
command: [ 'gen-operators.py', '-g', 'cpp'],
|
||||||
|
capture: true,
|
||||||
|
output: 'vips-operators.cc'
|
||||||
|
)
|
||||||
|
|
||||||
|
if get_option('doxygen')
|
||||||
|
doxygen = find_program('doxygen')
|
||||||
|
doxygen_data = configuration_data()
|
||||||
|
doxygen_data.set('VIPS_MAJOR_VERSION', version_major)
|
||||||
|
doxygen_data.set('VIPS_MINOR_VERSION', version_minor)
|
||||||
|
doxygen_data.set('OUTPUT_DIRECTORY', 'cplusplus')
|
||||||
|
|
||||||
|
doxyfile = configure_file(
|
||||||
|
input: 'Doxyfile.in',
|
||||||
|
output: 'Doxyfile',
|
||||||
|
configuration: doxygen_data,
|
||||||
|
install: false
|
||||||
|
)
|
||||||
|
|
||||||
|
html_target = custom_target('vips-cpp-docs',
|
||||||
|
input: doxyfile,
|
||||||
|
output: 'html',
|
||||||
|
command: [doxygen, doxyfile],
|
||||||
|
install: true,
|
||||||
|
install_dir: get_option('prefix') / get_option('datadir') / 'doc' / 'libvips-doc'
|
||||||
|
)
|
||||||
|
endif
|
129
doc/meson.build
Normal file
129
doc/meson.build
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
private_headers = [
|
||||||
|
'include/vips/almostdeprecated.h',
|
||||||
|
'include/vips/deprecated.h',
|
||||||
|
'include/vips/vips7compat.h',
|
||||||
|
'include/vips/dispatch.h',
|
||||||
|
'include/vips/enumtypes.h',
|
||||||
|
'include/vips/internal.h',
|
||||||
|
'include/vips/thread.h',
|
||||||
|
'include/vips/intl.h',
|
||||||
|
'include/vips/format.h',
|
||||||
|
'include/vips/mask.h',
|
||||||
|
'include/vips/private.h',
|
||||||
|
'include/vips/video.h',
|
||||||
|
# ignore all .h files in libvips/*, these are internal
|
||||||
|
'arithmetic/binary.h',
|
||||||
|
'arithmetic/hough.h',
|
||||||
|
'arithmetic/nary.h',
|
||||||
|
'arithmetic/parithmetic.h',
|
||||||
|
'arithmetic/statistic.h',
|
||||||
|
'arithmetic/unary.h',
|
||||||
|
'arithmetic/unaryconst.h',
|
||||||
|
'colour/pcolour.h',
|
||||||
|
'colour/profiles.h',
|
||||||
|
'conversion/bandary.h',
|
||||||
|
'conversion/pconversion.h',
|
||||||
|
'convolution/correlation.h',
|
||||||
|
'convolution/pconvolution.h',
|
||||||
|
'create/pcreate.h',
|
||||||
|
'create/pmask.h',
|
||||||
|
'create/point.h',
|
||||||
|
'draw/drawink.h',
|
||||||
|
'draw/pdraw.h',
|
||||||
|
'foreign/dbh.h',
|
||||||
|
'foreign/jpeg.h',
|
||||||
|
'foreign/magick.h',
|
||||||
|
'foreign/pforeign.h',
|
||||||
|
'foreign/tiff.h',
|
||||||
|
'freqfilt/pfreqfilt.h',
|
||||||
|
'histogram/hist_unary.h',
|
||||||
|
'histogram/phistogram.h',
|
||||||
|
'iofuncs/sink.h',
|
||||||
|
'iofuncs/vipsmarshal.h',
|
||||||
|
'morphology/pmorphology.h',
|
||||||
|
'mosaicing/global_balance.h',
|
||||||
|
'mosaicing/pmosaicing.h',
|
||||||
|
'resample/presample.h',
|
||||||
|
'resample/templates.h'
|
||||||
|
]
|
||||||
|
|
||||||
|
markdown_content_files = files(
|
||||||
|
'How-it-works.md',
|
||||||
|
'libvips-from-C++.md',
|
||||||
|
'Using-vipsthumbnail.md',
|
||||||
|
'How-it-opens-files.md',
|
||||||
|
'Examples.md',
|
||||||
|
'Cite.md',
|
||||||
|
'binding.md',
|
||||||
|
'Making-image-pyramids.md',
|
||||||
|
)
|
||||||
|
|
||||||
|
markdown_content_files_docbook = []
|
||||||
|
foreach markdown_content_file : markdown_content_files
|
||||||
|
# we have some files in markdown ... convert to docbook for gtk-doc
|
||||||
|
# pandoc makes section headers, we want refsect3 for gtk-doc
|
||||||
|
markdown_content_files_docbook += configure_file(
|
||||||
|
input: markdown_content_file,
|
||||||
|
command: [
|
||||||
|
find_program('pandoc'),
|
||||||
|
'@INPUT@',
|
||||||
|
'--template', files('pandoc-docbook-template.docbook'),
|
||||||
|
'--wrap=none',
|
||||||
|
'-V', 'title=@BASENAME@',
|
||||||
|
'-f', 'markdown+smart',
|
||||||
|
'-t', 'docbook',
|
||||||
|
'-o', '@OUTPUT@',
|
||||||
|
],
|
||||||
|
output: '@BASENAME@.xml',
|
||||||
|
)
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
content_files = files(
|
||||||
|
'using-command-line.xml',
|
||||||
|
'using-C.xml',
|
||||||
|
'using-threads.xml',
|
||||||
|
'extending.xml',
|
||||||
|
'function-list.xml',
|
||||||
|
'file-format.xml',
|
||||||
|
)
|
||||||
|
|
||||||
|
images = files(
|
||||||
|
'images/owl.jpg',
|
||||||
|
'images/tn_owl.jpg',
|
||||||
|
'images/interconvert.png',
|
||||||
|
'images/Combine.png',
|
||||||
|
'images/Memtrace.png',
|
||||||
|
'images/Sequence.png',
|
||||||
|
'images/Sink.png',
|
||||||
|
'images/Vips-smp.png',
|
||||||
|
)
|
||||||
|
|
||||||
|
version_conf = configuration_data()
|
||||||
|
version_conf.set('VIPS_VERSION', meson.project_version ())
|
||||||
|
vips_docs = configure_file(input: 'libvips-docs.xml.in', output: 'libvips-docs.xml', configuration: version_conf)
|
||||||
|
|
||||||
|
glib_prefix = glib_dep.get_variable(pkgconfig: 'prefix')
|
||||||
|
glib_docpath = glib_prefix / 'share' / 'gtk-doc' / 'html'
|
||||||
|
docpath = get_option('prefix') / get_option('datadir') / 'gtk-doc' / 'html'
|
||||||
|
|
||||||
|
gnome.gtkdoc('libvips',
|
||||||
|
mode: 'none',
|
||||||
|
main_xml: 'libvips-docs.xml.in',
|
||||||
|
src_dir: include_directories('../libvips'),
|
||||||
|
dependencies: libvips_dep,
|
||||||
|
scan_args: [
|
||||||
|
'--ignore-headers=' + ' '.join(private_headers),
|
||||||
|
'--rebuild-types',
|
||||||
|
],
|
||||||
|
mkdb_args: [ '--default-includes=vips/vips.h' ],
|
||||||
|
fixxref_args: [
|
||||||
|
'--html-dir=@0@'.format(docpath),
|
||||||
|
'--extra-dir=@0@'.format(join_paths(glib_docpath, 'glib')),
|
||||||
|
'--extra-dir=@0@'.format(join_paths(glib_docpath, 'gobject')),
|
||||||
|
'--extra-dir=@0@'.format(join_paths(glib_docpath, 'gio')),
|
||||||
|
],
|
||||||
|
content_files: [ content_files, markdown_content_files_docbook ],
|
||||||
|
expand_content_files: [ content_files, markdown_content_files_docbook ],
|
||||||
|
html_assets: images,
|
||||||
|
install: true
|
||||||
|
)
|
40
fuzz/meson.build
Normal file
40
fuzz/meson.build
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
standaloneengine = static_library('standaloneengine',
|
||||||
|
'StandaloneFuzzTargetMain.c',
|
||||||
|
dependencies: libvips_deps,
|
||||||
|
)
|
||||||
|
|
||||||
|
fuzz_progs = [
|
||||||
|
'jpegsave_file_fuzzer',
|
||||||
|
'jpegsave_buffer_fuzzer',
|
||||||
|
'pngsave_buffer_fuzzer',
|
||||||
|
'webpsave_buffer_fuzzer',
|
||||||
|
'gifsave_buffer_fuzzer',
|
||||||
|
'sharpen_fuzzer',
|
||||||
|
'thumbnail_fuzzer',
|
||||||
|
'smartcrop_fuzzer',
|
||||||
|
'mosaic_fuzzer'
|
||||||
|
]
|
||||||
|
|
||||||
|
fuzz_execs = []
|
||||||
|
foreach fuzz_prog : fuzz_progs
|
||||||
|
fuzz_execs += executable(fuzz_prog,
|
||||||
|
fuzz_prog + '.cc',
|
||||||
|
dependencies: libvips_dep,
|
||||||
|
link_with: standaloneengine
|
||||||
|
)
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
test_fuzz = configure_file(
|
||||||
|
input: 'test_fuzz.sh',
|
||||||
|
output: 'test_fuzz.sh',
|
||||||
|
copy: true,
|
||||||
|
)
|
||||||
|
|
||||||
|
test(
|
||||||
|
'fuzz',
|
||||||
|
test_fuzz,
|
||||||
|
workdir: meson.current_build_dir(),
|
||||||
|
depends: [
|
||||||
|
fuzz_execs,
|
||||||
|
],
|
||||||
|
)
|
60
libvips/arithmetic/meson.build
Normal file
60
libvips/arithmetic/meson.build
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
arithmetic_sources = files(
|
||||||
|
'find_trim.c',
|
||||||
|
'sum.c',
|
||||||
|
'hough.c',
|
||||||
|
'hough_line.c',
|
||||||
|
'hough_circle.c',
|
||||||
|
'abs.c',
|
||||||
|
'complex.c',
|
||||||
|
'deviate.c',
|
||||||
|
'divide.c',
|
||||||
|
'measure.c',
|
||||||
|
'getpoint.c',
|
||||||
|
'multiply.c',
|
||||||
|
'remainder.c',
|
||||||
|
'sign.c',
|
||||||
|
'statistic.c',
|
||||||
|
'stats.c',
|
||||||
|
'avg.c',
|
||||||
|
'min.c',
|
||||||
|
'max.c',
|
||||||
|
'hist_find.c',
|
||||||
|
'hist_find_ndim.c',
|
||||||
|
'hist_find_indexed.c',
|
||||||
|
'project.c',
|
||||||
|
'profile.c',
|
||||||
|
'subtract.c',
|
||||||
|
'math.c',
|
||||||
|
'arithmetic.c',
|
||||||
|
'binary.c',
|
||||||
|
'unary.c',
|
||||||
|
'nary.c',
|
||||||
|
'unaryconst.c',
|
||||||
|
'relational.c',
|
||||||
|
'boolean.c',
|
||||||
|
'add.c',
|
||||||
|
'linear.c',
|
||||||
|
'invert.c',
|
||||||
|
'math2.c',
|
||||||
|
'round.c',
|
||||||
|
)
|
||||||
|
|
||||||
|
arithmetic_headers = files(
|
||||||
|
'hough.h',
|
||||||
|
'statistic.h',
|
||||||
|
'parithmetic.h',
|
||||||
|
'binary.h',
|
||||||
|
'unary.h',
|
||||||
|
'nary.h',
|
||||||
|
'unaryconst.h'
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_sources += arithmetic_sources
|
||||||
|
|
||||||
|
arithmetic_lib = static_library('arithmetic',
|
||||||
|
arithmetic_sources,
|
||||||
|
arithmetic_headers,
|
||||||
|
dependencies: libvips_deps,
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_components += arithmetic_lib
|
51
libvips/colour/meson.build
Normal file
51
libvips/colour/meson.build
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
colour_sources = files(
|
||||||
|
'profiles.c',
|
||||||
|
'profile_load.c',
|
||||||
|
'colour.c',
|
||||||
|
'CMYK2XYZ.c',
|
||||||
|
'XYZ2CMYK.c',
|
||||||
|
'colourspace.c',
|
||||||
|
'dE76.c',
|
||||||
|
'dE00.c',
|
||||||
|
'dECMC.c',
|
||||||
|
'icc_transform.c',
|
||||||
|
'Lab2XYZ.c',
|
||||||
|
'Lab2LCh.c',
|
||||||
|
'LCh2Lab.c',
|
||||||
|
'LCh2UCS.c',
|
||||||
|
'UCS2LCh.c',
|
||||||
|
'XYZ2Lab.c',
|
||||||
|
'XYZ2Yxy.c',
|
||||||
|
'Yxy2XYZ.c',
|
||||||
|
'float2rad.c',
|
||||||
|
'rad2float.c',
|
||||||
|
'Lab2LabQ.c',
|
||||||
|
'LabQ2Lab.c',
|
||||||
|
'LabS2Lab.c',
|
||||||
|
'Lab2LabS.c',
|
||||||
|
'LabS2LabQ.c',
|
||||||
|
'LabQ2LabS.c',
|
||||||
|
'LabQ2sRGB.c',
|
||||||
|
'sRGB2scRGB.c',
|
||||||
|
'sRGB2HSV.c',
|
||||||
|
'HSV2sRGB.c',
|
||||||
|
'scRGB2XYZ.c',
|
||||||
|
'scRGB2BW.c',
|
||||||
|
'XYZ2scRGB.c',
|
||||||
|
'scRGB2sRGB.c',
|
||||||
|
)
|
||||||
|
|
||||||
|
colour_headers = files(
|
||||||
|
'profiles.h',
|
||||||
|
'pcolour.h',
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_sources += colour_sources
|
||||||
|
|
||||||
|
colour_lib = static_library('colour',
|
||||||
|
colour_sources,
|
||||||
|
colour_headers,
|
||||||
|
dependencies: libvips_deps,
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_components += colour_lib
|
59
libvips/conversion/meson.build
Normal file
59
libvips/conversion/meson.build
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
conversion_sources = files(
|
||||||
|
'switch.c',
|
||||||
|
'transpose3d.c',
|
||||||
|
'composite.cpp',
|
||||||
|
'smartcrop.c',
|
||||||
|
'conversion.c',
|
||||||
|
'tilecache.c',
|
||||||
|
'gamma.c',
|
||||||
|
'sequential.c',
|
||||||
|
'flatten.c',
|
||||||
|
'premultiply.c',
|
||||||
|
'unpremultiply.c',
|
||||||
|
'byteswap.c',
|
||||||
|
'cache.c',
|
||||||
|
'copy.c',
|
||||||
|
'embed.c',
|
||||||
|
'flip.c',
|
||||||
|
'insert.c',
|
||||||
|
'join.c',
|
||||||
|
'arrayjoin.c',
|
||||||
|
'extract.c',
|
||||||
|
'replicate.c',
|
||||||
|
'cast.c',
|
||||||
|
'bandjoin.c',
|
||||||
|
'bandrank.c',
|
||||||
|
'recomb.c',
|
||||||
|
'bandmean.c',
|
||||||
|
'bandfold.c',
|
||||||
|
'bandunfold.c',
|
||||||
|
'bandbool.c',
|
||||||
|
'bandary.c',
|
||||||
|
'rot.c',
|
||||||
|
'rot45.c',
|
||||||
|
'autorot.c',
|
||||||
|
'ifthenelse.c',
|
||||||
|
'falsecolour.c',
|
||||||
|
'msb.c',
|
||||||
|
'grid.c',
|
||||||
|
'scale.c',
|
||||||
|
'wrap.c',
|
||||||
|
'subsample.c',
|
||||||
|
'zoom.c',
|
||||||
|
)
|
||||||
|
|
||||||
|
conversion_headers = files(
|
||||||
|
'pconversion.h',
|
||||||
|
'bandary.h',
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_sources += conversion_sources
|
||||||
|
|
||||||
|
conversion_lib = static_library('conversion',
|
||||||
|
conversion_sources,
|
||||||
|
conversion_headers,
|
||||||
|
dependencies: libvips_deps,
|
||||||
|
c_args: [ '-Wno-unknown-pragmas' ],
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_components += conversion_lib
|
33
libvips/convolution/meson.build
Normal file
33
libvips/convolution/meson.build
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
convolution_sources = files(
|
||||||
|
'canny.c',
|
||||||
|
'sobel.c',
|
||||||
|
'convolution.c',
|
||||||
|
'correlation.c',
|
||||||
|
'conv.c',
|
||||||
|
'conva.c',
|
||||||
|
'convf.c',
|
||||||
|
'convi.c',
|
||||||
|
'convasep.c',
|
||||||
|
'convsep.c',
|
||||||
|
'compass.c',
|
||||||
|
'fastcor.c',
|
||||||
|
'spcor.c',
|
||||||
|
'sharpen.c',
|
||||||
|
'gaussblur.c',
|
||||||
|
)
|
||||||
|
|
||||||
|
convolution_headers = files(
|
||||||
|
'pconvolution.h',
|
||||||
|
'correlation.h',
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_sources += convolution_sources
|
||||||
|
|
||||||
|
|
||||||
|
convolution_lib = static_library('convolution',
|
||||||
|
convolution_sources,
|
||||||
|
convolution_headers,
|
||||||
|
dependencies: libvips_deps,
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_components += convolution_lib
|
46
libvips/create/meson.build
Normal file
46
libvips/create/meson.build
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
create_sources = files(
|
||||||
|
'perlin.c',
|
||||||
|
'worley.c',
|
||||||
|
'create.c',
|
||||||
|
'gaussmat.c',
|
||||||
|
'logmat.c',
|
||||||
|
'buildlut.c',
|
||||||
|
'invertlut.c',
|
||||||
|
'tonelut.c',
|
||||||
|
'identity.c',
|
||||||
|
'point.c',
|
||||||
|
'mask.c',
|
||||||
|
'mask_ideal.c',
|
||||||
|
'mask_ideal_ring.c',
|
||||||
|
'mask_ideal_band.c',
|
||||||
|
'mask_butterworth.c',
|
||||||
|
'mask_butterworth_ring.c',
|
||||||
|
'mask_butterworth_band.c',
|
||||||
|
'mask_gaussian.c',
|
||||||
|
'mask_gaussian_ring.c',
|
||||||
|
'mask_gaussian_band.c',
|
||||||
|
'mask_fractal.c',
|
||||||
|
'fractsurf.c',
|
||||||
|
'eye.c',
|
||||||
|
'grey.c',
|
||||||
|
'xyz.c',
|
||||||
|
'black.c',
|
||||||
|
'text.c',
|
||||||
|
'gaussnoise.c',
|
||||||
|
'sines.c',
|
||||||
|
'zone.c',
|
||||||
|
)
|
||||||
|
|
||||||
|
create_headers = files(
|
||||||
|
'pcreate.h',
|
||||||
|
'point.h',
|
||||||
|
'pmask.h',
|
||||||
|
)
|
||||||
|
|
||||||
|
create_lib = static_library('create',
|
||||||
|
create_sources,
|
||||||
|
create_headers,
|
||||||
|
dependencies: libvips_deps,
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_components += create_lib
|
100
libvips/deprecated/meson.build
Normal file
100
libvips/deprecated/meson.build
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
deprecated_sources = files(
|
||||||
|
'video_dispatch.c',
|
||||||
|
'im_video_test.c',
|
||||||
|
'cimg_dispatch.c',
|
||||||
|
'inplace_dispatch.c',
|
||||||
|
'tone.c',
|
||||||
|
'freq_dispatch.c',
|
||||||
|
'im_linreg.c',
|
||||||
|
'im_point_bilinear.c',
|
||||||
|
'resample_dispatch.c',
|
||||||
|
'im_openslide2vips.c',
|
||||||
|
'im_nifti2vips.c',
|
||||||
|
'im_lab_morph.c',
|
||||||
|
'deprecated_dispatch.c',
|
||||||
|
'mosaicing_dispatch.c',
|
||||||
|
'im_maxpos_subpel.c',
|
||||||
|
'im_align_bands.c',
|
||||||
|
'morph_dispatch.c',
|
||||||
|
'colour_dispatch.c',
|
||||||
|
'convol_dispatch.c',
|
||||||
|
'im_zerox.c',
|
||||||
|
'arith_dispatch.c',
|
||||||
|
'hist_dispatch.c',
|
||||||
|
'other_dispatch.c',
|
||||||
|
'im_maxpos_avg.c',
|
||||||
|
'lazy.c',
|
||||||
|
'im_dif_std.c',
|
||||||
|
'im_simcontr.c',
|
||||||
|
'im_spatres.c',
|
||||||
|
'im_stretch3.c',
|
||||||
|
'im_clamp.c',
|
||||||
|
'cooc_funcs.c',
|
||||||
|
'glds_funcs.c',
|
||||||
|
'im_fav4.c',
|
||||||
|
'im_benchmark.c',
|
||||||
|
'im_gadd.c',
|
||||||
|
'im_gaddim.c',
|
||||||
|
'im_gradcor.c',
|
||||||
|
'im_cmulnorm.c',
|
||||||
|
'im_printlines.c',
|
||||||
|
'im_convsub.c',
|
||||||
|
'im_line.c',
|
||||||
|
'im_measure.c',
|
||||||
|
'im_resize_linear.c',
|
||||||
|
'im_debugim.c',
|
||||||
|
'im_gfadd.c',
|
||||||
|
'im_setbox.c',
|
||||||
|
'rename.c',
|
||||||
|
'vips7compat.c',
|
||||||
|
'dispatch_types.c',
|
||||||
|
'package.c',
|
||||||
|
'im_bernd.c',
|
||||||
|
'im_thresh.c',
|
||||||
|
'im_slice.c',
|
||||||
|
'im_print.c',
|
||||||
|
'im_litecor.c',
|
||||||
|
'im_mask2vips.c',
|
||||||
|
'im_vips2mask.c',
|
||||||
|
'rotmask.c',
|
||||||
|
'rw_mask.c',
|
||||||
|
'im_matcat.c',
|
||||||
|
'im_matinv.c',
|
||||||
|
'im_matmul.c',
|
||||||
|
'im_mattrn.c',
|
||||||
|
'matalloc.c',
|
||||||
|
'mask_dispatch.c',
|
||||||
|
'fits.c',
|
||||||
|
'format.c',
|
||||||
|
'format_dispatch.c',
|
||||||
|
'im_analyze2vips.c',
|
||||||
|
'im_csv2vips.c',
|
||||||
|
'im_exr2vips.c',
|
||||||
|
'im_jpeg2vips.c',
|
||||||
|
'im_magick2vips.c',
|
||||||
|
'im_png2vips.c',
|
||||||
|
'im_webp2vips.c',
|
||||||
|
'im_ppm2vips.c',
|
||||||
|
'im_tiff2vips.c',
|
||||||
|
'im_vips2csv.c',
|
||||||
|
'im_vips2jpeg.c',
|
||||||
|
'im_vips2png.c',
|
||||||
|
'im_vips2webp.c',
|
||||||
|
'im_vips2ppm.c',
|
||||||
|
'im_vips2tiff.c',
|
||||||
|
'conver_dispatch.c',
|
||||||
|
'im_vips2dz.c',
|
||||||
|
'im_freq_mask.c',
|
||||||
|
'matlab.c',
|
||||||
|
'radiance.c',
|
||||||
|
'raw.c'
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_sources += deprecated_sources
|
||||||
|
|
||||||
|
deprecated_lib = static_library('deprecated',
|
||||||
|
deprecated_sources,
|
||||||
|
dependencies: libvips_deps,
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_components += deprecated_lib
|
26
libvips/draw/meson.build
Normal file
26
libvips/draw/meson.build
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
draw_sources = files(
|
||||||
|
'draw.c',
|
||||||
|
'drawink.c',
|
||||||
|
'draw_circle.c',
|
||||||
|
'draw_flood.c',
|
||||||
|
'draw_mask.c',
|
||||||
|
'draw_image.c',
|
||||||
|
'draw_rect.c',
|
||||||
|
'draw_line.c',
|
||||||
|
'draw_smudge.c',
|
||||||
|
)
|
||||||
|
|
||||||
|
draw_headers = files(
|
||||||
|
'pdraw.h',
|
||||||
|
'drawink.h',
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_sources += draw_sources
|
||||||
|
|
||||||
|
draw_lib = static_library('draw',
|
||||||
|
draw_sources,
|
||||||
|
draw_headers,
|
||||||
|
dependencies: libvips_deps,
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_components += draw_lib
|
8
libvips/foreign/libnsgif/meson.build
Normal file
8
libvips/foreign/libnsgif/meson.build
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
nsgif_lib = static_library('nsgif',
|
||||||
|
'libnsgif.h',
|
||||||
|
'libnsgif.c',
|
||||||
|
'lzw.c',
|
||||||
|
'lzw.h',
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_components += nsgif_lib
|
132
libvips/foreign/meson.build
Normal file
132
libvips/foreign/meson.build
Normal file
@ -0,0 +1,132 @@
|
|||||||
|
if get_option('nsgif')
|
||||||
|
subdir('libnsgif')
|
||||||
|
endif
|
||||||
|
|
||||||
|
foreign_sources = files(
|
||||||
|
'analyze2vips.c',
|
||||||
|
'analyzeload.c',
|
||||||
|
'cairo.c',
|
||||||
|
'cgifsave.c',
|
||||||
|
'csvload.c',
|
||||||
|
'csvsave.c',
|
||||||
|
'dzsave.c',
|
||||||
|
'exif.c',
|
||||||
|
'fits.c',
|
||||||
|
'fitsload.c',
|
||||||
|
'fitssave.c',
|
||||||
|
'foreign.c',
|
||||||
|
'jp2kload.c',
|
||||||
|
'jp2ksave.c',
|
||||||
|
'jpeg2vips.c',
|
||||||
|
'jpegload.c',
|
||||||
|
'jpegsave.c',
|
||||||
|
'magickload.c',
|
||||||
|
'magicksave.c',
|
||||||
|
'matlab.c',
|
||||||
|
'matload.c',
|
||||||
|
'matrixload.c',
|
||||||
|
'matrixsave.c',
|
||||||
|
'niftiload.c',
|
||||||
|
'niftisave.c',
|
||||||
|
'nsgifload.c',
|
||||||
|
'openexr2vips.c',
|
||||||
|
'openexrload.c',
|
||||||
|
'pdfiumload.c',
|
||||||
|
'pngload.c',
|
||||||
|
'pngsave.c',
|
||||||
|
'ppmload.c',
|
||||||
|
'ppmsave.c',
|
||||||
|
'quantise.c',
|
||||||
|
'radiance.c',
|
||||||
|
'radload.c',
|
||||||
|
'radsave.c',
|
||||||
|
'rawload.c',
|
||||||
|
'rawsave.c',
|
||||||
|
'spngload.c',
|
||||||
|
'svgload.c',
|
||||||
|
'tiff2vips.c',
|
||||||
|
'tiff.c',
|
||||||
|
'tiffload.c',
|
||||||
|
'tiffsave.c',
|
||||||
|
'vips2jpeg.c',
|
||||||
|
'vips2tiff.c',
|
||||||
|
'vips2webp.c',
|
||||||
|
'vipsload.c',
|
||||||
|
'vipspng.c',
|
||||||
|
'vipssave.c',
|
||||||
|
'webp2vips.c',
|
||||||
|
'webpload.c',
|
||||||
|
'webpsave.c',
|
||||||
|
)
|
||||||
|
|
||||||
|
foreign_headers = files(
|
||||||
|
'dbh.h',
|
||||||
|
'jpeg.h',
|
||||||
|
'pforeign.h',
|
||||||
|
'quantise.h',
|
||||||
|
'tiff.h',
|
||||||
|
)
|
||||||
|
|
||||||
|
# We still need to include the GObject part of a loader/saver
|
||||||
|
# if it is not built as a dynamically loadable module.
|
||||||
|
magick_module_sources = files(
|
||||||
|
'magick.c',
|
||||||
|
'magick2vips.c',
|
||||||
|
'magick6load.c',
|
||||||
|
'magick7load.c',
|
||||||
|
'vips2magick.c',
|
||||||
|
)
|
||||||
|
|
||||||
|
magick_module_headers = files(
|
||||||
|
'magick.h',
|
||||||
|
)
|
||||||
|
|
||||||
|
if magick_dep.found() and (not get_option('magick-module') or not modules_enabled)
|
||||||
|
foreign_sources += magick_module_sources
|
||||||
|
foreign_headers += magick_module_headers
|
||||||
|
endif
|
||||||
|
|
||||||
|
jpeg_xl_module_sources = files(
|
||||||
|
'jxlload.c',
|
||||||
|
'jxlsave.c',
|
||||||
|
)
|
||||||
|
|
||||||
|
if libjxl_dep.found() and (not get_option('jpeg-xl-module') or not modules_enabled)
|
||||||
|
foreign_sources += jpeg_xl_module_sources
|
||||||
|
endif
|
||||||
|
|
||||||
|
heif_module_sources = files(
|
||||||
|
'heifload.c',
|
||||||
|
'heifsave.c',
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
if libheif_dep.found() and (not get_option('heif-module') or not modules_enabled)
|
||||||
|
foreign_sources += heif_module_sources
|
||||||
|
endif
|
||||||
|
|
||||||
|
poppler_module_sources = files(
|
||||||
|
'popplerload.c',
|
||||||
|
)
|
||||||
|
|
||||||
|
if libpoppler_dep.found() and (not get_option('poppler-module') or not modules_enabled)
|
||||||
|
foreign_sources += poppler_module_sources
|
||||||
|
endif
|
||||||
|
|
||||||
|
openslide_module_sources = files(
|
||||||
|
'openslideload.c',
|
||||||
|
)
|
||||||
|
|
||||||
|
if openslide_dep.found() and (not get_option('openslide-module') or not modules_enabled)
|
||||||
|
foreign_sources += openslide_module_sources
|
||||||
|
endif
|
||||||
|
|
||||||
|
libvips_sources += foreign_sources
|
||||||
|
|
||||||
|
foreign_lib = static_library('foreign',
|
||||||
|
foreign_sources,
|
||||||
|
foreign_headers,
|
||||||
|
dependencies: libvips_deps,
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_components += foreign_lib
|
22
libvips/freqfilt/meson.build
Normal file
22
libvips/freqfilt/meson.build
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
freqfilt_sources = files(
|
||||||
|
'freqfilt.c',
|
||||||
|
'fwfft.c',
|
||||||
|
'invfft.c',
|
||||||
|
'freqmult.c',
|
||||||
|
'spectrum.c',
|
||||||
|
'phasecor.c',
|
||||||
|
)
|
||||||
|
|
||||||
|
freqfilt_headers = files(
|
||||||
|
'pfreqfilt.h',
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_sources += freqfilt_sources
|
||||||
|
|
||||||
|
freqfilt_lib = static_library('freqfilt',
|
||||||
|
freqfilt_sources,
|
||||||
|
freqfilt_headers,
|
||||||
|
dependencies: libvips_deps,
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_components += freqfilt_lib
|
31
libvips/histogram/meson.build
Normal file
31
libvips/histogram/meson.build
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
histogram_sources = files(
|
||||||
|
'histogram.c',
|
||||||
|
'maplut.c',
|
||||||
|
'case.c',
|
||||||
|
'hist_unary.c',
|
||||||
|
'hist_cum.c',
|
||||||
|
'hist_norm.c',
|
||||||
|
'hist_equal.c',
|
||||||
|
'hist_plot.c',
|
||||||
|
'hist_match.c',
|
||||||
|
'hist_local.c',
|
||||||
|
'percent.c',
|
||||||
|
'hist_ismonotonic.c',
|
||||||
|
'hist_entropy.c',
|
||||||
|
'stdif.c',
|
||||||
|
)
|
||||||
|
|
||||||
|
histogram_headers = files(
|
||||||
|
'phistogram.h',
|
||||||
|
'hist_unary.h',
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_sources += histogram_sources
|
||||||
|
|
||||||
|
histogram_lib = static_library('histogram',
|
||||||
|
histogram_sources,
|
||||||
|
histogram_headers,
|
||||||
|
dependencies: libvips_deps,
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_components += histogram_lib
|
34
libvips/include/vips/enumtypes.c.in
Normal file
34
libvips/include/vips/enumtypes.c.in
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
/*** BEGIN file-header ***/
|
||||||
|
/* auto-generated enums for vips introspection */
|
||||||
|
|
||||||
|
#include <vips/vips.h>
|
||||||
|
/*** END file-header ***/
|
||||||
|
|
||||||
|
/*** BEGIN file-production ***/
|
||||||
|
/* enumerations from "@filename@" */
|
||||||
|
/*** END file-production ***/
|
||||||
|
|
||||||
|
/*** BEGIN value-header ***/
|
||||||
|
GType
|
||||||
|
@enum_name@_get_type( void )
|
||||||
|
{
|
||||||
|
static GType etype = 0;
|
||||||
|
|
||||||
|
if( etype == 0 ) {
|
||||||
|
static const G@Type@Value values[] = {
|
||||||
|
/*** END value-header ***/
|
||||||
|
|
||||||
|
/*** BEGIN value-production ***/
|
||||||
|
{@VALUENAME@, "@VALUENAME@", "@valuenick@"},
|
||||||
|
/*** END value-production ***/
|
||||||
|
|
||||||
|
/*** BEGIN value-tail ***/
|
||||||
|
{0, NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
etype = g_@type@_register_static( "@EnumName@", values );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( etype );
|
||||||
|
}
|
||||||
|
/*** END value-tail ***/
|
22
libvips/include/vips/enumtypes.h.in
Normal file
22
libvips/include/vips/enumtypes.h.in
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
/*** BEGIN file-header ***/
|
||||||
|
#ifndef VIPS_ENUM_TYPES_H
|
||||||
|
#define VIPS_ENUM_TYPES_H
|
||||||
|
|
||||||
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
|
/*** END file-header ***/
|
||||||
|
|
||||||
|
/*** BEGIN file-production ***/
|
||||||
|
/* enumerations from "@filename@" */
|
||||||
|
/*** END file-production ***/
|
||||||
|
|
||||||
|
/*** BEGIN value-header ***/
|
||||||
|
GType @enum_name@_get_type (void) G_GNUC_CONST;
|
||||||
|
#define VIPS_TYPE_@ENUMSHORT@ (@enum_name@_get_type())
|
||||||
|
/*** END value-header ***/
|
||||||
|
|
||||||
|
/*** BEGIN file-tail ***/
|
||||||
|
G_END_DECLS
|
||||||
|
|
||||||
|
#endif /*VIPS_ENUM_TYPES_H*/
|
||||||
|
/*** END file-tail ***/
|
189
libvips/include/vips/meson.build
Normal file
189
libvips/include/vips/meson.build
Normal file
@ -0,0 +1,189 @@
|
|||||||
|
public_other_headers = files(
|
||||||
|
'almostdeprecated.h',
|
||||||
|
'buf.h',
|
||||||
|
'connection.h',
|
||||||
|
'dbuf.h',
|
||||||
|
'debug.h',
|
||||||
|
'deprecated.h',
|
||||||
|
'dispatch.h',
|
||||||
|
'format.h',
|
||||||
|
'gate.h',
|
||||||
|
'generate.h',
|
||||||
|
'intl.h',
|
||||||
|
'mask.h',
|
||||||
|
'private.h',
|
||||||
|
'sbuf.h',
|
||||||
|
'semaphore.h',
|
||||||
|
'thread.h',
|
||||||
|
'threadpool.h',
|
||||||
|
'transform.h',
|
||||||
|
'util.h',
|
||||||
|
'vector.h',
|
||||||
|
'video.h',
|
||||||
|
'vips7compat.h',
|
||||||
|
)
|
||||||
|
|
||||||
|
public_headers = files(
|
||||||
|
'arithmetic.h',
|
||||||
|
'basic.h',
|
||||||
|
'colour.h',
|
||||||
|
'conversion.h',
|
||||||
|
'convolution.h',
|
||||||
|
'create.h',
|
||||||
|
'draw.h',
|
||||||
|
'error.h',
|
||||||
|
'foreign.h',
|
||||||
|
'freqfilt.h',
|
||||||
|
'header.h',
|
||||||
|
'histogram.h',
|
||||||
|
'image.h',
|
||||||
|
'interpolate.h',
|
||||||
|
'memory.h',
|
||||||
|
'morphology.h',
|
||||||
|
'mosaicing.h',
|
||||||
|
'object.h',
|
||||||
|
'operation.h',
|
||||||
|
'rect.h',
|
||||||
|
'region.h',
|
||||||
|
'resample.h',
|
||||||
|
'type.h',
|
||||||
|
'vips.h',
|
||||||
|
)
|
||||||
|
|
||||||
|
enumtypes = gnome.mkenums(
|
||||||
|
'enumtypes',
|
||||||
|
sources: files(
|
||||||
|
'resample.h',
|
||||||
|
'memory.h',
|
||||||
|
'create.h',
|
||||||
|
'foreign.h',
|
||||||
|
'arithmetic.h',
|
||||||
|
'conversion.h',
|
||||||
|
'util.h',
|
||||||
|
'image.h',
|
||||||
|
'colour.h',
|
||||||
|
'operation.h',
|
||||||
|
'convolution.h',
|
||||||
|
'morphology.h',
|
||||||
|
'draw.h',
|
||||||
|
'basic.h',
|
||||||
|
'object.h',
|
||||||
|
'region.h'
|
||||||
|
),
|
||||||
|
h_template: 'enumtypes.h.in',
|
||||||
|
c_template: 'enumtypes.c.in',
|
||||||
|
install_header: true,
|
||||||
|
install_dir: get_option('prefix') / get_option('includedir') / 'vips'
|
||||||
|
)
|
||||||
|
|
||||||
|
vips_verbose_config = []
|
||||||
|
vips_verbose_config += 'enable debug: @0@'.format(get_option('debug'))
|
||||||
|
vips_verbose_config += 'enable deprecated library components: @0@'.format(get_option('deprecated'))
|
||||||
|
vips_verbose_config += 'enable modules: @0@'.format(modules_enabled)
|
||||||
|
vips_verbose_config += 'use fftw3 for FFT: @0@'.format(fftw_dep.found())
|
||||||
|
vips_verbose_config += 'accelerate loops with orc: @0@'.format(orc_dep.found())
|
||||||
|
vips_verbose_config += 'ICC profile support with lcms: @0@'.format(lcms_dep.found())
|
||||||
|
vips_verbose_config += 'zlib: @0@'.format(zlib_dep.found())
|
||||||
|
vips_verbose_config += 'text rendering with pangocairo: @0@'.format(pangocairo_dep.found())
|
||||||
|
vips_verbose_config += 'font file support with fontconfig: @0@'.format(fontconfig_dep.found())
|
||||||
|
vips_verbose_config += 'RAD load/save: @0@'.format(get_option('radiance'))
|
||||||
|
vips_verbose_config += 'Analyze7 load/save: @0@'.format(get_option('analyze'))
|
||||||
|
vips_verbose_config += 'PPM load/save: @0@'.format(get_option('ppm'))
|
||||||
|
vips_verbose_config += 'GIF load: @0@'.format(get_option('nsgif'))
|
||||||
|
vips_verbose_config += 'GIF save with cgif: @0@'.format(cgif_dep.found())
|
||||||
|
vips_verbose_config += 'EXIF metadata support with libexif: @0@'.format(libexif_dep.found())
|
||||||
|
vips_verbose_config += 'JPEG load/save with libjpeg: @0@'.format(libjpeg_dep.found())
|
||||||
|
vips_verbose_config += 'JXL load/save with libjxl: @0@ (dynamic module: @1@)'.format(libjxl_dep.found(), get_option('jpeg-xl-module'))
|
||||||
|
vips_verbose_config +='JPEG2000 load/save with libopenjp2: @0@'.format(libopenjp2_dep.found())
|
||||||
|
vips_verbose_config += 'PNG load with libspng: @0@'.format(spng_dep.found())
|
||||||
|
vips_verbose_config += 'PNG load/save with libpng: @0@'.format(png_dep.found())
|
||||||
|
vips_verbose_config += 'selected quantisation package: @0@'.format(quantisation_package.found() ? quantisation_package.name() : 'none')
|
||||||
|
vips_verbose_config += 'TIFF load/save with libtiff: @0@'.format(libtiff_dep.found())
|
||||||
|
vips_verbose_config += 'image pyramid save: @0@'.format(gsf_dep.found())
|
||||||
|
vips_verbose_config += 'HEIC/AVIF load/save with libheif: @0@ (dynamic module: @1@)'.format(libheif_dep.found(), get_option('heif-module'))
|
||||||
|
vips_verbose_config += 'WebP load/save with libwebp: @0@'.format(libwebp_dep.found())
|
||||||
|
vips_verbose_config += 'PDF load with PDFium: @0@'.format(pdfium_dep.found())
|
||||||
|
vips_verbose_config += 'PDF load with poppler-glib: @0@ (dynamic module: @1@)'.format(libpoppler_dep.found(), get_option('poppler-module'))
|
||||||
|
vips_verbose_config += 'SVG load with librsvg-2.0: @0@'.format(librsvg_dep.found())
|
||||||
|
vips_verbose_config += 'EXR load with OpenEXR: @0@'.format(openexr_dep.found())
|
||||||
|
vips_verbose_config += 'OpenSlide load: @0@ (dynamic module: @1@)'.format(openslide_dep.found(), get_option('openslide-module'))
|
||||||
|
vips_verbose_config += 'Matlab load with matio: @0@'.format(matio_dep.found())
|
||||||
|
vips_verbose_config += 'NIfTI load/save with niftiio: @0@'.format(libnifti_dep.found())
|
||||||
|
vips_verbose_config += 'FITS load/save with cfitsio: @0@'.format(cfitsio_dep.found())
|
||||||
|
vips_verbose_config += 'Magick package: @0@ (dynamic module: @1@)'.format(magick_dep.found(), get_option('magick-module'))
|
||||||
|
if magick_dep.found()
|
||||||
|
magick_version_str = 'magick' + magick_dep.version().split('.')[0]
|
||||||
|
else
|
||||||
|
magick_version_str = 'none'
|
||||||
|
endif
|
||||||
|
vips_verbose_config += 'Magick API version: @0@'.format(magick_version_str)
|
||||||
|
vips_verbose_config += 'load with libMagickCore: @0@'.format(magick_dep.found() and 'load' in get_option('magick-features'))
|
||||||
|
vips_verbose_config += 'save with libMagickCore: @0@'.format(magick_dep.found() and 'save' in get_option('magick-features'))
|
||||||
|
|
||||||
|
version_data = configuration_data()
|
||||||
|
version_data.set('VIPS_VERSION', meson.project_version())
|
||||||
|
version_data.set('VIPS_VERSION_STRING', meson.project_version())
|
||||||
|
version_data.set('VIPS_MAJOR_VERSION', version_major)
|
||||||
|
version_data.set('VIPS_MINOR_VERSION', version_minor)
|
||||||
|
version_data.set('VIPS_MICRO_VERSION', version_patch)
|
||||||
|
version_data.set('LIBRARY_CURRENT', library_current)
|
||||||
|
version_data.set('LIBRARY_REVISION', library_revision)
|
||||||
|
version_data.set('LIBRARY_AGE', library_age)
|
||||||
|
version_data.set('VIPS_CONFIG', ', '.join(vips_verbose_config))
|
||||||
|
#FIXME: Do not require this
|
||||||
|
if target_machine.system() == 'windows' or target_machine.system() == 'cygwin'
|
||||||
|
version_data.set('VIPS_EXEEXT', '.exe')
|
||||||
|
else
|
||||||
|
version_data.set('VIPS_EXEEXT', '')
|
||||||
|
endif
|
||||||
|
version_data.set10('VIPS_ENABLE_DEPRECATED', get_option('deprecated'))
|
||||||
|
|
||||||
|
version_header = configure_file(
|
||||||
|
input: 'version.h.in',
|
||||||
|
output: 'version.h',
|
||||||
|
configuration: version_data,
|
||||||
|
install: true,
|
||||||
|
install_dir: get_option('prefix') / get_option('includedir') / 'vips'
|
||||||
|
)
|
||||||
|
|
||||||
|
#FIXME: Do not require this
|
||||||
|
soname_data = configuration_data()
|
||||||
|
if target_machine.system() == 'windows'
|
||||||
|
soname_data.set_quoted('VIPS_SONAME', 'vips-@0@.dll'.format(library_current - library_age))
|
||||||
|
elif target_machine.system() == 'cygwin'
|
||||||
|
soname_data.set_quoted('VIPS_SONAME', 'cygvips-@0@.dll'.format(library_current - library_age))
|
||||||
|
elif target_machine.system() == 'darwin'
|
||||||
|
soname_data.set_quoted('VIPS_SONAME', 'libvips.dylib')
|
||||||
|
else
|
||||||
|
soname_data.set_quoted('VIPS_SONAME', 'libvips.so')
|
||||||
|
endif
|
||||||
|
soname_header = configure_file(
|
||||||
|
output: 'soname.h',
|
||||||
|
configuration: soname_data,
|
||||||
|
install: true,
|
||||||
|
install_dir: get_option('prefix') / get_option('includedir') / 'vips'
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_sources += public_headers
|
||||||
|
libvips_sources += enumtypes
|
||||||
|
libvips_sources += version_header
|
||||||
|
libvips_sources += soname_header
|
||||||
|
|
||||||
|
install_headers(
|
||||||
|
public_other_headers,
|
||||||
|
public_headers,
|
||||||
|
subdir: 'vips'
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_includedir = include_directories('..')
|
||||||
|
libvips_headers_dep = declare_dependency(
|
||||||
|
sources: [
|
||||||
|
public_headers,
|
||||||
|
enumtypes[1],
|
||||||
|
version_header,
|
||||||
|
soname_header
|
||||||
|
],
|
||||||
|
include_directories: libvips_includedir
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_deps += libvips_headers_dep
|
60
libvips/iofuncs/meson.build
Normal file
60
libvips/iofuncs/meson.build
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
iofuncs_sources = files(
|
||||||
|
'ginputsource.c',
|
||||||
|
'sourceginput.c',
|
||||||
|
'connection.c',
|
||||||
|
'source.c',
|
||||||
|
'sourcecustom.c',
|
||||||
|
'target.c',
|
||||||
|
'targetcustom.c',
|
||||||
|
'sbuf.c',
|
||||||
|
'dbuf.c',
|
||||||
|
'reorder.c',
|
||||||
|
'type.c',
|
||||||
|
'gate.c',
|
||||||
|
'object.c',
|
||||||
|
'error.c',
|
||||||
|
'image.c',
|
||||||
|
'vips.c',
|
||||||
|
'generate.c',
|
||||||
|
'mapfile.c',
|
||||||
|
'cache.c',
|
||||||
|
'sink.c',
|
||||||
|
'sinkmemory.c',
|
||||||
|
'sinkdisc.c',
|
||||||
|
'sinkscreen.c',
|
||||||
|
'memory.c',
|
||||||
|
'header.c',
|
||||||
|
'operation.c',
|
||||||
|
'region.c',
|
||||||
|
'rect.c',
|
||||||
|
'semaphore.c',
|
||||||
|
'threadpool.c',
|
||||||
|
'util.c',
|
||||||
|
'init.c',
|
||||||
|
'buf.c',
|
||||||
|
'window.c',
|
||||||
|
'vector.c',
|
||||||
|
'system.c',
|
||||||
|
'buffer.c',
|
||||||
|
)
|
||||||
|
|
||||||
|
iofuncs_headers = files(
|
||||||
|
'sink.h',
|
||||||
|
)
|
||||||
|
|
||||||
|
vipsmarshal = gnome.genmarshal(
|
||||||
|
'vipsmarshal',
|
||||||
|
prefix: 'vips',
|
||||||
|
sources: 'vipsmarshal.list',
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_sources += iofuncs_sources
|
||||||
|
|
||||||
|
iofuncs_lib = static_library('iofuncs',
|
||||||
|
iofuncs_sources,
|
||||||
|
iofuncs_headers,
|
||||||
|
vipsmarshal,
|
||||||
|
dependencies: libvips_deps,
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_components += iofuncs_lib
|
141
libvips/meson.build
Normal file
141
libvips/meson.build
Normal file
@ -0,0 +1,141 @@
|
|||||||
|
libvips_sources = []
|
||||||
|
libvips_components = []
|
||||||
|
subdir('include/vips')
|
||||||
|
subdir('foreign')
|
||||||
|
if get_option('deprecated')
|
||||||
|
subdir('deprecated')
|
||||||
|
endif
|
||||||
|
subdir('arithmetic')
|
||||||
|
subdir('resample')
|
||||||
|
subdir('colour')
|
||||||
|
subdir('conversion')
|
||||||
|
subdir('convolution')
|
||||||
|
subdir('freqfilt')
|
||||||
|
subdir('histogram')
|
||||||
|
subdir('draw')
|
||||||
|
subdir('iofuncs')
|
||||||
|
subdir('morphology')
|
||||||
|
subdir('mosaicing')
|
||||||
|
subdir('create')
|
||||||
|
|
||||||
|
libvips_lib = library('vips',
|
||||||
|
enumtypes,
|
||||||
|
link_whole: libvips_components,
|
||||||
|
dependencies: libvips_deps,
|
||||||
|
version: library_version,
|
||||||
|
install: true,
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_dep = declare_dependency(
|
||||||
|
link_with: libvips_lib,
|
||||||
|
dependencies: libvips_deps,
|
||||||
|
sources: [ enumtypes, soname_header ]
|
||||||
|
)
|
||||||
|
|
||||||
|
pkg.generate(
|
||||||
|
libvips_lib,
|
||||||
|
requires: [ glib_dep, gio_dep, gobject_dep ],
|
||||||
|
name: 'vips',
|
||||||
|
description: 'Image processing library',
|
||||||
|
)
|
||||||
|
|
||||||
|
if get_option('introspection')
|
||||||
|
vips_gir = gnome.generate_gir(
|
||||||
|
libvips_lib,
|
||||||
|
namespace: 'Vips',
|
||||||
|
nsversion: '8.0',
|
||||||
|
identifier_prefix: 'Vips',
|
||||||
|
symbol_prefix: 'vips',
|
||||||
|
header: 'vips/vips.h',
|
||||||
|
sources: libvips_sources,
|
||||||
|
dependencies: libvips_deps,
|
||||||
|
# TODO: Fix all the warnings and remove this extra_arg
|
||||||
|
extra_args: '--quiet',
|
||||||
|
includes: 'GObject-2.0',
|
||||||
|
install: true
|
||||||
|
)
|
||||||
|
|
||||||
|
if get_option('vapi')
|
||||||
|
gnome.generate_vapi(
|
||||||
|
'vips',
|
||||||
|
sources: vips_gir[0],
|
||||||
|
packages: [ 'glib-2.0', 'gio-2.0', 'gobject-2.0' ],
|
||||||
|
install: true
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
#
|
||||||
|
# The following configuration is only valid when the modules are enabled
|
||||||
|
#
|
||||||
|
if not modules_enabled
|
||||||
|
subdir_done()
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Keep the autotools convention for shared module suffix because GModule
|
||||||
|
# depends on it: https://gitlab.gnome.org/GNOME/glib/issues/1413
|
||||||
|
module_suffix = []
|
||||||
|
if ['darwin', 'ios'].contains(host_machine.system())
|
||||||
|
module_suffix = 'so'
|
||||||
|
endif
|
||||||
|
|
||||||
|
if magick_dep.found() and get_option('magick-module')
|
||||||
|
shared_module('vips-magick',
|
||||||
|
'module/magick.c',
|
||||||
|
magick_module_sources,
|
||||||
|
magick_module_headers,
|
||||||
|
name_prefix: '',
|
||||||
|
name_suffix: module_suffix,
|
||||||
|
dependencies: [libvips_dep, magick_dep],
|
||||||
|
install: true,
|
||||||
|
install_dir: module_dir
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if libjxl_dep.found() and get_option('jpeg-xl-module')
|
||||||
|
shared_module('vips-jxl',
|
||||||
|
'module/jxl.c',
|
||||||
|
jpeg_xl_module_sources,
|
||||||
|
name_prefix: '',
|
||||||
|
name_suffix: module_suffix,
|
||||||
|
dependencies: [libvips_dep, libjxl_dep, libjxl_threads_dep],
|
||||||
|
install: true,
|
||||||
|
install_dir: module_dir
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if libheif_dep.found() and get_option('heif-module')
|
||||||
|
shared_module('vips-heif',
|
||||||
|
'module/heif.c',
|
||||||
|
heif_module_sources,
|
||||||
|
name_prefix: '',
|
||||||
|
name_suffix: module_suffix,
|
||||||
|
dependencies: [libvips_dep, libheif_dep],
|
||||||
|
install: true,
|
||||||
|
install_dir: module_dir
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if libpoppler_dep.found() and get_option('poppler-module')
|
||||||
|
shared_module('vips-poppler',
|
||||||
|
'module/poppler.c',
|
||||||
|
poppler_module_sources,
|
||||||
|
name_prefix: '',
|
||||||
|
name_suffix: module_suffix,
|
||||||
|
dependencies: [libvips_dep, libpoppler_dep, cairo_dep],
|
||||||
|
install: true,
|
||||||
|
install_dir: module_dir
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if openslide_dep.found() and get_option('openslide-module')
|
||||||
|
shared_module('vips-openslide',
|
||||||
|
'module/openslide.c',
|
||||||
|
openslide_module_sources,
|
||||||
|
name_prefix: '',
|
||||||
|
name_suffix: module_suffix,
|
||||||
|
dependencies: [libvips_dep, openslide_dep],
|
||||||
|
install: true,
|
||||||
|
install_dir: module_dir
|
||||||
|
)
|
||||||
|
endif
|
22
libvips/morphology/meson.build
Normal file
22
libvips/morphology/meson.build
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
morphology_sources = files(
|
||||||
|
'nearest.c',
|
||||||
|
'morphology.c',
|
||||||
|
'countlines.c',
|
||||||
|
'rank.c',
|
||||||
|
'morph.c',
|
||||||
|
'labelregions.c',
|
||||||
|
)
|
||||||
|
|
||||||
|
morphology_headers = files(
|
||||||
|
'pmorphology.h',
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_sources += morphology_sources
|
||||||
|
|
||||||
|
morphology_lib = static_library('morphology',
|
||||||
|
morphology_sources,
|
||||||
|
morphology_headers,
|
||||||
|
dependencies: libvips_deps,
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_components += morphology_lib
|
36
libvips/mosaicing/meson.build
Normal file
36
libvips/mosaicing/meson.build
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
mosaicing_sources = files(
|
||||||
|
'mosaicing.c',
|
||||||
|
'merge.c',
|
||||||
|
'mosaic.c',
|
||||||
|
'match.c',
|
||||||
|
'mosaic1.c',
|
||||||
|
'chkpair.c',
|
||||||
|
'matrixinvert.c',
|
||||||
|
'global_balance.c',
|
||||||
|
'lrmerge.c',
|
||||||
|
'tbmerge.c',
|
||||||
|
'lrmosaic.c',
|
||||||
|
'tbmosaic.c',
|
||||||
|
'remosaic.c',
|
||||||
|
'im_avgdxdy.c',
|
||||||
|
'im_clinear.c',
|
||||||
|
'im_improve.c',
|
||||||
|
'im_initialize.c',
|
||||||
|
'im_lrcalcon.c',
|
||||||
|
'im_tbcalcon.c',
|
||||||
|
)
|
||||||
|
|
||||||
|
mosaicing_headers = files(
|
||||||
|
'global_balance.h',
|
||||||
|
'pmosaicing.h',
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_sources += mosaicing_sources
|
||||||
|
|
||||||
|
mosaicing_lib = static_library('mosaicing',
|
||||||
|
mosaicing_sources,
|
||||||
|
mosaicing_headers,
|
||||||
|
dependencies: libvips_deps,
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_components += mosaicing_lib
|
36
libvips/resample/meson.build
Normal file
36
libvips/resample/meson.build
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
resample_sources = files(
|
||||||
|
'thumbnail.c',
|
||||||
|
'mapim.c',
|
||||||
|
'affine.c',
|
||||||
|
'quadratic.c',
|
||||||
|
'resample.c',
|
||||||
|
'similarity.c',
|
||||||
|
'resize.c',
|
||||||
|
'shrink.c',
|
||||||
|
'shrinkh.c',
|
||||||
|
'shrinkv.c',
|
||||||
|
'reduce.c',
|
||||||
|
'reduceh.cpp',
|
||||||
|
'reducev.cpp',
|
||||||
|
'interpolate.c',
|
||||||
|
'transform.c',
|
||||||
|
'bicubic.cpp',
|
||||||
|
'lbb.cpp',
|
||||||
|
'nohalo.cpp',
|
||||||
|
'vsqbs.cpp',
|
||||||
|
)
|
||||||
|
|
||||||
|
resample_headers = files(
|
||||||
|
'presample.h',
|
||||||
|
'templates.h',
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_sources += resample_sources
|
||||||
|
|
||||||
|
resample_lib = static_library('resample',
|
||||||
|
resample_sources,
|
||||||
|
resample_headers,
|
||||||
|
dependencies: libvips_deps,
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_components += resample_lib
|
11
man/meson.build
Normal file
11
man/meson.build
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
install_man(
|
||||||
|
'batch_crop.1',
|
||||||
|
'batch_image_convert.1',
|
||||||
|
'batch_rubber_sheet.1',
|
||||||
|
'vipsedit.1',
|
||||||
|
'vipsheader.1',
|
||||||
|
'light_correct.1',
|
||||||
|
'vips.1',
|
||||||
|
'vipsprofile.1',
|
||||||
|
'vipsthumbnail.1'
|
||||||
|
)
|
544
meson.build
Normal file
544
meson.build
Normal file
@ -0,0 +1,544 @@
|
|||||||
|
project('vips', 'c', 'cpp',
|
||||||
|
version: '8.13.0',
|
||||||
|
meson_version: '>=0.56',
|
||||||
|
default_options: [
|
||||||
|
'c_std=c99'
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
version_parts = meson.project_version().split('.')
|
||||||
|
version_major = version_parts[0]
|
||||||
|
version_minor = version_parts[1]
|
||||||
|
version_patch = version_parts[2]
|
||||||
|
|
||||||
|
# rules:
|
||||||
|
# sources changed: increment revision
|
||||||
|
# binary interface changed: increment current, reset revision to 0
|
||||||
|
# binary interface changes backwards compatible?: increment age
|
||||||
|
# binary interface changes not backwards compatible?: reset age to 0
|
||||||
|
library_current = 57
|
||||||
|
library_age = 15
|
||||||
|
library_revision = 0
|
||||||
|
library_version = '@0@.@1@.@2@'.format(library_current - library_age, library_age, library_revision)
|
||||||
|
|
||||||
|
gnome = import('gnome')
|
||||||
|
pymod = import('python')
|
||||||
|
pkg = import('pkgconfig')
|
||||||
|
i18n = import('i18n')
|
||||||
|
|
||||||
|
add_project_arguments('-Drestrict=__restrict', language: 'cpp')
|
||||||
|
add_project_link_arguments(
|
||||||
|
'-no-undefined',
|
||||||
|
language: 'c',
|
||||||
|
)
|
||||||
|
|
||||||
|
cc = meson.get_compiler('c')
|
||||||
|
cpp = meson.get_compiler('cpp')
|
||||||
|
|
||||||
|
glib_dep = dependency('glib-2.0')
|
||||||
|
gio_dep = dependency('gio-2.0')
|
||||||
|
gobject_dep = dependency('gobject-2.0')
|
||||||
|
gmodule_dep = dependency('gmodule-no-export-2.0')
|
||||||
|
expat_dep = dependency('expat')
|
||||||
|
thread_dep = dependency('threads')
|
||||||
|
m_dep = cc.find_library('m', required : false)
|
||||||
|
|
||||||
|
libvips_deps = [
|
||||||
|
glib_dep,
|
||||||
|
gio_dep,
|
||||||
|
gobject_dep,
|
||||||
|
gmodule_dep,
|
||||||
|
expat_dep,
|
||||||
|
thread_dep,
|
||||||
|
m_dep,
|
||||||
|
]
|
||||||
|
|
||||||
|
prefix_dir = get_option('prefix')
|
||||||
|
lib_dir = prefix_dir / get_option('libdir')
|
||||||
|
if gmodule_dep.get_variable(pkgconfig: 'gmodule_supported') != 'false'
|
||||||
|
modules_enabled = get_option('modules').enabled() or get_option('modules').auto()
|
||||||
|
elif get_option('modules').enabled()
|
||||||
|
error('GModule is not supported on your system, please reconfigure with -Dmodules=disabled')
|
||||||
|
else
|
||||||
|
modules_enabled = false
|
||||||
|
endif
|
||||||
|
|
||||||
|
module_dir = lib_dir / 'vips-modules-@0@.@1@'.format(version_major, version_minor)
|
||||||
|
|
||||||
|
cfg_var = configuration_data()
|
||||||
|
cfg_var.set_quoted('G_LOG_DOMAIN', 'VIPS')
|
||||||
|
|
||||||
|
if (glib_dep.version().version_compare('>=2.48'))
|
||||||
|
cfg_var.set('HAVE_CHECKED_MUL', '1')
|
||||||
|
endif
|
||||||
|
if (glib_dep.version().version_compare('>=2.62'))
|
||||||
|
cfg_var.set('HAVE_DATE_TIME_FORMAT_ISO8601', '1')
|
||||||
|
endif
|
||||||
|
|
||||||
|
if modules_enabled
|
||||||
|
cfg_var.set('ENABLE_MODULES', '1')
|
||||||
|
endif
|
||||||
|
|
||||||
|
# we also need to be able to mix vector and scalar arithmetic
|
||||||
|
vector_arithmetic_check = '''
|
||||||
|
typedef float v4f __attribute__((vector_size(4 * sizeof(float)),aligned(16)));
|
||||||
|
int main(void) {
|
||||||
|
v4f f = {1, 2, 3, 4}; f *= 12.0;
|
||||||
|
v4f g = {5, 6, 7, 8}; f = g > 0 ? g : -1 * g;
|
||||||
|
}
|
||||||
|
'''
|
||||||
|
|
||||||
|
# gcc 7.2 seems to work, but then gets confused by signed constants in templates
|
||||||
|
signed_constants_check = '''
|
||||||
|
typedef float v4f __attribute__((vector_size(4 * sizeof(float)),aligned(16)));
|
||||||
|
template <typename T>
|
||||||
|
static void
|
||||||
|
h( v4f B )
|
||||||
|
{
|
||||||
|
v4f f;
|
||||||
|
f = -1 * B;
|
||||||
|
}
|
||||||
|
'''
|
||||||
|
|
||||||
|
if cpp.compiles(vector_arithmetic_check, name: 'Has vector arithmetic', dependencies: m_dep)
|
||||||
|
if cpp.compiles(signed_constants_check, name: 'Has signed constants in vector templates', dependencies: m_dep)
|
||||||
|
cfg_var.set('HAVE_VECTOR_ARITH', '1')
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
func_names = [ 'getcwd', 'gettimeofday', 'getwd', 'memset', 'munmap', 'putenv', 'realpath', 'strcasecmp', 'strchr', 'strcspn', 'strdup', 'strerror', 'strrchr', 'strspn', 'vsnprintf', 'realpath', 'mkstemp', 'mktemp', 'random', 'rand', 'sysconf', 'atexit', '_aligned_malloc', 'posix_memalign', 'memalign', 'cbrt', 'hypot', 'atan2', 'asinh' ]
|
||||||
|
foreach func_name : func_names
|
||||||
|
if cc.has_function(func_name, dependencies: m_dep)
|
||||||
|
cfg_var.set('HAVE_' + func_name.to_upper(), '1')
|
||||||
|
endif
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
if cc.has_function('pthread_setattr_default_np', args: '-D_GNU_SOURCE', prefix: '#include <pthread.h>', dependencies: thread_dep)
|
||||||
|
cfg_var.set('HAVE_PTHREAD_DEFAULT_NP', '1')
|
||||||
|
endif
|
||||||
|
|
||||||
|
gsf_dep = dependency('libgsf-1', version: '>=1.14.26', required: get_option('gsf'))
|
||||||
|
if gsf_dep.found()
|
||||||
|
libvips_deps += gsf_dep
|
||||||
|
cfg_var.set('HAVE_GSF', '1')
|
||||||
|
if gsf_dep.version().version_compare('>=1.14.31')
|
||||||
|
cfg_var.set('HAVE_GSF_ZIP64', '1')
|
||||||
|
cfg_var.set('HAVE_GSF_DEFLATE_LEVEL', '1')
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
fftw_dep = dependency('fftw3', required: get_option('fftw'))
|
||||||
|
if fftw_dep.found()
|
||||||
|
libvips_deps += fftw_dep
|
||||||
|
cfg_var.set('HAVE_FFTW', '1')
|
||||||
|
endif
|
||||||
|
|
||||||
|
# We can simplify this when requiring meson>=0.60.0
|
||||||
|
magick_dep = dependency('MagickCore', required: false)
|
||||||
|
if not magick_dep.found()
|
||||||
|
magick_dep = dependency('ImageMagick', required: get_option('magick'))
|
||||||
|
endif
|
||||||
|
if not get_option('magick').disabled() and magick_dep.found()
|
||||||
|
if get_option('magick-module') and modules_enabled
|
||||||
|
cfg_var.set('MAGICK_MODULE', '1')
|
||||||
|
else
|
||||||
|
libvips_deps += magick_dep
|
||||||
|
endif
|
||||||
|
if magick_dep.version().version_compare('>=7.0')
|
||||||
|
cfg_var.set('HAVE_MAGICK7', '1')
|
||||||
|
elif magick_dep.version().version_compare('>=6.0')
|
||||||
|
cfg_var.set('HAVE_MAGICK6', '1')
|
||||||
|
if cc.has_member('struct _ImageInfo', 'number_scenes', prefix : '#include <magick/api.h>', dependencies: magick_dep)
|
||||||
|
cfg_var.set('HAVE_NUMBER_SCENES', '1')
|
||||||
|
endif
|
||||||
|
func_names = [ 'InheritException', 'AcquireExceptionInfo', 'SetImageProperty', 'SetImageExtent', 'AcquireImage', 'GetVirtualPixels', 'ResetImageProfileIterator', 'ResetImageAttributeIterator', 'ResetImagePropertyIterator', 'MagickCoreGenesis', 'SetImageOption', 'BlobToStringInfo', 'OptimizePlusImageLayers', 'OptimizeImageTransparency' ]
|
||||||
|
foreach func_name : func_names
|
||||||
|
if cc.has_function(func_name, prefix : '#include <magick/api.h>', dependencies: magick_dep)
|
||||||
|
cfg_var.set('HAVE_' + func_name.to_upper(), '1')
|
||||||
|
endif
|
||||||
|
endforeach
|
||||||
|
if cc.compiles('#include <magick/api.h>\nColorspaceType colorspace = CMYColorspace;', name: 'Has CMYColorspace', dependencies: magick_dep)
|
||||||
|
cfg_var.set('HAVE_CMYCOLORSPACE', '1')
|
||||||
|
endif
|
||||||
|
if cc.compiles('#include <magick/api.h>\nColorspaceType colorspace = HCLpColorspace;', name: 'Has HCLpColorspace', dependencies: magick_dep)
|
||||||
|
cfg_var.set('HAVE_HCLPCOLORSPACE', '1')
|
||||||
|
endif
|
||||||
|
# GetImageMagick() takes two args under GM, three under IM
|
||||||
|
if cc.compiles('#include <magick/api.h>\nint main() {(void)GetImageMagick(NULL, 0, NULL);}', name: 'GetImageMagick takes three arguments', dependencies: magick_dep)
|
||||||
|
cfg_var.set('HAVE_GETIMAGEMAGICK3', '1')
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
error('Unsupported libmagick version')
|
||||||
|
endif
|
||||||
|
|
||||||
|
if 'load' in get_option('magick-features')
|
||||||
|
cfg_var.set('ENABLE_MAGICKLOAD', '1')
|
||||||
|
endif
|
||||||
|
if 'save' in get_option('magick-features')
|
||||||
|
cfg_var.set('ENABLE_MAGICKSAVE', '1')
|
||||||
|
if cc.has_function('ImportImagePixels', prefix : '#include <magick/api.h>', dependencies: magick_dep)
|
||||||
|
cfg_var.set('HAVE_IMPORTIMAGEPIXELS', '1')
|
||||||
|
endif
|
||||||
|
if cc.has_function('ImagesToBlob', prefix : '#include <magick/api.h>', dependencies: magick_dep)
|
||||||
|
cfg_var.set('HAVE_IMAGESTOBLOB', '1')
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
cfitsio_dep = dependency('cfitsio', required: get_option('cfitsio'))
|
||||||
|
if cfitsio_dep.found()
|
||||||
|
libvips_deps += cfitsio_dep
|
||||||
|
cfg_var.set('HAVE_CFITSIO', '1')
|
||||||
|
endif
|
||||||
|
|
||||||
|
# quant package we use
|
||||||
|
quantisation_package = disabler()
|
||||||
|
|
||||||
|
imagequant_dep = dependency('imagequant', required: get_option('imagequant'))
|
||||||
|
if imagequant_dep.found()
|
||||||
|
libvips_deps += imagequant_dep
|
||||||
|
cfg_var.set('HAVE_IMAGEQUANT', '1')
|
||||||
|
quantisation_package = imagequant_dep
|
||||||
|
endif
|
||||||
|
|
||||||
|
# only if libimagequant not found
|
||||||
|
quantizr_dep = disabler()
|
||||||
|
if not quantisation_package.found()
|
||||||
|
quantizr_dep = dependency('quantizr', required: get_option('quantizr'))
|
||||||
|
if quantizr_dep.found()
|
||||||
|
libvips_deps += quantizr_dep
|
||||||
|
cfg_var.set('HAVE_QUANTIZR', '1')
|
||||||
|
quantisation_package = quantizr_dep
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
cgif_dep = disabler()
|
||||||
|
if quantisation_package.found()
|
||||||
|
cgif_dep = dependency('cgif', required: get_option('cgif'))
|
||||||
|
if cgif_dep.found()
|
||||||
|
libvips_deps += cgif_dep
|
||||||
|
cfg_var.set('HAVE_CGIF', '1')
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
libexif_dep = dependency('libexif', version: '>=0.6', required: get_option('exif'))
|
||||||
|
if libexif_dep.found()
|
||||||
|
libvips_deps += libexif_dep
|
||||||
|
cfg_var.set('HAVE_EXIF', '1')
|
||||||
|
# some libexif packages need include <libexif/poop.h>, some just <poop.h>
|
||||||
|
# how annoying
|
||||||
|
if cc.has_header('exif-data.h', dependencies: libexif_dep)
|
||||||
|
# libexif includes don't need libexif prefix
|
||||||
|
cfg_var.set('UNTAGGED_EXIF', '1')
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
libjpeg_dep = dependency('libjpeg', required: get_option('jpeg'))
|
||||||
|
if libjpeg_dep.found()
|
||||||
|
libvips_deps += libjpeg_dep
|
||||||
|
cfg_var.set('HAVE_JPEG', '1')
|
||||||
|
# features like trellis quant are exposed as extension parameters ...
|
||||||
|
# mozjpeg 3.2 and later have #define JPEG_C_PARAM_SUPPORTED, but we must
|
||||||
|
# work with earlier versions
|
||||||
|
if cc.has_function('jpeg_c_bool_param_supported', prefix: '#include <stdio.h>\n#include <jpeglib.h>', dependencies: libjpeg_dep)
|
||||||
|
cfg_var.set('HAVE_JPEG_EXT_PARAMS', '1')
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Look for libspng first
|
||||||
|
# 0.6.1 uses "libspng.pc", git master libspng uses "spng.pc"
|
||||||
|
# We can simplify this when requiring meson>=0.60.0
|
||||||
|
spng_dep = dependency('libspng', version: '>=0.6', required: false)
|
||||||
|
if not spng_dep.found()
|
||||||
|
spng_dep = dependency('spng', version: '>=0.6', required: get_option('spng'))
|
||||||
|
endif
|
||||||
|
if not get_option('spng').disabled() and spng_dep.found()
|
||||||
|
libvips_deps += spng_dep
|
||||||
|
cfg_var.set('HAVE_SPNG', '1')
|
||||||
|
endif
|
||||||
|
|
||||||
|
# we can have both PNG and SPNG enabled, with SPNG for read and PNG for write
|
||||||
|
png_dep = dependency('libpng', version: '>=1.2.9', required: get_option('png'))
|
||||||
|
if png_dep.found()
|
||||||
|
libvips_deps += png_dep
|
||||||
|
cfg_var.set('HAVE_PNG', '1')
|
||||||
|
if cc.has_function('png_set_chunk_malloc_max', prefix: '#include <png.h>', dependencies: png_dep)
|
||||||
|
cfg_var.set('HAVE_PNG_SET_CHUNK_MALLOC_MAX', '1')
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
# libwebp ... target 0.6+ to reduce complication
|
||||||
|
# webp has the stuff for handling metadata in two separate libraries -- we
|
||||||
|
# insit on having all of them
|
||||||
|
libwebp_dep = dependency('libwebp', version: '>=0.6', required: get_option('png'))
|
||||||
|
if libwebp_dep.found()
|
||||||
|
libvips_deps += libwebp_dep
|
||||||
|
libvips_deps += dependency('libwebpmux', version: '>=0.6')
|
||||||
|
libvips_deps += dependency('libwebpdemux', version: '>=0.6')
|
||||||
|
cfg_var.set('HAVE_LIBWEBP', '1')
|
||||||
|
endif
|
||||||
|
|
||||||
|
pangocairo_dep = dependency('pangocairo', required: get_option('pangocairo'))
|
||||||
|
if pangocairo_dep.found()
|
||||||
|
libvips_deps += pangocairo_dep
|
||||||
|
cfg_var.set('HAVE_PANGOCAIRO', '1')
|
||||||
|
endif
|
||||||
|
|
||||||
|
fontconfig_dep = dependency('fontconfig', required: get_option('fontconfig'))
|
||||||
|
if fontconfig_dep.found() and pangocairo_dep.found()
|
||||||
|
libvips_deps += fontconfig_dep
|
||||||
|
cfg_var.set('HAVE_FONTCONFIG', '1')
|
||||||
|
endif
|
||||||
|
|
||||||
|
libtiff_dep = dependency('libtiff-4', required: get_option('tiff'))
|
||||||
|
if libtiff_dep.found()
|
||||||
|
libvips_deps += libtiff_dep
|
||||||
|
cfg_var.set('HAVE_TIFF', '1')
|
||||||
|
# ZSTD and WEBP in TIFF added in libtiff 4.0.10
|
||||||
|
if cc.get_define('COMPRESSION_WEBP', prefix: '#include <tiff.h>', dependencies: libtiff_dep) != ''
|
||||||
|
cfg_var.set('HAVE_TIFF_COMPRESSION_WEBP', '1')
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
# 2.40.3 so we get the UNLIMITED open flag
|
||||||
|
librsvg_dep = dependency('librsvg-2.0', version: '>=2.40.3', required: get_option('rsvg'))
|
||||||
|
cairo_dep = dependency('cairo', version: '>=1.2', required: get_option('rsvg'))
|
||||||
|
if librsvg_dep.found() and cairo_dep.found()
|
||||||
|
libvips_deps += librsvg_dep
|
||||||
|
libvips_deps += cairo_dep
|
||||||
|
cfg_var.set('HAVE_RSVG', '1')
|
||||||
|
# 2.46 for rsvg_handle_render_document
|
||||||
|
if librsvg_dep.version().version_compare('>=2.46')
|
||||||
|
cfg_var.set('HAVE_RSVG_HANDLE_RENDER_DOCUMENT', '1')
|
||||||
|
endif
|
||||||
|
zlib_dep = dependency('zlib', version: '>=0.4', required: get_option('zlib'))
|
||||||
|
if zlib_dep.found()
|
||||||
|
libvips_deps += zlib_dep
|
||||||
|
cfg_var.set('HAVE_ZLIB', '1')
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
if get_option('zlib').enabled() and not librsvg_dep.found()
|
||||||
|
message('zlib is only enabled alongside rsvg, disabling as rsvg is not enabled')
|
||||||
|
endif
|
||||||
|
|
||||||
|
openslide_dep = dependency('openslide', version: '>=3.3.0', required: get_option('openslide'))
|
||||||
|
if openslide_dep.found()
|
||||||
|
if get_option('openslide-module') and modules_enabled
|
||||||
|
cfg_var.set('OPENSLIDE_MODULE', '1')
|
||||||
|
else
|
||||||
|
libvips_deps += openslide_dep
|
||||||
|
endif
|
||||||
|
cfg_var.set('HAVE_OPENSLIDE', '1')
|
||||||
|
if openslide_dep.version().version_compare('>=3.4.0')
|
||||||
|
cfg_var.set('HAVE_OPENSLIDE_3_4', '1')
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
matio_dep = dependency('matio', required: get_option('matio'))
|
||||||
|
if matio_dep.found()
|
||||||
|
libvips_deps += matio_dep
|
||||||
|
cfg_var.set('HAVE_MATIO', '1')
|
||||||
|
endif
|
||||||
|
|
||||||
|
# lcms ... refuse to use lcms1
|
||||||
|
lcms_dep = dependency('lcms2', required: get_option('lcms'))
|
||||||
|
if lcms_dep.found()
|
||||||
|
libvips_deps += lcms_dep
|
||||||
|
cfg_var.set('HAVE_LCMS', '1')
|
||||||
|
cfg_var.set('HAVE_LCMS2', '1')
|
||||||
|
endif
|
||||||
|
|
||||||
|
# require 1.2.2 since 1.2.1 has a broken ImfCloseTiledInputFile()
|
||||||
|
openexr_dep = dependency('OpenEXR', version: '>=0.1.2.2', required: get_option('openexr'))
|
||||||
|
if openexr_dep.found()
|
||||||
|
libvips_deps += openexr_dep
|
||||||
|
cfg_var.set('HAVE_OPENEXR', '1')
|
||||||
|
endif
|
||||||
|
|
||||||
|
# 2.4 is the first one to have working threading and tiling
|
||||||
|
libopenjp2_dep = dependency('libopenjp2', version: '>=2.4', required: get_option('openjpeg'))
|
||||||
|
if libopenjp2_dep.found()
|
||||||
|
libvips_deps += libopenjp2_dep
|
||||||
|
cfg_var.set('HAVE_LIBOPENJP2', '1')
|
||||||
|
endif
|
||||||
|
|
||||||
|
# we use loadpw etc.
|
||||||
|
orc_dep = dependency('orc-0.4', version: '>=0.4.11', required: get_option('orc'))
|
||||||
|
if orc_dep.found()
|
||||||
|
libvips_deps += orc_dep
|
||||||
|
cfg_var.set('HAVE_ORC', '1')
|
||||||
|
# orc 0.4.30+ works with cf-protection, but 0.4.30 has a bug with multiple
|
||||||
|
# definitions of OrcTargetPowerPCFlags, so insist on 0.4.31
|
||||||
|
if orc_dep.version().version_compare('>=0.4.31')
|
||||||
|
cfg_var.set('HAVE_ORC_CF_PROTECTION', '1')
|
||||||
|
endif
|
||||||
|
if cc.has_function('orc_program_get_error', prefix: '#include <orc/orc.h>', dependencies: orc_dep)
|
||||||
|
cfg_var.set('HAVE_ORC_PROGRAM_GET_ERROR', '1')
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
# pick 4200 as the starting version number ... no reason, really, it'd
|
||||||
|
# probably work with much older versions
|
||||||
|
pdfium_dep = dependency('pdfium', version: '>=4200', required: get_option('pdfium'))
|
||||||
|
if pdfium_dep.found()
|
||||||
|
libvips_deps += pdfium_dep
|
||||||
|
cfg_var.set('HAVE_PDFIUM', '1')
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
libheif_dep = dependency('libheif', version: '>=0.4.11', required: get_option('heif'))
|
||||||
|
if libheif_dep.found()
|
||||||
|
if get_option('heif-module') and modules_enabled
|
||||||
|
cfg_var.set('HEIF_MODULE', '1')
|
||||||
|
else
|
||||||
|
libvips_deps += libheif_dep
|
||||||
|
endif
|
||||||
|
if libheif_dep.get_variable(pkgconfig: 'builtin_h265_decoder', internal: 'builtin_h265_decoder', default_value: 'no') != 'no' or libheif_dep.get_variable(pkgconfig: 'builtin_avif_decoder', internal: 'builtin_avif_decoder', default_value: 'no') != 'no'
|
||||||
|
cfg_var.set('HAVE_HEIF_DECODER', '1')
|
||||||
|
endif
|
||||||
|
if libheif_dep.get_variable(pkgconfig: 'builtin_h265_encoder', internal: 'builtin_h265_encoder', default_value: 'no') != 'no' or libheif_dep.get_variable(pkgconfig: 'builtin_avif_encoder', internal: 'builtin_avif_encoder', default_value: 'no') != 'no'
|
||||||
|
cfg_var.set('HAVE_HEIF_ENCODER', '1')
|
||||||
|
endif
|
||||||
|
if cc.has_function('heif_image_handle_get_raw_color_profile', prefix: '#include <libheif/heif.h>', dependencies: libheif_dep)
|
||||||
|
cfg_var.set('HAVE_HEIF_COLOR_PROFILE', '1')
|
||||||
|
endif
|
||||||
|
if cc.has_member('struct heif_decoding_options', 'convert_hdr_to_8bit', prefix: '#include <libheif/heif.h>', dependencies: libheif_dep)
|
||||||
|
cfg_var.set('HAVE_HEIF_DECODING_OPTIONS_CONVERT_HDR_TO_8BIT', '1')
|
||||||
|
endif
|
||||||
|
# heif_main_brand added in 1.4.0, but heif_avif appeared in 1.7 ... just check
|
||||||
|
# the libheif version number since testing for enums is annoying
|
||||||
|
if libheif_dep.version().version_compare('>=1.7.0')
|
||||||
|
cfg_var.set('HAVE_HEIF_AVIF', '1')
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
libjxl_dep = dependency('libjxl', version: '>=0.5', required: get_option('jpeg-xl'))
|
||||||
|
libjxl_threads_dep = dependency('libjxl_threads', version: '>=0.5', required: get_option('jpeg-xl'))
|
||||||
|
if libjxl_dep.found() and libjxl_threads_dep.found()
|
||||||
|
if get_option('jpeg-xl-module') and modules_enabled
|
||||||
|
cfg_var.set('LIBJXL_MODULE', '1')
|
||||||
|
else
|
||||||
|
libvips_deps += libjxl_dep
|
||||||
|
libvips_deps += libjxl_threads_dep
|
||||||
|
endif
|
||||||
|
cfg_var.set('HAVE_LIBJXL', '1')
|
||||||
|
if cc.has_function('JxlEncoderInitBasicInfo', prefix: '#include <jxl/encode.h>', dependencies: libjxl_dep)
|
||||||
|
cfg_var.set('HAVE_LIBJXL_JXLENCODERINITBASICINFO', '1')
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
libpoppler_dep = dependency('poppler-glib', version: '>=0.16.0', required: get_option('poppler'))
|
||||||
|
if not cairo_dep.found()
|
||||||
|
cairo_dep = dependency('cairo', version: '>=1.2', required: get_option('poppler'))
|
||||||
|
endif
|
||||||
|
if libpoppler_dep.found() and cairo_dep.found() and pdfium_dep.found()
|
||||||
|
message('PDFium has been found, ignoring Poppler support')
|
||||||
|
elif libpoppler_dep.found() and cairo_dep.found()
|
||||||
|
if get_option('poppler-module') and modules_enabled
|
||||||
|
cfg_var.set('POPPLER_MODULE', '1')
|
||||||
|
else
|
||||||
|
libvips_deps += libpoppler_dep
|
||||||
|
libvips_deps += cairo_dep
|
||||||
|
endif
|
||||||
|
cfg_var.set('HAVE_POPPLER', '1')
|
||||||
|
endif
|
||||||
|
|
||||||
|
libnifti_dep = cc.find_library('niftiio', has_headers: 'nifti1_io.h', required: false)
|
||||||
|
if not libnifti_dep.found()
|
||||||
|
libnifti_dep = dependency('NIFTI', method : 'cmake', modules : ['NIFTI'], required: get_option('nifti'))
|
||||||
|
endif
|
||||||
|
if libnifti_dep.found()
|
||||||
|
libvips_deps += libnifti_dep
|
||||||
|
cfg_var.set('HAVE_NIFTI', '1')
|
||||||
|
endif
|
||||||
|
|
||||||
|
if cc.has_header('sys/file.h')
|
||||||
|
cfg_var.set('HAVE_SYS_FILE_H', '1')
|
||||||
|
endif
|
||||||
|
if cc.has_header('sys/param.h')
|
||||||
|
cfg_var.set('HAVE_SYS_PARAM_H', '1')
|
||||||
|
endif
|
||||||
|
if cc.has_header('sys/mman.h')
|
||||||
|
cfg_var.set('HAVE_SYS_MMAN_H', '1')
|
||||||
|
endif
|
||||||
|
if cc.has_header('unistd.h')
|
||||||
|
cfg_var.set('HAVE_UNISTD_H', '1')
|
||||||
|
endif
|
||||||
|
if cc.has_header('io.h')
|
||||||
|
cfg_var.set('HAVE_IO_H', '1')
|
||||||
|
endif
|
||||||
|
if cc.has_header('direct.h')
|
||||||
|
cfg_var.set('HAVE_DIRECT_H', '1')
|
||||||
|
endif
|
||||||
|
if cc.has_header('windows.h')
|
||||||
|
cfg_var.set('HAVE_WINDOWS_H', '1')
|
||||||
|
endif
|
||||||
|
if get_option('deprecated')
|
||||||
|
cfg_var.set('ENABLE_DEPRECATED', '1')
|
||||||
|
endif
|
||||||
|
if get_option('nsgif')
|
||||||
|
cfg_var.set('HAVE_NSGIF', '1')
|
||||||
|
endif
|
||||||
|
if get_option('ppm')
|
||||||
|
cfg_var.set('HAVE_PPM', '1')
|
||||||
|
endif
|
||||||
|
if get_option('analyze')
|
||||||
|
cfg_var.set('HAVE_ANALYZE', '1')
|
||||||
|
endif
|
||||||
|
if get_option('radiance')
|
||||||
|
cfg_var.set('HAVE_RADIANCE', '1')
|
||||||
|
endif
|
||||||
|
|
||||||
|
gettext_domain = 'vips@0@.@1@'.format(version_major, version_minor)
|
||||||
|
cfg_var.set_quoted('GETTEXT_PACKAGE', gettext_domain)
|
||||||
|
cfg_var.set_quoted('VIPS_PREFIX', prefix_dir)
|
||||||
|
cfg_var.set_quoted('VIPS_LIBDIR', lib_dir)
|
||||||
|
if cc.has_function('ngettext')
|
||||||
|
cfg_var.set('ENABLE_NLS', 1)
|
||||||
|
else
|
||||||
|
libintl_dep = cc.find_library('intl', required : false)
|
||||||
|
if libintl_dep.found()
|
||||||
|
libvips_deps += libintl_dep
|
||||||
|
cfg_var.set('ENABLE_NLS', 1)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
target_system = target_machine.system()
|
||||||
|
if target_system == 'darwin'
|
||||||
|
profile_dir = '/Library/ColorSync/Profiles'
|
||||||
|
elif target_system == 'windows'
|
||||||
|
# need double escapes since this will get pasted into a #define in a C
|
||||||
|
# header ... the C:\Windows is usually overwritten with the result of
|
||||||
|
# GetWindowsDirectoryW()
|
||||||
|
profile_dir = 'C:\\\\Windows\\\\System32\\\\spool\\\\drivers\\\\color'
|
||||||
|
else
|
||||||
|
profile_dir = get_option('prefix') / get_option('datadir') / 'color' / 'icc'
|
||||||
|
endif
|
||||||
|
cfg_var.set_quoted('VIPS_ICC_DIR', profile_dir)
|
||||||
|
|
||||||
|
config_file = configure_file(
|
||||||
|
configuration: cfg_var,
|
||||||
|
output: 'config.h'
|
||||||
|
)
|
||||||
|
|
||||||
|
config_dep = declare_dependency(
|
||||||
|
sources: config_file,
|
||||||
|
include_directories: include_directories('.'),
|
||||||
|
compile_args: '-DHAVE_CONFIG_H=1',
|
||||||
|
)
|
||||||
|
|
||||||
|
libvips_deps += config_dep
|
||||||
|
|
||||||
|
subdir('libvips')
|
||||||
|
if get_option('gtk_doc')
|
||||||
|
subdir('doc')
|
||||||
|
endif
|
||||||
|
subdir('cplusplus')
|
||||||
|
subdir('man')
|
||||||
|
subdir('po')
|
||||||
|
subdir('tools')
|
||||||
|
subdir('test')
|
||||||
|
subdir('fuzz')
|
46
meson_options.txt
Normal file
46
meson_options.txt
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
option('deprecated', type : 'boolean', value : true, description: 'Build deprecated components')
|
||||||
|
option('doxygen', type : 'boolean', value : false, description: 'Build C++ documentation')
|
||||||
|
option('gtk_doc', type : 'boolean', value : false, description: 'Build GTK-doc documentation')
|
||||||
|
option('modules', type : 'feature', value : 'auto', description: 'Build dynamic modules')
|
||||||
|
option('introspection', type : 'boolean', value : false, description: 'Build GObject Introspection')
|
||||||
|
option('vapi', type : 'boolean', value : false, description: 'Build VAPI')
|
||||||
|
# External libraries
|
||||||
|
option('cfitsio', type : 'feature', value : 'auto', description: 'Build with cfitsio')
|
||||||
|
option('cgif', type : 'feature', value : 'auto', description: 'Build with cgif')
|
||||||
|
option('exif', type : 'feature', value : 'auto', description: 'Build with libexif')
|
||||||
|
option('fftw', type : 'feature', value : 'auto', description: 'Build with fftw3')
|
||||||
|
option('fontconfig', type : 'feature', value : 'auto', description: 'Build with fontconfig')
|
||||||
|
option('gsf', type : 'feature', value : 'auto', description: 'Build with libgsf-1')
|
||||||
|
option('heif', type : 'feature', value : 'auto', description: 'Build with libheif')
|
||||||
|
option('heif-module', type : 'boolean', value : false, description: 'Build libheif as module')
|
||||||
|
option('imagequant', type : 'feature', value : 'auto', description: 'Build with imagequant')
|
||||||
|
option('jpeg', type : 'feature', value : 'auto', description: 'Build with jpeg')
|
||||||
|
option('jpeg-xl', type : 'feature', value : 'auto', description: 'Build with libjxl')
|
||||||
|
option('jpeg-xl-module', type : 'boolean', value : false, description: 'Build libjxl as module')
|
||||||
|
option('lcms', type : 'feature', value : 'auto', description: 'Build with lcms2')
|
||||||
|
option('magick', type : 'feature', value : 'auto', description: 'Build with libMagic')
|
||||||
|
option('magick-features', type : 'array', choices : ['load', 'save'], value : ['load', 'save'], description: 'Enable libMagic load or save capabilities')
|
||||||
|
option('magick-module', type : 'boolean', value : false, description: 'Build libMagic as module')
|
||||||
|
option('matio', type : 'feature', value : 'auto', description: 'Build with matio')
|
||||||
|
option('nifti', type : 'feature', value : 'auto', description: 'Build with nifti')
|
||||||
|
option('openexr', type : 'feature', value : 'auto', description: 'Build with OpenEXR')
|
||||||
|
option('openjpeg', type : 'feature', value : 'auto', description: 'Build with libopenjp2')
|
||||||
|
option('openslide', type : 'feature', value : 'auto', description: 'Build with OpenSlide')
|
||||||
|
option('openslide-module', type : 'boolean', value : false, description: 'Build OpenSlide as module')
|
||||||
|
option('orc', type : 'feature', value : 'auto', description: 'Build with orc-0.4')
|
||||||
|
option('pangocairo', type : 'feature', value : 'auto', description: 'Build with pangocairo')
|
||||||
|
option('pdfium', type : 'feature', value : 'auto', description: 'Build with pdfium')
|
||||||
|
option('png', type : 'feature', value : 'auto', description: 'Build with png')
|
||||||
|
option('poppler', type : 'feature', value : 'auto', description: 'Build with poppler')
|
||||||
|
option('poppler-module', type : 'boolean', value : false, description: 'Build poppler as module')
|
||||||
|
option('quantizr', type : 'feature', value : 'auto', description: 'Build with quantizr')
|
||||||
|
option('rsvg', type : 'feature', value : 'auto', description: 'Build with rsvg')
|
||||||
|
option('spng', type : 'feature', value : 'auto', description: 'Build with spng')
|
||||||
|
option('tiff', type : 'feature', value : 'auto', description: 'Build with tiff')
|
||||||
|
option('webp', type : 'feature', value : 'auto', description: 'Build with libwebp')
|
||||||
|
option('zlib', type : 'feature', value : 'auto', description: 'Build with zlib')
|
||||||
|
# not external libraries, but have options to disable them, helps to reduce attack surface
|
||||||
|
option('nsgif', type : 'boolean', value : true, description: 'Build with nsgif')
|
||||||
|
option('ppm', type : 'boolean', value : true, description: 'Build with ppm')
|
||||||
|
option('analyze', type : 'boolean', value : true, description: 'Build with analyze')
|
||||||
|
option('radiance', type : 'boolean', value : true, description: 'Build with radiance')
|
@ -0,0 +1,2 @@
|
|||||||
|
de
|
||||||
|
en_GB
|
@ -47,7 +47,7 @@ libvips/include/vips/transform.h
|
|||||||
libvips/include/vips/type.h
|
libvips/include/vips/type.h
|
||||||
libvips/include/vips/util.h
|
libvips/include/vips/util.h
|
||||||
libvips/include/vips/vector.h
|
libvips/include/vips/vector.h
|
||||||
libvips/include/vips/version.h
|
libvips/include/vips/version.h.in
|
||||||
libvips/include/vips/video.h
|
libvips/include/vips/video.h
|
||||||
libvips/include/vips/vips7compat.h
|
libvips/include/vips/vips7compat.h
|
||||||
libvips/include/vips/vips.h
|
libvips/include/vips/vips.h
|
||||||
|
3
po/meson.build
Normal file
3
po/meson.build
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
i18n.gettext(
|
||||||
|
gettext_domain
|
||||||
|
)
|
59
test/meson.build
Normal file
59
test/meson.build
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
variables_data = configuration_data()
|
||||||
|
variables_data.set('abs_top_srcdir', meson.project_source_root())
|
||||||
|
variables_data.set('abs_top_builddir', meson.project_build_root())
|
||||||
|
variables_data.set('PYTHON', pymod.find_installation().full_path())
|
||||||
|
|
||||||
|
variables_sh = configure_file(
|
||||||
|
input: 'variables.sh.in',
|
||||||
|
output: '@BASENAME@',
|
||||||
|
configuration: variables_data
|
||||||
|
)
|
||||||
|
|
||||||
|
script_tests = [
|
||||||
|
'cli',
|
||||||
|
'formats',
|
||||||
|
'seq',
|
||||||
|
'stall',
|
||||||
|
'threading',
|
||||||
|
]
|
||||||
|
|
||||||
|
foreach script_test : script_tests
|
||||||
|
test(script_test,
|
||||||
|
files('test_' + script_test + '.sh'),
|
||||||
|
workdir: meson.current_build_dir()
|
||||||
|
)
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
test_connections = executable('test_connections',
|
||||||
|
'test_connections.c',
|
||||||
|
dependencies: libvips_dep,
|
||||||
|
)
|
||||||
|
|
||||||
|
test_connections_sh = configure_file(
|
||||||
|
input: 'test_connections.sh',
|
||||||
|
output: 'test_connections.sh',
|
||||||
|
copy: true,
|
||||||
|
)
|
||||||
|
|
||||||
|
test('connections',
|
||||||
|
test_connections_sh,
|
||||||
|
depends: test_connections,
|
||||||
|
workdir: meson.current_build_dir(),
|
||||||
|
)
|
||||||
|
|
||||||
|
test_descriptors = executable('test_descriptors',
|
||||||
|
'test_descriptors.c',
|
||||||
|
dependencies: libvips_dep,
|
||||||
|
)
|
||||||
|
|
||||||
|
test_descriptors_sh = configure_file(
|
||||||
|
input: 'test_descriptors.sh',
|
||||||
|
output: 'test_descriptors.sh',
|
||||||
|
copy: true,
|
||||||
|
)
|
||||||
|
|
||||||
|
test('descriptors',
|
||||||
|
test_descriptors_sh,
|
||||||
|
depends: test_descriptors,
|
||||||
|
workdir: meson.current_build_dir(),
|
||||||
|
)
|
42
tools/meson.build
Normal file
42
tools/meson.build
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
tools = [
|
||||||
|
'vips',
|
||||||
|
'vipsedit',
|
||||||
|
'vipsthumbnail',
|
||||||
|
'vipsheader'
|
||||||
|
]
|
||||||
|
|
||||||
|
foreach tool : tools
|
||||||
|
executable(tool,
|
||||||
|
tool + '.c',
|
||||||
|
dependencies: libvips_dep,
|
||||||
|
install: true
|
||||||
|
)
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
scripts = [
|
||||||
|
'light_correct.in',
|
||||||
|
'shrink_width.in',
|
||||||
|
'batch_image_convert.in',
|
||||||
|
'batch_rubber_sheet.in',
|
||||||
|
'batch_crop.in',
|
||||||
|
]
|
||||||
|
|
||||||
|
script_data = configuration_data()
|
||||||
|
script_data.set('prefix', get_option('prefix'))
|
||||||
|
foreach script : scripts
|
||||||
|
configure_file(
|
||||||
|
input: script,
|
||||||
|
output: '@BASENAME@',
|
||||||
|
install: true,
|
||||||
|
install_dir: get_option('prefix') / get_option('bindir'),
|
||||||
|
install_mode: 'rwxr-xr-x',
|
||||||
|
configuration: script_data
|
||||||
|
)
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
install_data(
|
||||||
|
'vipsprofile',
|
||||||
|
'vips-8.13',
|
||||||
|
install_dir: get_option('prefix') / get_option('bindir'),
|
||||||
|
install_mode: 'rwxr-xr-x',
|
||||||
|
)
|
Loading…
Reference in New Issue
Block a user