mirror of
https://github.com/yshui/picom.git
synced 2024-11-11 13:51:02 -05:00
c23dbe61f7
Add fix some simple bugs discovered by the fuzzer. Two cases of missing input validation (we have assertions, but assertion failures are not user friendly). And one case of jump over variable initialization with goto. Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
107 lines
2.8 KiB
Meson
107 lines
2.8 KiB
Meson
libev = dependency('libev', required: false)
|
|
if not libev.found()
|
|
libev = cc.find_library('ev')
|
|
endif
|
|
base_deps = [
|
|
cc.find_library('m'),
|
|
libev
|
|
]
|
|
|
|
srcs = [ files('picom.c', 'win.c', 'c2.c', 'x.c', 'config.c', 'vsync.c', 'utils.c',
|
|
'diagnostic.c', 'string_utils.c', 'render.c', 'kernel.c', 'log.c',
|
|
'options.c', 'event.c', 'cache.c', 'atom.c', 'file_watch.c', 'statistics.c',
|
|
'vblank.c') ]
|
|
picom_inc = include_directories('.')
|
|
|
|
cflags = []
|
|
|
|
required_xcb_packages = [
|
|
'xcb', 'xcb-composite', 'xcb-damage', 'xcb-dpms', 'xcb-glx', 'xcb-present',
|
|
'xcb-randr', 'xcb-render', 'xcb-shape', 'xcb-sync', 'xcb-xfixes'
|
|
]
|
|
|
|
# Some XCB packages are here because their versioning differs (see check below).
|
|
required_packages = [
|
|
'pixman-1', 'x11', 'x11-xcb', 'xcb-image', 'xcb-renderutil', 'xcb-util',
|
|
'xext', 'threads',
|
|
]
|
|
|
|
foreach i : required_packages
|
|
base_deps += [dependency(i, required: true)]
|
|
endforeach
|
|
|
|
foreach i : required_xcb_packages
|
|
base_deps += [dependency(i, version: '>=1.12.0', required: true)]
|
|
endforeach
|
|
|
|
if not cc.has_header('uthash.h')
|
|
error('Dependency uthash not found')
|
|
endif
|
|
|
|
deps = []
|
|
|
|
if get_option('config_file')
|
|
deps += [dependency('libconfig', version: '>=1.4', required: true)]
|
|
|
|
cflags += ['-DCONFIG_LIBCONFIG']
|
|
srcs += [ 'config_libconfig.c' ]
|
|
endif
|
|
if get_option('regex')
|
|
pcre = dependency('libpcre2-8', required: true)
|
|
cflags += ['-DCONFIG_REGEX_PCRE']
|
|
deps += [pcre]
|
|
endif
|
|
|
|
if get_option('vsync_drm')
|
|
cflags += ['-DCONFIG_VSYNC_DRM']
|
|
deps += [dependency('libdrm', required: true)]
|
|
endif
|
|
|
|
if get_option('opengl')
|
|
cflags += ['-DCONFIG_OPENGL']
|
|
deps += [dependency('epoxy', required: true)]
|
|
srcs += [ 'opengl.c' ]
|
|
endif
|
|
|
|
if get_option('dbus')
|
|
cflags += ['-DCONFIG_DBUS']
|
|
deps += [dependency('dbus-1', required: true)]
|
|
srcs += [ 'dbus.c', 'rtkit.c' ]
|
|
endif
|
|
|
|
if get_option('xrescheck')
|
|
cflags += ['-DDEBUG_XRC']
|
|
srcs += [ 'xrescheck.c' ]
|
|
endif
|
|
|
|
if get_option('unittest')
|
|
cflags += ['-DUNIT_TEST']
|
|
endif
|
|
|
|
host_system = host_machine.system()
|
|
if host_system == 'linux'
|
|
cflags += ['-DHAS_INOTIFY']
|
|
elif (host_system == 'freebsd' or host_system == 'netbsd' or
|
|
host_system == 'dragonfly' or host_system == 'openbsd')
|
|
cflags += ['-DHAS_KQUEUE']
|
|
endif
|
|
|
|
subdir('backend')
|
|
|
|
picom = executable('picom', srcs, c_args: cflags,
|
|
dependencies: [ base_deps, deps, test_h_dep ],
|
|
install: true, include_directories: picom_inc)
|
|
|
|
if get_option('unittest')
|
|
test('picom unittest', picom, args: [ '--unittest' ])
|
|
endif
|
|
|
|
if cc.has_argument('-fsanitize=fuzzer')
|
|
c2_fuzz = executable('c2_fuzz', srcs + ['fuzzer/c2.c'],
|
|
c_args: cflags + ['-fsanitize=fuzzer', '-Dmain=__main__'],
|
|
link_args: ['-fsanitize=fuzzer'],
|
|
dependencies: [ base_deps, deps, test_h_dep ],
|
|
build_by_default: false,
|
|
install: false, include_directories: picom_inc
|
|
)
|
|
endif
|