diff --git a/include/meson.build b/include/meson.build new file mode 100644 index 0000000000..011c4378b0 --- /dev/null +++ b/include/meson.build @@ -0,0 +1,55 @@ +headers = files( + 'exiv2/basicio.hpp', + 'exiv2/bmffimage.hpp', + 'exiv2/bmpimage.hpp', + 'exiv2/config.h', + 'exiv2/convert.hpp', + 'exiv2/cr2image.hpp', + 'exiv2/crwimage.hpp', + 'exiv2/datasets.hpp', + 'exiv2/easyaccess.hpp', + 'exiv2/epsimage.hpp', + 'exiv2/error.hpp', + 'exiv2/exif.hpp', + 'exiv2/exiv2.hpp', + 'exiv2/futils.hpp', + 'exiv2/gifimage.hpp', + 'exiv2/http.hpp', + 'exiv2/image.hpp', + 'exiv2/image_types.hpp', + 'exiv2/iptc.hpp', + 'exiv2/jp2image.hpp', + 'exiv2/jpgimage.hpp', + 'exiv2/metadatum.hpp', + 'exiv2/mrwimage.hpp', + 'exiv2/orfimage.hpp', + 'exiv2/pgfimage.hpp', + 'exiv2/photoshop.hpp', + 'exiv2/pngimage.hpp', + 'exiv2/preview.hpp', + 'exiv2/properties.hpp', + 'exiv2/psdimage.hpp', + 'exiv2/rafimage.hpp', + 'exiv2/rw2image.hpp', + 'exiv2/slice.hpp', + 'exiv2/tags.hpp', + 'exiv2/tgaimage.hpp', + 'exiv2/tiffimage.hpp', + 'exiv2/types.hpp', + 'exiv2/value.hpp', + 'exiv2/version.hpp', + 'exiv2/webpimage.hpp', + 'exiv2/xmp_exiv2.hpp', + 'exiv2/xmpsidecar.hpp', +) + +headers += exiv_conf +headers += cfile +if zlib_dep.found() + headers += files('exiv2/pngimage.hpp') +endif + +install_headers( + headers, + subdir: 'exiv2', +) diff --git a/meson.build b/meson.build index e61fe98741..c7b5e122a5 100644 --- a/meson.build +++ b/meson.build @@ -124,235 +124,23 @@ cfile = configure_file( configuration: cdata, ) -base_lib = files( - 'src/asfvideo.cpp', - 'src/basicio.cpp', - 'src/bmffimage.cpp', - 'src/bmpimage.cpp', - 'src/cr2image.cpp', - 'src/crwimage.cpp', - 'src/datasets.cpp', - 'src/easyaccess.cpp', - 'src/epsimage.cpp', - 'src/error.cpp', - 'src/exif.cpp', - 'src/futils.cpp', - 'src/gifimage.cpp', - 'src/http.cpp', - 'src/image.cpp', - 'src/iptc.cpp', - 'src/jp2image.cpp', - 'src/jpgimage.cpp', - 'src/matroskavideo.cpp', - 'src/metadatum.cpp', - 'src/mrwimage.cpp', - 'src/orfimage.cpp', - 'src/pgfimage.cpp', - 'src/photoshop.cpp', - 'src/pngimage.cpp', - 'src/preview.cpp', - 'src/properties.cpp', - 'src/psdimage.cpp', - 'src/quicktimevideo.cpp', - 'src/rafimage.cpp', - 'src/riffvideo.cpp', - 'src/rw2image.cpp', - 'src/tags.cpp', - 'src/tgaimage.cpp', - 'src/tiffimage.cpp', - 'src/types.cpp', - 'src/value.cpp', - 'src/version.cpp', - 'src/webpimage.cpp', - 'src/xmp.cpp', - 'src/xmpsidecar.cpp', -) - -int_lib = files( - 'src/canonmn_int.cpp', - 'src/casiomn_int.cpp', - 'src/cr2header_int.cpp', - 'src/crwimage_int.cpp', - 'src/fujimn_int.cpp', - 'src/helper_functions.cpp', - 'src/image_int.cpp', - 'src/jp2image_int.cpp', - 'src/makernote_int.cpp', - 'src/minoltamn_int.cpp', - 'src/nikonmn_int.cpp', - 'src/olympusmn_int.cpp', - 'src/orfimage_int.cpp', - 'src/panasonicmn_int.cpp', - 'src/pentaxmn_int.cpp', - 'src/pngchunk_int.cpp', - 'src/rw2image_int.cpp', - 'src/samsungmn_int.cpp', - 'src/sigmamn_int.cpp', - 'src/sonymn_int.cpp', - 'src/tags_int.cpp', - 'src/tiffcomposite_int.cpp', - 'src/tiffimage_int.cpp', - 'src/tiffvisitor_int.cpp', - 'src/utils.cpp', -) - -headers = files( - 'include/exiv2/basicio.hpp', - 'include/exiv2/bmffimage.hpp', - 'include/exiv2/bmpimage.hpp', - 'include/exiv2/config.h', - 'include/exiv2/convert.hpp', - 'include/exiv2/cr2image.hpp', - 'include/exiv2/crwimage.hpp', - 'include/exiv2/datasets.hpp', - 'include/exiv2/easyaccess.hpp', - 'include/exiv2/epsimage.hpp', - 'include/exiv2/error.hpp', - 'include/exiv2/exif.hpp', - 'include/exiv2/exiv2.hpp', - 'include/exiv2/futils.hpp', - 'include/exiv2/gifimage.hpp', - 'include/exiv2/http.hpp', - 'include/exiv2/image.hpp', - 'include/exiv2/image_types.hpp', - 'include/exiv2/iptc.hpp', - 'include/exiv2/jp2image.hpp', - 'include/exiv2/jpgimage.hpp', - 'include/exiv2/metadatum.hpp', - 'include/exiv2/mrwimage.hpp', - 'include/exiv2/orfimage.hpp', - 'include/exiv2/pgfimage.hpp', - 'include/exiv2/photoshop.hpp', - 'include/exiv2/pngimage.hpp', - 'include/exiv2/preview.hpp', - 'include/exiv2/properties.hpp', - 'include/exiv2/psdimage.hpp', - 'include/exiv2/rafimage.hpp', - 'include/exiv2/rw2image.hpp', - 'include/exiv2/slice.hpp', - 'include/exiv2/tags.hpp', - 'include/exiv2/tgaimage.hpp', - 'include/exiv2/tiffimage.hpp', - 'include/exiv2/types.hpp', - 'include/exiv2/value.hpp', - 'include/exiv2/version.hpp', - 'include/exiv2/webpimage.hpp', - 'include/exiv2/xmp_exiv2.hpp', - 'include/exiv2/xmpsidecar.hpp', -) - -headers += exiv_conf -headers += cfile - -libinc = include_directories('include/exiv2') -xmp_lib = files() -if expat_dep.found() - libinc = include_directories('include/exiv2', 'xmpsdk/include') - xmp_lib = files( - 'xmpsdk/src/ExpatAdapter.cpp', - 'xmpsdk/src/MD5.cpp', - 'xmpsdk/src/ParseRDF.cpp', - 'xmpsdk/src/UnicodeConversions.cpp', - 'xmpsdk/src/WXMPIterator.cpp', - 'xmpsdk/src/WXMPMeta.cpp', - 'xmpsdk/src/WXMPUtils.cpp', - 'xmpsdk/src/XML_Node.cpp', - 'xmpsdk/src/XMPCore_Impl.cpp', - 'xmpsdk/src/XMPIterator.cpp', - 'xmpsdk/src/XMPMeta-GetSet.cpp', - 'xmpsdk/src/XMPMeta-Parse.cpp', - 'xmpsdk/src/XMPMeta-Serialize.cpp', - 'xmpsdk/src/XMPMeta.cpp', - 'xmpsdk/src/XMPUtils-FileInfo.cpp', - 'xmpsdk/src/XMPUtils.cpp', - ) -endif - -if zlib_dep.found() - headers += files('include/exiv2/pngimage.hpp') -endif - -install_man('man/man1/exiv2.1') - -install_headers( - headers, - subdir: 'exiv2', -) - -exiv2int = static_library( - 'exiv2int', - int_lib, - cpp_args: '-DEXIV2API=', - dependencies: deps, - include_directories: libinc, -) - +libinc = include_directories('.', 'include/exiv2') depinc = include_directories('.', 'include') -exiv2int_dep = declare_dependency( - include_directories: depinc, - link_with: exiv2int, -) - -# This is compiled separately, because there are multiple sources for iconv -# (methods "builtin" and "system") and it's possible to have the include -# directory from one dependency leak over and force the system iconv to be used -# instead of the builtin one. This causes miscompilation. -convertlib = static_library( - '_convert', - 'src/convert.cpp', - cpp_args: cargs, - gnu_symbol_visibility: 'hidden', - dependencies: iconv_dep, - include_directories: [depinc, libinc], - build_by_default: false, -) - -exiv2 = library( - 'exiv2', - base_lib, - xmp_lib, - cpp_args: cargs, - version: meson.project_version(), - soversion: sover, - gnu_symbol_visibility: 'hidden', - link_with: convertlib, - dependencies: [deps, exiv2int_dep], - include_directories: libinc, - install: true, -) - -dllapi = '-DEXIV2API=' -if host_machine.system() == 'windows' and get_option('default_library') != 'static' - dllapi = '-DEXIV2API=__declspec(dllimport)' -endif - -exiv2_dep = declare_dependency( - compile_args: dllapi, - dependencies: intl_dep, - include_directories: depinc, - link_with: exiv2, -) - -pkg = import('pkgconfig') -pkg.generate( - exiv2, - description: 'Exif/IPTC/Xmp C++ metadata library and tools plus ICC Profiles, Previews and more.', - url: 'https://exiv2.org', -) +subdir('xmpsdk') +subdir('src') +subdir('include') -exiv2inc = include_directories('include/exiv2', 'src') +install_man('man/man1/exiv2.1') exiv2_sources = files( 'app/actions.cpp', 'app/app_utils.cpp', 'app/exiv2.cpp', 'app/getopt.cpp', + host_machine.system() == 'windows' ? 'app/wmain.cpp' : [], ) -if host_machine.system() == 'windows' - exiv2_sources += files('app/wmain.cpp') -endif - +exiv2inc = include_directories('src', 'include/exiv2') executable( 'exiv2', exiv2_sources, diff --git a/src/meson.build b/src/meson.build new file mode 100644 index 0000000000..e423d7085a --- /dev/null +++ b/src/meson.build @@ -0,0 +1,130 @@ +base_lib = files( + 'asfvideo.cpp', + 'basicio.cpp', + 'bmffimage.cpp', + 'bmpimage.cpp', + 'cr2image.cpp', + 'crwimage.cpp', + 'datasets.cpp', + 'easyaccess.cpp', + 'epsimage.cpp', + 'error.cpp', + 'exif.cpp', + 'futils.cpp', + 'gifimage.cpp', + 'http.cpp', + 'image.cpp', + 'iptc.cpp', + 'jp2image.cpp', + 'jpgimage.cpp', + 'matroskavideo.cpp', + 'metadatum.cpp', + 'mrwimage.cpp', + 'orfimage.cpp', + 'pgfimage.cpp', + 'photoshop.cpp', + 'pngimage.cpp', + 'preview.cpp', + 'properties.cpp', + 'psdimage.cpp', + 'quicktimevideo.cpp', + 'rafimage.cpp', + 'riffvideo.cpp', + 'rw2image.cpp', + 'tags.cpp', + 'tgaimage.cpp', + 'tiffimage.cpp', + 'types.cpp', + 'value.cpp', + 'version.cpp', + 'webpimage.cpp', + 'xmp.cpp', + 'xmpsidecar.cpp', +) + +int_lib = files( + 'canonmn_int.cpp', + 'casiomn_int.cpp', + 'cr2header_int.cpp', + 'crwimage_int.cpp', + 'fujimn_int.cpp', + 'helper_functions.cpp', + 'image_int.cpp', + 'jp2image_int.cpp', + 'makernote_int.cpp', + 'minoltamn_int.cpp', + 'nikonmn_int.cpp', + 'olympusmn_int.cpp', + 'orfimage_int.cpp', + 'panasonicmn_int.cpp', + 'pentaxmn_int.cpp', + 'pngchunk_int.cpp', + 'rw2image_int.cpp', + 'samsungmn_int.cpp', + 'sigmamn_int.cpp', + 'sonymn_int.cpp', + 'tags_int.cpp', + 'tiffcomposite_int.cpp', + 'tiffimage_int.cpp', + 'tiffvisitor_int.cpp', + 'utils.cpp', +) + +exiv2int = static_library( + 'exiv2int', + int_lib, + cpp_args: '-DEXIV2API=', + dependencies: deps, + include_directories: libinc, +) + +exiv2int_dep = declare_dependency( + include_directories: libinc, + link_with: exiv2int, +) + +# This is compiled separately, because there are multiple sources for iconv +# (methods "builtin" and "system") and it's possible to have the include +# directory from one dependency leak over and force the system iconv to be used +# instead of the builtin one. This causes miscompilation. +convertlib = static_library( + '_convert', + 'convert.cpp', + cpp_args: cargs, + gnu_symbol_visibility: 'hidden', + dependencies: iconv_dep, + include_directories: libinc, + build_by_default: false, +) + +exiv2 = library( + 'exiv2', + base_lib, + xmp_lib, + cpp_args: cargs, + version: meson.project_version(), + soversion: sover, + gnu_symbol_visibility: 'hidden', + link_with: convertlib, + dependencies: [deps, exiv2int_dep], + install: true, +) + +dllapi = '-DEXIV2API=' +if host_machine.system() == 'windows' and get_option('default_library') != 'static' + dllapi = '-DEXIV2API=__declspec(dllimport)' +endif + +pkg = import('pkgconfig') +pkg.generate( + exiv2, + description: 'Exif/IPTC/Xmp C++ metadata library and tools plus ICC Profiles, Previews and more.', + url: 'https://exiv2.org', +) + +exiv2_dep = declare_dependency( + compile_args: dllapi, + dependencies: intl_dep, + include_directories: depinc, + link_with: exiv2, +) diff --git a/unitTests/meson.build b/unitTests/meson.build index d5875a8342..35d7723936 100644 --- a/unitTests/meson.build +++ b/unitTests/meson.build @@ -50,13 +50,12 @@ endif t_args = ['-UEXIV2API', '-DEXIV2API=', '-DTESTDATA_PATH="@0@"'.format('..' / 'test' / 'data')] -privinc = include_directories('../src', '../include/exiv2') unit_tests = executable( 'unit_tests', test_sources, cpp_args: t_args, dependencies: [deps, exiv2_dep, gtest_dep], - include_directories: privinc, + include_directories: exiv2inc, ) test('Unit Tests', unit_tests) diff --git a/xmpsdk/meson.build b/xmpsdk/meson.build new file mode 100644 index 0000000000..e164bb8907 --- /dev/null +++ b/xmpsdk/meson.build @@ -0,0 +1,24 @@ +if not expat_dep.found() + xmp_lib = files() + subdir_done() +endif + +libinc = [libinc, include_directories('include')] +xmp_lib = files( + 'src/ExpatAdapter.cpp', + 'src/MD5.cpp', + 'src/ParseRDF.cpp', + 'src/UnicodeConversions.cpp', + 'src/WXMPIterator.cpp', + 'src/WXMPMeta.cpp', + 'src/WXMPUtils.cpp', + 'src/XML_Node.cpp', + 'src/XMPCore_Impl.cpp', + 'src/XMPIterator.cpp', + 'src/XMPMeta-GetSet.cpp', + 'src/XMPMeta-Parse.cpp', + 'src/XMPMeta-Serialize.cpp', + 'src/XMPMeta.cpp', + 'src/XMPUtils-FileInfo.cpp', + 'src/XMPUtils.cpp', +)