From ce5f486596aa742342e5b87d38d1f6547ab61512 Mon Sep 17 00:00:00 2001 From: Gabriele Musco Date: Sun, 8 Dec 2024 11:44:51 +0100 Subject: [PATCH] feat: refactor builders cmake vars and env to use inner blocks --- src/builders/build_basalt.rs | 51 ++++++++++++++---------- src/builders/build_libsurvive.rs | 36 ++++++++++------- src/builders/build_monado.rs | 62 ++++++++++++++++------------- src/builders/build_opencomposite.rs | 14 +++++-- 4 files changed, 96 insertions(+), 67 deletions(-) diff --git a/src/builders/build_basalt.rs b/src/builders/build_basalt.rs index e67e081..10d6029 100644 --- a/src/builders/build_basalt.rs +++ b/src/builders/build_basalt.rs @@ -35,28 +35,39 @@ pub fn get_build_basalt_jobs(profile: &Profile, clean_build: bool) -> VecDeque = HashMap::new(); - cmake_vars.insert("CMAKE_EXPORT_COMPILE_COMMANDS".into(), "ON".into()); - cmake_vars.insert("CMAKE_BUILD_TYPE".into(), "RelWithDebInfo".into()); - cmake_vars.insert( - "CMAKE_INSTALL_PREFIX".into(), - profile.prefix.to_string_lossy().to_string(), - ); - cmake_vars.insert("BUILD_TESTS".into(), "OFF".into()); - cmake_vars.insert("BASALT_INSTANTIATIONS_DOUBLE".into(), "OFF".into()); - cmake_vars.insert( - "CMAKE_INSTALL_LIBDIR".into(), - profile.prefix.join("lib").to_string_lossy().to_string(), - ); - - let mut cmake_env: HashMap = HashMap::new(); - cmake_env.insert("CMAKE_BUILD_PARALLEL_LEVEL".into(), "2".into()); - cmake_env.insert("CMAKE_BUILD_TYPE".into(), "RelWithDebInfo".into()); - cmake_env.insert("BUILD_TESTS".into(), "off".into()); let cmake = Cmake { - env: Some(cmake_env), - vars: Some(cmake_vars), + env: Some({ + let mut cmake_env: HashMap = HashMap::new(); + for (k, v) in [ + ("CMAKE_BUILD_PARALLEL_LEVEL", "2"), + ("CMAKE_BUILD_TYPE", "RelWithDebInfo"), + ("BUILD_TESTS", "off"), + ] { + cmake_env.insert(k.to_string(), v.to_string()); + } + cmake_env + }), + vars: Some({ + let mut cmake_vars: HashMap = HashMap::new(); + for (k, v) in [ + ("CMAKE_EXPORT_COMPILE_COMMANDS", "ON"), + ("CMAKE_BUILD_TYPE", "RelWithDebInfo"), + ("BUILD_TESTS", "OFF"), + ("BASALT_INSTANTIATIONS_DOUBLE", "OFF"), + ] { + cmake_vars.insert(k.to_string(), v.to_string()); + } + cmake_vars.insert( + "CMAKE_INSTALL_PREFIX".into(), + profile.prefix.to_string_lossy().to_string(), + ); + cmake_vars.insert( + "CMAKE_INSTALL_LIBDIR".into(), + profile.prefix.join("lib").to_string_lossy().to_string(), + ); + cmake_vars + }), source_dir: profile.features.basalt.path.as_ref().unwrap().clone(), build_dir: build_dir.clone(), }; diff --git a/src/builders/build_libsurvive.rs b/src/builders/build_libsurvive.rs index b4b0dc3..9f59353 100644 --- a/src/builders/build_libsurvive.rs +++ b/src/builders/build_libsurvive.rs @@ -44,24 +44,30 @@ pub fn get_build_libsurvive_jobs(profile: &Profile, clean_build: bool) -> VecDeq .as_ref() .unwrap() .join("build"); - let mut cmake_vars: HashMap = HashMap::new(); - cmake_vars.insert("CMAKE_EXPORT_COMPILE_COMMANDS".into(), "ON".into()); - cmake_vars.insert("CMAKE_BUILD_TYPE".into(), "RelWithDebInfo".into()); - cmake_vars.insert("ENABLE_api_example".into(), "OFF".into()); - cmake_vars.insert("USE_HIDAPI".into(), "ON".into()); - cmake_vars.insert("CMAKE_SKIP_INSTALL_RPATH".into(), "YES".into()); - cmake_vars.insert( - "CMAKE_INSTALL_PREFIX".into(), - profile.prefix.to_string_lossy().to_string(), - ); - cmake_vars.insert( - "CMAKE_INSTALL_LIBDIR".into(), - profile.prefix.join("lib").to_string_lossy().to_string(), - ); let cmake = Cmake { env: None, - vars: Some(cmake_vars), + vars: Some({ + let mut cmake_vars: HashMap = HashMap::new(); + for (k, v) in [ + ("CMAKE_EXPORT_COMPILE_COMMANDS", "ON"), + ("CMAKE_BUILD_TYPE", "RelWithDebInfo"), + ("ENABLE_api_example", "OFF"), + ("USE_HIDAPI", "ON"), + ("CMAKE_SKIP_INSTALL_RPATH", "YES"), + ] { + cmake_vars.insert(k.to_string(), v.to_string()); + } + cmake_vars.insert( + "CMAKE_INSTALL_PREFIX".into(), + profile.prefix.to_string_lossy().to_string(), + ); + cmake_vars.insert( + "CMAKE_INSTALL_LIBDIR".into(), + profile.prefix.join("lib").to_string_lossy().to_string(), + ); + cmake_vars + }), source_dir: profile.features.libsurvive.path.as_ref().unwrap().clone(), build_dir: build_dir.clone(), }; diff --git a/src/builders/build_monado.rs b/src/builders/build_monado.rs index f379d6f..8837874 100644 --- a/src/builders/build_monado.rs +++ b/src/builders/build_monado.rs @@ -43,37 +43,43 @@ pub fn get_build_monado_jobs(profile: &Profile, clean_build: bool) -> VecDeque = HashMap::new(); - cmake_vars.insert("CMAKE_EXPORT_COMPILE_COMMANDS".into(), "ON".into()); - cmake_vars.insert("CMAKE_BUILD_TYPE".into(), "RelWithDebInfo".into()); - cmake_vars.insert("XRT_HAVE_SYSTEM_CJSON".into(), "NO".into()); - cmake_vars.insert( - "CMAKE_LIBDIR".into(), - profile.prefix.join("lib").to_string_lossy().to_string(), - ); - cmake_vars.insert( - "CMAKE_INSTALL_PREFIX".into(), - profile.prefix.to_string_lossy().to_string(), - ); - cmake_vars.insert( - "CMAKE_C_FLAGS".into(), - format!("-Wl,-rpath='{}/lib'", profile.prefix.to_string_lossy(),), - ); - cmake_vars.insert( - "CMAKE_CXX_FLAGS".into(), - format!("-Wl,-rpath='{}/lib'", profile.prefix.to_string_lossy(),), - ); - profile.xrservice_cmake_flags.iter().for_each(|(k, v)| { - if k == "CMAKE_C_FLAGS" || k == "CMAKE_CXX_FLAGS" { - cmake_vars.insert(k.clone(), format!("{} {}", cmake_vars.get(k).unwrap(), v)); - } else { - cmake_vars.insert(k.clone(), v.clone()); - } - }); let cmake = Cmake { env: Some(env), - vars: Some(cmake_vars), + vars: Some({ + let mut cmake_vars: HashMap = HashMap::new(); + for (k, v) in [ + ("CMAKE_EXPORT_COMPILE_COMMANDS", "ON"), + ("CMAKE_BUILD_TYPE", "RelWithDebInfo"), + ("XRT_HAVE_SYSTEM_CJSON", "NO"), + ] { + cmake_vars.insert(k.to_string(), v.to_string()); + } + cmake_vars.insert( + "CMAKE_LIBDIR".into(), + profile.prefix.join("lib").to_string_lossy().to_string(), + ); + cmake_vars.insert( + "CMAKE_INSTALL_PREFIX".into(), + profile.prefix.to_string_lossy().to_string(), + ); + cmake_vars.insert( + "CMAKE_C_FLAGS".into(), + format!("-Wl,-rpath='{}/lib'", profile.prefix.to_string_lossy(),), + ); + cmake_vars.insert( + "CMAKE_CXX_FLAGS".into(), + format!("-Wl,-rpath='{}/lib'", profile.prefix.to_string_lossy(),), + ); + profile.xrservice_cmake_flags.iter().for_each(|(k, v)| { + if k == "CMAKE_C_FLAGS" || k == "CMAKE_CXX_FLAGS" { + cmake_vars.insert(k.clone(), format!("{} {}", cmake_vars.get(k).unwrap(), v)); + } else { + cmake_vars.insert(k.clone(), v.clone()); + } + }); + cmake_vars + }), source_dir: profile.xrservice_path.clone(), build_dir: build_dir.clone(), }; diff --git a/src/builders/build_opencomposite.rs b/src/builders/build_opencomposite.rs index cca52e7..ce6e2da 100644 --- a/src/builders/build_opencomposite.rs +++ b/src/builders/build_opencomposite.rs @@ -36,12 +36,18 @@ pub fn get_build_opencomposite_jobs(profile: &Profile, clean_build: bool) -> Vec jobs.extend(git.get_pre_build_jobs(profile.pull_on_build)); let build_dir = profile.ovr_comp.path.join("build"); - let mut cmake_vars: HashMap = HashMap::new(); - cmake_vars.insert("CMAKE_EXPORT_COMPILE_COMMANDS".into(), "ON".into()); - cmake_vars.insert("CMAKE_BUILD_TYPE".into(), "RelWithDebInfo".into()); let cmake = Cmake { env: None, - vars: Some(cmake_vars), + vars: Some({ + let mut cmake_vars: HashMap = HashMap::new(); + for (k, v) in [ + ("CMAKE_EXPORT_COMPILE_COMMANDS", "ON"), + ("CMAKE_BUILD_TYPE", "RelWithDebInfo"), + ] { + cmake_vars.insert(k.to_string(), v.to_string()); + } + cmake_vars + }), source_dir: profile.ovr_comp.path.clone(), build_dir: build_dir.clone(), };