Skip to content

Commit d49a178

Browse files
authored
Update C Makefile to support SBPFv1 and SBPFv2 (anza-xyz#5100)
* Fix Makefile for C programs * Update changelog * Update command description
1 parent d5ce948 commit d49a178

File tree

2 files changed

+37
-10
lines changed

2 files changed

+37
-10
lines changed

CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ Release channels have their own copy of this changelog:
2424

2525
#### Changes
2626
* `cargo-build-sbf` and `cargo-test-sbf` now accept `v0`, `v1`, `v2` and `v3` for the `--arch` argument. These parameters specify the SBPF version to build for.
27+
* SBFPv1 and SBPFv2 are also available for Anza's C compiler toolchain.
28+
* SBPFv3 will be only available for the Rust toolchain. The C toolchain will no longer be supported for SBPFv3 onwards.
2729

2830
## 2.2.0
2931

platform-tools-sdk/sbf/c/sbf.mk

+35-10
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,25 @@ INC_DIRS ?=
1212
SRC_DIR ?= ./src
1313
TEST_PREFIX ?= test_
1414
OUT_DIR ?= ./out
15+
SBPF_CPU ?= v0
1516
OS := $(shell uname)
1617

1718
LLVM_DIR = $(LOCAL_PATH)../dependencies/platform-tools/llvm
18-
LLVM_SYSTEM_INC_DIRS := $(LLVM_DIR)/lib/clang/17/include
19-
COMPILER_RT_DIR = $(LOCAL_PATH)../dependencies/platform-tools/rust/lib/rustlib/sbf-solana-solana/lib
20-
STD_INC_DIRS := $(LLVM_DIR)/include
21-
STD_LIB_DIRS := $(LLVM_DIR)/lib
19+
LLVM_SYSTEM_INC_DIRS := $(LLVM_DIR)/lib/clang/18/include
20+
21+
ifeq "$(SBPF_CPU)" "v1"
22+
TARGET_NAME := sbpfv1
23+
else ifeq "$(SBPF_CPU)" "v2"
24+
TARGET_NAME := sbpfv2
25+
else
26+
TARGET_NAME := sbpf
27+
endif
28+
29+
LLVM_TARGET := $(TARGET_NAME)-solana-solana
2230

31+
COMPILER_RT_DIR = $(LOCAL_PATH)../dependencies/platform-tools/rust/lib/rustlib/$(LLVM_TARGET)/lib
32+
STD_INC_DIRS := $(LLVM_DIR)/$(TARGET_NAME)/include
33+
STD_LIB_DIRS := $(LLVM_DIR)/lib/$(TARGET_NAME)
2334
ifdef LLVM_DIR
2435
CC := $(LLVM_DIR)/bin/clang
2536
CXX := $(LLVM_DIR)/bin/clang++
@@ -65,6 +76,24 @@ SBF_CXX_FLAGS := \
6576
-fno-asynchronous-unwind-tables \
6677
-fno-unwind-tables
6778

79+
ifeq "$(SBPF_CPU)" "v1"
80+
SBF_C_FLAGS := \
81+
$(SBF_C_FLAGS) \
82+
-mcpu=v1
83+
84+
SBF_CXX_FLAGS := \
85+
$(SBF_CXX_FLAGS) \
86+
-mcpu=v1
87+
else ifeq "$(SBPF_CPU)" "v2"
88+
SBF_C_FLAGS := \
89+
$(SBF_C_FLAGS) \
90+
-mcpu=v2
91+
92+
SBF_CXX_FLAGS := \
93+
$(SBF_CXX_FLAGS) \
94+
-mcpu=v2
95+
endif
96+
6897
SBF_LLD_FLAGS := \
6998
-z notext \
7099
-shared \
@@ -74,12 +103,6 @@ SBF_LLD_FLAGS := \
74103
-L $(STD_LIB_DIRS) \
75104
-lc \
76105

77-
ifeq ($(SOL_SBPFV3),1)
78-
SBF_LLD_FLAGS := \
79-
$(SBF_LLD_FLAGS) \
80-
--pack-dyn-relocs=relr
81-
endif
82-
83106
OBJ_DUMP_FLAGS := \
84107
--source \
85108
--disassemble \
@@ -139,6 +162,8 @@ help:
139162
@echo ' OUT_DIR=$(OUT_DIR)'
140163
@echo ' - Location of LLVM:'
141164
@echo ' LLVM_DIR=$(LLVM_DIR)'
165+
@echo ' - Version of SBPF (v0, v1 or v2):'
166+
@echo ' SBPF_CPU=$(SBPF_CPU)'
142167
@echo ''
143168
@echo 'Usage:'
144169
@echo ' - make help - This help message'

0 commit comments

Comments
 (0)