test_runner = static_library(
	'test-runner',
	sources: [
		'test-runner.c',
		'test-helpers.c',
		'test-compositor.c'
	],
	include_directories: [ root_inc, src_inc ],
	dependencies: [
		cc.find_library('dl', required: false),
		dependency('threads'),
		ffi_dep,
		wayland_util_dep,
		wayland_private_dep,
		wayland_client_dep,
		wayland_server_dep
	]
)

test_runner_dep = declare_dependency(
	link_with: test_runner,
	include_directories: [ src_inc ],
	dependencies: [
		dependency('threads'),
		cc.find_library('dl', required: false)
	]
)

tests_protocol_xml = files('../protocol/tests.xml')

tests_server_protocol_h = custom_target(
	'test server protocol header',
	command: [ wayland_scanner_for_build, '-s', 'server-header', '@INPUT@', '@OUTPUT@' ],
	input: tests_protocol_xml,
	output: 'tests-server-protocol.h'
)

tests_client_protocol_c = custom_target(
	'test client protocol header',
	command: [ wayland_scanner_for_build, '-s', 'client-header', '@INPUT@', '@OUTPUT@' ],
	input: tests_protocol_xml,
	output: 'tests-client-protocol.h'
)

tests_protocol_c = custom_target(
	'test protocol source',
	command: [ wayland_scanner_for_build, '-s', 'public-code', '@INPUT@', '@OUTPUT@' ],
	input: tests_protocol_xml,
	output: 'tests-protocol.c'
)

benchmark(
	'fixed-benchmark',
	executable(
		'fixed-benchmark',
		'fixed-benchmark.c',
		dependencies: test_runner_dep
	)
)

executable(
	'exec-fd-leak-checker',
	'exec-fd-leak-checker.c',
	dependencies: test_runner_dep
)

test(
	'cpp-compile-test',
	executable(
		'cpp-compile-test',
		'cpp-compile-test.cpp',
		wayland_server_protocol_core_h,
		include_directories: src_inc
	)
)

sed_path = find_program('sed').path()

test(
	'scanner-test',
	find_program('scanner-test.sh'),
	env: [
		'TEST_DATA_DIR=@0@/data'.format(meson.current_source_dir()),
		'TEST_OUTPUT_DIR=@0@/output'.format(meson.current_build_dir()),
		'SED=@0@'.format(sed_path),
		'WAYLAND_SCANNER=@0@'.format(wayland_scanner.full_path()),
	],
)

tests = {
	'array-test': [],
	'client-test': [ wayland_server_protocol_h ],
	'display-test': [
		tests_server_protocol_h,
		tests_client_protocol_c,
		tests_protocol_c,
	],
	'connection-test': [ wayland_server_protocol_h ],
	'event-loop-test': [ wayland_server_protocol_h ],
	'fixed-test': [],
	'interface-test': [ wayland_client_protocol_h ],
	'list-test': [],
	'map-test': [],
	'sanity-test' : [ wayland_server_protocol_h ],
	'socket-test': [
		wayland_client_protocol_h,
		wayland_server_protocol_h,
	],
	'queue-test': [
		wayland_client_protocol_h,
		wayland_server_protocol_h,
	],
	'signal-test': [ wayland_server_protocol_h ],
	'newsignal-test': [
		# wayland-server.c is needed here to access wl_priv_* functions
		files('../src/wayland-server.c'),
		wayland_server_protocol_h,
	],
	'resources-test': [ wayland_server_protocol_core_h ],
	'message-test': [
		wayland_client_protocol_h,
		wayland_server_protocol_h,
	],
	'compositor-introspection-test': [
		wayland_client_protocol_h,
		wayland_server_protocol_h,
	],
	'protocol-logger-test': [
		wayland_server_protocol_core_h,
		wayland_client_protocol_core_h,
	],
	'headers-test': [
		'headers-protocol-test.c',
		'headers-protocol-core-test.c',
		wayland_server_protocol_core_h,
		wayland_client_protocol_core_h,
	],
	'os-wrappers-test': [],
}

foreach test_name, test_extra_sources: tests
	test_sources = [ test_name + '.c' ] + test_extra_sources
	test_deps = [test_runner_dep]
	bin = executable(test_name, test_sources, dependencies: test_deps)
	test(
		test_name,
		bin,
		env: [
			'TEST_SRC_DIR=@0@'.format(meson.current_source_dir()),
			'TEST_BUILD_DIR=@0@'.format(meson.current_build_dir()),
		],
	)
endforeach
