73 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env bash
 | |
| 
 | |
| CAPI_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
 | |
| 
 | |
| WORK_DIR=`mktemp -d`
 | |
| 
 | |
| 
 | |
| # check if tmp dir was created
 | |
| if [[ ! "$WORK_DIR" || ! -d "$WORK_DIR" ]]; then
 | |
|     echo "Could not create temp dir"
 | |
|     exit 1
 | |
| fi
 | |
| 
 | |
| header_file_backup="$CAPI_DIR/include/hyper.h.backup"
 | |
| 
 | |
| function cleanup {
 | |
|     #echo "$WORK_DIR"
 | |
|     rm -rf "$WORK_DIR"
 | |
|     rm "$header_file_backup"
 | |
| }
 | |
| 
 | |
| trap cleanup EXIT
 | |
| 
 | |
| mkdir "$WORK_DIR/src"
 | |
| 
 | |
| # Fake a library
 | |
| cat > "$WORK_DIR/src/lib.rs" << EOF
 | |
| #[path = "$CAPI_DIR/../src/ffi/mod.rs"]
 | |
| pub mod ffi;
 | |
| EOF
 | |
| 
 | |
| # And its Cargo.toml
 | |
| cat > "$WORK_DIR/Cargo.toml" << EOF
 | |
| [package]
 | |
| name = "hyper"
 | |
| version = "0.0.0"
 | |
| edition = "2018"
 | |
| publish = false
 | |
| 
 | |
| [dependencies]
 | |
| EOF
 | |
| 
 | |
| cp "$CAPI_DIR/include/hyper.h" "$header_file_backup"
 | |
| 
 | |
| #cargo metadata --no-default-features --features ffi --format-version 1 > "$WORK_DIR/metadata.json"
 | |
| 
 | |
| cd $WORK_DIR
 | |
| 
 | |
| # Expand just the ffi module
 | |
| cargo rustc -- -Z unstable-options --pretty=expanded > expanded.rs 2>/dev/null
 | |
| 
 | |
| # Replace the previous copy with the single expanded file
 | |
| rm -rf ./src
 | |
| mkdir src
 | |
| mv expanded.rs src/lib.rs
 | |
| 
 | |
| 
 | |
| # Bindgen!
 | |
| cbindgen\
 | |
|     -c "$CAPI_DIR/cbindgen.toml"\
 | |
|     --lockfile "$CAPI_DIR/../Cargo.lock"\
 | |
|     -o "$CAPI_DIR/include/hyper.h"\
 | |
|     $1
 | |
| 
 | |
| bindgen_exit_code=$?
 | |
| 
 | |
| if [[ "--verify" == "$1" && "$bindgen_exit_code" != 0 ]]; then
 | |
|     echo "diff generated (<) vs backup (>)"
 | |
|     diff "$CAPI_DIR/include/hyper.h" "$header_file_backup"
 | |
| fi
 | |
| 
 | |
| exit $bindgen_exit_code
 |