ae6c80f0cd
* fixed rebase conflict with cargo.lock * shared cleanup * moved returncode to shared * first pass at Go binding structure * minor cleanup * working on custom type udl * trying to get LDFLAG script working * commit before changing alias -> proper types * converted CCallbacks from aliases to Struct * cleanup comments * temp * push to share * cleanup * trait Lift not implemented for *const i8 issue * test of refactor: * move c-specific var casting out of shared/ into cpp/ * error returning in go/ over ffi boundary with uniffi * _internal functions ffi wrapper agnostic * moved lang-specific type conversions to cpp / go bindings and out of shared * got send_message working in c/c++ & go * split out c/c++-specific types to mod * cont. with making _internal fns lang agnostic * working on final fn for C and shared (listening for incoming messages) * fixed return err on listen_for_incoming * got full example run running again after shared/ refactor * removed unused struct * code comments * got first runthrough of go example code * script cleanup * clean up readme instructions * clippy * removed unused imports * rustfmt * Update sdk/ffi/go/README.md with link to example file Co-authored-by: Mark Sinclair <14054343+mmsinclair@users.noreply.github.com> * updated readme with extra build and usage info * renamed binding outer directory for nicer path * moved example file from ffi/main.go -> ./example.go * updated README with new example file name --------- Co-authored-by: mfahampshire <mfahampshire@pm.me> Co-authored-by: Mark Sinclair <14054343+mmsinclair@users.noreply.github.com>
54 lines
1.0 KiB
Bash
Executable File
54 lines
1.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
PROJECT_NAME="go"
|
|
|
|
set -eu
|
|
MODE="--release"
|
|
|
|
GO_DIR="./go-nym"
|
|
UDL_PATH="./src/bindings.udl"
|
|
|
|
build_artifacts() {
|
|
# build rust
|
|
cargo build $MODE
|
|
# build go bindings
|
|
printf "building go bindings \n"
|
|
uniffi-bindgen-go $UDL_PATH --out-dir $GO_DIR
|
|
printf "bindings built \n\n"
|
|
|
|
# something not right with these - having to add it manually to bindings.go for the moment
|
|
# pushd $GO_DIR/bindings
|
|
# echo $(pwd)
|
|
# LD_LIBRARY_PATH="${LD_LIBRARY_PATH:-}:../../target/release" \
|
|
# CGO_LDFLAGS="-L../target/release -lnym_go_ffi -lm -ldl" \
|
|
# CGO_ENABLED=1 \
|
|
# go run ../main.go
|
|
}
|
|
|
|
clean_artifacts() {
|
|
# clean up existing things
|
|
rm -rf $GO_DIR
|
|
cargo clean
|
|
}
|
|
|
|
|
|
if [ $(pwd | awk -F/ '{print $NF}') != ${PROJECT_NAME} ]
|
|
then
|
|
printf "please run from root dir of project"
|
|
exit 1
|
|
fi
|
|
|
|
if [ $# -eq 0 ];
|
|
then
|
|
build_artifacts;
|
|
else
|
|
arg=$1
|
|
if [ "$arg" == "clean" ]; then
|
|
clean_artifacts;
|
|
build_artifacts;
|
|
else
|
|
printf "unknown optional argument - the only available optional argument is 'clean'"
|
|
exit 1
|
|
fi
|
|
fi
|