This commit is contained in:
		
							parent
							
								
									c069c1966b
								
							
						
					
					
						commit
						77a8a242bf
					
				
					 9 changed files with 47 additions and 67 deletions
				
			
		
							
								
								
									
										12
									
								
								.github/workflows/rust.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								.github/workflows/rust.yml
									
										
									
									
										vendored
									
									
								
							|  | @ -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 | ||||
|  |  | |||
							
								
								
									
										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…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Vinzenz Schroeter
						Vinzenz Schroeter