Clean up generated C++ include directory handling

Don't generate the headers by default in the source directory, put them
into a sub-directory in OUT_DIR instead and convey that location via
links to the C++ test driver.
This commit is contained in:
Simon Hausmann 2021-09-17 09:25:33 +02:00 committed by Simon Hausmann
parent 499ab6645c
commit 324fb48499
5 changed files with 19 additions and 10 deletions

1
.gitignore vendored
View file

@ -4,4 +4,3 @@ node_modules
tools/figma_import/target
tools/figma_import/figma_output
*.code-workspace
api/sixtyfps-cpp/generated_include

View file

@ -9,6 +9,8 @@ description = "SixtyFPS C++ integration"
repository = "https://github.com/sixtyfpsui/sixtyfps"
homepage = "https://sixtyfps.io"
publish = false
# prefix used to convey path to generated includes to the C++ test driver
links = "sixtyfps_cpp"
[lib]
path = "lib.rs"

View file

@ -20,8 +20,12 @@ fn main() -> Result<(), anyhow::Error> {
manifest_dir.to_string_lossy()
));
let output_dir = std::env::var_os("SIXTYFPS_GENERATED_INCLUDE_DIR")
.unwrap_or_else(|| Path::new(&manifest_dir).join("generated_include").into());
let output_dir = std::env::var_os("SIXTYFPS_GENERATED_INCLUDE_DIR").unwrap_or_else(|| {
Path::new(&std::env::var_os("OUT_DIR").unwrap()).join("generated_include").into()
});
let output_dir = Path::new(&output_dir);
cbindgen::gen_all(&root_dir, &Path::new(&output_dir))
println!("cargo:GENERATED_INCLUDE_DIR={}", output_dir.display());
cbindgen::gen_all(&root_dir, &output_dir)
}

View file

@ -10,9 +10,11 @@ license = "GPL-3.0-only"
path = "main.rs"
name = "test-driver-cpp"
[dependencies]
sixtyfps-cpp = { path = "../../../api/sixtyfps-cpp", features = ["testing"] }
[dev-dependencies]
sixtyfps-compilerlib = { path = "../../../sixtyfps_compiler", features = ["cpp", "display-diagnostics"] }
sixtyfps-cpp = { path = "../../../api/sixtyfps-cpp", features = ["testing"] }
cc = "1.0.54"
tempfile = "3"
scopeguard = "1.1.0"

View file

@ -8,7 +8,7 @@
Please contact info@sixtyfps.io for more information.
LICENSE END */
use std::io::Write;
use std::path::PathBuf;
use std::path::{Path, PathBuf};
/// The root dir of the git repository
fn root_dir() -> PathBuf {
@ -34,15 +34,17 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("cargo:rustc-env=CPP_LIB_PATH={}", target_dir.display());
let generated_include_dir = std::env::var_os("DEP_SIXTYFPS_CPP_GENERATED_INCLUDE_DIR")
.expect("the sixtyfps-cpp crate needs to provide the meta-data that points to the directory with the generated includes");
println!(
"cargo:rustc-env=GENERATED_CPP_HEADERS_PATH={}",
Path::new(&generated_include_dir).display()
);
let root_dir = root_dir();
println!(
"cargo:rustc-env=CPP_API_HEADERS_PATH={}/api/sixtyfps-cpp/include",
root_dir.display()
);
println!(
"cargo:rustc-env=GENERATED_CPP_HEADERS_PATH={}/api/sixtyfps-cpp/generated_include",
root_dir.display()
);
let tests_file_path =
std::path::Path::new(&std::env::var_os("OUT_DIR").unwrap()).join("test_functions.rs");