MCPcopy Create free account
hub / github.com/CCExtractor/rusty_ffmpeg / dynamic_linking

Function dynamic_linking

build.rs:362–397  ·  view source on GitHub ↗
(env_vars: &EnvVars)

Source from the content-addressed store, hash-verified

360}
361
362fn dynamic_linking(env_vars: &EnvVars) {
363 let ffmpeg_dll_path = env_vars.ffmpeg_dll_path.as_ref().unwrap();
364
365 let output_binding_path = &env_vars.out_dir.as_ref().unwrap().join("binding.rs");
366
367 // Extract dll name and the dir the dll is in.
368 let (ffmpeg_dll_name, ffmpeg_dll_dir) = {
369 let mut ffmpeg_dll_path = PathBuf::from(ffmpeg_dll_path);
370 // Without extension.
371 let ffmpeg_dll_filename = ffmpeg_dll_path.file_stem().unwrap();
372 let ffmpeg_dll_name = if cfg!(target_os = "windows") {
373 ffmpeg_dll_filename
374 } else {
375 ffmpeg_dll_filename.trim_start_matches("lib")
376 }
377 .to_string();
378 // Remove file name.
379 ffmpeg_dll_path.pop();
380 let ffmpeg_dll_path = ffmpeg_dll_path.to_string();
381 (ffmpeg_dll_name, ffmpeg_dll_path)
382 };
383
384 println!("cargo:rustc-link-lib=dylib={}", ffmpeg_dll_name);
385 println!("cargo:rustc-link-search=native={}", ffmpeg_dll_dir);
386
387 if let Some(ffmpeg_binding_path) = env_vars.ffmpeg_binding_path.as_ref() {
388 use_prebuilt_binding(ffmpeg_binding_path, output_binding_path);
389 } else if let Some(ffmpeg_include_dir) = env_vars.ffmpeg_include_dir.as_ref() {
390 generate_bindings(ffmpeg_include_dir, &HEADERS)
391 // Is it correct to generate binding to one file? :-/
392 .write_to_file(output_binding_path)
393 .expect("Cannot write binding to file.");
394 } else {
395 panic!("No binding generation method is set!");
396 }
397}
398
399fn static_linking(env_vars: &EnvVars) {
400 let output_binding_path = &env_vars.out_dir.as_ref().unwrap().join("binding.rs");

Callers 1

mainFunction · 0.85

Calls 2

use_prebuilt_bindingFunction · 0.85
generate_bindingsFunction · 0.85

Tested by

no test coverage detected