diff --git a/lwc/Makefile b/lwc/Makefile index 2becc56..afbf249 100644 --- a/lwc/Makefile +++ b/lwc/Makefile @@ -10,27 +10,45 @@ export REPO_HOME = ${PWD} export ALG ?= ascon +#hash or aead export API ?= aead -export ARCH ?= generic +#generic, rv32 or rv64 +export ARCH ?= rv32 +#nist, rv32 or rv64m if imp is nist does not allow for ASCON_RVXX_TYPE export IMP ?= nist -export ISE ?= xalu +#rvxx requires a ACSCON_RVXX_TYPEX +#export CONF ?= -DASCON_RV32_TYPE1 # -DASCON_RV32_TYPE1 or -DASCON_RV32_TYPE2 (with custom instrs) -export CONF ?= +TARGET = ${ALG}_${API}_${IMP} +ISA?=gc_zbb_zbkb_zbkx -# ----------------------------------------------------------------------------- +C_SRCS = $(wildcard *.c) +HEADERS = $(wildcard *.h) +OPT ?= -O0 +CFLAGS += $(OPT) -g +#CFLAGS += -DDRIVER_BYPASS_TEST +CFLAGS += -DDRIVER_BYPASS_TIME #Time throws a trap somewhere -sw-build : - @make --directory="${REPO_HOME}/src" build -sw-run : - @make --directory="${REPO_HOME}/src" run -sw-scan : - @make --directory="${REPO_HOME}/src" scan -sw-clean : - @make --directory="${REPO_HOME}/src" clean +BOARD=iss +LINK_TARGET=link +RISCV_ARCH:=rv32$(ISA) +ifeq ($(ISA),e) + RISCV_ABI:=ilp32e +else + RISCV_ABI:=ilp32 +endif +LDFLAGS += -g -Wl,--wrap=printf -# ----------------------------------------------------------------------------- +compiler := $(shell which riscv64-unknown-elf-gcc) +TOOL_DIR=$(dir $(compiler)) -clean : - @rm --force --recursive ${REPO_HOME}/build/* +TRIPLET=riscv64-unknown-elf +BSP_BASE = ../bare-metal-bsp + +all: ${TARGET}.elf + +include ${REPO_HOME}/src/Makefile +CFLAGS += ${GCC_FLAGS} + +include $(BSP_BASE)/env/common-gcc.mk -# ============================================================================= diff --git a/lwc/src/Makefile b/lwc/src/Makefile index ff728da..b53931f 100644 --- a/lwc/src/Makefile +++ b/lwc/src/Makefile @@ -4,27 +4,17 @@ # can be found at https://opensource.org/licenses/MIT (or should be included # as LICENSE.txt within the associated archive or repository). -ifndef REPO_HOME - $(error "execute 'source ./bin/conf.sh' to configure environment") -endif -ifndef REPO_VERSION - $(error "execute 'source ./bin/conf.sh' to configure environment") -endif - -export API ?= aead - -# ============================================================================= - # include build-related content for algorithm -include ./${ALG}/Makefile.in +include ${REPO_HOME}/src/${ALG}/Makefile.in # include build-related content for architecture -include ./share/arch/${ARCH}/Makefile.in +#include ${REPO_HOME}/src/share/arch/${ARCH}/Makefile.in # parameterise source code using environment variables ifeq "${API}" "aead" GCC_FLAGS += -DAPI_AEAD endif + ifeq "${API}" "hash" GCC_FLAGS += -DAPI_HASH endif @@ -37,9 +27,9 @@ endif # ----------------------------------------------------------------------------- ifeq "${IMP}" "nist" -export LWISE_INCLUDES += ${REPO_HOME}/build/${ALG} ./share ./share/nist ./share/arch/${ARCH} +export LWISE_INCLUDES += ${REPO_HOME}/build/${ALG} ${REPO_HOME}/src/share ${REPO_HOME}/src/share/nist ${REPO_HOME}/src/share/arch/${ARCH} else -export LWISE_INCLUDES += ${REPO_HOME}/build/${ALG} ./share ./share/nist ./share/arch/${ARCH} ./${ALG}/arch/${ARCH} ./${ALG}/imp/${IMP} ./${ALG}/imp/share +export LWISE_INCLUDES += ${REPO_HOME}/build/${ALG} ${REPO_HOME}/src/share ${REPO_HOME}/src/share/nist ${REPO_HOME}/src/share/arch/${ARCH} ${REPO_HOME}/src/${ALG}/arch/${ARCH} ${REPO_HOME}/src/${ALG}/imp/${IMP} ${REPO_HOME}/src/${ALG}/imp/share endif export LWISE_SOURCES += $(wildcard $(addsuffix /*.c, ${LWISE_INCLUDES})) @@ -48,32 +38,30 @@ export LWISE_SOURCES += $(wildcard $(addsuffix /*.s, ${LWISE_INCLUDES})) export LWISE_SOURCES += $(wildcard $(addsuffix /*.S, ${LWISE_INCLUDES})) export LWISE_HEADERS += $(wildcard $(addsuffix /*.h, ${LWISE_INCLUDES})) -export INCLUDES := ${LWISE_INCLUDES} ${NIST_INCLUDES} +export ALL_INCLUDES := ${LWISE_INCLUDES} ${NIST_INCLUDES} ${REPO_HOME}/build/${ALG} +INCLUDES += $(foreach dir,$(ALL_INCLUDES),-I$(dir)) -export SOURCES := ${LWISE_SOURCES} ${NIST_SOURCES} ${REPO_HOME}/build/${ALG}/kat_${API}.c -export HEADERS := ${LWISE_HEADERS} ${NIST_HEADERS} ${REPO_HOME}/build/${ALG}/kat_${API}.h - -export TARGETS += ${REPO_HOME}/build/${ALG} -export TARGETS += ${REPO_HOME}/build/${ALG}/kat_${API}.h -export TARGETS += ${REPO_HOME}/build/${ALG}/kat_${API}.c -export TARGETS += ${REPO_HOME}/build/${ALG}/driver-${API}_${ARCH}_${IMP}.elf -export TARGETS += ${REPO_HOME}/build/${ALG}/driver-${API}_${ARCH}_${IMP}.asm +export SOURCES := ${LWISE_SOURCES} ${NIST_SOURCES} +export HEADERS := ${LWISE_HEADERS} ${NIST_HEADERS} # ----------------------------------------------------------------------------- ${REPO_HOME}/build/${ALG} : @mkdir --parents ${@} +${SOURCES} : ${REPO_HOME}/build/${ALG}/kat_${API}.c ${REPO_HOME}/build/${ALG}/kat_${API}.h + ${REPO_HOME}/build/${ALG}/kat_${API}.h : ${NIST_KAT} - @python3 ./share/kat.py --api="${API}" --header < ${<} > ${@} + @python3 ${REPO_HOME}/src/share/kat.py --api="${API}" --header < ${<} > ${@} ${REPO_HOME}/build/${ALG}/kat_${API}.c : ${NIST_KAT} - @python3 ./share/kat.py --api="${API}" --source < ${<} > ${@} + @python3 ${REPO_HOME}/src/share/kat.py --api="${API}" --source < ${<} > ${@} + -${REPO_HOME}/build/${ALG}/driver-${API}_${ARCH}_${IMP}.elf : ${SOURCES} - @${GCC_PREFIX}-gcc ${GCC_FLAGS} ${GCC_PATHS} $(addprefix -I ,${INCLUDES}) -std='gnu99' -O3 -o ${@} $(filter %.c, ${^}) $(filter %.cpp, ${^}) $(filter %.S, ${^}) ${GCC_LIBS} -${REPO_HOME}/build/${ALG}/driver-${API}_${ARCH}_${IMP}.asm : ${REPO_HOME}/build/${ALG}/driver-${API}_${ARCH}_${IMP}.elf - @${GCC_PREFIX}-objdump --disassemble-all ${<} > ${@} +C_SRCS += $(filter %.c, ${SOURCES}) +CXX_SRCS += $(filter %.cpp, ${SOURCES}) +ASM_SRCS += $(filter %.S, ${SOURCES}) + # ----------------------------------------------------------------------------- @@ -102,9 +90,6 @@ dump : @echo "HEADERS = ${HEADERS}" @echo "TARGETS = ${TARGETS}" -build : ${TARGETS} - -clean : - @rm --force --recursive ${TARGETS} + @echo "ASM_SRCS = ${ASM_SRCS}" # =============================================================================