0dfa9da5a6
These headers are used for configuration during build time. Therefore they shouldn't be exposed as part of the public API.
106 lines
4.8 KiB
Plaintext
106 lines
4.8 KiB
Plaintext
# MAKEFILE that is intended to be compatible with any kind of make (GNU make, BSD make, ...)
|
|
# works on: Linux, *BSD, Cygwin, AIX, HP-UX and hopefully other UNIX systems
|
|
#
|
|
# Please do not use here neither any special make syntax nor any unusual tools/utilities!
|
|
|
|
# using ICC compiler:
|
|
# make -f makefile.unix CC=icc CFLAGS="-O3 -xP -ip"
|
|
|
|
# using Borland C++Builder:
|
|
# make -f makefile.unix CC=bcc32
|
|
|
|
#The following can be overridden from command line e.g. "make -f makefile.unix CC=gcc ARFLAGS=rcs"
|
|
DESTDIR =
|
|
PREFIX = /usr/local
|
|
LIBPATH = $(PREFIX)/lib
|
|
INCPATH = $(PREFIX)/include
|
|
CC = cc
|
|
AR = ar
|
|
ARFLAGS = r
|
|
RANLIB = ranlib
|
|
CFLAGS = -O2
|
|
LDFLAGS =
|
|
|
|
VERSION = 1.1.0
|
|
|
|
#Compilation flags
|
|
LTM_CFLAGS = -I. $(CFLAGS)
|
|
LTM_LDFLAGS = $(LDFLAGS)
|
|
|
|
#Library to be created (this makefile builds only static library)
|
|
LIBMAIN_S = libtommath.a
|
|
|
|
OBJECTS=bn_cutoffs.o bn_deprecated.o bn_mp_2expt.o bn_mp_abs.o bn_mp_add.o bn_mp_add_d.o bn_mp_addmod.o \
|
|
bn_mp_and.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o bn_mp_cmp_d.o bn_mp_cmp_mag.o \
|
|
bn_mp_cnt_lsb.o bn_mp_complement.o bn_mp_copy.o bn_mp_count_bits.o bn_mp_decr.o bn_mp_div.o bn_mp_div_2.o \
|
|
bn_mp_div_2d.o bn_mp_div_3.o bn_mp_div_d.o bn_mp_dr_is_modulus.o bn_mp_dr_reduce.o bn_mp_dr_setup.o \
|
|
bn_mp_error_to_string.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_d.o bn_mp_expt_d_ex.o bn_mp_exptmod.o \
|
|
bn_mp_exteuclid.o bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_double.o bn_mp_get_int.o \
|
|
bn_mp_get_long.o bn_mp_get_long_long.o bn_mp_grow.o bn_mp_ilogb.o bn_mp_import.o bn_mp_incr.o bn_mp_init.o \
|
|
bn_mp_init_copy.o bn_mp_init_multi.o bn_mp_init_set.o bn_mp_init_set_int.o bn_mp_init_size.o \
|
|
bn_mp_invmod.o bn_mp_is_square.o bn_mp_iseven.o bn_mp_isodd.o bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o \
|
|
bn_mp_mod.o bn_mp_mod_2d.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o \
|
|
bn_mp_montgomery_setup.o bn_mp_mul.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o \
|
|
bn_mp_n_root.o bn_mp_n_root_ex.o bn_mp_neg.o bn_mp_or.o bn_mp_prime_fermat.o \
|
|
bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_divisible.o bn_mp_prime_is_prime.o \
|
|
bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o bn_mp_prime_rabin_miller_trials.o \
|
|
bn_mp_prime_rand.o bn_mp_prime_strong_lucas_selfridge.o bn_mp_radix_size.o bn_mp_radix_smap.o \
|
|
bn_mp_rand.o bn_mp_read_radix.o bn_mp_read_signed_bin.o bn_mp_read_unsigned_bin.o bn_mp_reduce.o \
|
|
bn_mp_reduce_2k.o bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o bn_mp_reduce_2k_setup_l.o \
|
|
bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_rshd.o bn_mp_set.o \
|
|
bn_mp_set_double.o bn_mp_set_int.o bn_mp_set_long.o bn_mp_set_long_long.o bn_mp_shrink.o \
|
|
bn_mp_signed_bin_size.o bn_mp_sqr.o bn_mp_sqrmod.o bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o \
|
|
bn_mp_sub_d.o bn_mp_submod.o bn_mp_tc_and.o bn_mp_tc_div_2d.o bn_mp_tc_or.o bn_mp_tc_xor.o \
|
|
bn_mp_to_signed_bin.o bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin.o bn_mp_to_unsigned_bin_n.o \
|
|
bn_mp_toradix.o bn_mp_toradix_n.o bn_mp_unsigned_bin_size.o bn_mp_xor.o bn_mp_zero.o bn_prime_tab.o \
|
|
bn_s_mp_add.o bn_s_mp_balance_mul.o bn_s_mp_exptmod.o bn_s_mp_exptmod_fast.o bn_s_mp_get_bit.o \
|
|
bn_s_mp_invmod_fast.o bn_s_mp_invmod_slow.o bn_s_mp_karatsuba_mul.o bn_s_mp_karatsuba_sqr.o \
|
|
bn_s_mp_montgomery_reduce_fast.o bn_s_mp_mul_digs.o bn_s_mp_mul_digs_fast.o bn_s_mp_mul_high_digs.o \
|
|
bn_s_mp_mul_high_digs_fast.o bn_s_mp_rand_jenkins.o bn_s_mp_rand_platform.o bn_s_mp_reverse.o \
|
|
bn_s_mp_sqr.o bn_s_mp_sqr_fast.o bn_s_mp_sub.o bn_s_mp_toom_mul.o bn_s_mp_toom_sqr.o
|
|
|
|
HEADERS_PUB=tommath.h
|
|
HEADERS=tommath_private.h tommath_class.h tommath_superclass.h $(HEADERS_PUB)
|
|
|
|
#The default rule for make builds the libtommath.a library (static)
|
|
default: $(LIBMAIN_S)
|
|
|
|
#Dependencies on *.h
|
|
$(OBJECTS): $(HEADERS)
|
|
|
|
#This is necessary for compatibility with BSD make (namely on OpenBSD)
|
|
.SUFFIXES: .o .c
|
|
.c.o:
|
|
$(CC) $(LTM_CFLAGS) -c $< -o $@
|
|
|
|
#Create libtommath.a
|
|
$(LIBMAIN_S): $(OBJECTS)
|
|
$(AR) $(ARFLAGS) $@ $(OBJECTS)
|
|
$(RANLIB) $@
|
|
|
|
#Build test_standalone suite
|
|
test: demo/main.c demo/opponent.c demo/test.c $(LIBMAIN_S)
|
|
$(CC) $(LTM_CFLAGS) $(LTM_LDFLAGS) $^ -DLTM_DEMO_TEST_VS_MTEST=0 -o $@
|
|
@echo "NOTICE: start the tests by: ./test"
|
|
|
|
test_standalone: test
|
|
|
|
all: $(LIBMAIN_S) test_standalone
|
|
|
|
tune: $(LIBMAIN_S)
|
|
$(MAKE) -C etc tune
|
|
$(MAKE)
|
|
|
|
#NOTE: this makefile works also on cygwin, thus we need to delete *.exe
|
|
clean:
|
|
-@rm -f $(OBJECTS) $(LIBMAIN_S)
|
|
-@rm -f demo/main.o demo/opponent.o demo/test.o test test.exe
|
|
|
|
#Install the library + headers
|
|
install: $(LIBMAIN_S)
|
|
@mkdir -p $(DESTDIR)$(INCPATH) $(DESTDIR)$(LIBPATH)/pkgconfig
|
|
@cp $(LIBMAIN_S) $(DESTDIR)$(LIBPATH)/
|
|
@cp $(HEADERS_PUB) $(DESTDIR)$(INCPATH)/
|
|
@sed -e 's,^prefix=.*,prefix=$(PREFIX),' -e 's,^Version:.*,Version: $(VERSION),' libtommath.pc.in > $(DESTDIR)$(LIBPATH)/pkgconfig/libtommath.pc
|
|
|