From 2ff37ae41a70631a2c7a857b53384799cff7cdb7 Mon Sep 17 00:00:00 2001 From: Xavier Claessens Date: Wed, 13 Dec 2017 16:51:10 -0500 Subject: pkgconfig: Early abort tests if pkg-config is not present --- test cases/common/51 pkgconfig-gen/meson.build | 30 +++++++++++++++----------- 1 file changed, 17 insertions(+), 13 deletions(-) (limited to 'test cases') diff --git a/test cases/common/51 pkgconfig-gen/meson.build b/test cases/common/51 pkgconfig-gen/meson.build index 68ee812..e02f127 100644 --- a/test cases/common/51 pkgconfig-gen/meson.build +++ b/test cases/common/51 pkgconfig-gen/meson.build @@ -1,5 +1,17 @@ project('pkgconfig-gen', 'c') +# First check we have pkg-config >= 0.29 + +pkgconfig = find_program('pkg-config', required: false) +if not pkgconfig.found() + error('MESON_SKIP_TEST: pkg-config not found') +endif + +v = run_command(pkgconfig, '--version').stdout().strip() +if v.version_compare('<0.29') + error('MESON_SKIP_TEST: pkg-config version \'' + v + '\' too old') +endif + pkgg = import('pkgconfig') lib = shared_library('simple', 'simple.c') @@ -18,19 +30,11 @@ pkgg.generate( libraries_private : [lib, '-lz'], ) -pkgconfig = find_program('pkg-config', required: false) -if pkgconfig.found() - v = run_command(pkgconfig, '--version').stdout().strip() - if v.version_compare('>=0.29') - test('pkgconfig-validation', pkgconfig, - args: ['--validate', 'simple'], - env: ['PKG_CONFIG_PATH=' + meson.current_build_dir() + '/meson-private' ]) - else - message('pkg-config version \'' + v + '\' too old, skipping validate test') - endif -else - message('pkg-config not found, skipping validate test') -endif +pkgconfig_env = 'PKG_CONFIG_PATH=' + meson.current_build_dir() + '/meson-private' + +test('pkgconfig-validation', pkgconfig, + args: ['--validate', 'simple'], + env: [ pkgconfig_env ]) # Test that name_prefix='' and name='libfoo' results in '-lfoo' lib2 = shared_library('libfoo', 'simple.c', -- cgit v1.1 From 1c0570906c644df619ce463b9c3715dd492e1c8f Mon Sep 17 00:00:00 2001 From: Xavier Claessens Date: Sun, 10 Dec 2017 17:54:28 -0500 Subject: pkgconfig: Allow passing Dependency objects to library(_private) Special case ThreadDependency by taking compiler's flags and PkgConfigDependency by adding them in requires(.private) instead. For other Dependency objects just take their link_args and compile_args. Closes #2725 --- test cases/common/51 pkgconfig-gen/meson.build | 62 ++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) (limited to 'test cases') diff --git a/test cases/common/51 pkgconfig-gen/meson.build b/test cases/common/51 pkgconfig-gen/meson.build index e02f127..dbe9100 100644 --- a/test cases/common/51 pkgconfig-gen/meson.build +++ b/test cases/common/51 pkgconfig-gen/meson.build @@ -12,6 +12,11 @@ if v.version_compare('<0.29') error('MESON_SKIP_TEST: pkg-config version \'' + v + '\' too old') endif +envcmd = find_program('env', required: false) +if not envcmd.found() + error('MESON_SKIP_TEST: env command not found') +endif + pkgg = import('pkgconfig') lib = shared_library('simple', 'simple.c') @@ -48,3 +53,60 @@ pkgg.generate( description : 'A foo library.', variables : ['foo=bar', 'datadir=${prefix}/data'] ) + +# libmain internally use libinternal and expose libexpose in its API +exposed_lib = shared_library('libexposed', 'simple.c') +internal_lib = shared_library('libinternal', 'simple.c') +main_lib = shared_library('libmain', link_with : [exposed_lib, internal_lib]) + +# Declare a few different Dependency objects +pc_dep = dependency('libfoo', required : false) +threads_dep = dependency('threads', required : false) +custom_dep = declare_dependency(link_args : ['-lcustom'], compile_args : ['-DCUSTOM']) +custom2_dep = declare_dependency(link_args : ['-lcustom2'], compile_args : ['-DCUSTOM2']) + +# Generate a PC file: +# - Having libmain in libraries should pull implicitely libexposed and libinternal in Libs.private +# - Having libexposed in libraries should remove it from Libs.private +# - Having threads_dep in libraries should add '-pthread' in both Libs and Cflags +# - Having custom_dep in libraries and libraries_private should only add it in Libs +# - Having custom2_dep in libraries_private should not add its Cflags +# - Having pc_dep in libraries_private should add it in Requires.private +pkgg.generate(libraries : [main_lib, exposed_lib, threads_dep , custom_dep], + libraries_private : [custom_dep, custom2_dep, pc_dep], + version : libver, + name : 'dependency-test', + filebase : 'dependency-test', + description : 'A dependency test.' +) + +msg = 'Generated pc file doesn\'t have expected @0@: @1@' + +out = run_command(envcmd, '-', pkgconfig_env, pkgconfig, 'dependency-test', '--print-requires').stdout().strip().split() +assert(out.length() == 0, msg.format('requires', out)) + +out = run_command(envcmd, '-', pkgconfig_env, pkgconfig, 'dependency-test', '--print-requires-private').stdout().strip().split() +assert(out.contains('libfoo'), msg.format('requires.private', out)) +assert(out.length() == 1, msg.format('requires.private', out)) + +out = run_command(envcmd, '-', pkgconfig_env, pkgconfig, 'dependency-test', '--cflags-only-other').stdout().strip().split() +assert(out.contains('-pthread'), msg.format('cflags', out)) +assert(out.contains('-DCUSTOM'), msg.format('cflags', out)) +assert(out.length() == 2, msg.format('cflags', out)) + +out = run_command(envcmd, '-', pkgconfig_env, pkgconfig, 'dependency-test', '--libs-only-l', '--libs-only-other').stdout().strip().split() +assert(out.contains('-llibexposed'), msg.format('libs', out)) +assert(out.contains('-pthread'), msg.format('libs', out)) +assert(out.contains('-lcustom'), msg.format('libs', out)) +assert(out.contains('-llibmain'), msg.format('libs', out)) +assert(out.length() == 4, msg.format('libs', out)) + +out = run_command(envcmd, '-', pkgconfig_env, pkgconfig, 'dependency-test', '--libs-only-l', '--libs-only-other', '--static').stdout().strip().split() +assert(out.contains('-llibexposed'), msg.format('libs.private', out)) +assert(out.contains('-pthread'), msg.format('libs.private', out)) +assert(out.contains('-lcustom'), msg.format('libs.private', out)) +assert(out.contains('-llibmain'), msg.format('libs.private', out)) +assert(out.contains('-llibinternal'), msg.format('libs.private', out)) +assert(out.contains('-lcustom2'), msg.format('libs.private', out)) +assert(out.contains('-lfoo'), msg.format('libs.private', out)) +assert(out.length() == 7, msg.format('libs.private', out)) -- cgit v1.1 From 49977686b57685decfeda726958c33610710eb2e Mon Sep 17 00:00:00 2001 From: Xavier Claessens Date: Thu, 14 Dec 2017 11:13:37 -0500 Subject: pkgconfig: Use the pc file we generated for libraries --- test cases/common/51 pkgconfig-gen/meson.build | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'test cases') diff --git a/test cases/common/51 pkgconfig-gen/meson.build b/test cases/common/51 pkgconfig-gen/meson.build index dbe9100..45e3ed7 100644 --- a/test cases/common/51 pkgconfig-gen/meson.build +++ b/test cases/common/51 pkgconfig-gen/meson.build @@ -59,6 +59,12 @@ exposed_lib = shared_library('libexposed', 'simple.c') internal_lib = shared_library('libinternal', 'simple.c') main_lib = shared_library('libmain', link_with : [exposed_lib, internal_lib]) +pkgg.generate(libraries : exposed_lib, + version : libver, + name : 'libexposed', + description : 'An exposed library in dependency test.' +) + # Declare a few different Dependency objects pc_dep = dependency('libfoo', required : false) threads_dep = dependency('threads', required : false) @@ -68,6 +74,7 @@ custom2_dep = declare_dependency(link_args : ['-lcustom2'], compile_args : ['-DC # Generate a PC file: # - Having libmain in libraries should pull implicitely libexposed and libinternal in Libs.private # - Having libexposed in libraries should remove it from Libs.private +# - We generated a pc file for libexposed so it should be in Requires instead of Libs # - Having threads_dep in libraries should add '-pthread' in both Libs and Cflags # - Having custom_dep in libraries and libraries_private should only add it in Libs # - Having custom2_dep in libraries_private should not add its Cflags @@ -83,7 +90,8 @@ pkgg.generate(libraries : [main_lib, exposed_lib, threads_dep , custom_dep], msg = 'Generated pc file doesn\'t have expected @0@: @1@' out = run_command(envcmd, '-', pkgconfig_env, pkgconfig, 'dependency-test', '--print-requires').stdout().strip().split() -assert(out.length() == 0, msg.format('requires', out)) +assert(out.contains('libexposed'), msg.format('requires', out)) +assert(out.length() == 1, msg.format('requires', out)) out = run_command(envcmd, '-', pkgconfig_env, pkgconfig, 'dependency-test', '--print-requires-private').stdout().strip().split() assert(out.contains('libfoo'), msg.format('requires.private', out)) @@ -95,14 +103,12 @@ assert(out.contains('-DCUSTOM'), msg.format('cflags', out)) assert(out.length() == 2, msg.format('cflags', out)) out = run_command(envcmd, '-', pkgconfig_env, pkgconfig, 'dependency-test', '--libs-only-l', '--libs-only-other').stdout().strip().split() -assert(out.contains('-llibexposed'), msg.format('libs', out)) assert(out.contains('-pthread'), msg.format('libs', out)) assert(out.contains('-lcustom'), msg.format('libs', out)) assert(out.contains('-llibmain'), msg.format('libs', out)) assert(out.length() == 4, msg.format('libs', out)) out = run_command(envcmd, '-', pkgconfig_env, pkgconfig, 'dependency-test', '--libs-only-l', '--libs-only-other', '--static').stdout().strip().split() -assert(out.contains('-llibexposed'), msg.format('libs.private', out)) assert(out.contains('-pthread'), msg.format('libs.private', out)) assert(out.contains('-lcustom'), msg.format('libs.private', out)) assert(out.contains('-llibmain'), msg.format('libs.private', out)) -- cgit v1.1 From 2881db7379506efbd110363cf9d77c94c4c6426a Mon Sep 17 00:00:00 2001 From: Xavier Claessens Date: Sat, 16 Dec 2017 09:50:11 -0500 Subject: pkgconfig: Move pc file checks to run_unittests.py --- test cases/common/51 pkgconfig-gen/meson.build | 39 +------------------------- 1 file changed, 1 insertion(+), 38 deletions(-) (limited to 'test cases') diff --git a/test cases/common/51 pkgconfig-gen/meson.build b/test cases/common/51 pkgconfig-gen/meson.build index 45e3ed7..a8dd092 100644 --- a/test cases/common/51 pkgconfig-gen/meson.build +++ b/test cases/common/51 pkgconfig-gen/meson.build @@ -12,11 +12,6 @@ if v.version_compare('<0.29') error('MESON_SKIP_TEST: pkg-config version \'' + v + '\' too old') endif -envcmd = find_program('env', required: false) -if not envcmd.found() - error('MESON_SKIP_TEST: env command not found') -endif - pkgg = import('pkgconfig') lib = shared_library('simple', 'simple.c') @@ -35,11 +30,9 @@ pkgg.generate( libraries_private : [lib, '-lz'], ) -pkgconfig_env = 'PKG_CONFIG_PATH=' + meson.current_build_dir() + '/meson-private' - test('pkgconfig-validation', pkgconfig, args: ['--validate', 'simple'], - env: [ pkgconfig_env ]) + env: [ 'PKG_CONFIG_PATH=' + meson.current_build_dir() + '/meson-private' ]) # Test that name_prefix='' and name='libfoo' results in '-lfoo' lib2 = shared_library('libfoo', 'simple.c', @@ -86,33 +79,3 @@ pkgg.generate(libraries : [main_lib, exposed_lib, threads_dep , custom_dep], filebase : 'dependency-test', description : 'A dependency test.' ) - -msg = 'Generated pc file doesn\'t have expected @0@: @1@' - -out = run_command(envcmd, '-', pkgconfig_env, pkgconfig, 'dependency-test', '--print-requires').stdout().strip().split() -assert(out.contains('libexposed'), msg.format('requires', out)) -assert(out.length() == 1, msg.format('requires', out)) - -out = run_command(envcmd, '-', pkgconfig_env, pkgconfig, 'dependency-test', '--print-requires-private').stdout().strip().split() -assert(out.contains('libfoo'), msg.format('requires.private', out)) -assert(out.length() == 1, msg.format('requires.private', out)) - -out = run_command(envcmd, '-', pkgconfig_env, pkgconfig, 'dependency-test', '--cflags-only-other').stdout().strip().split() -assert(out.contains('-pthread'), msg.format('cflags', out)) -assert(out.contains('-DCUSTOM'), msg.format('cflags', out)) -assert(out.length() == 2, msg.format('cflags', out)) - -out = run_command(envcmd, '-', pkgconfig_env, pkgconfig, 'dependency-test', '--libs-only-l', '--libs-only-other').stdout().strip().split() -assert(out.contains('-pthread'), msg.format('libs', out)) -assert(out.contains('-lcustom'), msg.format('libs', out)) -assert(out.contains('-llibmain'), msg.format('libs', out)) -assert(out.length() == 4, msg.format('libs', out)) - -out = run_command(envcmd, '-', pkgconfig_env, pkgconfig, 'dependency-test', '--libs-only-l', '--libs-only-other', '--static').stdout().strip().split() -assert(out.contains('-pthread'), msg.format('libs.private', out)) -assert(out.contains('-lcustom'), msg.format('libs.private', out)) -assert(out.contains('-llibmain'), msg.format('libs.private', out)) -assert(out.contains('-llibinternal'), msg.format('libs.private', out)) -assert(out.contains('-lcustom2'), msg.format('libs.private', out)) -assert(out.contains('-lfoo'), msg.format('libs.private', out)) -assert(out.length() == 7, msg.format('libs.private', out)) -- cgit v1.1