aboutsummaryrefslogtreecommitdiff
path: root/meson.build
blob: 0349b7dd27ed2ed66795ea8ac45696a53c5de530 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
project('picom', 'c', version: '8',
        default_options: ['c_std=c11'])

cc = meson.get_compiler('c')

# use project version by default
version = 'v0.2.2-4'

add_global_arguments('-DCOMPTON_VERSION="'+version+'"', language: 'c')

if get_option('buildtype') == 'release'
	add_global_arguments('-DNDEBUG', language: 'c')
endif

if get_option('sanitize')
	sanitizers = ['address', 'undefined']
	if cc.has_argument('-fsanitize=integer')
		sanitizers += ['integer']
	endif
	if cc.has_argument('-fsanitize=nullability')
		sanitizers += ['nullability']
	endif
	add_global_arguments('-fsanitize='+','.join(sanitizers), language: 'c')
	add_global_link_arguments('-fsanitize='+','.join(sanitizers), language: 'c')
	if cc.has_argument('-fno-sanitize=unsigned-integer-overflow')
		add_global_arguments('-fno-sanitize=unsigned-integer-overflow', language: 'c')
	endif
endif

if get_option('modularize')
	if not cc.has_argument('-fmodules')
		error('option \'modularize\' requires clang')
	endif
	add_global_arguments(['-fmodules',
	                      '-fmodule-map-file='+
	                      meson.current_source_dir()+
	                      '/src/picom.modulemap'],
	                     language: 'c')
endif

add_global_arguments('-D_GNU_SOURCE', language: 'c')

if cc.has_header('stdc-predef.h')
	add_global_arguments('-DHAS_STDC_PREDEF_H', language: 'c')
endif

warns = [ 'all', 'cast-function-type', 'ignored-qualifiers', 'missing-parameter-type',
          'nonnull', 'shadow', 'no-type-limits', 'old-style-declaration', 'override-init',
          'sign-compare', 'type-limits', 'uninitialized', 'shift-negative-value',
          'unused-but-set-parameter', 'unused-parameter', 'implicit-fallthrough',
          'no-unknown-warning-option', 'no-missing-braces', 'conversion', 'empty-body' ]
foreach w : warns
	if cc.has_argument('-W'+w)
		add_global_arguments('-W'+w, language: 'c')
	endif
endforeach

test_h_dep = subproject('test.h').get_variable('test_h_dep')

subdir('src')

install_data('bin/picom-trans', install_dir: get_option('bindir'))
install_data('picom.desktop', install_dir: 'share/applications')