@@ -2,77 +2,74 @@ TARGET := riscv64-unknown-linux-gnu-
22CC := $(TARGET ) gcc
33LD := $(TARGET ) gcc
44
5+ PARAMS = sphincs-shake-256f
6+ THASH = robust
7+
58CFLAGS := -fPIC -O3 -fno-builtin-printf -fno-builtin-memcmp -nostdinc -nostartfiles -fvisibility=hidden -fdata-sections -ffunction-sections -nostdlib -Wno-nonnull-compare -DCKB_VM -DCKB_DECLARATION_ONLY
69LDFLAGS := -fdata-sections -ffunction-sections
710
8- CFLAGS := $(CFLAGS ) -Wall -Werror -Wno-nonnull -Wno-unused-function
11+ # Using a new version of gcc will have a warning of ckb-c-stdlib
12+ CFLAGS := $(CFLAGS ) -w
13+ # CFLAGS := $(CFLAGS) -Wall -Werror -Wno-nonnull -Wno-unused-function
914LDFLAGS := $(LDFLAGS ) -Wl,-static -Wl,--gc-sections
1015
1116CFLAGS := $(CFLAGS ) -I c -I deps/ckb-c-stdlib/libc -I deps/ckb-c-stdlib -I deps/ckb-c-stdlib/molecule
12- CFLAGS := $(CFLAGS ) -I c/ ref
17+ CFLAGS := $(CFLAGS ) -I deps/sphincsplus/ ref -DPARAMS= $( PARAMS )
1318
14- SOURCES_DIR = ref
19+ SPHINCS_PLUS_DIR = deps/sphincsplus/ ref/
1520
1621SOURCES = \
17- c/$(SOURCES_DIR ) /params.c \
18- c/$(SOURCES_DIR ) /address.c \
19- c/$(SOURCES_DIR ) /merkle.c \
20- c/$(SOURCES_DIR ) /wots.c \
21- c/$(SOURCES_DIR ) /wotsx1.c \
22- c/$(SOURCES_DIR ) /utils.c \
23- c/$(SOURCES_DIR ) /utilsx1.c \
24- c/$(SOURCES_DIR ) /fors.c \
25- c/$(SOURCES_DIR ) /sign.c \
26- c/$(SOURCES_DIR ) /randombytes.c \
22+ $(SPHINCS_PLUS_DIR ) address.c \
23+ $(SPHINCS_PLUS_DIR ) merkle.c \
24+ $(SPHINCS_PLUS_DIR ) wots.c \
25+ $(SPHINCS_PLUS_DIR ) wotsx1.c \
26+ $(SPHINCS_PLUS_DIR ) utils.c \
27+ $(SPHINCS_PLUS_DIR ) utilsx1.c \
28+ $(SPHINCS_PLUS_DIR ) fors.c \
29+ $(SPHINCS_PLUS_DIR ) sign.c \
2730 c/ckb-sphincsplus.c
2831
2932HEADERS = \
30- c/ $( SOURCES_DIR ) / params.h \
31- c/ $( SOURCES_DIR ) / address.h \
32- c/ $( SOURCES_DIR ) / merkle.h \
33- c/ $( SOURCES_DIR ) / wots.h \
34- c/ $( SOURCES_DIR ) / wotsx1.h \
35- c/ $( SOURCES_DIR ) / utils.h \
36- c/ $( SOURCES_DIR ) / utilsx1.h \
37- c/ $( SOURCES_DIR ) / fors.h \
38- c/ $( SOURCES_DIR ) / api.h \
39- c/ $( SOURCES_DIR ) / hash.h \
40- c/ $( SOURCES_DIR ) / thash.h \
41- c/ $( SOURCES_DIR ) / randombytes.h \
33+ $( SPHINCS_PLUS_DIR ) params.h \
34+ $( SPHINCS_PLUS_DIR ) address.h \
35+ $( SPHINCS_PLUS_DIR ) merkle.h \
36+ $( SPHINCS_PLUS_DIR ) wots.h \
37+ $( SPHINCS_PLUS_DIR ) wotsx1.h \
38+ $( SPHINCS_PLUS_DIR ) utils.h \
39+ $( SPHINCS_PLUS_DIR ) utilsx1.h \
40+ $( SPHINCS_PLUS_DIR ) fors.h \
41+ $( SPHINCS_PLUS_DIR ) api.h \
42+ $( SPHINCS_PLUS_DIR ) hash.h \
43+ $( SPHINCS_PLUS_DIR ) thash.h \
44+ $( SPHINCS_PLUS_DIR ) randombytes.h \
4245 c/ckb-sphincsplus.h
4346
44- # shake
45- SOURCES += \
46- c/$(SOURCES_DIR ) /fips202.c \
47- c/$(SOURCES_DIR ) /hash_shake.c \
48- c/$(SOURCES_DIR ) /thash_shake_robust.c \
49- c/$(SOURCES_DIR ) /thash_shake_simple.c \
50- c/$(SOURCES_DIR ) /fips202_asm_bin.S
51- HEADERS += \
52- c/$(SOURCES_DIR ) /fips202.h
53-
54- # sha2
55- SOURCES += \
56- c/$(SOURCES_DIR ) /sha2.c \
57- c/$(SOURCES_DIR ) /hash_sha2.c \
58- c/$(SOURCES_DIR ) /thash_sha2_robust.c \
59- c/$(SOURCES_DIR ) /thash_sha2_simple.c
60- HEADERS += \
61- c/$(SOURCES_DIR ) /sha2.h
62-
63- # haraka
64- SOURCES += \
65- c/$(SOURCES_DIR ) /haraka.c \
66- c/$(SOURCES_DIR ) /hash_haraka.c \
67- c/$(SOURCES_DIR ) /thash_haraka_robust.c \
68- c/$(SOURCES_DIR ) /thash_haraka_simple.c
69- HEADERS += \
70- c/$(SOURCES_DIR ) /haraka.h
47+ ifneq (,$(findstring shake,$(PARAMS ) ) )
48+ SOURCES += \
49+ $(SPHINCS_PLUS_DIR)fips202.c \
50+ $(SPHINCS_PLUS_DIR)hash_shake.c \
51+ $(SPHINCS_PLUS_DIR)thash_shake_$(THASH).c
52+ HEADERS += $(SPHINCS_PLUS_DIR)fips202.h
53+ endif
54+ ifneq (,$(findstring haraka,$(PARAMS ) ) )
55+ SOURCES += \
56+ $(SPHINCS_PLUS_DIR)haraka.c \
57+ $(SPHINCS_PLUS_DIR)hash_haraka.c \
58+ $(SPHINCS_PLUS_DIR)thash_haraka_$(THASH).c
59+ HEADERS += $(SPHINCS_PLUS_DIR)haraka.h
60+ endif
61+ ifneq (,$(findstring sha2,$(PARAMS ) ) )
62+ SOURCES += \
63+ $(SPHINCS_PLUS_DIR)sha2.c \
64+ $(SPHINCS_PLUS_DIR)hash_sha2.c \
65+ $(SPHINCS_PLUS_DIR)thash_sha2_$(THASH).c
66+ HEADERS += $(SPHINCS_PLUS_DIR)sha2.h
67+ endif
7168
7269CFLAGS := $(CFLAGS ) -g -DCKB_C_STDLIB_PRINTF
7370
74- # docker pull nervos/ckb-riscv-gnu-toolchain:gnu-bionic-20191012
75- BUILDER_DOCKER := nervos/ckb-riscv-gnu-toolchain@sha256:aae8a3f79705f67d505d1f1d5ddc694a4fd537ed1c7e9622420a470d59ba2ec3
71+ # docker pull nervos/ckb-riscv-gnu-toolchain:gnu-jammy-20230214
72+ BUILDER_DOCKER := nervos/ckb-riscv-gnu-toolchain@sha256:7601a814be2595ad471288fefc176356b31101837a514ddb0fc93b11c1cf5135
7673
7774all : build/sphincsplus_lock
7875
@@ -82,7 +79,7 @@ all-via-docker:
8279build/convert_asm : c/ref/fips202_asm.S
8380 riscv-naive-assembler -i c/ref/fips202_asm.S > c/ref/fips202_asm_bin.S
8481
85- build/sphincsplus_lock : c/ckb-sphincsplus-lock.c $(SOURCES ) $(HEADERS ) build/convert_asm
82+ build/sphincsplus_lock : c/ckb-sphincsplus-lock.c $(SOURCES ) $(HEADERS )
8683 mkdir -p build
8784 $(CC ) $(CFLAGS ) -o $@ $(SOURCES ) $<
8885
0 commit comments