@@ -2,78 +2,79 @@ 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
11- CFLAGS := $(CFLAGS ) -I ../../../c -I ../../../c/ref -I ../ -I ../../../deps/ckb-c-stdlib/libc -I ../../../deps/ckb-c-stdlib
12-
13- CFLAGS := $(CFLAGS ) -g -DCKB_C_STDLIB_PRINTF
16+ CFLAGS := $(CFLAGS ) -I ../../../c -I ../../../deps/ckb-c-stdlib/libc -I ../../../deps/ckb-c-stdlib -I ../../../deps/ckb-c-stdlib/molecule -I ../
17+ CFLAGS := $(CFLAGS ) -I ../../../deps/sphincsplus/ref -DPARAMS=$(PARAMS ) -DTEST_DATA=$(PARAMS ) -$(THASH )
1418
15- SOURCES_DIR = ../../../c /ref/
19+ SPHINCS_PLUS_DIR = ../../../deps/sphincsplus /ref/
1620
1721SOURCES = \
18- $(SOURCES_DIR ) /params.c \
19- $(SOURCES_DIR ) /address.c \
20- $(SOURCES_DIR ) /merkle.c \
21- $(SOURCES_DIR ) /wots.c \
22- $(SOURCES_DIR ) /wotsx1.c \
23- $(SOURCES_DIR ) /utils.c \
24- $(SOURCES_DIR ) /utilsx1.c \
25- $(SOURCES_DIR ) /fors.c \
26- $(SOURCES_DIR ) /sign.c \
27- $(SOURCES_DIR ) /randombytes.c \
28- $(SOURCES_DIR ) /../ckb-sphincsplus.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 \
30+ ../../../c/ckb-sphincsplus.c
2931
3032HEADERS = \
31- $(SOURCES_DIR ) params.h \
32- $(SOURCES_DIR ) address.h \
33- $(SOURCES_DIR ) merkle.h \
34- $(SOURCES_DIR ) wots.h \
35- $(SOURCES_DIR ) wotsx1.h \
36- $(SOURCES_DIR ) utils.h \
37- $(SOURCES_DIR ) utilsx1.h \
38- $(SOURCES_DIR ) fors.h \
39- $(SOURCES_DIR ) api.h \
40- $(SOURCES_DIR ) hash.h \
41- $(SOURCES_DIR ) thash.h \
42- $(SOURCES_DIR ) randombytes.h \
43- $(SOURCES_DIR ) /../ckb-sphincsplus.h
44-
45- # shake
46- SOURCES += \
47- $(SOURCES_DIR ) fips202.c \
48- $(SOURCES_DIR ) hash_shake.c \
49- $(SOURCES_DIR ) thash_shake_robust.c \
50- $(SOURCES_DIR ) thash_shake_simple.c \
51- $(SOURCES_DIR ) fips202_asm_bin.S
52- HEADERS += \
53- $(SOURCES_DIR ) fips202.h
54-
55- SOURCES += \
56- $(SOURCES_DIR ) haraka.c \
57- $(SOURCES_DIR ) hash_haraka.c \
58- $(SOURCES_DIR ) thash_haraka_robust.c \
59- $(SOURCES_DIR ) thash_haraka_simple.c
60- HEADERS += \
61- $(SOURCES_DIR ) haraka.h
62-
63- SOURCES += \
64- $(SOURCES_DIR ) sha2.c \
65- $(SOURCES_DIR ) hash_sha2.c \
66- $(SOURCES_DIR ) thash_sha2_robust.c \
67- $(SOURCES_DIR ) thash_sha2_simple.c
68- HEADERS += \
69- $(SOURCES_DIR ) sha2.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 \
45+ ../../../c/ckb-sphincsplus.h
46+
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
68+
69+ # docker pull nervos/ckb-riscv-gnu-toolchain:gnu-jammy-20230214
70+ BUILDER_DOCKER := nervos/ckb-riscv-gnu-toolchain@sha256:7601a814be2595ad471288fefc176356b31101837a514ddb0fc93b11c1cf5135
7071
7172all : build/verify
7273
73- build_asm : $( SOURCES_DIR ) fips202_asm.S
74- cd ../../../ && make build/convert_asm
74+ all-via-docker :
75+ docker run --rm -v ` pwd ` :/code ${BUILDER_DOCKER} bash -c " cd /code && make"
7576
76- build/verify : optimization-sphincsplus.c $(SOURCES ) $(HEADERS ) build_asm
77+ build/verify : optimization-sphincsplus.c $(SOURCES ) $(HEADERS )
7778 $(CC ) $(CFLAGS ) -o $@ $(SOURCES ) $<
7879
7980run : build/verify
0 commit comments