Create programs/bpf/c/sdk/
This commit is contained in:
@ -14,7 +14,7 @@ echo --- Creating tarball
|
|||||||
git rev-parse HEAD
|
git rev-parse HEAD
|
||||||
) > bpf-sdk/version.txt
|
) > bpf-sdk/version.txt
|
||||||
|
|
||||||
cp -ra programs/bpf/c/* bpf-sdk/
|
cp -ra programs/bpf/c/sdk/* bpf-sdk/
|
||||||
|
|
||||||
tar jvcf bpf-sdk.tar.bz2 bpf-sdk/
|
tar jvcf bpf-sdk.tar.bz2 bpf-sdk/
|
||||||
)
|
)
|
||||||
|
@ -1,105 +1 @@
|
|||||||
|
include sdk/bpf.mk
|
||||||
ifneq ($(V),1)
|
|
||||||
_@ :=@
|
|
||||||
endif
|
|
||||||
|
|
||||||
INC_DIRS := -I.
|
|
||||||
SRC_DIR := ./src
|
|
||||||
OUT_DIR := ./out
|
|
||||||
|
|
||||||
OS=$(uname)
|
|
||||||
ifeq ($(OS),Darwin)
|
|
||||||
LLVM_DIR := $(brew --prefix llvm)
|
|
||||||
else
|
|
||||||
LLVM_DIR := /usr/local/opt/llvm
|
|
||||||
endif
|
|
||||||
|
|
||||||
CC = $(LLVM_DIR)/bin/clang
|
|
||||||
CC_FLAGS = \
|
|
||||||
-Werror \
|
|
||||||
-target \
|
|
||||||
bpf -O2 \
|
|
||||||
-emit-llvm \
|
|
||||||
-fno-builtin
|
|
||||||
|
|
||||||
LD = $(LLVM_DIR)/bin/llc
|
|
||||||
LD_FLAGS = \
|
|
||||||
-march=bpf \
|
|
||||||
-filetype=obj \
|
|
||||||
-function-sections
|
|
||||||
|
|
||||||
OBJ_DUMP = $(LLVM_DIR)/bin/llvm-objdump
|
|
||||||
OBJ_DUMP_FLAGS = \
|
|
||||||
-color \
|
|
||||||
-source \
|
|
||||||
-disassemble
|
|
||||||
|
|
||||||
help:
|
|
||||||
@echo 'BPF Program makefile'
|
|
||||||
@echo ''
|
|
||||||
@echo 'This makefile will build BPF Programs from C source files into ELFs'
|
|
||||||
@echo ''
|
|
||||||
@echo 'Assumptions:'
|
|
||||||
@echo ' - Programs are a single .c source file (may include headers)'
|
|
||||||
@echo ' - Programs are located in the source directory: $(SRC_DIR)'
|
|
||||||
@echo ' - Programs are named by their basename (eg. file name:foo.c -> program name:foo)'
|
|
||||||
@echo ' - Output files will be placed in the directory: $(OUT_DIR)'
|
|
||||||
@echo ''
|
|
||||||
@echo 'User settings'
|
|
||||||
@echo ' - The following setting are overridable on the command line, default values shown'
|
|
||||||
@echo ' - Show commands:'
|
|
||||||
@echo ' V=1'
|
|
||||||
@echo ' - List of include dirs:'
|
|
||||||
@echo ' INC_DIRS=$(INC_DIRS)'
|
|
||||||
@echo ' - Location of source files:'
|
|
||||||
@echo ' SRC_DIR=$(SRC_DIR)'
|
|
||||||
@echo ' - Location to place output files:'
|
|
||||||
@echo ' OUT_DIR=$(OUT_DIR)'
|
|
||||||
@echo ' - Location of LLVM:'
|
|
||||||
@echo ' LLVM_DIR=$(LLVM_DIR)'
|
|
||||||
@echo ''
|
|
||||||
@echo 'Usage:'
|
|
||||||
@echo ' - make help - This help message'
|
|
||||||
@echo ' - make all - Builds all the programs in the directory: $(SRC_DIR)'
|
|
||||||
@echo ' - make clean - Cleans all programs'
|
|
||||||
@echo ' - make dump_<program name> - Dumps the contents of the program to stdout'
|
|
||||||
@echo ' - make <program name> - Build a single program by name'
|
|
||||||
@echo ''
|
|
||||||
@echo 'Available programs:'
|
|
||||||
$(foreach name, $(PROGRAM_NAMES), @echo ' - $(name)'$(\n))
|
|
||||||
@echo ''
|
|
||||||
@echo 'Example:'
|
|
||||||
@echo ' - Assuming a programed named foo (src/foo.c)'
|
|
||||||
@echo ' - make foo INC_DIRS='-I. -Isrc''
|
|
||||||
@echo ' - make dump_foo'
|
|
||||||
|
|
||||||
.PRECIOUS: $(OUT_DIR)/%.bc
|
|
||||||
$(OUT_DIR)/%.bc: $(SRC_DIR)/%.c
|
|
||||||
$(_@)mkdir -p $(OUT_DIR)
|
|
||||||
$(_@)$(CC) $(CC_FLAGS) $(INC_DIRS) -o $@ -c $< -MMD -MF $(@:.bc=.d)
|
|
||||||
|
|
||||||
.PRECIOUS: $(OUT_DIR)/%.o
|
|
||||||
$(OUT_DIR)/%.o: $(OUT_DIR)/%.bc
|
|
||||||
$(_@)$(LD) $(LD_FLAGS) -o $@ $<
|
|
||||||
|
|
||||||
-include $(wildcard $(OUT_DIR)/*.d)
|
|
||||||
|
|
||||||
PROGRAM_NAMES := $(notdir $(basename $(wildcard src/*.c)))
|
|
||||||
|
|
||||||
define \n
|
|
||||||
|
|
||||||
|
|
||||||
endef
|
|
||||||
|
|
||||||
%: $(addprefix $(OUT_DIR)/, %.o)
|
|
||||||
@echo $@ up to date
|
|
||||||
|
|
||||||
.PHONY: help all dump clean
|
|
||||||
|
|
||||||
all: $(PROGRAM_NAMES)
|
|
||||||
|
|
||||||
dump_%: %
|
|
||||||
$(_@)$(OBJ_DUMP) $(OBJ_DUMP_FLAGS) $(addprefix $(OUT_DIR)/, $(addsuffix .o, $<))
|
|
||||||
|
|
||||||
clean:
|
|
||||||
$(_@)rm -rf $(OUT_DIR)
|
|
||||||
|
107
programs/bpf/c/sdk/bpf.mk
Normal file
107
programs/bpf/c/sdk/bpf.mk
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
|
||||||
|
all:
|
||||||
|
.PHONY: help all clean
|
||||||
|
|
||||||
|
ifneq ($(V),1)
|
||||||
|
_@ :=@
|
||||||
|
endif
|
||||||
|
|
||||||
|
INC_DIRS :=
|
||||||
|
SYSTEM_INC_DIRS := -isystem $(dir $(lastword $(MAKEFILE_LIST)))/inc
|
||||||
|
SRC_DIR := ./src
|
||||||
|
OUT_DIR := ./out
|
||||||
|
|
||||||
|
OS=$(uname)
|
||||||
|
ifeq ($(OS),Darwin)
|
||||||
|
LLVM_DIR := $(brew --prefix llvm)
|
||||||
|
else
|
||||||
|
LLVM_DIR := /usr/local/opt/llvm
|
||||||
|
endif
|
||||||
|
|
||||||
|
CC = $(LLVM_DIR)/bin/clang
|
||||||
|
CC_FLAGS = \
|
||||||
|
-Werror \
|
||||||
|
-target \
|
||||||
|
bpf -O2 \
|
||||||
|
-emit-llvm \
|
||||||
|
-fno-builtin
|
||||||
|
|
||||||
|
LD = $(LLVM_DIR)/bin/llc
|
||||||
|
LD_FLAGS = \
|
||||||
|
-march=bpf \
|
||||||
|
-filetype=obj \
|
||||||
|
-function-sections
|
||||||
|
|
||||||
|
OBJ_DUMP = $(LLVM_DIR)/bin/llvm-objdump
|
||||||
|
OBJ_DUMP_FLAGS = \
|
||||||
|
-color \
|
||||||
|
-source \
|
||||||
|
-disassemble
|
||||||
|
|
||||||
|
help:
|
||||||
|
@echo 'BPF Program makefile'
|
||||||
|
@echo ''
|
||||||
|
@echo 'This makefile will build BPF Programs from C source files into ELFs'
|
||||||
|
@echo ''
|
||||||
|
@echo 'Assumptions:'
|
||||||
|
@echo ' - Programs are a single .c source file (may include headers)'
|
||||||
|
@echo ' - Programs are located in the source directory: $(SRC_DIR)'
|
||||||
|
@echo ' - Programs are named by their basename (eg. file name:foo.c -> program name:foo)'
|
||||||
|
@echo ' - Output files will be placed in the directory: $(OUT_DIR)'
|
||||||
|
@echo ''
|
||||||
|
@echo 'User settings'
|
||||||
|
@echo ' - The following setting are overridable on the command line, default values shown'
|
||||||
|
@echo ' - Show commands:'
|
||||||
|
@echo ' V=1'
|
||||||
|
@echo ' - List of include dirs:'
|
||||||
|
@echo ' INC_DIRS=$(INC_DIRS)'
|
||||||
|
@echo ' - Location of source files:'
|
||||||
|
@echo ' SRC_DIR=$(SRC_DIR)'
|
||||||
|
@echo ' - Location to place output files:'
|
||||||
|
@echo ' OUT_DIR=$(OUT_DIR)'
|
||||||
|
@echo ' - Location of LLVM:'
|
||||||
|
@echo ' LLVM_DIR=$(LLVM_DIR)'
|
||||||
|
@echo ''
|
||||||
|
@echo 'Usage:'
|
||||||
|
@echo ' - make help - This help message'
|
||||||
|
@echo ' - make all - Builds all the programs in the directory: $(SRC_DIR)'
|
||||||
|
@echo ' - make clean - Cleans all programs'
|
||||||
|
@echo ' - make dump_<program name> - Dumps the contents of the program to stdout'
|
||||||
|
@echo ' - make <program name> - Build a single program by name'
|
||||||
|
@echo ''
|
||||||
|
@echo 'Available programs:'
|
||||||
|
$(foreach name, $(PROGRAM_NAMES), @echo ' - $(name)'$(\n))
|
||||||
|
@echo ''
|
||||||
|
@echo 'Example:'
|
||||||
|
@echo ' - Assuming a programed named foo (src/foo.c)'
|
||||||
|
@echo ' - make foo'
|
||||||
|
@echo ' - make dump_foo'
|
||||||
|
|
||||||
|
.PRECIOUS: $(OUT_DIR)/%.bc
|
||||||
|
$(OUT_DIR)/%.bc: $(SRC_DIR)/%.c
|
||||||
|
$(_@)mkdir -p $(OUT_DIR)
|
||||||
|
$(_@)$(CC) $(CC_FLAGS) $(SYSTEM_INC_DIRS) $(INC_DIRS) -o $@ -c $< -MMD -MF $(@:.bc=.d)
|
||||||
|
|
||||||
|
.PRECIOUS: $(OUT_DIR)/%.o
|
||||||
|
$(OUT_DIR)/%.o: $(OUT_DIR)/%.bc
|
||||||
|
$(_@)$(LD) $(LD_FLAGS) -o $@ $<
|
||||||
|
|
||||||
|
-include $(wildcard $(OUT_DIR)/*.d)
|
||||||
|
|
||||||
|
PROGRAM_NAMES := $(notdir $(basename $(wildcard src/*.c)))
|
||||||
|
|
||||||
|
define \n
|
||||||
|
|
||||||
|
|
||||||
|
endef
|
||||||
|
|
||||||
|
all: $(PROGRAM_NAMES)
|
||||||
|
|
||||||
|
%: $(addprefix $(OUT_DIR)/, %.o)
|
||||||
|
@echo $@ up to date
|
||||||
|
|
||||||
|
dump_%: %
|
||||||
|
$(_@)$(OBJ_DUMP) $(OBJ_DUMP_FLAGS) $(addprefix $(OUT_DIR)/, $(addsuffix .o, $<))
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf $(OUT_DIR)
|
@ -3,7 +3,7 @@
|
|||||||
* another
|
* another
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "sol_bpf_c.h"
|
#include <sol_bpf_c.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Numer of SolKeyedAccounts expected. The program should bail if an
|
* Numer of SolKeyedAccounts expected. The program should bail if an
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
* passed to it
|
* passed to it
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "sol_bpf_c.h"
|
#include <sol_bpf_c.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Numer of SolKeyedAccounts expected. The program should bail if an
|
* Numer of SolKeyedAccounts expected. The program should bail if an
|
||||||
|
@ -2,8 +2,7 @@
|
|||||||
* @brief TicTacToe Dashboard C-based BPF program
|
* @brief TicTacToe Dashboard C-based BPF program
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "sol_bpf_c.h"
|
#include <sol_bpf_c.h>
|
||||||
|
|
||||||
#include "tictactoe.h"
|
#include "tictactoe.h"
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
@ -2,8 +2,7 @@
|
|||||||
* @brief TicTacToe C-based BPF program
|
* @brief TicTacToe C-based BPF program
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "sol_bpf_c.h"
|
#include <sol_bpf_c.h>
|
||||||
|
|
||||||
#include "tictactoe.h"
|
#include "tictactoe.h"
|
||||||
|
|
||||||
#define MAX_GAMES_TRACKED 5
|
#define MAX_GAMES_TRACKED 5
|
||||||
|
Reference in New Issue
Block a user