diff --git a/pkg/cmsis-nn/Makefile b/pkg/cmsis-nn/Makefile new file mode 100644 index 0000000000..982c017e83 --- /dev/null +++ b/pkg/cmsis-nn/Makefile @@ -0,0 +1,10 @@ +PKG_NAME=cmsis-nn +PKG_URL=https://github.com/ARM-software/CMSIS_5 +PKG_VERSION=5.6.0 +PKG_LICENSE=Apache-2.0 +CFLAGS += -Wno-strict-aliasing -Wno-unused-parameter + +include $(RIOTBASE)/pkg/pkg.mk + +all: + "$(MAKE)" -C $(PKG_BUILDDIR) -f $(CURDIR)/Makefile.$(PKG_NAME) diff --git a/pkg/cmsis-nn/Makefile.cmsis-nn b/pkg/cmsis-nn/Makefile.cmsis-nn new file mode 100644 index 0000000000..fd72e0f10a --- /dev/null +++ b/pkg/cmsis-nn/Makefile.cmsis-nn @@ -0,0 +1,42 @@ +PKG_NAME=cmsis-nn + +# A list of all the directories to build for CMSIS-NN +CMSIS_DIRS += \ + CMSIS/NN/Source/ActivationFunctions \ + CMSIS/NN/Source/BasicMathFunctions \ + CMSIS/NN/Source/ConcatenationFunctions \ + CMSIS/NN/Source/ConvolutionFunctions \ + CMSIS/NN/Source/FullyConnectedFunctions \ + CMSIS/NN/Source/NNSupportFunctions \ + CMSIS/NN/Source/PoolingFunctions \ + CMSIS/NN/Source/ReshapeFunctions \ + CMSIS/NN/Source/SoftmaxFunctions \ +# + +INCLUDES += -I$(CURDIR)/CMSIS/NN/Include +CMSIS_BINDIRS = $(addprefix $(BINDIR)/$(PKG_NAME)/,$(CMSIS_DIRS)) + +# Override default RIOT search path for sources to include all of the CMSIS-NN +# sources in one library instead of one library per subdirectory. +SRC := $(foreach DIR,$(CMSIS_DIRS),$(wildcard $(DIR)/*.c)) +SRCXX := $(foreach DIR,$(CMSIS_DIRS),$(wildcard $(DIR)/*.cpp)) +ASMSRC := $(foreach DIR,$(CMSIS_DIRS),$(wildcard $(DIR)/*.s)) +ASSMSRC := $(foreach DIR,$(CMSIS_DIRS),$(wildcard $(DIR)/*.S)) + +OBJC := $(SRC:%.c=$(BINDIR)/$(PKG_NAME)/%.o) +OBJCXX := $(SRCXX:%.cpp=$(BINDIR)/$(PKG_NAME)/%.o) +ASMOBJ := $(ASMSRC:%.s=$(BINDIR)/$(PKG_NAME)/%.o) +ASSMOBJ := $(ASSMSRC:%.S=$(BINDIR)/$(PKG_NAME)/%.o) +OBJ = $(OBJC) $(OBJCXX) $(ASMOBJ) $(ASSMOBJ) + +# Create subdirectories if they do not already exist +$(OBJ): | $(CMSIS_BINDIRS) + +$(CMSIS_BINDIRS): + @mkdir -p $@ + +# Reset the default goal. +.DEFAULT_GOAL := + +# Include RIOT settings and recipes +include $(RIOTBASE)/Makefile.base diff --git a/pkg/cmsis-nn/Makefile.dep b/pkg/cmsis-nn/Makefile.dep new file mode 100644 index 0000000000..469b993d2f --- /dev/null +++ b/pkg/cmsis-nn/Makefile.dep @@ -0,0 +1 @@ +FEATURES_REQUIRED += arch_cortexm diff --git a/pkg/cmsis-nn/Makefile.include b/pkg/cmsis-nn/Makefile.include new file mode 100644 index 0000000000..24dc9b160d --- /dev/null +++ b/pkg/cmsis-nn/Makefile.include @@ -0,0 +1,6 @@ +INCLUDES += -I$(PKGDIRBASE)/cmsis-nn/CMSIS/NN/Include + +# Required for some basic math functions +INCLUDES += -I$(PKGDIRBASE)/cmsis-nn/CMSIS/DSP/Include + +CFLAGS += -Wno-sign-compare