https://gitlab.inria.fr/ciao/pmns-for-sidh
Raw File
Tip revision: fc666429fa96e570fbcca250f27c25514f4ba638 authored by Cyril Bouvier on 04 November 2020, 15:12:51 UTC
Instructions on how to compile
Tip revision: fc66642
Makefile
####  Makefile for compilation on Unix-like operative systems  ####

OPT=-O3     # Optimization option by default
OPT+=-Wno-missing-braces

CC=gcc
ifeq "$(CC)" "gcc"
    COMPILER=gcc
else ifeq "$(CC)" "clang"
    COMPILER=clang
endif

ARCHITECTURE=_AMD64_
USE_OPT_LEVEL=_FAST_
ifeq "$(ARCH)" "x64"
    ARCHITECTURE=_AMD64_
    USE_OPT_LEVEL=_FAST_
else ifeq "$(ARCH)" "x86"
    ARCHITECTURE=_X86_
    USE_OPT_LEVEL=_GENERIC_
else ifeq "$(ARCH)" "s390x"
    ARCHITECTURE=_S390X_
    USE_OPT_LEVEL=_GENERIC_
else ifeq "$(ARCH)" "ARM"
    ARCHITECTURE=_ARM_
    USE_OPT_LEVEL=_GENERIC_
    ARM_TARGET=YES
else ifeq "$(ARCH)" "ARM64"
    ARCHITECTURE=_ARM64_
    USE_OPT_LEVEL=_FAST_
    ARM_TARGET=YES
endif

ifeq "$(OPT_LEVEL)" "GENERIC"
    USE_OPT_LEVEL=_GENERIC_
else ifeq "$(OPT_LEVEL)" "FAST"
    USE_OPT_LEVEL=_FAST_
else ifeq "$(OPT_LEVEL)" "PMNS"
    USE_OPT_LEVEL=_PMNS_
endif

ifeq "$(ARM_TARGET)" "YES"
    ARM_SETTING=-lrt
endif

ifeq "$(ARCHITECTURE)" "_AMD64_"
    ifeq "$(USE_OPT_LEVEL)" "_FAST_"
        MULX=-D _MULX_
        ifeq "$(USE_MULX)" "FALSE"
            MULX=
        else
            ADX=-D _ADX_
            ifeq "$(USE_ADX)" "FALSE"
                ADX=
            endif
        endif
    endif
endif

ifeq "$(USE_OPT_LEVEL)" "_PMNS_"
	ifeq "$(PMNS_P503_VARIANT)" ""
		PMNS_P503_VARIANT=10x1
	endif
	PMNS_P503_DIR=src/P503/PMNS/$(PMNS_P503_VARIANT)
	PMNS_P503_CFLAGS=-I$(PMNS_P503_DIR)

	ifeq "$(PMNS_P751_VARIANT)" ""
		PMNS_P751_VARIANT=3x4
	endif
	PMNS_P751_DIR=src/P751/PMNS/$(PMNS_P751_VARIANT)
	PMNS_P751_CFLAGS=-I$(PMNS_P751_DIR)

	ifeq "$(PMNS_P736_VARIANT)" ""
		PMNS_P736_VARIANT=4x3
	endif
	PMNS_P736_DIR=src/P736/PMNS/$(PMNS_P736_VARIANT)
	PMNS_P736_CFLAGS=-I$(PMNS_P736_DIR)
endif

AR=ar rcs
RANLIB=ranlib

ADDITIONAL_SETTINGS=-march=native
ifeq "$(CC)" "clang"
ifeq "$(ARM_TARGET)" "YES"
    ADDITIONAL_SETTINGS=
endif
endif
ifeq "$(ARCHITECTURE)" "_S390X_"
	ADDITIONAL_SETTINGS=-march=z10
endif

CFLAGS=-Wall $(OPT) -std=gnu11 $(ADDITIONAL_SETTINGS) -D $(ARCHITECTURE) -D __NIX__ -D $(USE_OPT_LEVEL) $(MULX) $(ADX)
LDFLAGS=-lm
ifeq "$(USE_OPT_LEVEL)" "_GENERIC_"
    EXTRA_OBJECTS_434=objs434/fp_generic.o
    EXTRA_OBJECTS_503=objs503/fp_generic.o
    EXTRA_OBJECTS_610=objs610/fp_generic.o
    EXTRA_OBJECTS_751=objs751/fp_generic.o
else ifeq "$(USE_OPT_LEVEL)" "_FAST_"
ifeq "$(ARCHITECTURE)" "_AMD64_"
    EXTRA_OBJECTS_434=objs434/fp_x64.o objs434/fp_x64_asm.o
    EXTRA_OBJECTS_503=objs503/fp_x64.o objs503/fp_x64_asm.o
    EXTRA_OBJECTS_610=objs610/fp_x64.o objs610/fp_x64_asm.o
    EXTRA_OBJECTS_751=objs751/fp_x64.o objs751/fp_x64_asm.o
else ifeq "$(ARCHITECTURE)" "_ARM64_"
    EXTRA_OBJECTS_434=objs434/fp_arm64.o objs434/fp_arm64_asm.o
    EXTRA_OBJECTS_503=objs503/fp_arm64.o objs503/fp_arm64_asm.o
    EXTRA_OBJECTS_610=objs610/fp_arm64.o objs610/fp_arm64_asm.o
    EXTRA_OBJECTS_751=objs751/fp_arm64.o objs751/fp_arm64_asm.o
endif
else ifeq "$(USE_OPT_LEVEL)" "_PMNS_"
    EXTRA_OBJECTS_503=objs503/fp_pmns.o objs503/fp_pmns_x64.o
    EXTRA_OBJECTS_751=objs751/fp_pmns.o objs751/fp_pmns_x64.o
    EXTRA_OBJECTS_736=objs736/fp_pmns.o objs736/fp_pmns_x64.o
		CFLAGS+=-Isrc/PMNS
		LDFLAGS+=-lgmp
endif
OBJECTS_434=objs434/P434.o $(EXTRA_OBJECTS_434) objs/random.o objs/fips202.o
OBJECTS_503=objs503/P503.o $(EXTRA_OBJECTS_503) objs/random.o objs/fips202.o
OBJECTS_610=objs610/P610.o $(EXTRA_OBJECTS_610) objs/random.o objs/fips202.o
OBJECTS_736=objs736/P736.o $(EXTRA_OBJECTS_736) objs/random.o objs/fips202.o
OBJECTS_751=objs751/P751.o $(EXTRA_OBJECTS_751) objs/random.o objs/fips202.o
OBJECTS_434_COMP=objs434comp/P434_compressed.o $(EXTRA_OBJECTS_434) objs/random.o objs/fips202.o
OBJECTS_503_COMP=objs503comp/P503_compressed.o $(EXTRA_OBJECTS_503) objs/random.o objs/fips202.o
OBJECTS_610_COMP=objs610comp/P610_compressed.o $(EXTRA_OBJECTS_610) objs/random.o objs/fips202.o
OBJECTS_751_COMP=objs751comp/P751_compressed.o $(EXTRA_OBJECTS_751) objs/random.o objs/fips202.o

ifeq "$(USE_OPT_LEVEL)" "_PMNS_"
all: lib503 lib736 lib751 tests benchs KATS
else
all: lib434 lib503 lib610 lib751 lib434comp lib503comp lib610comp lib751comp tests KATS
endif

objs434/%.o: src/P434/%.c
	@mkdir -p $(@D)
	$(CC) -c $(CFLAGS) $< -o $@

objs503/%.o: src/P503/%.c
	@mkdir -p $(@D)
	$(CC) -c $(CFLAGS) $(PMNS_P503_CFLAGS) $< -o $@

objs610/%.o: src/P610/%.c
	@mkdir -p $(@D)
	$(CC) -c $(CFLAGS) $< -o $@

objs736/%.o: src/P736/%.c
	@mkdir -p $(@D)
	$(CC) -c $(CFLAGS) $(PMNS_P736_CFLAGS) $< -o $@

objs751/%.o: src/P751/%.c
	@mkdir -p $(@D)
	$(CC) -c $(CFLAGS) $(PMNS_P751_CFLAGS) $< -o $@

objs434comp/%.o: src/P434/%.c
	@mkdir -p $(@D)
	$(CC) -c $(CFLAGS) $< -o $@

objs503comp/%.o: src/P503/%.c
	@mkdir -p $(@D)
	$(CC) -c $(CFLAGS) $< -o $@

objs610comp/%.o: src/P610/%.c
	@mkdir -p $(@D)
	$(CC) -c $(CFLAGS) $< -o $@

objs751comp/%.o: src/P751/%.c
	@mkdir -p $(@D)
	$(CC) -c $(CFLAGS) $< -o $@

ifeq "$(USE_OPT_LEVEL)" "_GENERIC_"		
    objs434/fp_generic.o: src/P434/generic/fp_generic.c
	    $(CC) -c $(CFLAGS) src/P434/generic/fp_generic.c -o objs434/fp_generic.o

    objs503/fp_generic.o: src/P503/generic/fp_generic.c
	    $(CC) -c $(CFLAGS) src/P503/generic/fp_generic.c -o objs503/fp_generic.o

    objs610/fp_generic.o: src/P610/generic/fp_generic.c
	    $(CC) -c $(CFLAGS) src/P610/generic/fp_generic.c -o objs610/fp_generic.o

    objs751/fp_generic.o: src/P751/generic/fp_generic.c
	    $(CC) -c $(CFLAGS) src/P751/generic/fp_generic.c -o objs751/fp_generic.o
else ifeq "$(USE_OPT_LEVEL)" "_FAST_"
ifeq "$(ARCHITECTURE)" "_AMD64_"		
    objs434/fp_x64.o: src/P434/AMD64/fp_x64.c
	    $(CC) -c $(CFLAGS) src/P434/AMD64/fp_x64.c -o objs434/fp_x64.o

    objs434/fp_x64_asm.o: src/P434/AMD64/fp_x64_asm.S
	    $(CC) -c $(CFLAGS) src/P434/AMD64/fp_x64_asm.S -o objs434/fp_x64_asm.o

    objs503/fp_x64.o: src/P503/AMD64/fp_x64.c
	    $(CC) -c $(CFLAGS) src/P503/AMD64/fp_x64.c -o objs503/fp_x64.o

    objs503/fp_x64_asm.o: src/P503/AMD64/fp_x64_asm.S
	    $(CC) -c $(CFLAGS) src/P503/AMD64/fp_x64_asm.S -o objs503/fp_x64_asm.o

    objs610/fp_x64.o: src/P610/AMD64/fp_x64.c
	    $(CC) -c $(CFLAGS) src/P610/AMD64/fp_x64.c -o objs610/fp_x64.o

    objs610/fp_x64_asm.o: src/P610/AMD64/fp_x64_asm.S
	    $(CC) -c $(CFLAGS) src/P610/AMD64/fp_x64_asm.S -o objs610/fp_x64_asm.o

    objs751/fp_x64.o: src/P751/AMD64/fp_x64.c
	    $(CC) -c $(CFLAGS) src/P751/AMD64/fp_x64.c -o objs751/fp_x64.o

    objs751/fp_x64_asm.o: src/P751/AMD64/fp_x64_asm.S
	    $(CC) -c $(CFLAGS) src/P751/AMD64/fp_x64_asm.S -o objs751/fp_x64_asm.o
else ifeq "$(ARCHITECTURE)" "_ARM64_"	
    objs434/fp_arm64.o: src/P434/ARM64/fp_arm64.c
	    $(CC) -c $(CFLAGS) src/P434/ARM64/fp_arm64.c -o objs434/fp_arm64.o

    objs434/fp_arm64_asm.o: src/P434/ARM64/fp_arm64_asm.S
	    $(CC) -c $(CFLAGS) src/P434/ARM64/fp_arm64_asm.S -o objs434/fp_arm64_asm.o

    objs503/fp_arm64.o: src/P503/ARM64/fp_arm64.c
	    $(CC) -c $(CFLAGS) src/P503/ARM64/fp_arm64.c -o objs503/fp_arm64.o

    objs503/fp_arm64_asm.o: src/P503/ARM64/fp_arm64_asm.S
	    $(CC) -c $(CFLAGS) src/P503/ARM64/fp_arm64_asm.S -o objs503/fp_arm64_asm.o

    objs610/fp_arm64.o: src/P610/ARM64/fp_arm64.c
	    $(CC) -c $(CFLAGS) src/P610/ARM64/fp_arm64.c -o objs610/fp_arm64.o

    objs610/fp_arm64_asm.o: src/P610/ARM64/fp_arm64_asm.S
	    $(CC) -c $(CFLAGS) src/P610/ARM64/fp_arm64_asm.S -o objs610/fp_arm64_asm.o

    objs751/fp_arm64.o: src/P751/ARM64/fp_arm64.c
	    $(CC) -c $(CFLAGS) src/P751/ARM64/fp_arm64.c -o objs751/fp_arm64.o

    objs751/fp_arm64_asm.o: src/P751/ARM64/fp_arm64_asm.S
	    $(CC) -c $(CFLAGS) src/P751/ARM64/fp_arm64_asm.S -o objs751/fp_arm64_asm.o
endif
else ifeq "$(USE_OPT_LEVEL)" "_PMNS_"
    objs503/fp_pmns.o: $(PMNS_P503_DIR)/fp_pmns.c
	    $(CC) -c $(CFLAGS) $(PMNS_P503_CFLAGS) $< -o $@

    objs503/fp_pmns_x64.o: $(PMNS_P503_DIR)/fp_pmns_x64.S
	    $(CC) -c $(CFLAGS) $(PMNS_P503_CFLAGS) $< -o $@

    objs736/fp_pmns.o: $(PMNS_P736_DIR)/fp_pmns.c
	    $(CC) -c $(CFLAGS) $(PMNS_P736_CFLAGS) $< -o $@

    objs736/fp_pmns_x64.o: $(PMNS_P736_DIR)/fp_pmns_x64.S
	    $(CC) -c $(CFLAGS) $(PMNS_P736_CFLAGS) $< -o $@

    objs751/fp_pmns.o: $(PMNS_P751_DIR)/fp_pmns.c
	    $(CC) -c $(CFLAGS) $(PMNS_P751_CFLAGS) $< -o $@

    objs751/fp_pmns_x64.o: $(PMNS_P751_DIR)/fp_pmns_x64.S
	    $(CC) -c $(CFLAGS) $(PMNS_P751_CFLAGS) $< -o $@
endif

objs/random.o: src/random/random.c
	@mkdir -p $(@D)
	$(CC) -c $(CFLAGS) src/random/random.c -o objs/random.o

objs/fips202.o: src/sha3/fips202.c
	$(CC) -c $(CFLAGS) src/sha3/fips202.c -o objs/fips202.o

lib434: $(OBJECTS_434)
	rm -rf lib434 sike434 sidh434
	mkdir lib434 sike434 sidh434
	$(AR) lib434/libsidh.a $^
	$(RANLIB) lib434/libsidh.a

lib503: $(OBJECTS_503)
	rm -rf lib503 sike503 sidh503
	mkdir lib503 sike503 sidh503
	$(AR) lib503/libsidh.a $^
	$(RANLIB) lib503/libsidh.a

lib610: $(OBJECTS_610)
	rm -rf lib610 sike610 sidh610
	mkdir lib610 sike610 sidh610
	$(AR) lib610/libsidh.a $^
	$(RANLIB) lib610/libsidh.a

lib736: $(OBJECTS_736)
	rm -rf lib736 sike736 sidh736
	mkdir lib736 sike736 sidh736
	$(AR) lib736/libsidh.a $^
	$(RANLIB) lib736/libsidh.a

lib751: $(OBJECTS_751)
	rm -rf lib751 sike751 sidh751
	mkdir lib751 sike751 sidh751
	$(AR) lib751/libsidh.a $^
	$(RANLIB) lib751/libsidh.a

lib434comp: $(OBJECTS_434_COMP)
	rm -rf lib434comp sike434_compressed sidh434_compressed
	mkdir lib434comp sike434_compressed sidh434_compressed
	$(AR) lib434comp/libsidh.a $^
	$(RANLIB) lib434comp/libsidh.a

lib503comp: $(OBJECTS_503_COMP)
	rm -rf lib503comp sike503_compressed sidh503_compressed
	mkdir lib503comp sike503_compressed sidh503_compressed
	$(AR) lib503comp/libsidh.a $^
	$(RANLIB) lib503comp/libsidh.a

lib610comp: $(OBJECTS_610_COMP)
	rm -rf lib610comp sike610_compressed sidh610_compressed
	mkdir lib610comp sike610_compressed sidh610_compressed
	$(AR) lib610comp/libsidh.a $^
	$(RANLIB) lib610comp/libsidh.a

lib751comp: $(OBJECTS_751_COMP)
	rm -rf lib751comp sike751_compressed sidh751_compressed
	mkdir lib751comp sike751_compressed sidh751_compressed
	$(AR) lib751comp/libsidh.a $^
	$(RANLIB) lib751comp/libsidh.a

ifeq "$(USE_OPT_LEVEL)" "_PMNS_"
benchs: lib503 lib736 lib751
	$(CC) $(CFLAGS) $(PMNS_P503_CFLAGS) -L./lib503 benchs/arith_benchs-p503.c tests/test_extras.c -lsidh $(LDFLAGS) -o arith_benchs-p503 $(ARM_SETTING)
	$(CC) $(CFLAGS) $(PMNS_P736_CFLAGS) -L./lib736 benchs/arith_benchs-p736.c tests/test_extras.c -lsidh $(LDFLAGS) -o arith_benchs-p736 $(ARM_SETTING)
	$(CC) $(CFLAGS) $(PMNS_P751_CFLAGS) -L./lib751 benchs/arith_benchs-p751.c tests/test_extras.c -lsidh $(LDFLAGS) -o arith_benchs-p751 $(ARM_SETTING)
tests: lib503 lib736 lib751
	$(CC) $(CFLAGS) $(PMNS_P503_CFLAGS) -L./lib503 tests/arith_ourtests-p503.c tests/test_extras.c -lsidh $(LDFLAGS) -o arith_tests-p503 $(ARM_SETTING)
	$(CC) $(CFLAGS) $(PMNS_P503_CFLAGS) -L./lib503 tests/test_SIDHp503.c tests/test_extras.c -lsidh $(LDFLAGS) -o sidh503/test_SIDH $(ARM_SETTING)
	$(CC) $(CFLAGS) $(PMNS_P503_CFLAGS) -L./lib503 tests/test_SIKEp503.c tests/test_extras.c -lsidh $(LDFLAGS) -o sike503/test_SIKE $(ARM_SETTING)
	$(CC) $(CFLAGS) $(PMNS_P736_CFLAGS) -L./lib736 tests/arith_ourtests-p736.c tests/test_extras.c -lsidh $(LDFLAGS) -o arith_tests-p736 $(ARM_SETTING)
	$(CC) $(CFLAGS) $(PMNS_P736_CFLAGS) -L./lib736 tests/test_SIDHp736.c tests/test_extras.c -lsidh $(LDFLAGS) -o sidh736/test_SIDH $(ARM_SETTING)
	$(CC) $(CFLAGS) $(PMNS_P736_CFLAGS) -L./lib736 tests/test_SIKEp736.c tests/test_extras.c -lsidh $(LDFLAGS) -o sike736/test_SIKE $(ARM_SETTING)
	$(CC) $(CFLAGS) $(PMNS_P751_CFLAGS) -L./lib751 tests/arith_ourtests-p751.c tests/test_extras.c -lsidh $(LDFLAGS) -o arith_tests-p751 $(ARM_SETTING)
	$(CC) $(CFLAGS) $(PMNS_P751_CFLAGS) -L./lib751 tests/test_SIDHp751.c tests/test_extras.c -lsidh $(LDFLAGS) -o sidh751/test_SIDH $(ARM_SETTING)
	$(CC) $(CFLAGS) $(PMNS_P751_CFLAGS) -L./lib751 tests/test_SIKEp751.c tests/test_extras.c -lsidh $(LDFLAGS) -o sike751/test_SIKE $(ARM_SETTING)
else
tests: lib434 lib434comp lib503 lib503comp lib610 lib610comp lib751 lib751comp
	$(CC) $(CFLAGS) -L./lib434 tests/arith_tests-p434.c tests/test_extras.c -lsidh $(LDFLAGS) -o arith_tests-p434 $(ARM_SETTING)
	$(CC) $(CFLAGS) -L./lib503 tests/arith_tests-p503.c tests/test_extras.c -lsidh $(LDFLAGS) -o arith_tests-p503 $(ARM_SETTING)
	$(CC) $(CFLAGS) -L./lib610 tests/arith_tests-p610.c tests/test_extras.c -lsidh $(LDFLAGS) -o arith_tests-p610 $(ARM_SETTING)
	$(CC) $(CFLAGS) -L./lib751 tests/arith_tests-p751.c tests/test_extras.c -lsidh $(LDFLAGS) -o arith_tests-p751 $(ARM_SETTING)
	$(CC) $(CFLAGS) -L./lib434 tests/test_SIDHp434.c tests/test_extras.c -lsidh $(LDFLAGS) -o sidh434/test_SIDH $(ARM_SETTING)
	$(CC) $(CFLAGS) -L./lib503 tests/test_SIDHp503.c tests/test_extras.c -lsidh $(LDFLAGS) -o sidh503/test_SIDH $(ARM_SETTING)
	$(CC) $(CFLAGS) -L./lib610 tests/test_SIDHp610.c tests/test_extras.c -lsidh $(LDFLAGS) -o sidh610/test_SIDH $(ARM_SETTING)
	$(CC) $(CFLAGS) -L./lib751 tests/test_SIDHp751.c tests/test_extras.c -lsidh $(LDFLAGS) -o sidh751/test_SIDH $(ARM_SETTING)
	$(CC) $(CFLAGS) -L./lib434 tests/test_SIKEp434.c tests/test_extras.c -lsidh $(LDFLAGS) -o sike434/test_SIKE $(ARM_SETTING)
	$(CC) $(CFLAGS) -L./lib503 tests/test_SIKEp503.c tests/test_extras.c -lsidh $(LDFLAGS) -o sike503/test_SIKE $(ARM_SETTING)
	$(CC) $(CFLAGS) -L./lib610 tests/test_SIKEp610.c tests/test_extras.c -lsidh $(LDFLAGS) -o sike610/test_SIKE $(ARM_SETTING)
	$(CC) $(CFLAGS) -L./lib751 tests/test_SIKEp751.c tests/test_extras.c -lsidh $(LDFLAGS) -o sike751/test_SIKE $(ARM_SETTING)
	$(CC) $(CFLAGS) -L./lib434comp tests/test_SIDHp434_compressed.c tests/test_extras.c -lsidh $(LDFLAGS) -o sidh434_compressed/test_SIDH $(ARM_SETTING)
	$(CC) $(CFLAGS) -L./lib503comp tests/test_SIDHp503_compressed.c tests/test_extras.c -lsidh $(LDFLAGS) -o sidh503_compressed/test_SIDH $(ARM_SETTING)
	$(CC) $(CFLAGS) -L./lib610comp tests/test_SIDHp610_compressed.c tests/test_extras.c -lsidh $(LDFLAGS) -o sidh610_compressed/test_SIDH $(ARM_SETTING)
	$(CC) $(CFLAGS) -L./lib751comp tests/test_SIDHp751_compressed.c tests/test_extras.c -lsidh $(LDFLAGS) -o sidh751_compressed/test_SIDH $(ARM_SETTING)
	$(CC) $(CFLAGS) -L./lib434comp tests/test_SIKEp434_compressed.c tests/test_extras.c -lsidh $(LDFLAGS) -o sike434_compressed/test_SIKE $(ARM_SETTING)
	$(CC) $(CFLAGS) -L./lib503comp tests/test_SIKEp503_compressed.c tests/test_extras.c -lsidh $(LDFLAGS) -o sike503_compressed/test_SIKE $(ARM_SETTING)
	$(CC) $(CFLAGS) -L./lib610comp tests/test_SIKEp610_compressed.c tests/test_extras.c -lsidh $(LDFLAGS) -o sike610_compressed/test_SIKE $(ARM_SETTING)
	$(CC) $(CFLAGS) -L./lib751comp tests/test_SIKEp751_compressed.c tests/test_extras.c -lsidh $(LDFLAGS) -o sike751_compressed/test_SIKE $(ARM_SETTING)
endif

# AES
AES_OBJS=objs/aes.o objs/aes_c.o

objs/%.o: tests/aes/%.c
	@mkdir -p $(@D)
	$(CC) -c $(CFLAGS) $< -o $@

lib434_for_KATs: $(OBJECTS_434) $(AES_OBJS)
	$(AR) lib434/libsidh_for_testing.a $^
	$(RANLIB) lib434/libsidh_for_testing.a

lib503_for_KATs: $(OBJECTS_503) $(AES_OBJS)
	$(AR) lib503/libsidh_for_testing.a $^
	$(RANLIB) lib503/libsidh_for_testing.a

lib610_for_KATs: $(OBJECTS_610) $(AES_OBJS)
	$(AR) lib610/libsidh_for_testing.a $^
	$(RANLIB) lib610/libsidh_for_testing.a

lib751_for_KATs: $(OBJECTS_751) $(AES_OBJS)
	$(AR) lib751/libsidh_for_testing.a $^
	$(RANLIB) lib751/libsidh_for_testing.a

lib434comp_for_KATs: $(OBJECTS_434_COMP) $(AES_OBJS)
	$(AR) lib434comp/libsidh_for_testing.a $^
	$(RANLIB) lib434comp/libsidh_for_testing.a

lib503comp_for_KATs: $(OBJECTS_503_COMP) $(AES_OBJS)
	$(AR) lib503comp/libsidh_for_testing.a $^
	$(RANLIB) lib503comp/libsidh_for_testing.a

lib610comp_for_KATs: $(OBJECTS_610_COMP) $(AES_OBJS)
	$(AR) lib610comp/libsidh_for_testing.a $^
	$(RANLIB) lib610comp/libsidh_for_testing.a

lib751comp_for_KATs: $(OBJECTS_751_COMP) $(AES_OBJS)
	$(AR) lib751comp/libsidh_for_testing.a $^
	$(RANLIB) lib751comp/libsidh_for_testing.a

ifeq "$(USE_OPT_LEVEL)" "_PMNS_"
KATS: lib503_for_KATs
	$(CC) $(CFLAGS) -L./lib503 tests/PQCtestKAT_kem503.c tests/rng/rng.c -lsidh_for_testing $(LDFLAGS) -o sike503/PQCtestKAT_kem $(ARM_SETTING)
else
KATS: lib434_for_KATs lib503_for_KATs lib610_for_KATs lib751_for_KATs lib434comp_for_KATs lib503comp_for_KATs lib610comp_for_KATs lib751comp_for_KATs
	$(CC) $(CFLAGS) -L./lib434 tests/PQCtestKAT_kem434.c tests/rng/rng.c -lsidh_for_testing $(LDFLAGS) -o sike434/PQCtestKAT_kem $(ARM_SETTING)
	$(CC) $(CFLAGS) -L./lib503 tests/PQCtestKAT_kem503.c tests/rng/rng.c -lsidh_for_testing $(LDFLAGS) -o sike503/PQCtestKAT_kem $(ARM_SETTING)
	$(CC) $(CFLAGS) -L./lib610 tests/PQCtestKAT_kem610.c tests/rng/rng.c -lsidh_for_testing $(LDFLAGS) -o sike610/PQCtestKAT_kem $(ARM_SETTING)
	$(CC) $(CFLAGS) -L./lib751 tests/PQCtestKAT_kem751.c tests/rng/rng.c -lsidh_for_testing $(LDFLAGS) -o sike751/PQCtestKAT_kem $(ARM_SETTING)
	$(CC) $(CFLAGS) -L./lib434comp tests/PQCtestKAT_kem434_compressed.c tests/rng/rng.c -lsidh_for_testing $(LDFLAGS) -o sike434_compressed/PQCtestKAT_kem $(ARM_SETTING)
	$(CC) $(CFLAGS) -L./lib503comp tests/PQCtestKAT_kem503_compressed.c tests/rng/rng.c -lsidh_for_testing $(LDFLAGS) -o sike503_compressed/PQCtestKAT_kem $(ARM_SETTING)
	$(CC) $(CFLAGS) -L./lib610comp tests/PQCtestKAT_kem610_compressed.c tests/rng/rng.c -lsidh_for_testing $(LDFLAGS) -o sike610_compressed/PQCtestKAT_kem $(ARM_SETTING)
	$(CC) $(CFLAGS) -L./lib751comp tests/PQCtestKAT_kem751_compressed.c tests/rng/rng.c -lsidh_for_testing $(LDFLAGS) -o sike751_compressed/PQCtestKAT_kem $(ARM_SETTING)
endif

check: tests

.PHONY: clean

clean:
	rm -rf *.req objs434* objs503* objs610* objs751* objs lib434* lib503* lib610* lib751* sidh434* sidh503* sidh610* sidh751* sike434* sike503* sike610* sike751* arith_tests-* arith_benchs-* objs736* lib736* sidh736* sike736*

etags:
	find . -regex ".*\.[ch]" -print | etags -
back to top