use std::ffi::CString;
#[test]
fn compile_program() {
let header = r#"
static void world() {
printf("world\n");
}
"#;
let kernel = r#"
#include "world.cl"
__kernel void hello() {
printf("hello ");
world();
}
"#;
let kernel2 = r#"
__kernel void hello2() {
unsigned int gid = get_global_size(0);
printf("hi\n");
}
"#;
let platform_id = crate::default_platform().unwrap();
let device_ids = crate::get_device_ids(&platform_id, None, None).unwrap();
for device in device_ids {
if device.version().unwrap() < [1, 2].into() {
println!("Device version too low. Skipping test for this device.");
continue;
}
let context_properties = crate::ContextProperties::new().platform(platform_id);
let context =
crate::create_context(Some(&context_properties), &[device], None, None).unwrap();
let program =
crate::create_program_with_source(&context, &[CString::new(kernel).unwrap()]).unwrap();
let program2 =
crate::create_program_with_source(&context, &[CString::new(kernel2).unwrap()]).unwrap();
let header =
crate::create_program_with_source(&context, &[CString::new(header).unwrap()]).unwrap();
let options = CString::new("").unwrap();
crate::compile_program(
&program,
Some(&[device]),
&options,
&[&header],
&[CString::new("world.cl").unwrap()],
None,
None,
None,
)
.unwrap();
crate::compile_program(
&program2,
Some(&[device]),
&options,
&[],
&[],
None,
None,
None,
)
.unwrap();
crate::link_program(
&context,
Some(&[device]),
&options,
&[&program, &program2],
None,
None,
None,
)
.unwrap();
}
}