diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..dbf16ae --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +# Nim +nimcache/ +*.exe +*.dll +*.so +*.dylib + +# Build artifacts +*.o +*.a + +# OS +.DS_Store \ No newline at end of file diff --git a/Makefile b/Makefile index 6a1f318..497296b 100644 --- a/Makefile +++ b/Makefile @@ -20,35 +20,37 @@ help: @echo " help - Show this help message" # Build Nim library +build-nim: libchatsdk + libchatsdk: @echo "Building Nim library..." - cd src && nim c --app:lib --opt:speed --mm:arc --out:../bindings/c-bindings/libchatsdk.so chat_sdk.nim + cd chat_sdk && nim c --app:lib --opt:speed --mm:refc --out:../library/c-bindings/libchatsdk.so chat_sdk.nim # Build C bindings -build-c: build-nim +build-c: libchatsdk @echo "C bindings ready (built with Nim)" # Build Go bindings (just verify they compile) build-go: build-c @echo "Building Go bindings..." - cd bindings/go-bindings && go build . + cd library/go-bindings && go build . # Run Go example run-go-example: build-go @echo "Running Go example..." cd examples/go-app && \ - LD_LIBRARY_PATH=../../bindings/c-bindings:$$LD_LIBRARY_PATH \ + LD_LIBRARY_PATH=../../library/c-bindings:$$LD_LIBRARY_PATH \ go run main.go # Clean all build artifacts clean: @echo "Cleaning build artifacts..." - rm -f bindings/c-bindings/*.so bindings/c-bindings/*.a - rm -rf src/nimcache bindings/c-bindings/nimcache - cd bindings/go-bindings && go clean + rm -f library/c-bindings/*.so library/c-bindings/*.a + rm -rf chat_sdk/nimcache library/c-bindings/nimcache + cd library/go-bindings && go clean cd examples/go-app && go clean # Test the Nim library directly test-nim: @echo "Testing Nim library directly..." - cd src && nim r chat_sdk.nim \ No newline at end of file + cd chat_sdk && nim r chat_sdk.nim \ No newline at end of file diff --git a/bindings/c-bindings/libchatsdk.so b/bindings/c-bindings/libchatsdk.so deleted file mode 100755 index 13f3f8e..0000000 Binary files a/bindings/c-bindings/libchatsdk.so and /dev/null differ diff --git a/bindings/go-bindings/go.mod b/bindings/go-bindings/go.mod deleted file mode 100644 index 9c924cf..0000000 --- a/bindings/go-bindings/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module github.com/waku-org/nim-chat-sdk/bindings/go-bindings - -go 1.24 diff --git a/chat_sdk.nimble b/chat_sdk.nimble index 2eca593..a64bb4f 100644 --- a/chat_sdk.nimble +++ b/chat_sdk.nimble @@ -12,7 +12,7 @@ srcDir = "src" requires "nim >= 2.0.0" task buildSharedLib, "Build shared library for C bindings": - exec "nim c --app:lib --out:../bindings/c-bindings/libchatsdk.so src/chat_sdk.nim" + exec "nim c --app:lib --out:../library/c-bindings/libchatsdk.so chat_sdk/chat_sdk.nim" task buildStaticLib, "Build static library for C bindings": - exec "nim c --app:staticLib --out:../bindings/c-bindings/libchatsdk.a src/chat_sdk.nim" + exec "nim c --app:staticLib --out:../library/c-bindings/libchatsdk.a chat_sdk/chat_sdk.nim" diff --git a/src/chat_sdk.nim b/chat_sdk/chat_sdk.nim similarity index 100% rename from src/chat_sdk.nim rename to chat_sdk/chat_sdk.nim diff --git a/src/chat_sdk/submodule.nim b/chat_sdk/chat_sdk/submodule.nim similarity index 100% rename from src/chat_sdk/submodule.nim rename to chat_sdk/chat_sdk/submodule.nim diff --git a/examples/go-app/go.mod b/examples/go-app/go.mod index ed2205e..4c2e398 100644 --- a/examples/go-app/go.mod +++ b/examples/go-app/go.mod @@ -1,7 +1,7 @@ module go-app -replace github.com/waku-org/nim-chat-sdk/bindings/go-bindings => ../../bindings/go-bindings +replace github.com/waku-org/nim-chat-sdk/library/go-bindings => ../../library/go-bindings -require github.com/waku-org/nim-chat-sdk/bindings/go-bindings v0.0.0-00010101000000-000000000000 +require github.com/waku-org/nim-chat-sdk/library/go-bindings v0.0.0-00010101000000-000000000000 go 1.24 diff --git a/examples/go-app/main.go b/examples/go-app/main.go index 7517c46..79a2896 100644 --- a/examples/go-app/main.go +++ b/examples/go-app/main.go @@ -5,7 +5,7 @@ import ( "log" "sync" - chatsdk "github.com/waku-org/nim-chat-sdk/bindings/go-bindings" + chatsdk "github.com/waku-org/nim-chat-sdk/library/go-bindings" ) // SimpleStore implements the chatsdk.Store interface with in-memory storage diff --git a/bindings/c-bindings/Makefile b/library/c-bindings/Makefile similarity index 70% rename from bindings/c-bindings/Makefile rename to library/c-bindings/Makefile index d8de2fd..ddfcecf 100644 --- a/bindings/c-bindings/Makefile +++ b/library/c-bindings/Makefile @@ -1,6 +1,6 @@ CC = gcc CFLAGS = -Wall -Wextra -fPIC -NIMFLAGS = --app:lib --threads:on --gc:orc +NIMFLAGS = --app:lib # Directories SRC_DIR = ../../src @@ -20,10 +20,10 @@ shared: $(SHARED_LIB) static: $(STATIC_LIB) $(SHARED_LIB): $(SRC_DIR)/chat_sdk.nim $(HEADER) - cd $(SRC_DIR) && nim c $(NIMFLAGS) --out:../bindings/c-bindings/$(SHARED_LIB) chat_sdk.nim + cd $(SRC_DIR) && nim c $(NIMFLAGS) --out:../library/c-bindings/$(SHARED_LIB) chat_sdk.nim $(STATIC_LIB): $(SRC_DIR)/chat_sdk.nim $(HEADER) - cd $(SRC_DIR) && nim c $(NIMFLAGS) --app:staticLib --out:../bindings/c-bindings/$(STATIC_LIB) chat_sdk.nim + cd $(SRC_DIR) && nim c $(NIMFLAGS) --app:staticLib --out:../library/c-bindings/$(STATIC_LIB) chat_sdk.nim clean: rm -f $(SHARED_LIB) $(STATIC_LIB) *.o *.so *.a diff --git a/bindings/c-bindings/chatsdk.h b/library/c-bindings/chatsdk.h similarity index 100% rename from bindings/c-bindings/chatsdk.h rename to library/c-bindings/chatsdk.h diff --git a/bindings/go-bindings/callbacks.go b/library/go-bindings/callbacks.go similarity index 100% rename from bindings/go-bindings/callbacks.go rename to library/go-bindings/callbacks.go diff --git a/bindings/go-bindings/chatsdk.go b/library/go-bindings/chatsdk.go similarity index 100% rename from bindings/go-bindings/chatsdk.go rename to library/go-bindings/chatsdk.go diff --git a/library/go-bindings/go.mod b/library/go-bindings/go.mod new file mode 100644 index 0000000..fba1153 --- /dev/null +++ b/library/go-bindings/go.mod @@ -0,0 +1,3 @@ +module github.com/waku-org/nim-chat-sdk/library/go-bindings + +go 1.24