Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

169 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cronet-go

Reference

Go bindings for naiveproxy.

Supported Platforms

Target OS CPU
android/386 android x86
android/amd64 android x64
android/arm android arm
android/arm64 android arm64
darwin/amd64 mac x64
darwin/arm64 mac arm64
ios/arm64 ios arm64
ios/amd64 ios amd64
linux/386 linux x86
linux/amd64 linux x64
linux/arm linux arm
linux/arm64 linux arm64
linux/loong64 linux loong64
windows/amd64 win x64
windows/arm64 win arm64

System Requirements

Platform Minimum Version
macOS 12.0 (Monterey)
iOS/tvOS 15.0
Windows 10
Android 5.0 (API 21)
Linux (glibc) glibc 2.31 (loong64: 2.36)
Linux (musl) any (loong64: 1.2.5)

Downstream Build Requirements

Platform Requirements Go Build Flags
Linux (glibc) Chromium toolchain -
Linux (musl) Chromium toolchain -tags with_musl
macOS / iOS macOS Xcode -
iOS simulator/ tvOS / tvOS simulator macOS Xcode + SagerNet/gomobile -
Windows - CGO_ENABLED=0 -tags with_purego
Android Android NDK -

Linux Build instructions

git clone --recursive --depth=1 https://github.com/sagernet/cronet-go.git
cd cronet-go
go run ./cmd/build-naive --target=linux/amd64 download-toolchain
#go run ./cmd/build-naive --target=linux/amd64 --libc=musl download-toolchain

# Outputs CC, CXX, and CGO_LDFLAGS=-fuse-ld=lld
export $(go run ./cmd/build-naive --target=linux/amd64 env)
#export $(go run ./cmd/build-naive --target=linux/amd64 --libc=musl env)

cd /path/to/your/project
go build
# go build -tags with_musl

Directories to cache

- cronet-go/naiveproxy/src/third_party/llvm-build/
- cronet-go/naiveproxy/src/gn/out/
- cronet-go/naiveproxy/src/chrome/build/pgo_profiles/
- cronet-go/naiveproxy/src/out/sysroot-build/

Windows / purego Build Instructions

For Windows or pure Go builds (no CGO), you need to distribute the dynamic library alongside your binary.

Download Library

Download libcronet.dll (Windows) or libcronet.so (Linux) from GitHub Releases.

Build with purego

# Windows (purego is required)
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -tags with_purego -o myapp.exe

# Linux with purego (optional, for dynamic linking)
CGO_ENABLED=0 go build -tags with_purego -o myapp

Distribution

Place the library file in the same directory as your executable:

  • Windows: libcronet.dll
  • Linux: libcronet.so

For Downstream Developers

The go branch holds the libraries. The same commit supplies the github.com/sagernet/cronet-go/lib/* modules. Pin this commit. Read the library file from it:

git init cronet-go-lib
git -C cronet-go-lib remote add origin https://github.com/sagernet/cronet-go.git
git -C cronet-go-lib sparse-checkout set --no-cone /lib/windows_amd64/libcronet.dll
git -C cronet-go-lib fetch --depth=1 --filter=blob:none origin "$CRONET_GO_VERSION"
git -C cronet-go-lib checkout FETCH_HEAD

About

Go bindings for naiveproxy.

Resources

Stars

43 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages