From 49d5de73a3a0de12e66b5be022d3363e1aed0c05 Mon Sep 17 00:00:00 2001 From: vaaaaanquish <6syun9@gmail.com> Date: Sat, 9 Jan 2021 22:28:01 +0900 Subject: [PATCH] packaging lightgbm-sys --- lightgbm-sys/build.rs | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/lightgbm-sys/build.rs b/lightgbm-sys/build.rs index 96178d4..9bb5f2d 100644 --- a/lightgbm-sys/build.rs +++ b/lightgbm-sys/build.rs @@ -2,20 +2,33 @@ extern crate bindgen; extern crate cmake; use cmake::Config; +use std::process::Command; use std::env; use std::path::{Path, PathBuf}; fn main() { let out_dir = env::var("OUT_DIR").unwrap(); - let lgbm_root = Path::new(&out_dir); + let lgbm_root = Path::new(&out_dir).join("lightgbm"); + + // copy source code + if !lgbm_root.exists() { + Command::new("cp") + .args(&["-r", "lightgbm", lgbm_root.to_str().unwrap()]) + .status() + .unwrap_or_else(|e| { + panic!("Failed to copy ./lightgbm to {}: {}", lgbm_root.display(), e); + }); + } // CMake - let dst = Config::new("lightgbm") + let dst = Config::new(&lgbm_root) .profile("Release") .uses_cxx11() .define("BUILD_STATIC_LIB", "ON") .build(); + + // bindgen build let bindings = bindgen::Builder::default() .header("wrapper.h") .clang_args(&["-x","c++", "-std=c++11"]) @@ -27,7 +40,7 @@ fn main() { .write_to_file(out_path.join("bindings.rs")) .expect("Couldn't write bindings."); - println!("cargo:rustc-link-search={}", lgbm_root.join("lib").display()); + println!("cargo:rustc-link-search={}", out_path.join("lib").display()); println!("cargo:rustc-link-lib=dylib=gomp"); println!("cargo:rustc-link-lib=stdc++"); println!("cargo:rustc-link-search=native={}", dst.display());