commit 93307d1bfe4c9700649c5a4c04620611be6c67e7
parent 3b6eb7ecca403116be527eec6b09034cef0853f5
Author: William Casarin <jb55@jb55.com>
Date: Thu, 11 Aug 2022 22:51:38 -0700
Merge branch 'lnsocket-dev'
Diffstat:
2 files changed, 30 insertions(+), 8 deletions(-)
diff --git a/Makefile b/Makefile
@@ -211,7 +211,7 @@ clean: fake
rm -rf $(BINS) config.h $(OBJS) $(ARM64_OBJS) $(X86_64_OBJS) $(WASM_OBJS) target
distclean: clean
- rm -rf $(ARS) deps target
+ rm -rf $(ARS) liblnsocket.a deps target
.PHONY: fake
diff --git a/build.rs b/build.rs
@@ -2,6 +2,7 @@ extern crate bindgen;
use std::env;
use std::path::PathBuf;
+use std::process::Command;
#[derive(Debug)]
struct IgnoreMacros(String);
@@ -17,14 +18,36 @@ impl bindgen::callbacks::ParseCallbacks for IgnoreMacros {
}
fn main() {
+ // fetch deps
+ std::process::Command::new("git")
+ .args([
+ "submodule",
+ "update",
+ "--init",
+ "--depth 1",
+ "--recommend-shallow",
+ ])
+ .output()
+ .expect("Failed to fetch git submodules!");
+
+ // Build the library
+ Command::new("make").status()
+ .expect("Failed to build library");
+
+ // Copy library
+ let lib_path = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap());
+ let input_path = lib_path.join("lnsocket.a");
+ let output_path = lib_path.join("liblnsocket.a");
+ let res = std::fs::copy(input_path, output_path);
+ println!("cargo:warning={:#?}",res);
+
// Tell cargo to look for shared libraries in the specified directory
- let lib_path = PathBuf::from(env::current_dir().unwrap());
println!("cargo:rustc-link-search={}", lib_path.display());
// Tell cargo to tell rustc to link the shared library.
- println!("cargo:rustc-link-lib=lnsocket");
- println!("cargo:rustc-link-lib=secp256k1");
- println!("cargo:rustc-link-lib=sodium");
+ println!("cargo:rustc-link-lib=static=lnsocket");
+ println!("cargo:rustc-link-lib=static=secp256k1");
+ println!("cargo:rustc-link-lib=static=sodium");
let ignored_macros = IgnoreMacros("IPPORT_RESERVED".to_string());
@@ -36,9 +59,8 @@ fn main() {
// bindings for.
.header("lnsocket.h")
.header("lnsocket_internal.h")
- .clang_arg("-Ideps/secp256k1/include")
- .clang_arg("-Ideps/libsodium/src/libsodium/include")
- .header("deps/secp256k1/include/secp256k1.h")
+ .clang_arg(format!("-I{}", lib_path.join("deps/secp256k1/include").display()))
+ .clang_arg(format!("-I{}", lib_path.join("deps/libsodium/src/libsodium/include").display()))
.parse_callbacks(Box::new(ignored_macros))
.trust_clang_mangling(false)
// Finish the builder and generate the bindings.