2004-10-29 22:07:18 +00:00
|
|
|
#Makefile for GCC
|
|
|
|
#
|
|
|
|
#Tom St Denis
|
2015-12-12 19:19:15 +00:00
|
|
|
|
|
|
|
#default files to install
|
|
|
|
ifndef LIBNAME
|
|
|
|
LIBNAME=libtommath.la
|
|
|
|
endif
|
2004-10-29 22:07:18 +00:00
|
|
|
|
2017-08-25 10:59:22 +00:00
|
|
|
include makefile_include.mk
|
2014-12-14 18:43:50 +00:00
|
|
|
|
2017-08-29 08:29:58 +00:00
|
|
|
|
2018-05-19 14:11:49 +00:00
|
|
|
ifndef LIBTOOL
|
2017-08-29 08:29:58 +00:00
|
|
|
ifeq ($(PLATFORM), Darwin)
|
2018-05-19 14:11:49 +00:00
|
|
|
LIBTOOL:=glibtool
|
2017-08-29 08:29:58 +00:00
|
|
|
else
|
2018-05-19 14:11:49 +00:00
|
|
|
LIBTOOL:=libtool
|
2017-08-29 08:29:58 +00:00
|
|
|
endif
|
|
|
|
endif
|
2018-05-19 14:11:49 +00:00
|
|
|
LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC)
|
2019-01-31 13:12:03 +00:00
|
|
|
LTLINK = $(LIBTOOL) --mode=link --tag=CC $(CC)
|
2005-08-01 16:37:28 +00:00
|
|
|
|
2015-12-12 19:19:15 +00:00
|
|
|
LCOV_ARGS=--directory .libs --directory .
|
2004-10-29 22:07:18 +00:00
|
|
|
|
2014-10-13 13:49:23 +00:00
|
|
|
#START_INS
|
2019-10-19 14:24:39 +00:00
|
|
|
OBJECTS=mp_2expt.o mp_abs.o mp_add.o mp_add_d.o mp_addmod.o mp_and.o mp_clamp.o mp_clear.o mp_clear_multi.o \
|
|
|
|
mp_cmp.o mp_cmp_d.o mp_cmp_mag.o mp_cnt_lsb.o mp_complement.o mp_copy.o mp_count_bits.o mp_cutoffs.o \
|
2019-10-24 15:33:38 +00:00
|
|
|
mp_div.o mp_div_2.o mp_div_2d.o mp_div_3.o mp_div_d.o mp_dr_is_modulus.o mp_dr_reduce.o mp_dr_setup.o \
|
|
|
|
mp_error_to_string.o mp_exch.o mp_expt_u32.o mp_exptmod.o mp_exteuclid.o mp_fread.o mp_from_sbin.o \
|
|
|
|
mp_from_ubin.o mp_fwrite.o mp_gcd.o mp_get_double.o mp_get_i32.o mp_get_i64.o mp_get_l.o mp_get_ll.o \
|
|
|
|
mp_get_mag_u32.o mp_get_mag_u64.o mp_get_mag_ul.o mp_get_mag_ull.o mp_grow.o mp_init.o mp_init_copy.o \
|
|
|
|
mp_init_i32.o mp_init_i64.o mp_init_l.o mp_init_ll.o mp_init_multi.o mp_init_set.o mp_init_size.o \
|
|
|
|
mp_init_u32.o mp_init_u64.o mp_init_ul.o mp_init_ull.o mp_invmod.o mp_is_square.o mp_kronecker.o mp_lcm.o \
|
apply a series of simplifications
* this is the final commit of a series of simplifications,
containing only the regenerated files and the explanation in the
commit message
* This is in preparation of the size_t change/a potential representation change to use
full width as in tfm, if a (partial?) merge with tfm is desired.
These changes have their own merits however.
* Remove obfuscating tmpx digit pointers (fewer variables, it is more obvious what is
being manipulated)
* Reduce scope of variables where possible
* Stricter error handling/checking (for example handling in karatsuba
was broken)
* In some cases the result was written even in the case of an error
(e.g. s_mp_is_divisible). This will hide bugs, since the user should
check the return value (enforced by MP_WUR). Furthermore if the user
accesses the non-initialized result, valgrind will complain for
example. Global static analysis like coverity will also detect the issue.
Therefore this improves the status quo.
* Introduce generic, private MP_EXCH macro which can be used to swap values.
* Introduce s_mp_copy_digs/s_mp_zero_digs/s_mp_zero_buf
* Some control flow simplifications, e.g, loops instead of goto
* Renamings of variables/labels for consistency
* Renamings of mul/sqr functions for more consistency, e.g., comba
instead of fast suffix
* I didn't read through some very complex functions.
They are so complex, I am too afraid and lazy to touch them.
Maybe someone resposible wants to simplify them if possible. Hint... Hint...
- mp_prime_strong_lucas_selfridge.c
- s_mp_exptmod.c
- s_mp_exptmod_fast.c
2019-10-29 19:26:50 +00:00
|
|
|
mp_log_u32.o mp_lshd.o mp_mod.o mp_mod_2d.o mp_montgomery_calc_normalization.o mp_montgomery_reduce.o \
|
|
|
|
mp_montgomery_setup.o mp_mul.o mp_mul_2.o mp_mul_2d.o mp_mul_d.o mp_mulmod.o mp_neg.o mp_or.o mp_pack.o \
|
|
|
|
mp_pack_count.o mp_prime_fermat.o mp_prime_frobenius_underwood.o mp_prime_is_prime.o \
|
|
|
|
mp_prime_miller_rabin.o mp_prime_next_prime.o mp_prime_rabin_miller_trials.o mp_prime_rand.o \
|
|
|
|
mp_prime_strong_lucas_selfridge.o mp_prime_tab.o mp_radix_size.o mp_radix_smap.o mp_rand.o \
|
|
|
|
mp_read_radix.o mp_reduce.o mp_reduce_2k.o mp_reduce_2k_l.o mp_reduce_2k_setup.o mp_reduce_2k_setup_l.o \
|
|
|
|
mp_reduce_is_2k.o mp_reduce_is_2k_l.o mp_reduce_setup.o mp_root_u32.o mp_rshd.o mp_sbin_size.o mp_set.o \
|
|
|
|
mp_set_double.o mp_set_i32.o mp_set_i64.o mp_set_l.o mp_set_ll.o mp_set_u32.o mp_set_u64.o mp_set_ul.o \
|
|
|
|
mp_set_ull.o mp_shrink.o mp_signed_rsh.o mp_sqr.o mp_sqrmod.o mp_sqrt.o mp_sqrtmod_prime.o mp_sub.o \
|
|
|
|
mp_sub_d.o mp_submod.o mp_to_radix.o mp_to_sbin.o mp_to_ubin.o mp_ubin_size.o mp_unpack.o mp_xor.o mp_zero.o \
|
|
|
|
s_mp_add.o s_mp_copy_digs.o s_mp_div_recursive.o s_mp_div_school.o s_mp_div_small.o s_mp_exptmod.o \
|
|
|
|
s_mp_exptmod_fast.o s_mp_get_bit.o s_mp_invmod.o s_mp_invmod_odd.o s_mp_log.o s_mp_log_d.o s_mp_log_pow2.o \
|
|
|
|
s_mp_montgomery_reduce_comba.o s_mp_mul.o s_mp_mul_balance.o s_mp_mul_comba.o s_mp_mul_high.o \
|
|
|
|
s_mp_mul_high_comba.o s_mp_mul_karatsuba.o s_mp_mul_toom.o s_mp_prime_is_divisible.o s_mp_rand_jenkins.o \
|
|
|
|
s_mp_rand_platform.o s_mp_sqr.o s_mp_sqr_comba.o s_mp_sqr_karatsuba.o s_mp_sqr_toom.o s_mp_sub.o \
|
|
|
|
s_mp_zero_buf.o s_mp_zero_digs.o
|
2005-02-12 08:40:15 +00:00
|
|
|
|
2014-10-13 13:49:23 +00:00
|
|
|
#END_INS
|
|
|
|
|
2005-11-18 05:16:19 +00:00
|
|
|
objs: $(OBJECTS)
|
|
|
|
|
2019-09-05 14:58:39 +00:00
|
|
|
.c.o: $(HEADERS)
|
2019-09-06 14:10:44 +00:00
|
|
|
$(LTCOMPILE) $(LTM_CFLAGS) $(LTM_LDFLAGS) -o $@ -c $<
|
2013-04-18 14:36:43 +00:00
|
|
|
|
2017-08-25 11:00:34 +00:00
|
|
|
LOBJECTS = $(OBJECTS:.o=.lo)
|
|
|
|
|
2005-08-01 16:37:28 +00:00
|
|
|
$(LIBNAME): $(OBJECTS)
|
2019-09-06 14:10:44 +00:00
|
|
|
$(LTLINK) $(LTM_LDFLAGS) $(LOBJECTS) -o $(LIBNAME) -rpath $(LIBPATH) -version-info $(VERSION_SO) $(LTM_LIBTOOLFLAGS)
|
2005-11-18 05:16:19 +00:00
|
|
|
|
|
|
|
install: $(LIBNAME)
|
2017-08-28 13:56:12 +00:00
|
|
|
install -d $(DESTDIR)$(LIBPATH)
|
|
|
|
install -d $(DESTDIR)$(INCPATH)
|
2018-05-19 14:11:49 +00:00
|
|
|
$(LIBTOOL) --mode=install install -m 644 $(LIBNAME) $(DESTDIR)$(LIBPATH)/$(LIBNAME)
|
2017-08-28 13:56:12 +00:00
|
|
|
install -m 644 $(HEADERS_PUB) $(DESTDIR)$(INCPATH)
|
2017-08-28 15:02:30 +00:00
|
|
|
sed -e 's,^prefix=.*,prefix=$(PREFIX),' -e 's,^Version:.*,Version: $(VERSION_PC),' libtommath.pc.in > libtommath.pc
|
2017-08-28 13:56:12 +00:00
|
|
|
install -d $(DESTDIR)$(LIBPATH)/pkgconfig
|
|
|
|
install -m 644 libtommath.pc $(DESTDIR)$(LIBPATH)/pkgconfig/
|
2004-10-29 22:07:18 +00:00
|
|
|
|
2017-08-28 13:56:30 +00:00
|
|
|
uninstall:
|
2018-05-19 14:11:49 +00:00
|
|
|
$(LIBTOOL) --mode=uninstall rm $(DESTDIR)$(LIBPATH)/$(LIBNAME)
|
2017-08-28 13:56:30 +00:00
|
|
|
rm $(HEADERS_PUB:%=$(DESTDIR)$(INCPATH)/%)
|
|
|
|
rm $(DESTDIR)$(LIBPATH)/pkgconfig/libtommath.pc
|
|
|
|
|
2019-09-10 14:05:27 +00:00
|
|
|
test mtest_opponent: demo/shared.o $(LIBNAME) | demo/test.o demo/mtest_opponent.o
|
|
|
|
$(LTLINK) $(LTM_LDFLAGS) demo/$@.o $^ -o $@
|
2014-09-02 00:14:38 +00:00
|
|
|
|
2019-01-23 09:06:35 +00:00
|
|
|
.PHONY: mtest
|
2014-09-28 11:12:10 +00:00
|
|
|
mtest:
|
2019-09-06 14:10:44 +00:00
|
|
|
cd mtest ; $(CC) $(LTM_CFLAGS) -O0 mtest.c $(LTM_LDFLAGS) -o mtest
|
2013-04-18 14:36:43 +00:00
|
|
|
|
2018-02-02 09:09:08 +00:00
|
|
|
timing: $(LIBNAME) demo/timing.c
|
2019-09-06 14:10:44 +00:00
|
|
|
$(LTLINK) $(LTM_CFLAGS) $(LTM_LDFLAGS) -DTIMER demo/timing.c $(LIBNAME) -o timing
|
2019-05-04 16:57:07 +00:00
|
|
|
|
|
|
|
tune: $(LIBNAME)
|
2019-09-06 14:10:44 +00:00
|
|
|
$(LTCOMPILE) $(LTM_CFLAGS) -c etc/tune.c -o etc/tune.o
|
|
|
|
$(LTLINK) $(LTM_LDFLAGS) -o etc/tune etc/tune.o $(LIBNAME)
|
2019-05-06 20:38:16 +00:00
|
|
|
cd etc/; /bin/sh tune_it.sh; cd ..
|
2019-05-04 16:57:07 +00:00
|
|
|
$(MAKE) -f makefile.shared
|