|
@@ -104,12 +104,84 @@ fn link(args: LocalizeArgs)
|
|
|
|
|
|
link_partial(&objects, &args.output_file).unwrap();
|
|
link_partial(&objects, &args.output_file).unwrap();
|
|
localize_hidden(&args.output_file);
|
|
localize_hidden(&args.output_file);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+struct PluginEntry
|
|
|
|
+{
|
|
|
|
+ lib: PathBuf,
|
|
|
|
+ prefix: String,
|
|
|
|
+}
|
|
|
|
|
|
|
|
+fn generate_plugin(plugins: &Vec<PluginEntry>, output: &PathBuf)
|
|
|
|
+{
|
|
|
|
|
|
|
|
+ let plugins_entries : Vec<String> = plugins
|
|
|
|
+ .iter()
|
|
|
|
+ .map(|plugin| plugin.prefix.clone() + "_entry")
|
|
|
|
+ .collect();
|
|
|
|
+
|
|
|
|
+ let prototypes = plugins_entries
|
|
|
|
+ .iter()
|
|
|
|
+ .map(|entry| String::from("int ") + entry + "(vlc_set_cb, void*);")
|
|
|
|
+ .fold(String::new(), |entries, entry| entries + &entry);
|
|
|
|
+
|
|
|
|
+ let entries = plugins_entries
|
|
|
|
+ .iter()
|
|
|
|
+ .fold(String::new(), |entries, entry|
|
|
|
|
+ entries + &entry + " ,");
|
|
|
|
+
|
|
|
|
+ let sources = format!(r"
|
|
|
|
+typedef int (*vlc_set_cb) (void *, void *, int, ...);
|
|
|
|
+typedef int (*vlc_plugin_entry) (vlc_set_cb, void *);
|
|
|
|
+
|
|
|
|
+{prototypes}
|
|
|
|
+
|
|
|
|
+vlc_plugin_entry vlc_plugin_entries[] = {{
|
|
|
|
+ {entries} NULL,
|
|
|
|
+}};
|
|
|
|
+
|
|
|
|
+int vlc_entry(vlc_set_cb func_set, void *opaque)
|
|
|
|
+{{
|
|
|
|
+ for(vlc_plugin_entry *entry=vlc_plugin_entries;
|
|
|
|
+ entry != NULL; entry++)
|
|
|
|
+ {{
|
|
|
|
+ int ret = entry(func_set, opaque);
|
|
|
|
+ if (ret != 0)
|
|
|
|
+ return ret;
|
|
|
|
+ }}
|
|
|
|
+}}
|
|
|
|
+
|
|
|
|
+const char * vlc_entry_license()
|
|
|
|
+{{
|
|
|
|
+ return {license};
|
|
|
|
+}}
|
|
|
|
+
|
|
|
|
+const char * vlc_entry_copyright()
|
|
|
|
+{{
|
|
|
|
+ return {copyright};
|
|
|
|
+}}
|
|
|
|
+
|
|
|
|
+const char * vlc_entry_api_version()
|
|
|
|
+{{
|
|
|
|
+ return {api_version};
|
|
|
|
+}}
|
|
|
|
+ ",
|
|
|
|
+ prototypes = prototypes,
|
|
|
|
+ entries = entries,
|
|
|
|
+ license = "\"none\"",
|
|
|
|
+ copyright = "\"none\"",
|
|
|
|
+ api_version = "\"4.0.0\"");
|
|
|
|
+
|
|
|
|
+ println!("Generated:\n{}", sources);
|
|
}
|
|
}
|
|
|
|
|
|
fn main() {
|
|
fn main() {
|
|
let opt = LocalizeArgs::from_args();
|
|
let opt = LocalizeArgs::from_args();
|
|
println!("{:?}", opt);
|
|
println!("{:?}", opt);
|
|
link(opt);
|
|
link(opt);
|
|
|
|
+
|
|
|
|
+ generate_plugin(&vec![
|
|
|
|
+ PluginEntry{ prefix: "vlc_video_output_test_truc".into(),
|
|
|
|
+ lib: PathBuf::new() }
|
|
|
|
+ ], &PathBuf::new());
|
|
}
|
|
}
|