1 # makefile for TomsFastMath, a fast ISO C bignum library. -- Tom St Denis
2 # SPDX-License-Identifier: Unlicense
12 include makefile_include.mk
21 CFLAGS
+= -fprofile-arcs
-ftest-coverage
23 LIB_PRE
= -Wl
,--whole-archive
24 LIB_POST
= -Wl
,--no-whole-archive
31 ${silent} ${CC} ${CFLAGS} -c
$< -o
$@
34 OBJECTS
=src
/addsub
/fp_add.o src
/addsub
/fp_add_d.o src
/addsub
/fp_addmod.o src
/addsub
/fp_cmp.o \
35 src
/addsub
/fp_cmp_d.o src
/addsub
/fp_cmp_mag.o src
/addsub
/fp_sub.o src
/addsub
/fp_sub_d.o \
36 src
/addsub
/fp_submod.o src
/addsub
/s_fp_add.o src
/addsub
/s_fp_sub.o src
/bin
/fp_radix_size.o \
37 src
/bin
/fp_read_radix.o src
/bin
/fp_read_signed_bin.o src
/bin
/fp_read_unsigned_bin.o \
38 src
/bin
/fp_reverse.o src
/bin
/fp_signed_bin_size.o src
/bin
/fp_s_rmap.o src
/bin
/fp_toradix.o \
39 src
/bin
/fp_toradix_n.o src
/bin
/fp_to_signed_bin.o src
/bin
/fp_to_unsigned_bin.o \
40 src
/bin
/fp_unsigned_bin_size.o src
/bit
/fp_cnt_lsb.o src
/bit
/fp_count_bits.o src
/bit
/fp_div_2.o \
41 src
/bit
/fp_div_2d.o src
/bit
/fp_lshd.o src
/bit
/fp_mod_2d.o src
/bit
/fp_rshd.o src
/divide
/fp_div.o \
42 src
/divide
/fp_div_d.o src
/divide
/fp_mod.o src
/divide
/fp_mod_d.o src
/exptmod
/fp_2expt.o \
43 src
/exptmod
/fp_exptmod.o src
/misc
/fp_ident.o src
/misc
/fp_rand.o src
/misc
/fp_set.o \
44 src
/mont
/fp_montgomery_calc_normalization.o src
/mont
/fp_montgomery_reduce.o \
45 src
/mont
/fp_montgomery_setup.o src
/mul
/fp_mul_2.o src
/mul
/fp_mul_2d.o src
/mul
/fp_mul.o \
46 src
/mul
/fp_mul_comba_12.o src
/mul
/fp_mul_comba_17.o src
/mul
/fp_mul_comba_20.o src
/mul
/fp_mul_comba_24.o \
47 src
/mul
/fp_mul_comba_28.o src
/mul
/fp_mul_comba_32.o src
/mul
/fp_mul_comba_3.o src
/mul
/fp_mul_comba_48.o \
48 src
/mul
/fp_mul_comba_4.o src
/mul
/fp_mul_comba_64.o src
/mul
/fp_mul_comba_6.o src
/mul
/fp_mul_comba_7.o \
49 src
/mul
/fp_mul_comba_8.o src
/mul
/fp_mul_comba_9.o src
/mul
/fp_mul_comba.o \
50 src
/mul
/fp_mul_comba_small_set.o src
/mul
/fp_mul_d.o src
/mul
/fp_mulmod.o src
/numtheory
/fp_gcd.o \
51 src
/numtheory
/fp_invmod.o src
/numtheory
/fp_isprime.o src
/numtheory
/fp_isprime_ex.o \
52 src
/numtheory
/fp_lcm.o src
/numtheory
/fp_prime_miller_rabin.o src
/numtheory
/fp_prime_random_ex.o \
53 src
/sqr
/fp_sqr.o src
/sqr
/fp_sqr_comba_12.o src
/sqr
/fp_sqr_comba_17.o src
/sqr
/fp_sqr_comba_20.o \
54 src
/sqr
/fp_sqr_comba_24.o src
/sqr
/fp_sqr_comba_28.o src
/sqr
/fp_sqr_comba_32.o src
/sqr
/fp_sqr_comba_3.o \
55 src
/sqr
/fp_sqr_comba_48.o src
/sqr
/fp_sqr_comba_4.o src
/sqr
/fp_sqr_comba_64.o src
/sqr
/fp_sqr_comba_6.o \
56 src
/sqr
/fp_sqr_comba_7.o src
/sqr
/fp_sqr_comba_8.o src
/sqr
/fp_sqr_comba_9.o src
/sqr
/fp_sqr_comba.o \
57 src
/sqr
/fp_sqr_comba_generic.o src
/sqr
/fp_sqr_comba_small_set.o src
/sqr
/fp_sqrmod.o
59 HEADERS_PUB
:=src
/headers
/tfm.h
60 HEADERS
=src
/headers
/tfm_private.h
$(HEADERS_PUB
)
64 $(OBJECTS
): $(HEADERS
)
66 $(LIBNAME
): $(OBJECTS
)
67 $(AR
) $(ARFLAGS
) $@
$(OBJECTS
)
70 install: .common_install
72 uninstall: .common_uninstall
75 test: $(LIBNAME
) demo
/test.o
76 $(CC
) $(CFLAGS
) demo
/test.o
$(LIB_PRE
) $(LIBNAME
) $(LIB_POST
) $(PROF
) -o
test
78 test_standalone
: CFLAGS
+=-DTFM_DEMO_TEST_VS_MTEST
=0
80 .PHONY
: test_standalone
81 test_standalone
: $(LIBNAME
) demo
/test.o
82 $(CC
) $(CFLAGS
) demo
/test.o
$(LIB_PRE
) $(LIBNAME
) $(LIB_POST
) $(PROF
) -o
test
85 .
/mtest
/mtest
-15 | .
/test
87 timing
: $(LIBNAME
) demo
/timing.o
88 $(CC
) $(CFLAGS
) demo
/timing.o
$(LIBNAME
) $(PROF
) -o timing
91 CC
="$(CC)" CROSS_COMPILE
="${CROSS_COMPILE} CFLAGS="${CFLAGS} -fprofile-generate
" MAKE=${MAKE} ${MAKE} timing
93 rm -f `find . -type f -name "*.o
" | xargs`
94 rm -f `find . -type f -name "*.a
" | xargs`
96 CC=$(CC) CROSS_COMPILE="${CROSS_COMPILE} CFLAGS
="${CFLAGS} -fprofile-use" MAKE
=${MAKE} ${MAKE} timing
98 # target that pre-processes all coverage data
100 lcov
--capture
--no-external
--directory src
-q
--output-file coverage_std.
info
102 # target that removes all coverage output
104 rm -f
`find . -type f -name "*.info" | xargs`
107 # generates html output from all coverage_*.info files
109 lcov
`find -name 'coverage_*.info' -exec echo -n " -a {}" \;` -o coverage.
info -q
2>/dev
/null
110 genhtml coverage.
info --output-directory coverage
-q
112 # combines all necessary steps to create the coverage from a single testrun with e.g.
114 $(MAKE
) cleancov-clean
115 $(MAKE
) lcov-single-create
119 #make the code coverage of the library
120 coverage
: CFLAGS
+= -fprofile-arcs
-ftest-coverage
121 coverage
: LDFLAGS
+= -lgcov
122 coverage
: LIB_PRE
= -Wl
,--whole-archive
123 coverage
: LIB_POST
= -Wl
,--no-whole-archive
128 stest
: $(LIBNAME
) demo
/stest.o
129 $(CC
) $(CFLAGS
) demo
/stest.o
$(LIBNAME
) -o stest
131 rsatest
: $(LIBNAME
) demo
/rsa.o
132 $(CC
) $(CFLAGS
) demo
/rsa.o
$(LIBNAME
) -o rsatest