|
@@ -1,87 +1,141 @@
|
|
-CPP=g++
|
|
|
|
-CPPFLAGS=-g -Wall -DCHECK
|
|
|
|
|
|
+INC_PATH = inc
|
|
|
|
+SRC_PATH = src
|
|
|
|
+OBJ_PATH = obj
|
|
|
|
+BIN_PATH = bin
|
|
|
|
|
|
-CC=gcc
|
|
|
|
-CFLAGS=-std=c99 -O3 -fomit-frame-pointer
|
|
|
|
-LFLAGS=-lm
|
|
|
|
|
|
+CPP = g++
|
|
|
|
+CPPFLAGS = -g -Wall -DCHECK -I$(INC_PATH)
|
|
|
|
+
|
|
|
|
+CC = gcc
|
|
|
|
+CFLAGS = -std=c99 -O3 -fomit-frame-pointer -I$(INC_PATH)
|
|
|
|
+LDFLAGS = -lm
|
|
|
|
|
|
all: as check c
|
|
all: as check c
|
|
|
|
|
|
-c: bilintest-c \
|
|
|
|
- speedtest-c
|
|
|
|
|
|
+C_BIN += $(BIN_PATH)/bilintest-c
|
|
|
|
+C_BIN += $(BIN_PATH)/speedtest-c
|
|
|
|
+
|
|
|
|
+c: $(C_BIN)
|
|
|
|
+
|
|
|
|
+AS_BIN += $(BIN_PATH)/bilintest-as
|
|
|
|
+AS_BIN += $(BIN_PATH)/speedtest-as
|
|
|
|
+AS_BIN += $(BIN_PATH)/test_curvepoint_multiscalar-as
|
|
|
|
+AS_BIN += $(BIN_PATH)/test_twistpoint_multiscalar-as
|
|
|
|
+
|
|
|
|
+as: $(AS_BIN)
|
|
|
|
+
|
|
|
|
+CHECK_BIN += $(BIN_PATH)/bilintest-check
|
|
|
|
+CHECK_BIN += $(BIN_PATH)/speedtest-check
|
|
|
|
+CHECK_BIN += $(BIN_PATH)/test_curvepoint_multiscalar-check
|
|
|
|
+CHECK_BIN += $(BIN_PATH)/test_twistpoint_multiscalar-check
|
|
|
|
+
|
|
|
|
+check: $(CHECK_BIN)
|
|
|
|
+
|
|
|
|
+COMMON_OBJ += $(OBJ_PATH)/linefunction_c.o
|
|
|
|
+COMMON_OBJ += $(OBJ_PATH)/optate_c.o
|
|
|
|
+COMMON_OBJ += $(OBJ_PATH)/fpe_c.o
|
|
|
|
+COMMON_OBJ += $(OBJ_PATH)/fp2e_c.o
|
|
|
|
+COMMON_OBJ += $(OBJ_PATH)/fp6e_c.o
|
|
|
|
+COMMON_OBJ += $(OBJ_PATH)/fp12e_c.o
|
|
|
|
+COMMON_OBJ += $(OBJ_PATH)/curvepoint_fp_c.o
|
|
|
|
+COMMON_OBJ += $(OBJ_PATH)/twistpoint_fp2_c.o
|
|
|
|
+COMMON_OBJ += $(OBJ_PATH)/final_expo_c.o
|
|
|
|
+COMMON_OBJ += $(OBJ_PATH)/scalar_c.o
|
|
|
|
+COMMON_OBJ += $(OBJ_PATH)/parameters_c.o
|
|
|
|
+COMMON_OBJ += $(OBJ_PATH)/mul_c.o
|
|
|
|
+COMMON_OBJ += $(OBJ_PATH)/mydouble_c.o
|
|
|
|
|
|
-as: bilintest-as \
|
|
|
|
- speedtest-as \
|
|
|
|
- test_curvepoint_multiscalar-as \
|
|
|
|
- test_twistpoint_multiscalar-as
|
|
|
|
|
|
+COMMON_AS_OBJ += $(patsubst %_c.o, %_c_with_as.o, $(COMMON_OBJ))
|
|
|
|
|
|
-check: bilintest-check \
|
|
|
|
- speedtest-check \
|
|
|
|
- test_curvepoint_multiscalar-check \
|
|
|
|
- test_twistpoint_multiscalar-check
|
|
|
|
|
|
+CHECK_SRC += $(patsubst $(OBJ_PATH)/%_c.o, $(SRC_PATH)/%.c, $(COMMON_OBJ))
|
|
|
|
|
|
-bilintest-check: bilintest.c linefunction.c optate.c fpe.c fp2e.c fp6e.c fp12e.c curvepoint_fp.c twistpoint_fp2.c final_expo.c scalar.c parameters.c mul.c mydouble.c
|
|
|
|
|
|
+$(BIN_PATH)/bilintest-check: $(SRC_PATH)/bilintest.c $(CHECK_SRC)
|
|
$(CPP) $(CPPFLAGS) -DNTESTS=20 -o $@ $^
|
|
$(CPP) $(CPPFLAGS) -DNTESTS=20 -o $@ $^
|
|
|
|
|
|
-bilintest-c: bilintest.c linefunction.c optate.c fpe.c fp2e.c fp6e.c fp12e.c curvepoint_fp.c twistpoint_fp2.c final_expo.c scalar.c parameters.c mul.c mydouble.c
|
|
|
|
- $(CC) $(CFLAGS) $(LFLAGS) -DNTESTS=1000 -o $@ $^
|
|
|
|
|
|
+$(BIN_PATH)/bilintest-c: $(SRC_PATH)/bilintest.c $(COMMON_OBJ)
|
|
|
|
+ $(CC) $(CFLAGS) -DNTESTS=1000 -o $@ $^ $(LDFLAGS)
|
|
|
|
|
|
-bilintest-as: bilintest.c linefunction.c optate.c fpe.c fp2e.c fp6e.c fp12e.c curvepoint_fp.c twistpoint_fp2.c final_expo.c scalar.c parameters.c mul.c mydouble.c asfunctions.a
|
|
|
|
- $(CC) $(CFLAGS) $(LFLAGS) -DQHASM -DNTESTS=1000000 -o $@ $^
|
|
|
|
|
|
+$(BIN_PATH)/bilintest-as: $(SRC_PATH)/bilintest.c $(COMMON_AS_OBJ) $(OBJ_PATH)/asfunctions.a
|
|
|
|
+ $(CC) $(CFLAGS) -no-pie -DQHASM -DNTESTS=1000000 -o $@ $^ $(LDFLAGS)
|
|
|
|
|
|
-speedtest-check: speedtest.c linefunction.c optate.c fpe.c fp2e.c fp6e.c fp12e.c curvepoint_fp.c twistpoint_fp2.c final_expo.c scalar.c parameters.c mul.c mydouble.c
|
|
|
|
|
|
+$(BIN_PATH)/speedtest-check: $(SRC_PATH)/speedtest.c $(CHECK_SRC)
|
|
$(CPP) $(CPPFLAGS) -o $@ $^
|
|
$(CPP) $(CPPFLAGS) -o $@ $^
|
|
|
|
|
|
-speedtest-c: speedtest.c linefunction.c optate.c fpe.c fp2e.c fp6e.c fp12e.c curvepoint_fp.c twistpoint_fp2.c final_expo.c scalar.c parameters.c mul.c mydouble.c
|
|
|
|
- $(CC) $(CFLAGS) $(LFLAGS) -o $@ $^
|
|
|
|
|
|
+$(BIN_PATH)/speedtest-c: $(SRC_PATH)/speedtest.c $(COMMON_OBJ)
|
|
|
|
+ $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
|
|
-speedtest-as: speedtest.c linefunction.c optate.c fpe.c fp2e.c fp6e.c fp12e.c curvepoint_fp.c twistpoint_fp2.c final_expo.c scalar.c parameters.c mul.c mydouble.c asfunctions.a
|
|
|
|
- $(CC) $(CFLAGS) $(LFLAGS) -DQHASM -o $@ $^
|
|
|
|
|
|
+$(BIN_PATH)/speedtest-as: $(SRC_PATH)/speedtest.c $(COMMON_AS_OBJ) $(OBJ_PATH)/asfunctions.a
|
|
|
|
+ $(CC) $(CFLAGS) -no-pie -DQHASM -o $@ $^ $(LDFLAGS)
|
|
|
|
|
|
-test_curvepoint_multiscalar-check: test_curvepoint_multiscalar.c fpe.c scalar.c parameters.c curvepoint_fp.c mul.c mydouble.c \
|
|
|
|
- curvepoint_fp_multiscalar.c heap_rootreplaced.s index_heap.c scalar_sub_nored.s \
|
|
|
|
- asfunctions.a
|
|
|
|
- $(CPP) $(CPPFLAGS) -o $@ $^
|
|
|
|
|
|
+TEST_SRC += $(SRC_PATH)/fpe.c
|
|
|
|
+TEST_SRC += $(SRC_PATH)/scalar.c
|
|
|
|
+TEST_SRC += $(SRC_PATH)/parameters.c
|
|
|
|
+TEST_SRC += $(SRC_PATH)/mul.c
|
|
|
|
+TEST_SRC += $(SRC_PATH)/mydouble.c
|
|
|
|
+TEST_SRC += $(SRC_PATH)/heap_rootreplaced.s
|
|
|
|
+TEST_SRC += $(SRC_PATH)/index_heap.c
|
|
|
|
+TEST_SRC += $(SRC_PATH)/scalar_sub_nored.s
|
|
|
|
+
|
|
|
|
+CURVE_TEST_SRC += $(TEST_SRC)
|
|
|
|
+CURVE_TEST_SRC += $(SRC_PATH)/curvepoint_fp.c
|
|
|
|
+CURVE_TEST_SRC += $(SRC_PATH)/curvepoint_fp_multiscalar.c
|
|
|
|
+
|
|
|
|
+CURVE_TEST_AS_OBJ += $(patsubst $(SRC_PATH)/%.s, $(OBJ_PATH)/%_as.o, $(patsubst $(SRC_PATH)/%.c, $(OBJ_PATH)/%_c_with_as.o, $(CURVE_TEST_SRC)))
|
|
|
|
|
|
-test_curvepoint_multiscalar-as: test_curvepoint_multiscalar.c fpe.c scalar.c parameters.c curvepoint_fp.c mul.c mydouble.c \
|
|
|
|
- curvepoint_fp_multiscalar.c heap_rootreplaced.s index_heap.c scalar_sub_nored.s \
|
|
|
|
- asfunctions.a
|
|
|
|
- $(CC) $(CFLAGS) $(LFLAGS) -DQHASM -o $@ $^
|
|
|
|
|
|
+TWIST_TEST_SRC += $(TEST_SRC)
|
|
|
|
+TWIST_TEST_SRC += $(SRC_PATH)/fp2e.c
|
|
|
|
+TWIST_TEST_SRC += $(SRC_PATH)/twistpoint_fp2.c
|
|
|
|
+TWIST_TEST_SRC += $(SRC_PATH)/twistpoint_fp2_multiscalar.c
|
|
|
|
|
|
-test_twistpoint_multiscalar-check: test_twistpoint_multiscalar.c fpe.c fp2e.c scalar.c parameters.c twistpoint_fp2.c mul.c mydouble.c \
|
|
|
|
- twistpoint_fp2_multiscalar.c heap_rootreplaced.s index_heap.c scalar_sub_nored.s \
|
|
|
|
- asfunctions.a
|
|
|
|
|
|
+TWIST_TEST_AS_OBJ += $(patsubst $(SRC_PATH)/%.s, $(OBJ_PATH)/%_as.o, $(patsubst $(SRC_PATH)/%.c, $(OBJ_PATH)/%_c_with_as.o, $(TWIST_TEST_SRC)))
|
|
|
|
+
|
|
|
|
+$(BIN_PATH)/test_curvepoint_multiscalar-check: $(SRC_PATH)/test_curvepoint_multiscalar.c $(CURVE_TEST_SRC) $(OBJ_PATH)/asfunctions.a
|
|
$(CPP) $(CPPFLAGS) -o $@ $^
|
|
$(CPP) $(CPPFLAGS) -o $@ $^
|
|
|
|
|
|
-test_twistpoint_multiscalar-as: test_twistpoint_multiscalar.c fpe.c fp2e.c scalar.c parameters.c twistpoint_fp2.c mul.c mydouble.c \
|
|
|
|
- twistpoint_fp2_multiscalar.c heap_rootreplaced.s index_heap.c scalar_sub_nored.s \
|
|
|
|
- asfunctions.a
|
|
|
|
- $(CC) $(CFLAGS) $(LFLAGS) -DQHASM -o $@ $^
|
|
|
|
|
|
+$(BIN_PATH)/test_curvepoint_multiscalar-as: $(SRC_PATH)/test_curvepoint_multiscalar.c $(CURVE_TEST_AS_OBJ) $(OBJ_PATH)/asfunctions.a
|
|
|
|
+ $(CC) $(CFLAGS) -no-pie -DQHASM -o $@ $^ $(LDFLAGS)
|
|
|
|
|
|
|
|
+$(BIN_PATH)/test_twistpoint_multiscalar-check: $(SRC_PATH)/test_twistpoint_multiscalar.c $(TWIST_TEST_SRC) $(OBJ_PATH)/asfunctions.a
|
|
|
|
+ $(CPP) $(CPPFLAGS) -o $@ $^
|
|
|
|
|
|
-%.o: %.s
|
|
|
|
|
|
+$(BIN_PATH)/test_twistpoint_multiscalar-as: $(SRC_PATH)/test_twistpoint_multiscalar.c $(TWIST_TEST_AS_OBJ) $(OBJ_PATH)/asfunctions.a
|
|
|
|
+ $(CC) $(CFLAGS) -no-pie -DQHASM -o $@ $^ $(LDFLAGS)
|
|
|
|
+
|
|
|
|
+AS_OBJ += $(OBJ_PATH)/fp2e_add2_as.o
|
|
|
|
+AS_OBJ += $(OBJ_PATH)/fp2e_sub2_as.o
|
|
|
|
+AS_OBJ += $(OBJ_PATH)/fp2e_double2_as.o
|
|
|
|
+AS_OBJ += $(OBJ_PATH)/fp2e_triple2_as.o
|
|
|
|
+AS_OBJ += $(OBJ_PATH)/fp2e_neg2_as.o
|
|
|
|
+AS_OBJ += $(OBJ_PATH)/fp2e_mul_as.o
|
|
|
|
+AS_OBJ += $(OBJ_PATH)/fp2e_mul_fpe_as.o
|
|
|
|
+AS_OBJ += $(OBJ_PATH)/fp2e_short_coeffred_as.o
|
|
|
|
+AS_OBJ += $(OBJ_PATH)/fp2e_add_as.o
|
|
|
|
+AS_OBJ += $(OBJ_PATH)/fp2e_sub_as.o
|
|
|
|
+AS_OBJ += $(OBJ_PATH)/fp2e_parallel_coeffmul_as.o
|
|
|
|
+AS_OBJ += $(OBJ_PATH)/fp2e_mulxi_as.o
|
|
|
|
+AS_OBJ += $(OBJ_PATH)/fp2e_double_as.o
|
|
|
|
+AS_OBJ += $(OBJ_PATH)/fp2e_triple_as.o
|
|
|
|
+AS_OBJ += $(OBJ_PATH)/fp2e_neg_as.o
|
|
|
|
+AS_OBJ += $(OBJ_PATH)/fp2e_conjugate_as.o
|
|
|
|
+AS_OBJ += $(OBJ_PATH)/fpe_mul_as.o
|
|
|
|
+AS_OBJ += $(OBJ_PATH)/fp2e_square_as.o
|
|
|
|
+AS_OBJ += $(OBJ_PATH)/consts_as.o
|
|
|
|
+
|
|
|
|
+$(OBJ_PATH)/asfunctions.a: $(AS_OBJ)
|
|
|
|
+ rm -f $@
|
|
|
|
+ ar cr $@ $^
|
|
|
|
+
|
|
|
|
+$(OBJ_PATH)/%_c.o: $(SRC_PATH)/%.c
|
|
$(CC) $(CFLAGS) -c -o $@ $^
|
|
$(CC) $(CFLAGS) -c -o $@ $^
|
|
|
|
|
|
-asfunctions.a: fp2e_add2.o fp2e_sub2.o \
|
|
|
|
- fp2e_double2.o fp2e_triple2.o fp2e_neg2.o \
|
|
|
|
- fp2e_mul.o fp2e_mul_fpe.o fp2e_short_coeffred.o \
|
|
|
|
- fp2e_add.o fp2e_sub.o fp2e_parallel_coeffmul.o fp2e_mulxi.o\
|
|
|
|
- fp2e_double.o fp2e_triple.o fp2e_neg.o fp2e_conjugate.o \
|
|
|
|
- fpe_mul.o fp2e_square.o \
|
|
|
|
- consts.o
|
|
|
|
- rm -f asfunctions.a
|
|
|
|
- ar cr asfunctions.a $^
|
|
|
|
|
|
+$(OBJ_PATH)/%_c_with_as.o: $(SRC_PATH)/%.c
|
|
|
|
+ $(CC) $(CFLAGS) -DQHASM -c -o $@ $^
|
|
|
|
+
|
|
|
|
+$(OBJ_PATH)/%_as.o: $(SRC_PATH)/%.s
|
|
|
|
+ $(CC) $(CFLAGS) -fPIC -c -o $@ $^
|
|
|
|
|
|
.PHONY: clean
|
|
.PHONY: clean
|
|
|
|
|
|
clean:
|
|
clean:
|
|
- -rm bilintest-check
|
|
|
|
- -rm speedtest-check
|
|
|
|
- -rm bilintest-c
|
|
|
|
- -rm speedtest-c
|
|
|
|
- -rm bilintest-as
|
|
|
|
- -rm speedtest-as
|
|
|
|
- -rm test_curvepoint_multiscalar-as
|
|
|
|
- -rm test_curvepoint_multiscalar-check
|
|
|
|
- -rm *.o
|
|
|
|
- -rm asfunctions.a
|
|
|
|
|
|
+ -rm bin/*
|
|
|
|
+ -rm obj/*
|