summaryrefslogtreecommitdiff
path: root/meson.build
diff options
context:
space:
mode:
Diffstat (limited to 'meson.build')
-rw-r--r--meson.build144
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