diff options
Diffstat (limited to 'meson.build')
-rw-r--r-- | meson.build | 144 |
1 files changed, 123 insertions, 21 deletions
diff --git a/meson.build b/meson.build index 98216fc4..4d15d623 100644 --- a/meson.build +++ b/meson.build @@ -5,7 +5,7 @@ project('igt-gpu-tools', 'c', 'c_std=gnu99', ], license : 'MIT', - meson_version : '>0.40.0') + meson_version : '>0.44.0') cc = meson.get_compiler('c') @@ -26,36 +26,118 @@ foreach cc_arg : cc_args endif endforeach +_build_overlay = false +_overlay_required = false +_build_man = false +_man_required = false +_build_audio = false +_audio_required = false +_build_chamelium = false +_chamelium_required = false +_build_docs = false +_docs_required = false +_build_tests = false +_tests_required = false + +build_overlay = get_option('build_overlay') +overlay_backends = get_option('overlay_backends') +build_man = get_option('build_man') +with_valgrind = get_option('with_valgrind') +build_audio = get_option('build_audio') +build_chamelium = get_option('build_chamelium') +build_docs = get_option('build_docs') +build_tests = get_option('build_tests') +with_libdrm = get_option('with_libdrm') + +_build_overlay = build_overlay != 'false' +_overlay_required = build_overlay == 'true' +_build_man = build_man != 'false' +_man_required = build_man == 'true' +_build_audio = build_audio != 'false' +_audio_required = build_audio == 'true' +_build_chamelium = build_chamelium != 'false' +_chamelium_required = build_chamelium == 'true' +_build_docs = build_docs != 'false' +_docs_required = build_docs == 'true' +_build_tests = build_tests != 'false' +_tests_required = build_tests == 'true' + +build_info = [] + inc = include_directories('include/drm-uapi', 'lib', '.') inc_for_gtkdoc = include_directories('lib') config = configuration_data() +null_dep = dependency('', required : false) + +libdrm_info = [] +libdrm_intel = null_dep +libdrm_nouveau = null_dep +libdrm_amdgpu = null_dep + libdrm_version = '>=2.4.82' libdrm = dependency('libdrm', version : libdrm_version) -libdrm_intel = dependency('libdrm_intel', version : libdrm_version, required : false) -libdrm_nouveau = dependency('libdrm_nouveau', version : libdrm_version, required : false) -libdrm_amdgpu = dependency('libdrm_amdgpu', version : libdrm_version, required : false) +if with_libdrm.contains('auto') or with_libdrm.contains('intel') + libdrm_intel = dependency('libdrm_intel', version : libdrm_version, required : with_libdrm.contains('intel')) + libdrm_info += 'intel' +endif +if with_libdrm.contains('auto') or with_libdrm.contains('nouveau') + libdrm_nouveau = dependency('libdrm_nouveau', version : libdrm_version, required : with_libdrm.contains('nouveau')) + libdrm_info += 'nouveau' +endif +if with_libdrm.contains('auto') or with_libdrm.contains('amdgpu') + libdrm_amdgpu = dependency('libdrm_amdgpu', version : libdrm_version, required : with_libdrm.contains('amdgpu')) + libdrm_info += 'amdgpu' +endif + +build_info += 'With libdrm: ' + ','.join(libdrm_info) pciaccess = dependency('pciaccess', version : '>=0.10') libkmod = dependency('libkmod') libprocps = dependency('libprocps', required : true) libunwind = dependency('libunwind', required : true) -valgrind = dependency('valgrind', required : false) -if valgrind.found() - config.set('HAVE_VALGRIND', 1) +valgrind = null_dep +valgrindinfo = 'No' +if with_valgrind != 'false' + valgrind = dependency('valgrind', required : with_valgrind == 'true') + if valgrind.found() + config.set('HAVE_VALGRIND', 1) + valgrindinfo = 'Yes' + endif endif +build_info += 'Valgrind annotations: ' + valgrindinfo cairo = dependency('cairo', version : '>1.12.0', required : true) libudev = dependency('libudev', required : true) glib = dependency('glib-2.0', required : true) -gsl = dependency('gsl', required : false) -alsa = dependency('alsa', required : false) +gsl = null_dep +alsa = null_dep +pixman = null_dep +if _build_audio or _build_chamelium + gsl = dependency('gsl', required : _audio_required or _chamelium_required) +endif +if _build_audio + alsa = dependency('alsa', required : _audio_required) +endif +if _build_chamelium + pixman = dependency('pixman-1', required : _chamelium_required) +endif + +audioinfo = 'No' +if _build_audio and alsa.found() and gsl.found() + audioinfo = 'Yes' +else + if _audio_required + error('Cannot build audio test due to missing dependencies') + endif + _build_audio = false +endif +build_info += 'Build audio test: ' + audioinfo -pixman = dependency('pixman-1', required : false) xmlrpc = dependency('xmlrpc', required : false) xmlrpc_util = dependency('xmlrpc_util', required : false) xmlrpc_client = dependency('xmlrpc_client', required : false) @@ -73,13 +155,17 @@ if not xmlrpc.found() and xmlrpc_cmd.found() endif endif -if pixman.found() and gsl.found() and xmlrpc.found() and xmlrpc_util.found() and xmlrpc_client.found() +chamelium = null_dep +chameliuminfo = 'No' +if _build_chamelium and pixman.found() and gsl.found() and xmlrpc.found() and xmlrpc_util.found() and xmlrpc_client.found() chamelium = declare_dependency(dependencies : [ pixman, xmlrpc, - xmlrpc_util, xmlrpc_client]) + xmlrpc_util, xmlrpc_client]) config.set('HAVE_CHAMELIUM', 1) -else - chamelium = dependency('', required: false) + chameliuminfo = 'Yes' +elif _chamelium_required + error('Cannot build chamelium test due to missing dependencies') endif +build_info += 'Build Chamelium test: ' + chameliuminfo pthreads = dependency('threads') math = cc.find_library('m') @@ -130,17 +216,33 @@ mandir = get_option('mandir') pkgconfigdir = join_paths(libdir, 'pkgconfig') subdir('lib') -subdir('tests') +if _build_tests + subdir('tests') + build_info += 'Build tests: Yes' +else + build_info += 'Build tests: No' +endif subdir('benchmarks') subdir('tools') if libdrm_intel.found() subdir('assembler') - if ['x86', 'x86_64'].contains(host_machine.cpu_family()) - subdir('overlay') - endif endif +subdir('overlay') subdir('man') -# has_exe_wrapper() is undefined if building natively -if not meson.is_cross_build() or not meson.has_exe_wrapper() - subdir('docs') + +docs_info = 'No' +if _build_docs + if _build_tests + subdir('docs') + docs_info = 'Yes' + elif _docs_required + error('Documentation requires building tests') + endif endif +build_info += 'Build documentation: ' + docs_info + +message('Build options') +message('=============') +foreach str : build_info + message(str) +endforeach |