diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index b3749c3..9089694 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -25,10 +25,20 @@ jobs: - name: Install rust toolchain run: sudo apt-get install -qy cargo rust-clippy - 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 make - name: Run 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 run: cargo build + + - name: build example + run: cd example && make diff --git a/example/Makefile b/example/Makefile new file mode 100644 index 0000000..abdd69f --- /dev/null +++ b/example/Makefile @@ -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: ; diff --git a/examples/lang_c/src/main.c b/example/main.c similarity index 100% rename from examples/lang_c/src/main.c rename to example/main.c diff --git a/examples/lang_c/Cargo.toml b/examples/lang_c/Cargo.toml deleted file mode 100644 index 2231f3c..0000000 --- a/examples/lang_c/Cargo.toml +++ /dev/null @@ -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 = "../.." } diff --git a/examples/lang_c/Makefile b/examples/lang_c/Makefile deleted file mode 100644 index 6b15722..0000000 --- a/examples/lang_c/Makefile +++ /dev/null @@ -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: ; diff --git a/examples/lang_c/build.rs b/examples/lang_c/build.rs deleted file mode 100644 index 4f92e1d..0000000 --- a/examples/lang_c/build.rs +++ /dev/null @@ -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"); -} diff --git a/examples/lang_c/src/lib.rs b/examples/lang_c/src/lib.rs deleted file mode 100644 index 8b13789..0000000 --- a/examples/lang_c/src/lib.rs +++ /dev/null @@ -1 +0,0 @@ - diff --git a/generate-binding.sh b/generate-binding.sh new file mode 100644 index 0000000..45301bd --- /dev/null +++ b/generate-binding.sh @@ -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 diff --git a/examples/lang_c/include/servicepoint.h b/include/servicepoint.h similarity index 100% rename from examples/lang_c/include/servicepoint.h rename to include/servicepoint.h