Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: Build library and test programs
on: [pull_request, push]

env:
SOLANA_ZIG_VERSION: v1.43.0
SOLANA_ZIG_VERSION: v1.47.0
SOLANA_ZIG_DIR: solana-zig

jobs:
Expand Down Expand Up @@ -60,7 +60,14 @@ jobs:
- name: Install Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.78.0
toolchain: 1.84.1

# took the workaround from https://github.com/sfackler/rust-openssl/issues/2149
- name: Set Perl environment variables
if: runner.os == 'Windows'
run: |
echo "PERL=$((where.exe perl)[0])" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
echo "OPENSSL_SRC_PERL=$((where.exe perl)[0])" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8

- name: Install build deps
shell: bash
Expand Down
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,23 +37,23 @@ You can run the convenience script in this repo to download the compiler to
1. Add this package to your project:

```console
zig fetch --save https://github.com/joncinque/solana-program-sdk-zig/archive/refs/tags/v0.15.1.tar.gz
zig fetch --save https://github.com/joncinque/solana-program-sdk-zig/archive/refs/tags/v0.16.0.tar.gz
```

2. (Optional) if you want to generate a keypair during building, you'll also
need to install base58 and clap:

```console
zig fetch --save https://github.com/joncinque/base58-zig/archive/refs/tags/v0.13.3.tar.gz
zig fetch --save https://github.com/Hejsil/zig-clap/archive/refs/tags/0.9.1.tar.gz
zig fetch --save https://github.com/joncinque/base58-zig/archive/refs/tags/v0.14.0.tar.gz
zig fetch --save https://github.com/Hejsil/zig-clap/archive/refs/tags/0.10.0.tar.gz
```

3. In your build.zig, add the modules that you want one by one, or use the
helpers in `build.zig`:

```zig
const std = @import("std");
const solana = @import("solana-program-sdk");
const solana = @import("solana_program_sdk");
const base58 = @import("base58");

pub fn build(b: *std.build.Builder) !void {
Expand Down Expand Up @@ -88,7 +88,7 @@ pub fn build(b: *std.build.Builder) !void {
const lib_unit_tests = b.addTest(.{
.root_source_file = b.path("src/main.zig"),
});
lib_unit_tests.root_module.addImport("solana-program-sdk", solana_mod);
lib_unit_tests.root_module.addImport("solana_program_sdk", solana_mod);
const run_unit_tests = b.addRunArtifact(lib_unit_tests);
test_step.dependOn(&run_unit_tests.step);
}
Expand All @@ -97,7 +97,7 @@ pub fn build(b: *std.build.Builder) !void {
4. Setup `src/main.zig`:

```zig
const solana = @import("solana-program-sdk");
const solana = @import("solana_program_sdk");

export fn entrypoint(_: [*]u8) callconv(.C) u64 {
solana.print("Hello world!", .{});
Expand Down
18 changes: 9 additions & 9 deletions build.zig
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ pub fn build(b: *std.Build) void {
const optimize = b.standardOptimizeOption(.{});

// Export self as a module
const solana_mod = b.addModule("solana-program-sdk", .{ .root_source_file = b.path("src/root.zig") });
const solana_mod = b.addModule("solana_program_sdk", .{ .root_source_file = b.path("src/root.zig") });

const lib = b.addStaticLibrary(.{
.name = "solana-program-sdk",
.name = "solana_program_sdk",
.root_source_file = b.path("src/root.zig"),
.target = target,
.optimize = optimize,
Expand Down Expand Up @@ -41,20 +41,19 @@ pub fn build(b: *std.Build) void {
// General helper function to do all the tricky build steps, by adding the
// solana-sdk module, adding the BPF link script
pub fn buildProgram(b: *std.Build, program: *std.Build.Step.Compile, target: std.Build.ResolvedTarget, optimize: std.builtin.OptimizeMode) *std.Build.Module {
const solana_dep = b.dependency("solana-program-sdk", .{
const solana_dep = b.dependency("solana_program_sdk", .{
.target = target,
.optimize = optimize,
});
const solana_mod = solana_dep.module("solana-program-sdk");
program.root_module.addImport("solana-program-sdk", solana_mod);
const solana_mod = solana_dep.module("solana_program_sdk");
program.root_module.addImport("solana_program_sdk", solana_mod);
linkSolanaProgram(b, program);
return solana_mod;
}

pub const sbf_target: std.Target.Query = .{
.cpu_arch = .sbf,
.os_tag = .solana,
.cpu_features_add = std.Target.sbf.featureSet(&.{.solana}),
};

pub const sbfv2_target: std.Target.Query = .{
Expand All @@ -73,7 +72,8 @@ pub const bpf_target: std.Target.Query = .{
};

pub fn linkSolanaProgram(b: *std.Build, lib: *std.Build.Step.Compile) void {
const linker_script = b.addWriteFile("bpf.ld",
const write_file_step = b.addWriteFiles();
const linker_script = write_file_step.add("bpf.ld",
\\PHDRS
\\{
\\text PT_LOAD ;
Expand All @@ -100,9 +100,9 @@ pub fn linkSolanaProgram(b: *std.Build, lib: *std.Build.Step.Compile) void {
\\}
);

lib.step.dependOn(&linker_script.step);
lib.step.dependOn(&write_file_step.step);

lib.setLinkerScript(linker_script.files.items[0].getPath());
lib.setLinkerScript(linker_script);
lib.stack_size = 4096;
lib.link_z_notext = true;
lib.root_module.pic = true;
Expand Down
11 changes: 6 additions & 5 deletions build.zig.zon
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
.{
.name = "solana-program-sdk",
.version = "0.15.1",
.minimum_zig_version = "0.13.0",
.fingerprint = 0xdc47aff950fd68c0,
.name = .solana_program_sdk,
.version = "0.16.0",
.minimum_zig_version = "0.14.0",

// This field is optional.
// Each dependency must either provide a `url` and `hash`, or a `path`.
Expand All @@ -10,8 +11,8 @@
// internet connectivity.
.dependencies = .{
.base58 = .{
.url = "https://github.com/joncinque/base58-zig/archive/refs/tags/v0.13.3.tar.gz",
.hash = "1220fd067bf167b9062cc29ccf715ff97643c2d3f8958beea863b6036876bb71bcb8",
.url = "https://github.com/joncinque/base58-zig/archive/refs/tags/v0.14.0.tar.gz",
.hash = "base58-0.14.0-6-CZm81qAAD4JCRHgewcNh8FS0pmnk7-OmwUkosaFKvg",
},
},
.paths = .{
Expand Down
2 changes: 1 addition & 1 deletion install-solana-zig.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
if [[ -n $SOLANA_ZIG_VERSION ]]; then
solana_zig_version="$SOLANA_ZIG_VERSION"
else
solana_zig_version="v1.43.0"
solana_zig_version="v1.47.0"
fi
solana_zig_release_url="https://github.com/joncinque/solana-zig-bootstrap/releases/download/solana-$solana_zig_version"

Expand Down
Loading