This commit is contained in:
parent
c069c1966b
commit
1319415543
12
.github/workflows/rust.yml
vendored
12
.github/workflows/rust.yml
vendored
|
@ -25,10 +25,20 @@ jobs:
|
||||||
- name: Install rust toolchain
|
- name: Install rust toolchain
|
||||||
run: sudo apt-get install -qy cargo rust-clippy
|
run: sudo apt-get install -qy cargo rust-clippy
|
||||||
- name: install lzma
|
- name: install lzma
|
||||||
run: sudo apt-get update && sudo apt-get install -y liblzma-dev
|
run: sudo apt-get install -qy liblzma-dev
|
||||||
|
- name: install gcc
|
||||||
|
run: sudo apt-get install -qy gcc gnumake
|
||||||
|
|
||||||
- name: Run Clippy
|
- name: Run Clippy
|
||||||
run: cargo clippy
|
run: cargo clippy
|
||||||
|
|
||||||
|
- name: generate bindings
|
||||||
|
run: ./generate-binding.sh
|
||||||
|
- name: check that generated files did not change
|
||||||
|
run: output=$(git status --porcelain) && [ -z "$output" ]
|
||||||
|
|
||||||
- name: build
|
- name: build
|
||||||
run: cargo build
|
run: cargo build
|
||||||
|
|
||||||
|
- name: build example
|
||||||
|
run: cd example && make
|
||||||
|
|
30
example/Makefile
Normal file
30
example/Makefile
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
CC := gcc
|
||||||
|
|
||||||
|
THIS_DIR := $(dir $(realpath $(lastword $(MAKEFILE_LIST))))
|
||||||
|
REPO_ROOT := $(THIS_DIR)/..
|
||||||
|
|
||||||
|
build: out/example
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -r out || true
|
||||||
|
rm include/servicepoint.h || true
|
||||||
|
cargo clean
|
||||||
|
|
||||||
|
run: out/example
|
||||||
|
out/example
|
||||||
|
|
||||||
|
PHONY: build clean dependencies run
|
||||||
|
|
||||||
|
out/example: dependencies main.c
|
||||||
|
mkdir -p out || true
|
||||||
|
${CC} main.c \
|
||||||
|
-I $(REPO_ROOT)/include \
|
||||||
|
-L $(REPO_ROOT)/target/release \
|
||||||
|
-Wl,-Bstatic -lservicepoint_binding_c \
|
||||||
|
-Wl,-Bdynamic -llzma \
|
||||||
|
-o out/example
|
||||||
|
|
||||||
|
dependencies: FORCE
|
||||||
|
cargo build --manifest-path=$(REPO_ROOT)/Cargo.toml --release
|
||||||
|
|
||||||
|
FORCE: ;
|
|
@ -1,14 +0,0 @@
|
||||||
[package]
|
|
||||||
name = "lang_c"
|
|
||||||
version = "0.1.0"
|
|
||||||
edition = "2021"
|
|
||||||
publish = false
|
|
||||||
|
|
||||||
[lib]
|
|
||||||
test = false
|
|
||||||
|
|
||||||
[build-dependencies]
|
|
||||||
cc = "1.2"
|
|
||||||
|
|
||||||
[dependencies]
|
|
||||||
servicepoint_binding_c = { path = "../.." }
|
|
|
@ -1,34 +0,0 @@
|
||||||
CC := gcc
|
|
||||||
|
|
||||||
THIS_DIR := $(dir $(realpath $(lastword $(MAKEFILE_LIST))))
|
|
||||||
REPO_ROOT := $(THIS_DIR)/../../../..
|
|
||||||
|
|
||||||
build: out/lang_c
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -r out || true
|
|
||||||
rm include/servicepoint.h || true
|
|
||||||
cargo clean
|
|
||||||
|
|
||||||
run: out/lang_c
|
|
||||||
out/lang_c
|
|
||||||
|
|
||||||
PHONY: build clean dependencies run
|
|
||||||
|
|
||||||
out/lang_c: dependencies src/main.c
|
|
||||||
mkdir -p out || true
|
|
||||||
${CC} src/main.c \
|
|
||||||
-I include \
|
|
||||||
-L $(REPO_ROOT)/target/release \
|
|
||||||
-Wl,-Bstatic -lservicepoint_binding_c \
|
|
||||||
-Wl,-Bdynamic -llzma \
|
|
||||||
-o out/lang_c
|
|
||||||
|
|
||||||
dependencies: FORCE
|
|
||||||
mkdir -p include || true
|
|
||||||
# generate servicepoint header and binary to link against
|
|
||||||
SERVICEPOINT_HEADER_OUT=$(THIS_DIR)/include cargo build \
|
|
||||||
--manifest-path=$(REPO_ROOT)/crates/servicepoint_binding_c/Cargo.toml \
|
|
||||||
--release
|
|
||||||
|
|
||||||
FORCE: ;
|
|
|
@ -1,17 +0,0 @@
|
||||||
const SP_INCLUDE: &str = "DEP_SERVICEPOINT_INCLUDE";
|
|
||||||
|
|
||||||
fn main() {
|
|
||||||
println!("cargo::rerun-if-changed=src/main.c");
|
|
||||||
println!("cargo::rerun-if-changed=build.rs");
|
|
||||||
println!("cargo::rerun-if-env-changed={SP_INCLUDE}");
|
|
||||||
|
|
||||||
let sp_include =
|
|
||||||
std::env::var_os(SP_INCLUDE).unwrap().into_string().unwrap();
|
|
||||||
|
|
||||||
// this builds a lib, this is only to check that the example compiles
|
|
||||||
let mut cc = cc::Build::new();
|
|
||||||
cc.file("src/main.c");
|
|
||||||
cc.include(&sp_include);
|
|
||||||
cc.opt_level(2);
|
|
||||||
cc.compile("lang_c");
|
|
||||||
}
|
|
|
@ -1 +0,0 @@
|
||||||
|
|
6
generate_binding.sh
Normal file
6
generate_binding.sh
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
SCRIPT_PATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
|
||||||
|
|
||||||
|
SERVICEPOINT_HEADER_OUT="$SCRIPT_PATH/include" cargo build --release
|
Loading…
Reference in a new issue