Skip to content

Commit

Permalink
WIP: cxx-qt-build: use same builder for now for all qml modules
Browse files Browse the repository at this point in the history
  • Loading branch information
ahayzen-kdab committed Sep 9, 2024
1 parent d0e2a20 commit ff91b18
Showing 1 changed file with 28 additions and 26 deletions.
54 changes: 28 additions & 26 deletions crates/cxx-qt-build/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -302,13 +302,14 @@ fn static_lib_name() -> String {
format!("{}-cxxqt-generated", crate_name())
}

fn qml_module_static_lib_name(module_uri: &str) -> String {
format!(
"{}-qml-module-{}-cxxqt-generated",
crate_name(),
module_name_from_uri(module_uri)
)
}
// TODO: useful once we have a cc_builder per qml_module
// fn qml_module_static_lib_name(module_uri: &str) -> String {
// format!(
// "{}-qml-module-{}-cxxqt-generated",
// crate_name(),
// module_name_from_uri(module_uri)
// )
// }

fn panic_duplicate_file_and_qml_module(
path: impl AsRef<Path>,
Expand Down Expand Up @@ -783,14 +784,12 @@ impl CxxQtBuilder {
);
}

// Use a separate cc_builder per QML module so we don't have collisions
//
// TODO: for now we copy the global CxxQtBuilder cc_builder
// TODO: for now we use the global CxxQtBuilder cc_builder
// this means that any includes/files etc on these are in this builder
// but we cannot have separate builds until we can configure includes,
// qt modules, files, cc_builder options etc in the QmlModule itself
let mut cc_builder = self.cc_builder.clone();
qtbuild.cargo_link_libraries(&mut cc_builder);
let cc_builder = &mut self.cc_builder;
qtbuild.cargo_link_libraries(cc_builder);

let mut moc_include_paths = HashSet::new();
for files in generate_cxxqt_cpp_files(
Expand Down Expand Up @@ -883,20 +882,23 @@ impl CxxQtBuilder {
dir::module_target(&qml_module.uri).join("plugin_init.o"),
);

// Build the QML module as a library
if cc_builder.get_files().count() > 0 {
let qml_library_name = qml_module_static_lib_name(&qml_module.uri);

// The linker argument order matters!
// We need to link the object file first, then link the static library.
// Otherwise, the linker will be unable to find the symbols in the static library file.
// See also: https://stackoverflow.com/questions/45135/why-does-the-order-in-which-libraries-are-linked-sometimes-cause-errors-in-gcc
if !dir::is_exporting() {
println!("cargo::rustc-link-arg=-l{}", &qml_library_name);
}

cc_builder.compile(&qml_library_name);
}
// TODO: once we have a separate cc_builder per qml_module we will
// need to build the qml module here and link it
//
// // Build the QML module as a library
// if cc_builder.get_files().count() > 0 {
// let qml_library_name = qml_module_static_lib_name(&qml_module.uri);

// // The linker argument order matters!
// // We need to link the object file first, then link the static library.
// // Otherwise, the linker will be unable to find the symbols in the static library file.
// // See also: https://stackoverflow.com/questions/45135/why-does-the-order-in-which-libraries-are-linked-sometimes-cause-errors-in-gcc
// if !dir::is_exporting() {
// println!("cargo::rustc-link-arg=-l{}", &qml_library_name);
// }

// cc_builder.compile(&qml_library_name);
// }
}
}

Expand Down

0 comments on commit ff91b18

Please sign in to comment.