diff --git a/Makefile b/Makefile index 554461bd5..2e67cab95 100644 --- a/Makefile +++ b/Makefile @@ -150,7 +150,7 @@ endif dynamic-library: @echo "Building shared library..." rm -f ./build/lib/libgowaku.$(GOBIN_SHARED_LIB_EXT)* - $(GOBIN_SHARED_LIB_CFLAGS) $(GOBIN_SHARED_LIB_CGO_LDFLAGS) ${GOBIN} build \ + ${GOBIN} $(GOBIN_SHARED_LIB_CGO_LDFLAGS) build \ -buildmode=c-shared \ -tags="${BUILD_TAGS} gowaku_no_rln" \ -o ./build/lib/libgowaku.$(GOBIN_SHARED_LIB_EXT) \ diff --git a/default.nix b/default.nix index 00a01af8c..978c5da05 100644 --- a/default.nix +++ b/default.nix @@ -3,6 +3,7 @@ self ? ./., subPkgs ? "cmd/waku", ldflags ? [], + cgoLdflags ? "", output ? null, commit ? builtins.substring 0 7 (self.rev or "dirty"), version ? builtins.readFile ./VERSION, @@ -18,6 +19,8 @@ pkgs.buildGo120Module { "-X github.com/waku-org/go-waku/waku/v2/node.GitCommit=${commit}" "-X github.com/waku-org/go-waku/waku/v2/node.Version=${version}" ] ++ ldflags; + CGO_LDFLAGS = cgoLdflags; + GOGCCFLAGS = "-fPIC"; doCheck = false; # Otherwise library would be just called bin/c. diff --git a/flake.nix b/flake.nix index e4cd6b46f..f7ba701ec 100644 --- a/flake.nix +++ b/flake.nix @@ -34,7 +34,8 @@ inherit self; subPkgs = ["library/c"]; ldflags = ["-buildmode=c-shared"]; - output = "libgowaku.a"; + cgoLdflags = "-Wl,-Bsymbolic,-soname,libgowaku.so.0"; + output = "libgowaku.so"; }; }); @@ -47,7 +48,9 @@ inputsFrom = [ packages.${system}.node ]; buildInputs = with pkgs; [ golangci-lint ]; nativeBuildInputs = lib.optional stdenv.isDarwin [ - (pkgs.xcodeenv.composeXcodeWrapper { version = "14.2"; allowHigher = true; }) + (pkgs.xcodeenv.composeXcodeWrapper { + version = "14.2"; allowHigher = true; + }) ]; };