1*d83cc019SAndroid Build Coastguard Workerproject('igt-gpu-tools', 'c', 2*d83cc019SAndroid Build Coastguard Worker version : '1.24', 3*d83cc019SAndroid Build Coastguard Worker default_options: [ 4*d83cc019SAndroid Build Coastguard Worker 'warning_level=2', 5*d83cc019SAndroid Build Coastguard Worker 'c_std=gnu11', 6*d83cc019SAndroid Build Coastguard Worker 'b_ndebug=false', 7*d83cc019SAndroid Build Coastguard Worker 'buildtype=debugoptimized', 8*d83cc019SAndroid Build Coastguard Worker ], 9*d83cc019SAndroid Build Coastguard Worker license : 'MIT', 10*d83cc019SAndroid Build Coastguard Worker meson_version : '>=0.47.0') 11*d83cc019SAndroid Build Coastguard Worker 12*d83cc019SAndroid Build Coastguard Workerif get_option('b_ndebug') != 'false' 13*d83cc019SAndroid Build Coastguard Worker error('Building without -Db_ndebug=false is not supported') 14*d83cc019SAndroid Build Coastguard Workerendif 15*d83cc019SAndroid Build Coastguard Worker 16*d83cc019SAndroid Build Coastguard Workercc = meson.get_compiler('c') 17*d83cc019SAndroid Build Coastguard Worker 18*d83cc019SAndroid Build Coastguard Worker# Also make sure that the user doesn't have -DNDEBUG defined in their config 19*d83cc019SAndroid Build Coastguard Workerif not cc.compiles(files('lib/check-ndebug.h'), args: get_option('c_args')) 20*d83cc019SAndroid Build Coastguard Worker error('Building with NDEBUG defined is not supported') 21*d83cc019SAndroid Build Coastguard Workerendif 22*d83cc019SAndroid Build Coastguard Worker 23*d83cc019SAndroid Build Coastguard Workercc_args = [ 24*d83cc019SAndroid Build Coastguard Worker '-Wbad-function-cast', 25*d83cc019SAndroid Build Coastguard Worker '-Wdeclaration-after-statement', 26*d83cc019SAndroid Build Coastguard Worker '-Wformat=2', 27*d83cc019SAndroid Build Coastguard Worker# igt_assert(0) in switch statements triggers a bunch of this. 28*d83cc019SAndroid Build Coastguard Worker '-Wimplicit-fallthrough=0', 29*d83cc019SAndroid Build Coastguard Worker '-Wlogical-op', 30*d83cc019SAndroid Build Coastguard Worker '-Wmissing-declarations', 31*d83cc019SAndroid Build Coastguard Worker '-Wmissing-format-attribute', 32*d83cc019SAndroid Build Coastguard Worker '-Wmissing-noreturn', 33*d83cc019SAndroid Build Coastguard Worker '-Wmissing-prototypes', 34*d83cc019SAndroid Build Coastguard Worker '-Wnested-externs', 35*d83cc019SAndroid Build Coastguard Worker '-Wold-style-definition', 36*d83cc019SAndroid Build Coastguard Worker '-Wpointer-arith', 37*d83cc019SAndroid Build Coastguard Worker '-Wredundant-decls', 38*d83cc019SAndroid Build Coastguard Worker '-Wshadow', 39*d83cc019SAndroid Build Coastguard Worker '-Wstrict-prototypes', 40*d83cc019SAndroid Build Coastguard Worker '-Wuninitialized', 41*d83cc019SAndroid Build Coastguard Worker '-Wunused', 42*d83cc019SAndroid Build Coastguard Worker 43*d83cc019SAndroid Build Coastguard Worker '-Wno-clobbered', 44*d83cc019SAndroid Build Coastguard Worker '-Wno-maybe-uninitialized', 45*d83cc019SAndroid Build Coastguard Worker '-Wno-missing-field-initializers', 46*d83cc019SAndroid Build Coastguard Worker '-Wno-pointer-arith', 47*d83cc019SAndroid Build Coastguard Worker '-Wno-sign-compare', 48*d83cc019SAndroid Build Coastguard Worker# Macros asserting on the range of their arguments triggers this. 49*d83cc019SAndroid Build Coastguard Worker '-Wno-type-limits', 50*d83cc019SAndroid Build Coastguard Worker '-Wno-unused-parameter', 51*d83cc019SAndroid Build Coastguard Worker '-Wno-unused-result', 52*d83cc019SAndroid Build Coastguard Worker 53*d83cc019SAndroid Build Coastguard Worker '-Werror=address', 54*d83cc019SAndroid Build Coastguard Worker '-Werror=array-bounds', 55*d83cc019SAndroid Build Coastguard Worker '-Werror=implicit', 56*d83cc019SAndroid Build Coastguard Worker '-Werror=init-self', 57*d83cc019SAndroid Build Coastguard Worker '-Werror=int-to-pointer-cast', 58*d83cc019SAndroid Build Coastguard Worker '-Werror=main', 59*d83cc019SAndroid Build Coastguard Worker '-Werror=missing-braces', 60*d83cc019SAndroid Build Coastguard Worker '-Werror=nonnull', 61*d83cc019SAndroid Build Coastguard Worker '-Werror=pointer-to-int-cast', 62*d83cc019SAndroid Build Coastguard Worker '-Werror=return-type', 63*d83cc019SAndroid Build Coastguard Worker '-Werror=sequence-point', 64*d83cc019SAndroid Build Coastguard Worker '-Werror=trigraphs', 65*d83cc019SAndroid Build Coastguard Worker '-Werror=write-strings', 66*d83cc019SAndroid Build Coastguard Worker# Disable the memory allocating builtins as they may cause unexpected behavior 67*d83cc019SAndroid Build Coastguard Worker# with our framework. They *may* get optimized out in favor of a register or 68*d83cc019SAndroid Build Coastguard Worker# stack variable, making them effectively local. Local variables do not play 69*d83cc019SAndroid Build Coastguard Worker# well with longjmp which is heavily used by IGT framework. 70*d83cc019SAndroid Build Coastguard Worker '-fno-builtin-malloc', 71*d83cc019SAndroid Build Coastguard Worker '-fno-builtin-calloc', 72*d83cc019SAndroid Build Coastguard Worker] 73*d83cc019SAndroid Build Coastguard Worker 74*d83cc019SAndroid Build Coastguard Workerforeach cc_arg : cc_args 75*d83cc019SAndroid Build Coastguard Worker if cc.has_argument(cc_arg) 76*d83cc019SAndroid Build Coastguard Worker add_global_arguments(cc_arg, language : 'c') 77*d83cc019SAndroid Build Coastguard Worker endif 78*d83cc019SAndroid Build Coastguard Workerendforeach 79*d83cc019SAndroid Build Coastguard Worker 80*d83cc019SAndroid Build Coastguard Workerbuild_chamelium = get_option('chamelium') 81*d83cc019SAndroid Build Coastguard Workerbuild_docs = get_option('docs') 82*d83cc019SAndroid Build Coastguard Workerbuild_tests = not get_option('tests').disabled() 83*d83cc019SAndroid Build Coastguard Workerwith_libdrm = get_option('libdrm_drivers') 84*d83cc019SAndroid Build Coastguard Worker 85*d83cc019SAndroid Build Coastguard Workerbuild_info = ['Build type: ' + get_option('buildtype')] 86*d83cc019SAndroid Build Coastguard Worker 87*d83cc019SAndroid Build Coastguard Workerinc = include_directories('include/drm-uapi', 'lib', 'lib/stubs/syscalls', '.') 88*d83cc019SAndroid Build Coastguard Worker 89*d83cc019SAndroid Build Coastguard Workerinc_for_gtkdoc = include_directories('lib') 90*d83cc019SAndroid Build Coastguard Worker 91*d83cc019SAndroid Build Coastguard Workerconfig = configuration_data() 92*d83cc019SAndroid Build Coastguard Worker 93*d83cc019SAndroid Build Coastguard Workernull_dep = dependency('', required : false) 94*d83cc019SAndroid Build Coastguard Worker 95*d83cc019SAndroid Build Coastguard Workerlibdrm_info = [] 96*d83cc019SAndroid Build Coastguard Workerlibdrm_intel = null_dep 97*d83cc019SAndroid Build Coastguard Workerlibdrm_nouveau = null_dep 98*d83cc019SAndroid Build Coastguard Workerlibdrm_amdgpu = null_dep 99*d83cc019SAndroid Build Coastguard Worker 100*d83cc019SAndroid Build Coastguard Workerlibdrm_version = '>=2.4.82' 101*d83cc019SAndroid Build Coastguard Workerlibdrm = dependency('libdrm', version : libdrm_version) 102*d83cc019SAndroid Build Coastguard Workerif with_libdrm.contains('auto') or with_libdrm.contains('intel') 103*d83cc019SAndroid Build Coastguard Worker libdrm_intel = dependency('libdrm_intel', version : libdrm_version, required : with_libdrm.contains('intel')) 104*d83cc019SAndroid Build Coastguard Worker libdrm_info += 'intel' 105*d83cc019SAndroid Build Coastguard Workerendif 106*d83cc019SAndroid Build Coastguard Workerif with_libdrm.contains('auto') or with_libdrm.contains('nouveau') 107*d83cc019SAndroid Build Coastguard Worker libdrm_nouveau = dependency('libdrm_nouveau', version : libdrm_version, required : with_libdrm.contains('nouveau')) 108*d83cc019SAndroid Build Coastguard Worker libdrm_info += 'nouveau' 109*d83cc019SAndroid Build Coastguard Workerendif 110*d83cc019SAndroid Build Coastguard Workerif with_libdrm.contains('auto') or with_libdrm.contains('amdgpu') 111*d83cc019SAndroid Build Coastguard Worker libdrm_amdgpu = dependency('libdrm_amdgpu', version : libdrm_version, required : with_libdrm.contains('amdgpu')) 112*d83cc019SAndroid Build Coastguard Worker libdrm_info += 'amdgpu' 113*d83cc019SAndroid Build Coastguard Workerendif 114*d83cc019SAndroid Build Coastguard Worker 115*d83cc019SAndroid Build Coastguard Workerbuild_info += 'With libdrm: ' + ','.join(libdrm_info) 116*d83cc019SAndroid Build Coastguard Worker 117*d83cc019SAndroid Build Coastguard Workerpciaccess = dependency('pciaccess', version : '>=0.10') 118*d83cc019SAndroid Build Coastguard Workerlibkmod = dependency('libkmod') 119*d83cc019SAndroid Build Coastguard Workerlibprocps = dependency('libprocps', required : true) 120*d83cc019SAndroid Build Coastguard Worker 121*d83cc019SAndroid Build Coastguard Workerlibunwind = dependency('libunwind', required : get_option('libunwind')) 122*d83cc019SAndroid Build Coastguard Workerbuild_info += 'With libunwind: @0@'.format(libunwind.found()) 123*d83cc019SAndroid Build Coastguard Worker 124*d83cc019SAndroid Build Coastguard Workerlibdw = dependency('libdw', required : true) 125*d83cc019SAndroid Build Coastguard Workerpixman = dependency('pixman-1', required : true) 126*d83cc019SAndroid Build Coastguard Worker 127*d83cc019SAndroid Build Coastguard Workervalgrind = dependency('valgrind', required : get_option('valgrind')) 128*d83cc019SAndroid Build Coastguard Workerif valgrind.found() 129*d83cc019SAndroid Build Coastguard Worker config.set('HAVE_VALGRIND', 1) 130*d83cc019SAndroid Build Coastguard Workerendif 131*d83cc019SAndroid Build Coastguard Workerbuild_info += 'Valgrind annotations: @0@'.format(valgrind.found()) 132*d83cc019SAndroid Build Coastguard Worker 133*d83cc019SAndroid Build Coastguard Workercairo = dependency('cairo', version : '>1.12.0', required : true) 134*d83cc019SAndroid Build Coastguard Workerlibudev = dependency('libudev', required : true) 135*d83cc019SAndroid Build Coastguard Workerglib = dependency('glib-2.0', required : true) 136*d83cc019SAndroid Build Coastguard Worker 137*d83cc019SAndroid Build Coastguard Workerxmlrpc = dependency('xmlrpc', required : false) 138*d83cc019SAndroid Build Coastguard Workerxmlrpc_util = dependency('xmlrpc_util', required : false) 139*d83cc019SAndroid Build Coastguard Workerxmlrpc_client = dependency('xmlrpc_client', required : false) 140*d83cc019SAndroid Build Coastguard Worker 141*d83cc019SAndroid Build Coastguard Workerxmlrpc_cmd = find_program('xmlrpc-c-config', required : false) 142*d83cc019SAndroid Build Coastguard Workerif not xmlrpc.found() and xmlrpc_cmd.found() 143*d83cc019SAndroid Build Coastguard Worker libs_cmd = run_command(xmlrpc_cmd, 'client', '--libs') 144*d83cc019SAndroid Build Coastguard Worker cflags_cmd = run_command(xmlrpc_cmd, 'client', '--cflags') 145*d83cc019SAndroid Build Coastguard Worker 146*d83cc019SAndroid Build Coastguard Worker if libs_cmd.returncode() == 0 and cflags_cmd.returncode() == 0 147*d83cc019SAndroid Build Coastguard Worker xmlrpc = declare_dependency(compile_args: cflags_cmd.stdout().strip().split(), 148*d83cc019SAndroid Build Coastguard Worker link_args : libs_cmd.stdout().strip().split()) 149*d83cc019SAndroid Build Coastguard Worker xmlrpc_util = declare_dependency() 150*d83cc019SAndroid Build Coastguard Worker xmlrpc_client = declare_dependency() 151*d83cc019SAndroid Build Coastguard Worker endif 152*d83cc019SAndroid Build Coastguard Workerendif 153*d83cc019SAndroid Build Coastguard Worker 154*d83cc019SAndroid Build Coastguard Workerif build_chamelium.enabled() and not (xmlrpc.found() and xmlrpc_util.found() and xmlrpc_client.found()) 155*d83cc019SAndroid Build Coastguard Worker error('Chamelium build forced and required dependency xmlrpc not found') 156*d83cc019SAndroid Build Coastguard Workerendif 157*d83cc019SAndroid Build Coastguard Worker 158*d83cc019SAndroid Build Coastguard Workergsl = dependency('gsl', required : build_chamelium) 159*d83cc019SAndroid Build Coastguard Workeralsa = dependency('alsa', required : build_chamelium) 160*d83cc019SAndroid Build Coastguard Workerlibcurl = dependency('libcurl', required : build_chamelium) 161*d83cc019SAndroid Build Coastguard Worker 162*d83cc019SAndroid Build Coastguard Workerif xmlrpc.found() and xmlrpc_util.found() and xmlrpc_client.found() and gsl.found() and alsa.found() and libcurl.found() 163*d83cc019SAndroid Build Coastguard Worker config.set('HAVE_CHAMELIUM', 1) 164*d83cc019SAndroid Build Coastguard Worker chamelium = declare_dependency(dependencies : [ 165*d83cc019SAndroid Build Coastguard Worker xmlrpc, 166*d83cc019SAndroid Build Coastguard Worker xmlrpc_util, 167*d83cc019SAndroid Build Coastguard Worker xmlrpc_client, 168*d83cc019SAndroid Build Coastguard Worker gsl, 169*d83cc019SAndroid Build Coastguard Worker alsa, 170*d83cc019SAndroid Build Coastguard Worker ]) 171*d83cc019SAndroid Build Coastguard Workerelse 172*d83cc019SAndroid Build Coastguard Worker chamelium = disabler() 173*d83cc019SAndroid Build Coastguard Workerendif 174*d83cc019SAndroid Build Coastguard Worker 175*d83cc019SAndroid Build Coastguard Workerbuild_info += 'Build Chamelium test: @0@'.format(chamelium.found()) 176*d83cc019SAndroid Build Coastguard Worker 177*d83cc019SAndroid Build Coastguard Workerpthreads = dependency('threads') 178*d83cc019SAndroid Build Coastguard Workermath = cc.find_library('m') 179*d83cc019SAndroid Build Coastguard Workerrealtime = cc.find_library('rt') 180*d83cc019SAndroid Build Coastguard Workerdlsym = cc.find_library('dl') 181*d83cc019SAndroid Build Coastguard Workerzlib = cc.find_library('z') 182*d83cc019SAndroid Build Coastguard Worker 183*d83cc019SAndroid Build Coastguard Workerif cc.links(''' 184*d83cc019SAndroid Build Coastguard Worker#include <stdint.h> 185*d83cc019SAndroid Build Coastguard Workerint main(void) { 186*d83cc019SAndroid Build Coastguard Worker uint32_t x32 = 0; 187*d83cc019SAndroid Build Coastguard Worker uint64_t x64 = 0; 188*d83cc019SAndroid Build Coastguard Worker __atomic_load_n(&x32, __ATOMIC_SEQ_CST); 189*d83cc019SAndroid Build Coastguard Worker __atomic_load_n(&x64, __ATOMIC_SEQ_CST); 190*d83cc019SAndroid Build Coastguard Worker return 0; 191*d83cc019SAndroid Build Coastguard Worker}''', name : 'built-in atomics') 192*d83cc019SAndroid Build Coastguard Worker libatomic = null_dep 193*d83cc019SAndroid Build Coastguard Workerelse 194*d83cc019SAndroid Build Coastguard Worker libatomic = cc.find_library('atomic') 195*d83cc019SAndroid Build Coastguard Workerendif 196*d83cc019SAndroid Build Coastguard Worker 197*d83cc019SAndroid Build Coastguard Workerif cc.has_header('linux/kd.h') 198*d83cc019SAndroid Build Coastguard Worker config.set('HAVE_LINUX_KD_H', 1) 199*d83cc019SAndroid Build Coastguard Workerendif 200*d83cc019SAndroid Build Coastguard Workerif cc.has_header('sys/kd.h') 201*d83cc019SAndroid Build Coastguard Worker config.set('HAVE_SYS_KD_H', 1) 202*d83cc019SAndroid Build Coastguard Workerendif 203*d83cc019SAndroid Build Coastguard Workerif cc.has_header('libgen.h') 204*d83cc019SAndroid Build Coastguard Worker config.set('HAVE_LIBGEN_H', 1) 205*d83cc019SAndroid Build Coastguard Workerendif 206*d83cc019SAndroid Build Coastguard Workerif cc.has_header('sys/io.h') 207*d83cc019SAndroid Build Coastguard Worker config.set('HAVE_SYS_IO_H', 1) 208*d83cc019SAndroid Build Coastguard Workerendif 209*d83cc019SAndroid Build Coastguard Workerif cc.has_header('cpuid.h') 210*d83cc019SAndroid Build Coastguard Worker # FIXME: Do we need the example link test from configure.ac? 211*d83cc019SAndroid Build Coastguard Worker config.set('HAVE_CPUID_H', 1) 212*d83cc019SAndroid Build Coastguard Workerendif 213*d83cc019SAndroid Build Coastguard Workerif cc.has_header_symbol('unistd.h', 'gettid', args : '-D_GNU_SOURCE') 214*d83cc019SAndroid Build Coastguard Worker config.set('HAVE_GETTID', 1) 215*d83cc019SAndroid Build Coastguard Workerendif 216*d83cc019SAndroid Build Coastguard Worker 217*d83cc019SAndroid Build Coastguard Workerif cc.has_member('struct sysinfo', 'totalram', 218*d83cc019SAndroid Build Coastguard Worker prefix : '#include <sys/sysinfo.h>') 219*d83cc019SAndroid Build Coastguard Worker config.set('HAVE_STRUCT_SYSINFO_TOTALRAM', 1) 220*d83cc019SAndroid Build Coastguard Workerendif 221*d83cc019SAndroid Build Coastguard Worker 222*d83cc019SAndroid Build Coastguard Workerhave = cc.has_function('memfd_create', prefix : '''#include <sys/mman.h>''', args : '-D_GNU_SOURCE') 223*d83cc019SAndroid Build Coastguard Workerconfig.set10('HAVE_MEMFD_CREATE', have) 224*d83cc019SAndroid Build Coastguard Worker 225*d83cc019SAndroid Build Coastguard Workeradd_project_arguments('-D_GNU_SOURCE', language : 'c') 226*d83cc019SAndroid Build Coastguard Workeradd_project_arguments('-include', 'config.h', language : 'c') 227*d83cc019SAndroid Build Coastguard Worker 228*d83cc019SAndroid Build Coastguard Worker# FEATURE_TEST_MACROS(7) 229*d83cc019SAndroid Build Coastguard Worker# performs lightweight overflow checks on quite a few libc functions 230*d83cc019SAndroid Build Coastguard Worker# requires -O optimizations 231*d83cc019SAndroid Build Coastguard Workerif ['debugoptimized', 'release', 'minsize'].contains(get_option('buildtype')) 232*d83cc019SAndroid Build Coastguard Worker add_project_arguments('-D_FORTIFY_SOURCE=2', language : 'c') 233*d83cc019SAndroid Build Coastguard Workerendif 234*d83cc019SAndroid Build Coastguard Worker 235*d83cc019SAndroid Build Coastguard Workerconfig.set('PACKAGE_NAME', meson.project_name()) 236*d83cc019SAndroid Build Coastguard Workerconfig.set_quoted('PACKAGE_VERSION', meson.project_version()) 237*d83cc019SAndroid Build Coastguard Workerconfig.set_quoted('PACKAGE', meson.project_name()) 238*d83cc019SAndroid Build Coastguard Workerconfig.set('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version()) 239*d83cc019SAndroid Build Coastguard Workerconfig.set_quoted('TARGET_CPU_PLATFORM', host_machine.cpu_family()) 240*d83cc019SAndroid Build Coastguard Worker 241*d83cc019SAndroid Build Coastguard Workerconfigure_file(output: 'config.h', install: false, configuration: config) 242*d83cc019SAndroid Build Coastguard Worker 243*d83cc019SAndroid Build Coastguard Workerprefix = get_option('prefix') 244*d83cc019SAndroid Build Coastguard Workerbindir = get_option('bindir') 245*d83cc019SAndroid Build Coastguard Workerdatadir = join_paths(get_option('datadir'), 'igt-gpu-tools') 246*d83cc019SAndroid Build Coastguard Workerincludedir = get_option('includedir') 247*d83cc019SAndroid Build Coastguard Workerlibdir = get_option('libdir') 248*d83cc019SAndroid Build Coastguard Workerlibexecdir = join_paths(get_option('libexecdir'), 'igt-gpu-tools') 249*d83cc019SAndroid Build Coastguard Workeramdgpudir = join_paths(libexecdir, 'amdgpu') 250*d83cc019SAndroid Build Coastguard Workermandir = get_option('mandir') 251*d83cc019SAndroid Build Coastguard Workerpkgconfigdir = join_paths(libdir, 'pkgconfig') 252*d83cc019SAndroid Build Coastguard Worker 253*d83cc019SAndroid Build Coastguard Workerif get_option('use_rpath') 254*d83cc019SAndroid Build Coastguard Worker # Set up runpath for the test executables towards libigt.so. 255*d83cc019SAndroid Build Coastguard Worker # The path should be relative to $ORIGIN so the library is 256*d83cc019SAndroid Build Coastguard Worker # still found properly even if installed to a path other than 257*d83cc019SAndroid Build Coastguard Worker # prefix. 258*d83cc019SAndroid Build Coastguard Worker 259*d83cc019SAndroid Build Coastguard Worker # libdir and bindir are pathnames relative to prefix. meson 260*d83cc019SAndroid Build Coastguard Worker # enforces this. 261*d83cc019SAndroid Build Coastguard Worker 262*d83cc019SAndroid Build Coastguard Worker # 1. Start from the executable. 263*d83cc019SAndroid Build Coastguard Worker # 2. Executables are installed in certain dir. Add a .. for each 264*d83cc019SAndroid Build Coastguard Worker # directory name in it. 265*d83cc019SAndroid Build Coastguard Worker # 3. Add relative path to libdir. 266*d83cc019SAndroid Build Coastguard Worker 267*d83cc019SAndroid Build Coastguard Worker bindir_rpathdir = '$ORIGIN' 268*d83cc019SAndroid Build Coastguard Worker foreach p : bindir.split('/') 269*d83cc019SAndroid Build Coastguard Worker bindir_rpathdir = join_paths(bindir_rpathdir, '..') 270*d83cc019SAndroid Build Coastguard Worker endforeach 271*d83cc019SAndroid Build Coastguard Worker bindir_rpathdir = join_paths(bindir_rpathdir, libdir) 272*d83cc019SAndroid Build Coastguard Worker 273*d83cc019SAndroid Build Coastguard Worker libexecdir_rpathdir = '$ORIGIN' 274*d83cc019SAndroid Build Coastguard Worker foreach p : libexecdir.split('/') 275*d83cc019SAndroid Build Coastguard Worker libexecdir_rpathdir = join_paths(libexecdir_rpathdir, '..') 276*d83cc019SAndroid Build Coastguard Worker endforeach 277*d83cc019SAndroid Build Coastguard Worker libexecdir_rpathdir = join_paths(libexecdir_rpathdir, libdir) 278*d83cc019SAndroid Build Coastguard Worker 279*d83cc019SAndroid Build Coastguard Worker amdgpudir_rpathdir = '$ORIGIN' 280*d83cc019SAndroid Build Coastguard Worker foreach p : amdgpudir.split('/') 281*d83cc019SAndroid Build Coastguard Worker amdgpudir_rpathdir = join_paths(amdgpudir_rpathdir, '..') 282*d83cc019SAndroid Build Coastguard Worker endforeach 283*d83cc019SAndroid Build Coastguard Worker amdgpudir_rpathdir = join_paths(amdgpudir_rpathdir, libdir) 284*d83cc019SAndroid Build Coastguard Workerelse 285*d83cc019SAndroid Build Coastguard Worker bindir_rpathdir = '' 286*d83cc019SAndroid Build Coastguard Worker libexecdir_rpathdir = '' 287*d83cc019SAndroid Build Coastguard Worker amdgpudir_rpathdir = '' 288*d83cc019SAndroid Build Coastguard Workerendif 289*d83cc019SAndroid Build Coastguard Worker 290*d83cc019SAndroid Build Coastguard Workersubdir('lib') 291*d83cc019SAndroid Build Coastguard Workerif build_tests 292*d83cc019SAndroid Build Coastguard Worker subdir('tests') 293*d83cc019SAndroid Build Coastguard Workerendif 294*d83cc019SAndroid Build Coastguard Workerbuild_info += 'Build tests: @0@'.format(build_tests) 295*d83cc019SAndroid Build Coastguard Worker 296*d83cc019SAndroid Build Coastguard Workersubdir('benchmarks') 297*d83cc019SAndroid Build Coastguard Workersubdir('tools') 298*d83cc019SAndroid Build Coastguard Workersubdir('runner') 299*d83cc019SAndroid Build Coastguard Workerif libdrm_intel.found() 300*d83cc019SAndroid Build Coastguard Worker subdir('assembler') 301*d83cc019SAndroid Build Coastguard Workerendif 302*d83cc019SAndroid Build Coastguard Workersubdir('overlay') 303*d83cc019SAndroid Build Coastguard Workersubdir('man') 304*d83cc019SAndroid Build Coastguard Worker 305*d83cc019SAndroid Build Coastguard Workergtk_doc = dependency('gtk-doc', required : build_docs) 306*d83cc019SAndroid Build Coastguard Workerpython3 = find_program('python3', required : build_docs) 307*d83cc019SAndroid Build Coastguard Workerif build_tests and gtk_doc.found() and python3.found() 308*d83cc019SAndroid Build Coastguard Worker subdir('docs') 309*d83cc019SAndroid Build Coastguard Workerelif build_docs.enabled() 310*d83cc019SAndroid Build Coastguard Worker error('Documentation requires building tests') 311*d83cc019SAndroid Build Coastguard Workerendif 312*d83cc019SAndroid Build Coastguard Workerbuild_info += 'Build documentation: @0@'.format(build_tests and gtk_doc.found()) 313*d83cc019SAndroid Build Coastguard Worker 314*d83cc019SAndroid Build Coastguard Workermessage('Build options') 315*d83cc019SAndroid Build Coastguard Workermessage('=============') 316*d83cc019SAndroid Build Coastguard Workerforeach str : build_info 317*d83cc019SAndroid Build Coastguard Worker message(str) 318*d83cc019SAndroid Build Coastguard Workerendforeach 319*d83cc019SAndroid Build Coastguard Worker 320*d83cc019SAndroid Build Coastguard Workerif cairo.version().version_compare('<1.17.2') 321*d83cc019SAndroid Build Coastguard Worker if pixman.version().version_compare('<0.36.0') 322*d83cc019SAndroid Build Coastguard Worker warning('Pixman < 0.36.0 found, cannot test HDR formats') 323*d83cc019SAndroid Build Coastguard Worker endif 324*d83cc019SAndroid Build Coastguard Worker warning('Cairo < 1.17.2 found, cannot test HDR formats') 325*d83cc019SAndroid Build Coastguard Workerelif pixman.version().version_compare('<0.36.0') 326*d83cc019SAndroid Build Coastguard Worker # Cairo 1.17.2 requires 0.36.0 to compile, but somehow it went missing? 327*d83cc019SAndroid Build Coastguard Worker error('Cairo with floating point support found, but pixman version too old') 328*d83cc019SAndroid Build Coastguard Workerendif 329