Create programs/bpf/c/sdk/
This commit is contained in:
@ -14,7 +14,7 @@ echo --- Creating tarball
|
||||
git rev-parse HEAD
|
||||
) > 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/
|
||||
)
|
||||
|
@ -1,105 +1 @@
|
||||
|
||||
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)
|
||||
include sdk/bpf.mk
|
||||
|
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
|
||||
*/
|
||||
|
||||
#include "sol_bpf_c.h"
|
||||
#include <sol_bpf_c.h>
|
||||
|
||||
/**
|
||||
* Numer of SolKeyedAccounts expected. The program should bail if an
|
||||
|
@ -3,7 +3,7 @@
|
||||
* passed to it
|
||||
*/
|
||||
|
||||
#include "sol_bpf_c.h"
|
||||
#include <sol_bpf_c.h>
|
||||
|
||||
/**
|
||||
* Numer of SolKeyedAccounts expected. The program should bail if an
|
||||
|
@ -2,8 +2,7 @@
|
||||
* @brief TicTacToe Dashboard C-based BPF program
|
||||
*/
|
||||
|
||||
#include "sol_bpf_c.h"
|
||||
|
||||
#include <sol_bpf_c.h>
|
||||
#include "tictactoe.h"
|
||||
|
||||
typedef enum {
|
||||
|
@ -2,8 +2,7 @@
|
||||
* @brief TicTacToe C-based BPF program
|
||||
*/
|
||||
|
||||
#include "sol_bpf_c.h"
|
||||
|
||||
#include <sol_bpf_c.h>
|
||||
#include "tictactoe.h"
|
||||
|
||||
#define MAX_GAMES_TRACKED 5
|
||||
|
Reference in New Issue
Block a user