diff options
Diffstat (limited to 'test cases/frameworks')
-rw-r--r-- | test cases/frameworks/15 llvm/meson.build | 120 | ||||
-rw-r--r-- | test cases/frameworks/15 llvm/meson_options.txt | 2 | ||||
-rw-r--r-- | test cases/frameworks/15 llvm/test.json | 8 |
3 files changed, 85 insertions, 45 deletions
diff --git a/test cases/frameworks/15 llvm/meson.build b/test cases/frameworks/15 llvm/meson.build index 3855fae..c8485fb 100644 --- a/test cases/frameworks/15 llvm/meson.build +++ b/test cases/frameworks/15 llvm/meson.build @@ -2,50 +2,92 @@ project('llvmtest', ['c', 'cpp'], default_options : ['c_std=c99']) method = get_option('method') static = get_option('link-static') -d = dependency('llvm', required : false, method : method, static : static) -if not d.found() - error('MESON_SKIP_TEST llvm not found.') -endif -d = dependency('llvm', modules : 'not-found', required : false, static : static, method : method) -assert(d.found() == false, 'not-found llvm module found') +if(method == 'combination') + d = dependency('llvm', version : static ? '>0.1' : '>=7.0', required : false, static : static) + if not d.found() + error('MESON_SKIP_TEST llvm not found or llvm version is too low') + endif + llvm_ct_dep = dependency( + 'llvm', + modules : ['bitwriter', 'asmprinter', 'executionengine', 'target', + 'mcjit', 'nativecodegen', 'amdgpu', 'engine'], + required : false, + static : static, + method : 'config-tool', + ) + llvm_cm_dep = dependency( + 'llvm', + modules : ['bitwriter', 'asmprinter', 'executionengine', 'target', + 'mcjit', 'nativecodegen', 'amdgpu', 'engine'], + required : false, + static : static, + method : 'cmake', + ) + assert(llvm_ct_dep.found() == llvm_cm_dep.found(), 'config-tool and cmake results differ') + cm_version_major = llvm_cm_dep.version().split('.')[0].to_int() + cm_version_minor = llvm_cm_dep.version().split('.')[1].to_int() + ct_version_major = llvm_ct_dep.version().split('.')[0].to_int() + ct_version_minor = llvm_ct_dep.version().split('.')[1].to_int() + assert(cm_version_major == ct_version_major, 'config-tool and cmake returns different major versions') + assert(cm_version_minor == ct_version_minor, 'config-tool and cmake returns different minor versions') +else + d = dependency('llvm', required : false, method : method, static : static) + if not d.found() + error('MESON_SKIP_TEST llvm not found.') + endif -d = dependency('llvm', version : '<0.1', required : false, static : static, method : method) -assert(d.found() == false, 'ancient llvm module found') + if(not static and method == 'cmake') + d = dependency('llvm', version : '>=7.0', required : false, static : static) + if not d.found() + error('MESON_SKIP_TEST llvm version is too low for cmake dynamic link.') + endif + endif -d = dependency('llvm', optional_modules : 'not-found', required : false, static : static, method : method) -assert(d.found() == true, 'optional module stopped llvm from being found.') + d = dependency('llvm', modules : 'not-found', required : false, static : static, method : method) + assert(d.found() == false, 'not-found llvm module found') -# Check we can apply a version constraint -d = dependency('llvm', version : ['< 500', '>=@0@'.format(d.version())], required: false, static : static, method : method) -assert(d.found() == true, 'Cannot set version constraints') + d = dependency('llvm', version : '<0.1', required : false, static : static, method : method) + assert(d.found() == false, 'ancient llvm module found') -dep_tinfo = dependency('tinfo', required : false) -if not dep_tinfo.found() - cpp = meson.get_compiler('cpp') - dep_tinfo = cpp.find_library('tinfo', required: false) -endif + d = dependency('llvm', optional_modules : 'not-found', required : false, static : static, method : method) + assert(d.found() == true, 'optional module stopped llvm from being found.') -llvm_dep = dependency( - 'llvm', - modules : ['bitwriter', 'asmprinter', 'executionengine', 'target', - 'mcjit', 'nativecodegen', 'amdgpu'], - required : false, - static : static, - method : method, -) - -if not llvm_dep.found() - error('MESON_SKIP_TEST required llvm modules not found.') -endif + # Check we can apply a version constraint + d = dependency('llvm', version : ['< 500', '>=@0@'.format(d.version())], required: false, static : static, method : method) + assert(d.found() == true, 'Cannot set version constraints') -executable( - 'sum', - 'sum.c', - dependencies : [ - llvm_dep, dep_tinfo, - # zlib will be statically linked on windows - dependency('zlib', required : host_machine.system() != 'windows'), - meson.get_compiler('c').find_library('dl', required : false), - ] + # Check if we have to get pseudo components + d = dependency('llvm', modules: ['all-targets','native','engine'], required: false, static : static, method : method) + assert(d.found() == true, 'Cannot find pseudo components') + + dep_tinfo = dependency('tinfo', required : false) + if not dep_tinfo.found() + cpp = meson.get_compiler('cpp') + dep_tinfo = cpp.find_library('tinfo', required: false) + endif + + llvm_dep = dependency( + 'llvm', + modules : ['bitwriter', 'asmprinter', 'executionengine', 'target', + 'mcjit', 'nativecodegen', 'amdgpu'], + required : false, + static : static, + method : method, ) + + if not llvm_dep.found() + error('MESON_SKIP_TEST required llvm modules not found.') + endif + + executable( + 'sum', + 'sum.c', + dependencies : [ + llvm_dep, dep_tinfo, + # zlib will be statically linked on windows + dependency('zlib', required : host_machine.system() != 'windows'), + meson.get_compiler('c').find_library('dl', required : false), + ] + ) +endif diff --git a/test cases/frameworks/15 llvm/meson_options.txt b/test cases/frameworks/15 llvm/meson_options.txt index de3d172..8730c48 100644 --- a/test cases/frameworks/15 llvm/meson_options.txt +++ b/test cases/frameworks/15 llvm/meson_options.txt @@ -1,7 +1,7 @@ option( 'method', type : 'combo', - choices : ['config-tool', 'cmake'] + choices : ['config-tool', 'cmake', 'combination'] ) option( 'link-static', diff --git a/test cases/frameworks/15 llvm/test.json b/test cases/frameworks/15 llvm/test.json index e70edd5..b39844d 100644 --- a/test cases/frameworks/15 llvm/test.json +++ b/test cases/frameworks/15 llvm/test.json @@ -3,16 +3,14 @@ "options": { "method": [ { "val": "config-tool", "skip_on_jobname": ["msys2-gcc"]}, - { "val": "cmake", "skip_on_jobname": ["msys2-gcc"] } + { "val": "cmake", "skip_on_jobname": ["msys2-gcc"] }, + { "val": "combination", "skip_on_jobname": ["msys2-gcc"]} ], "link-static": [ { "val": true, "skip_on_jobname": ["opensuse"] }, { "val": false } ] - }, - "exclude": [ - { "method": "cmake", "link-static": false } - ] + } }, "skip_on_jobname": ["azure", "cygwin"] } |