mirror of https://github.com/waku-org/nwaku.git
Improve libwaku and C wrappers (#613)
- Move stuff to Makefile - Move libwaku to root - Make examples compile for C and Go - Update README
This commit is contained in:
parent
a3234ac8a2
commit
be717ce5f3
|
@ -34,5 +34,3 @@ rln
|
|||
package-lock.json
|
||||
node_modules/
|
||||
/.update.timestamp
|
||||
|
||||
libwaku
|
||||
|
|
18
Makefile
18
Makefile
|
@ -29,6 +29,8 @@ DOCKER_IMAGE_NIM_PARAMS ?= -d:chronicles_colors:none -d:insecure
|
|||
bridge \
|
||||
test \
|
||||
clean \
|
||||
libwaku.so \
|
||||
wrappers \
|
||||
libbacktrace
|
||||
|
||||
ifeq ($(NIM_PARAMS),)
|
||||
|
@ -128,7 +130,7 @@ rlnlib:
|
|||
ifeq ($(RLN), true)
|
||||
cargo build --manifest-path vendor/rln/Cargo.toml
|
||||
endif
|
||||
|
||||
|
||||
test2: | build deps installganache
|
||||
echo -e $(BUILD_MSG) "build/$@" && \
|
||||
$(ENV_SCRIPT) nim test2 $(NIM_PARAMS) waku.nims
|
||||
|
@ -185,3 +187,17 @@ ifneq ($(USE_LIBBACKTRACE), 0)
|
|||
endif
|
||||
|
||||
endif # "variables.mk" was not included
|
||||
|
||||
libwaku.so: | build deps
|
||||
echo -e $(BUILD_MSG) "build/$@" && \
|
||||
$(ENV_SCRIPT) nim c --app:lib --noMain --nimcache:nimcache/libwaku $(NIM_PARAMS) -o:build/$@.0 wrappers/libwaku.nim && \
|
||||
rm -f build/$@ && \
|
||||
ln -s $@.0 build/$@
|
||||
|
||||
# libraries for dynamic linking of non-Nim objects
|
||||
EXTRA_LIBS_DYNAMIC := -L"$(CURDIR)/build" -lwaku -lm
|
||||
wrappers: | build deps libwaku.so
|
||||
echo -e $(BUILD_MSG) "build/C_wrapper_example" && \
|
||||
$(CC) wrappers/wrapper_example.c -Wl,-rpath,'$$ORIGIN' $(EXTRA_LIBS_DYNAMIC) -g -o build/C_wrapper_example
|
||||
echo -e $(BUILD_MSG) "build/go_wrapper_example" && \
|
||||
go build -ldflags "-linkmode external -extldflags '$(EXTRA_LIBS_DYNAMIC)'" -o build/go_wrapper_example wrappers/wrapper_example.go #wrappers/cfuncs.go
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
#!/usr/bin/env sh
|
||||
|
||||
nim c --skipParentCfg libwaku.nim
|
||||
gcc libwaku.c ./libwaku.a -lm -g -o libwaku
|
|
@ -1,5 +0,0 @@
|
|||
-app:staticlib
|
||||
o:"libwaku.a"
|
||||
noMain
|
||||
header
|
||||
-d:"chronicles_sinks=textlines"
|
|
@ -4,9 +4,6 @@ Exposes a C API that can be used by other environments other than C.
|
|||
|
||||
## Running
|
||||
|
||||
Make sure you run `$PROJECTDIR/env.sh bash` first. Then:
|
||||
|
||||
```
|
||||
./build.sh
|
||||
./libwaku
|
||||
make wrappers
|
||||
```
|
|
@ -1,3 +1,6 @@
|
|||
#ifndef __LIBWAKU_H__
|
||||
#define __LIBWAKU_H__
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
|
||||
|
@ -7,3 +10,5 @@ void NimMain();
|
|||
char* info(const char* wakuNode);
|
||||
|
||||
void echo();
|
||||
|
||||
#endif //__LIBWAKU_H__
|
|
@ -10,7 +10,7 @@
|
|||
# TODO Init a node
|
||||
|
||||
# proc info*(node: WakuNode): WakuInfo =
|
||||
proc info(foo: cstring): cstring {.exportc.} =
|
||||
proc info(foo: cstring): cstring {.exportc, dynlib.} =
|
||||
echo "info about node"
|
||||
echo foo
|
||||
return foo
|
||||
|
@ -34,3 +34,5 @@ proc echo() {.exportc.} =
|
|||
# await node.start()
|
||||
#
|
||||
#main()
|
||||
|
||||
# When main done stuff
|
|
@ -3,6 +3,8 @@
|
|||
|
||||
#include "libwaku.h"
|
||||
|
||||
void NimMain();
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
char* string;
|
||||
NimMain();
|
|
@ -0,0 +1,35 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"runtime"
|
||||
)
|
||||
|
||||
/*
|
||||
#include <stdlib.h>
|
||||
|
||||
// Passing "-lwaku" to the Go linker through "-extldflags" is not enough. We need it in here, for some reason.
|
||||
#cgo LDFLAGS: -Wl,-rpath,'$ORIGIN' -L${SRCDIR}/../build -lwaku
|
||||
#include "libwaku.h"
|
||||
|
||||
*/
|
||||
import "C"
|
||||
|
||||
// Arrange that main.main runs on main thread.
|
||||
func init() {
|
||||
runtime.LockOSThread()
|
||||
}
|
||||
|
||||
func Start() {
|
||||
C.NimMain()
|
||||
|
||||
messageC := C.CString("Calling info")
|
||||
fmt.Println("Start nim-waku")
|
||||
var str = C.info(messageC)
|
||||
fmt.Println("Info", str)
|
||||
}
|
||||
|
||||
func main() {
|
||||
fmt.Println("Hi main")
|
||||
Start()
|
||||
}
|
Loading…
Reference in New Issue