diff --git a/src/client/meson.build b/src/client/meson.build index 2c530049..1c630d16 100644 --- a/src/client/meson.build +++ b/src/client/meson.build @@ -170,6 +170,21 @@ client_dependencies = [ webkit2gtk, ] +client_build_dir = meson.current_build_dir() + +# Generate internal VAPI for unit testing. See Meson issue +# https://github.com/mesonbuild/meson/issues/1781 for official +# internal VAPI support. +client_vala_args = geary_vala_args +client_vala_args += [ + '--internal-header=@0@/@1@-internal.h'.format( + client_build_dir, client_package_name + ), + '--internal-vapi=@0@/@1@-internal.vapi'.format( + client_build_dir, client_package_name + ) +] + # Enable shared shecondary process if available. # See issues #558 and #559 webkit_version = webkit2gtk.version().split('.') @@ -192,9 +207,44 @@ client_lib = shared_library( install_dir: client_lib_dir, ) +# Dummy target to tell Meson about the internal VAPI given the +# workaround above, and fix the VAPI header to work around +# GNOME/vala#358 +client_internal_header_fixup = custom_target( + 'client_internal_header_fixup', + output: [ + 'geary-client-internal.h', + 'geary-client-internal.vapi', + ], + command: [ + find_program('sed'), + '-ibak', + 's/@0@.h/geary-client-internal.h/g'.format(client_package), + '@OUTDIR@/geary-client-internal.vapi', + ], + depends: client_lib +) + client_dep = declare_dependency( - link_with: client_lib, + link_with: [ + client_lib, + sqlite3_unicodesn_lib + ], + include_directories: include_directories('.') +) + +client_internal_dep = declare_dependency( + # Can't just include client_lib in link_with since that will + # pull in the public header and we get duplicate symbol errors. + link_args: [ + '-L' + client_build_dir, + '-l' + client_package + ], + link_with: [ + sqlite3_unicodesn_lib, + ], include_directories: include_directories('.'), + sources: client_internal_header_fixup ) subdir('plugin') diff --git a/test/meson.build b/test/meson.build index 86977db0..21d453fa 100644 --- a/test/meson.build +++ b/test/meson.build @@ -133,7 +133,7 @@ test_engine_bin = executable('test-engine', # Client tests test_client_dependencies = [ - client_dep, + client_internal_dep, vala_unit_dep, ] test_client_dependencies += client_dependencies @@ -144,6 +144,7 @@ test_client_bin = executable('test-client', include_directories: config_h_dir, vala_args: geary_vala_args, c_args: geary_c_args, + build_rpath: client_build_dir, ) # Integration tests diff --git a/test/test-client.vala b/test/test-client.vala index 76288778..02e98ba5 100644 --- a/test/test-client.vala +++ b/test/test-client.vala @@ -6,10 +6,6 @@ */ -extern const string _INSTALL_PREFIX; -extern const string _BUILD_ROOT_DIR; -extern const string _GSETTINGS_DIR; - int main(string[] args) { /* * Set env vars right up front to avoid weird bugs