From bf45ea66e5b95b993c616bb00f741c6c27771084 Mon Sep 17 00:00:00 2001 From: Karel Miko Date: Tue, 2 May 2017 20:47:00 +0200 Subject: [PATCH] drop the need for testprof/makefile* --- helper.pl | 75 ++++++++++++++++++++++++++--------------------- libtomcrypt.pc.in | 6 ++-- makefile | 63 ++++++++++++++++++++++++--------------- makefile.icc | 46 +++++++++++++++++------------ makefile.include | 23 +++++---------- makefile.mingw | 48 ++++++++++++++++++------------ makefile.msvc | 26 +++++++++------- makefile.shared | 47 +++++++++++++++++------------ 8 files changed, 189 insertions(+), 145 deletions(-) diff --git a/helper.pl b/helper.pl index 95b59a6..b871e67 100755 --- a/helper.pl +++ b/helper.pl @@ -201,24 +201,27 @@ sub prepare_msvc_files_xml { } sub patch_makefile { - my ($in_ref, $out_ref, $data) = @_; - open(my $src, '<', $in_ref); - open(my $dst, '>', $out_ref); - my $l = 0; - while (<$src>) { - if ($_ =~ /START_INS/) { - print {$dst} $_; - $l = 1; - print {$dst} $data; - } elsif ($_ =~ /END_INS/) { - print {$dst} $_; - $l = 0; - } elsif ($l == 0) { - print {$dst} $_; + my ($content, @variables) = @_; + for my $v (@variables) { + if ($v =~ /^([A-Z0-9_]+)\s*=.*$/si) { + my $name = $1; + $content =~ s/\n\Q$name\E\b.*?[^\\]\n/\n$v\n/s; + } + else { + die "patch_makefile failed: " . substr($v, 0, 30) . ".."; } } - close $dst; - close $src; + return $content; +} + +sub version_form_tomcrypt_h { + my $h = read_file(shift); + if ($h =~ /\n#define\s*SCRYPT\s*"([0-9]+)\.([0-9]+)"/s) { + return "VERSION_MAJ=$1", "VERSION_MIN=$2", "VERSION=$1.$2", "VERSION_LT=0:$1$2"; + } + else { + die "#define SCRYPT not found in tomcrypt.h"; + } } sub process_makefiles { @@ -230,12 +233,20 @@ sub process_makefiles { find({ no_chdir => 1, wanted => sub { push @h, $_ if -f $_ && $_ =~ /\.h$/ && $_ !~ /dh_static.h$/ } }, 'src'); my @all = (); find({ no_chdir => 1, wanted => sub { push @all, $_ if -f $_ && $_ =~ /\.(c|h)$/ } }, 'src'); + my @t = qw(); + find({ no_chdir => 1, wanted => sub { push @t, $_ if $_ =~ /(no_prng|test_driver|x86_prof|_tests?).c$/ } }, 'testprof'); my @o = sort ('src/ciphers/aes/aes_enc.o', map { $_ =~ s/\.c$/.o/; $_ } @c); - my $var_o = prepare_variable("OBJECTS", @o); + my $var_o = prepare_variable("OBJECTS", @o); + my $var_h = prepare_variable("HEADERS", (sort @h)); (my $var_obj = $var_o) =~ s/\.o\b/.obj/sg; - my $var_h = prepare_variable("HEADERS", (sort @h, 'testprof/tomcrypt_test.h')); + my $var_to = prepare_variable("TOBJECTS", sort map { $_ =~ s/\.c$/.o/; $_ } @t); + (my $var_tobj = $var_to) =~ s/\.o\b/.obj/sg; + + my @ver_version = version_form_tomcrypt_h("src/headers/tomcrypt.h"); + + # update MSVC project files my $msvc_files = prepare_msvc_files_xml(\@all, qr/tab\.c$/, ['Debug|Win32', 'Release|Win32', 'Debug|x64', 'Release|x64']); for my $m (qw/libtomcrypt_VS2008.vcproj/) { my $old = read_file($m); @@ -248,22 +259,18 @@ sub process_makefiles { } } - my @makefiles = qw( makefile makefile.icc makefile.shared makefile.unix makefile.mingw makefile.msvc ); - for my $m (@makefiles) { + # update OBJECTS + HEADERS in makefile* + for my $m (qw/ makefile makefile.icc makefile.shared makefile.unix makefile.mingw makefile.msvc makefile.include /) { my $old = read_file($m); - my $new; - if ($m eq 'makefile.msvc') { - patch_makefile(\$old, \$new, "$var_obj\n\n$var_h\n\n"); - } - else { - patch_makefile(\$old, \$new, "$var_o\n\n$var_h\n\n"); - } + my $new = $m eq 'makefile.msvc' ? patch_makefile($old, $var_obj, $var_h, $var_to, @ver_version) + : patch_makefile($old, $var_o, $var_h, $var_to, @ver_version); if ($old ne $new) { write_file($m, $new) if $write; warn "changed: $m\n"; $changed_count++; } } + if ($write) { return 0; # no failures } @@ -283,13 +290,13 @@ sub die_usage { MARKER } -GetOptions( "check-source" => \my $check_source, - "check-defines" => \my $check_defines, - "check-hashes" => \my $check_hashes, - "check-makefiles" => \my $check_makefiles, - "check-all" => \my $check_all, - "update-makefiles" => \my $update_makefiles, - "help" => \my $help +GetOptions( "s|check-source" => \my $check_source, + "d|check-defines" => \my $check_defines, + "h|check-hashes" => \my $check_hashes, + "m|check-makefiles" => \my $check_makefiles, + "a|check-all" => \my $check_all, + "u|update-makefiles" => \my $update_makefiles, + "h|help" => \my $help ) or die_usage; my $failure; diff --git a/libtomcrypt.pc.in b/libtomcrypt.pc.in index a0e889f..714f060 100644 --- a/libtomcrypt.pc.in +++ b/libtomcrypt.pc.in @@ -1,10 +1,10 @@ -prefix=/usr +prefix=@to-be-replaced@ exec_prefix=${prefix} -libdir=@LIBDIR@ +libdir=${exec_prefix}/lib includedir=${prefix}/include Name: LibTomCrypt Description: public domain open source cryptographic toolkit -Version: 1.17 +Version: @to-be-replaced@ Libs: -L${libdir} -ltomcrypt Cflags: -I${includedir} diff --git a/makefile b/makefile index ea18e67..2206e00 100644 --- a/makefile +++ b/makefile @@ -35,10 +35,8 @@ endif ifndef LIBTEST LIBTEST=libtomcrypt_prof.a endif -LIBTEST_S=$(LIBTEST) -#List of objects to compile. -#START_INS +# List of objects to compile (all goes to libtomcrypt.a) OBJECTS=src/ciphers/aes/aes.o src/ciphers/aes/aes_enc.o src/ciphers/anubis.o src/ciphers/blowfish.o \ src/ciphers/camellia.o src/ciphers/cast5.o src/ciphers/des.o src/ciphers/kasumi.o src/ciphers/khazad.o \ src/ciphers/kseed.o src/ciphers/multi2.o src/ciphers/noekeon.o src/ciphers/rc2.o src/ciphers/rc5.o \ @@ -190,13 +188,20 @@ src/stream/chacha/chacha_keystream.o src/stream/chacha/chacha_setup.o src/stream src/stream/rc4/rc4.o src/stream/rc4/rc4_test.o src/stream/sober128/sober128.o \ src/stream/sober128/sober128_test.o +# List of test objects to compile (all goes to libtomcrypt_prof.a) +TOBJECTS=testprof/base64_test.o testprof/cipher_hash_test.o testprof/der_tests.o testprof/dh_test.o \ +testprof/dsa_test.o testprof/ecc_test.o testprof/file_test.o testprof/katja_test.o testprof/mac_test.o \ +testprof/misc_test.o testprof/modes_test.o testprof/multi_test.o testprof/no_prng.o \ +testprof/pkcs_1_eme_test.o testprof/pkcs_1_emsa_test.o testprof/pkcs_1_oaep_test.o \ +testprof/pkcs_1_pss_test.o testprof/pkcs_1_test.o testprof/rotate_test.o testprof/rsa_test.o \ +testprof/store_test.o testprof/test_driver.o testprof/x86_prof.o + +# The following headers will be installed by "make install" HEADERS=src/headers/tomcrypt.h src/headers/tomcrypt_argchk.h src/headers/tomcrypt_cfg.h \ src/headers/tomcrypt_cipher.h src/headers/tomcrypt_custom.h src/headers/tomcrypt_hash.h \ src/headers/tomcrypt_mac.h src/headers/tomcrypt_macros.h src/headers/tomcrypt_math.h \ src/headers/tomcrypt_misc.h src/headers/tomcrypt_pk.h src/headers/tomcrypt_pkcs.h \ -src/headers/tomcrypt_prng.h testprof/tomcrypt_test.h - -#END_INS +src/headers/tomcrypt_prng.h #Files left over from making the crypt.pdf. LEFTOVERS=*.dvi *.log *.aux *.toc *.idx *.ilg *.ind *.out *.lof @@ -223,7 +228,9 @@ src/hashes/sha2/sha256.o: src/hashes/sha2/sha256.c src/hashes/sha2/sha224.c #This rule makes the libtomcrypt library. library: $(LIBNAME) +#Dependencies on *.h $(OBJECTS): $(HEADERS) +$(TOBJECTS): $(HEADERS) testprof/tomcrypt_test.h $(LIBNAME): $(OBJECTS) ifneq ($V,1) @@ -235,22 +242,27 @@ ifneq ($V,1) endif ${silent} $(RANLIB) $@ -.PHONY: testprof/$(LIBTEST) -testprof/$(LIBTEST): - ${silent} CFLAGS="$(CFLAGS)" LIBTEST_S=$(LIBTEST_S) CC="$(CC)" LD="$(LD)" AR="$(AR)" ARFLAGS="$(ARFLAGS)" RANLIB="$(RANLIB)" V="$(V)" $(MAKE) -C testprof +$(LIBTEST): $(TOBJECTS) +ifneq ($V,1) + @echo " * ${AR} $@" +endif + ${silent} $(AR) $(ARFLAGS) $@ $(TOBJECTS) +ifneq ($V,1) + @echo " * ${RANLIB} $@" +endif + ${silent} $(RANLIB) $@ -timing: library testprof/$(LIBTEST) $(TIMINGS) +timing: library $(LIBTEST) $(TIMINGS) ifneq ($V,1) @echo " * ${CC} $@" endif - ${silent} $(CC) $(LDFLAGS) $(TIMINGS) testprof/$(LIBTEST) $(LIB_PRE) $(LIBNAME) $(LIB_POST) $(EXTRALIBS) -o $(TIMING) + ${silent} $(CC) $(LDFLAGS) $(TIMINGS) $(LIBTEST) $(LIB_PRE) $(LIBNAME) $(LIB_POST) $(EXTRALIBS) -o $(TIMING) -.PHONY: test -test: library testprof/$(LIBTEST) $(TESTS) +test: library $(LIBTEST) $(TESTS) ifneq ($V,1) @echo " * ${CC} $@" endif - ${silent} $(CC) $(LDFLAGS) $(TESTS) testprof/$(LIBTEST) $(LIB_PRE) $(LIBNAME) $(LIB_POST) $(EXTRALIBS) -o $(TEST) + ${silent} $(CC) $(LDFLAGS) $(TESTS) $(LIBTEST) $(LIB_PRE) $(LIBNAME) $(LIB_POST) $(EXTRALIBS) -o $(TEST) # build the demos from a template define DEMO_template @@ -277,19 +289,20 @@ install: library docs else install: library endif - install -d $(DESTDIR)$(LIBPATH) - install -d $(DESTDIR)$(INCPATH) - install -d $(DESTDIR)$(DATAPATH) - install -m 644 $(LIBNAME) $(DESTDIR)$(LIBPATH) - install -m 644 $(HEADERS) $(DESTDIR)$(INCPATH) + install -d $(LIBPATH) + install -d $(INCPATH) + install -d $(DATAPATH) + install -m 644 $(LIBNAME) $(LIBPATH) + install -m 644 $(HEADERS) $(INCPATH) ifndef NODOCS - install -m 644 doc/crypt.pdf $(DESTDIR)$(DATAPATH) + install -m 644 doc/crypt.pdf $(DATAPATH) endif -install_test: testprof/$(LIBTEST) - install -d $(DESTDIR)$(LIBPATH) - install -d $(DESTDIR)$(INCPATH) - install -m 644 testprof/$(LIBTEST) $(DESTDIR)$(LIBPATH) +install_test: $(LIBTEST) + install -d $(LIBPATH) + install -d $(INCPATH) + install -m 644 $(LIBTEST) $(LIBPATH) + install -m 644 testprof/tomcrypt_test.h $(INCPATH) install_hooks: for s in `ls hooks/`; do ln -s ../../hooks/$$s .git/hooks/$$s; done @@ -342,6 +355,8 @@ clean: rm -f `find . -type f -name "*.obj" | xargs` rm -f `find . -type f -name "*.lib" | xargs` rm -f `find . -type f -name "*.exe" | xargs` + rm -f `find . -type f -name "*.dll" | xargs` + rm -f `find . -type f -name "*.so" | xargs` rm -f `find . -type f -name "*.gcov" | xargs` rm -f `find . -type f -name "*.gcda" | xargs` rm -f `find . -type f -name "*.gcno" | xargs` diff --git a/makefile.icc b/makefile.icc index 590c075..445069e 100644 --- a/makefile.icc +++ b/makefile.icc @@ -70,7 +70,6 @@ ifndef LIBNAME endif ifndef LIBTEST LIBTEST=libtomcrypt_prof.a - LIBTEST_S=$(LIBTEST) endif HASH=hashsum CRYPT=encrypt @@ -96,8 +95,7 @@ ifndef DATAPATH DATAPATH=/usr/share/doc/libtomcrypt/pdf endif -#List of objects to compile. -#START_INS +# List of objects to compile (all goes to libtomcrypt.a) OBJECTS=src/ciphers/aes/aes.o src/ciphers/aes/aes_enc.o src/ciphers/anubis.o src/ciphers/blowfish.o \ src/ciphers/camellia.o src/ciphers/cast5.o src/ciphers/des.o src/ciphers/kasumi.o src/ciphers/khazad.o \ src/ciphers/kseed.o src/ciphers/multi2.o src/ciphers/noekeon.o src/ciphers/rc2.o src/ciphers/rc5.o \ @@ -249,13 +247,20 @@ src/stream/chacha/chacha_keystream.o src/stream/chacha/chacha_setup.o src/stream src/stream/rc4/rc4.o src/stream/rc4/rc4_test.o src/stream/sober128/sober128.o \ src/stream/sober128/sober128_test.o +# List of test objects to compile (all goes to libtomcrypt_prof.a) +TOBJECTS=testprof/base64_test.o testprof/cipher_hash_test.o testprof/der_tests.o testprof/dh_test.o \ +testprof/dsa_test.o testprof/ecc_test.o testprof/file_test.o testprof/katja_test.o testprof/mac_test.o \ +testprof/misc_test.o testprof/modes_test.o testprof/multi_test.o testprof/no_prng.o \ +testprof/pkcs_1_eme_test.o testprof/pkcs_1_emsa_test.o testprof/pkcs_1_oaep_test.o \ +testprof/pkcs_1_pss_test.o testprof/pkcs_1_test.o testprof/rotate_test.o testprof/rsa_test.o \ +testprof/store_test.o testprof/test_driver.o testprof/x86_prof.o + +# The following headers will be installed by "make install" HEADERS=src/headers/tomcrypt.h src/headers/tomcrypt_argchk.h src/headers/tomcrypt_cfg.h \ src/headers/tomcrypt_cipher.h src/headers/tomcrypt_custom.h src/headers/tomcrypt_hash.h \ src/headers/tomcrypt_mac.h src/headers/tomcrypt_macros.h src/headers/tomcrypt_math.h \ src/headers/tomcrypt_misc.h src/headers/tomcrypt_pk.h src/headers/tomcrypt_pkcs.h \ -src/headers/tomcrypt_prng.h testprof/tomcrypt_test.h - -#END_INS +src/headers/tomcrypt_prng.h #Who do we install as? ifdef INSTALL_USER @@ -297,9 +302,13 @@ src/hashes/sha2/sha256.o: src/hashes/sha2/sha256.c src/hashes/sha2/sha224.c #This rule makes the libtomcrypt library. library: $(LIBNAME) -.PHONY: testprof/$(LIBTEST) -testprof/$(LIBTEST): - cd testprof ; LIBTEST_S=$(LIBTEST) CFLAGS="$(CFLAGS)" CC="$(CC)" AR="$(AR)" $(MAKE) -f makefile.icc +#Dependencies on *.h +$(OBJECTS): $(HEADERS) +$(TOBJECTS): $(HEADERS) testprof/tomcrypt_test.h + +$(LIBTEST): $(TOBJECTS) + $(AR) $(ARFLAGS) $@ $(TOBJECTS) + $(RANLIB) $@ $(LIBNAME): $(OBJECTS) $(AR) $(ARFLAGS) $@ $(OBJECTS) @@ -320,12 +329,11 @@ small: library $(SMALLOBJECTS) tv_gen: library $(TVS) $(CC) $(TVS) $(LIBNAME) $(EXTRALIBS) -o $(TV) -timing: library $(TIMINGS) testprof/$(LIBTEST) - $(CC) $(TIMINGS) testprof/$(LIBTEST) $(LIBNAME) $(EXTRALIBS) -o $(TIMING) +timing: library $(TIMINGS) $(LIBTEST) + $(CC) $(TIMINGS) $(LIBTEST) $(LIBNAME) $(EXTRALIBS) -o $(TIMING) -.PHONY: test -test: library $(TESTS) testprof/$(LIBTEST) - $(CC) $(TESTS) testprof/$(LIBTEST) $(LIBNAME) $(EXTRALIBS) -o $(TEST) +test: library $(TESTS) $(LIBTEST) + $(CC) $(TESTS) $(LIBTEST) $(LIBNAME) $(EXTRALIBS) -o $(TEST) all_test: test tv_gen hashsum crypt small timing @@ -333,11 +341,11 @@ all_test: test tv_gen hashsum crypt small timing #as root in order to have a high enough permission to write to the correct #directories and to set the owner and group to root. install: library - install -d -g $(GROUP) -o $(USER) $(DESTDIR)$(LIBPATH) - install -d -g $(GROUP) -o $(USER) $(DESTDIR)$(INCPATH) - install -g $(GROUP) -o $(USER) $(LIBNAME) $(DESTDIR)$(LIBPATH) - install -g $(GROUP) -o $(USER) $(LIBTEST) $(DESTDIR)$(LIBPATH) - install -g $(GROUP) -o $(USER) $(HEADERS) $(DESTDIR)$(INCPATH) + install -d -g $(GROUP) -o $(USER) $(LIBPATH) + install -d -g $(GROUP) -o $(USER) $(INCPATH) + install -g $(GROUP) -o $(USER) $(LIBNAME) $(LIBPATH) + install -g $(GROUP) -o $(USER) $(LIBTEST) $(LIBPATH) + install -g $(GROUP) -o $(USER) $(HEADERS) $(INCPATH) # $Source$ # $Revision$ diff --git a/makefile.include b/makefile.include index 0e090c0..d1103ac 100644 --- a/makefile.include +++ b/makefile.include @@ -98,22 +98,13 @@ DEMOS=hashsum crypt small tv_gen sizes constants TIMINGS=demos/timing.o TESTS=demos/test.o -#LIBPATH-The directory for libtomcrypt to be installed to. -#INCPATH-The directory to install the header files for libtomcrypt. -#DATAPATH-The directory to install the pdf docs. -ifndef DESTDIR - DESTDIR= -endif - -ifndef LIBPATH - LIBPATH=/usr/lib -endif -ifndef INCPATH - INCPATH=/usr/include -endif -ifndef DATAPATH - DATAPATH=/usr/share/doc/libtomcrypt/pdf -endif +#LIBPATH The directory for libtomcrypt to be installed to. +#INCPATH The directory to install the header files for libtomcrypt. +#DATAPATH The directory to install the pdf docs. +DESTDIR ?= /usr/local +LIBPATH ?= $(DESTDIR)/lib +INCPATH ?= $(DESTDIR)/include +DATAPATH ?= $(DESTDIR)/share/doc/libtomcrypt/pdf #Who do we install as? ifdef INSTALL_USER diff --git a/makefile.mingw b/makefile.mingw index b1eaa2f..67a4ffc 100644 --- a/makefile.mingw +++ b/makefile.mingw @@ -32,8 +32,7 @@ INSTPREFIX=c:\devel-libtom LIBPATH=$(INSTPREFIX)\lib INCPATH=$(INSTPREFIX)\include -#List of objects to compile. -#START_INS +# List of objects to compile (all goes to libtomcrypt.a) OBJECTS=src/ciphers/aes/aes.o src/ciphers/aes/aes_enc.o src/ciphers/anubis.o src/ciphers/blowfish.o \ src/ciphers/camellia.o src/ciphers/cast5.o src/ciphers/des.o src/ciphers/kasumi.o src/ciphers/khazad.o \ src/ciphers/kseed.o src/ciphers/multi2.o src/ciphers/noekeon.o src/ciphers/rc2.o src/ciphers/rc5.o \ @@ -185,13 +184,20 @@ src/stream/chacha/chacha_keystream.o src/stream/chacha/chacha_setup.o src/stream src/stream/rc4/rc4.o src/stream/rc4/rc4_test.o src/stream/sober128/sober128.o \ src/stream/sober128/sober128_test.o +# List of test objects to compile (all goes to libtomcrypt_prof.a) +TOBJECTS=testprof/base64_test.o testprof/cipher_hash_test.o testprof/der_tests.o testprof/dh_test.o \ +testprof/dsa_test.o testprof/ecc_test.o testprof/file_test.o testprof/katja_test.o testprof/mac_test.o \ +testprof/misc_test.o testprof/modes_test.o testprof/multi_test.o testprof/no_prng.o \ +testprof/pkcs_1_eme_test.o testprof/pkcs_1_emsa_test.o testprof/pkcs_1_oaep_test.o \ +testprof/pkcs_1_pss_test.o testprof/pkcs_1_test.o testprof/rotate_test.o testprof/rsa_test.o \ +testprof/store_test.o testprof/test_driver.o testprof/x86_prof.o + +# The following headers will be installed by "make install" HEADERS=src/headers/tomcrypt.h src/headers/tomcrypt_argchk.h src/headers/tomcrypt_cfg.h \ src/headers/tomcrypt_cipher.h src/headers/tomcrypt_custom.h src/headers/tomcrypt_hash.h \ src/headers/tomcrypt_mac.h src/headers/tomcrypt_macros.h src/headers/tomcrypt_math.h \ src/headers/tomcrypt_misc.h src/headers/tomcrypt_pk.h src/headers/tomcrypt_pkcs.h \ -src/headers/tomcrypt_prng.h testprof/tomcrypt_test.h - -#END_INS +src/headers/tomcrypt_prng.h TESTOBJECTS=demos/test.o HASHOBJECTS=demos/hashsum.o @@ -220,9 +226,13 @@ src/hashes/sha2/sha256.o: src/hashes/sha2/sha256.c src/hashes/sha2/sha224.c #This rule makes the libtomcrypt library. library: $(LIBNAME) -.PHONY: testprof/$(LIBTEST) -testprof/$(LIBTEST): - $(MAKE) -C testprof -f makefile.mingw LIBTEST_S=$(LIBTEST) CC=$(CC) LD=$(LD) AR=$(AR) ARFLAGS=$(ARFLAGS) RANLIB=$(RANLIB) +#Dependencies on *.h +$(OBJECTS): $(HEADERS) +$(TOBJECTS): $(HEADERS) testprof/tomcrypt_test.h + +$(LIBTEST): $(TOBJECTS) + $(AR) $(ARFLAGS) $@ $(TOBJECTS) + $(RANLIB) $@ %.o: %.c ${CC} ${CFLAGS} -c $< -o $@ @@ -246,24 +256,24 @@ small: library $(SMALLOBJECTS) tv_gen: library $(TVS) $(CC) $(LDFLAGS) $(TVS) $(LIBNAME) $(EXTRALIBS) -o $(TV) -timing: library testprof/$(LIBTEST) $(TIMINGS) - $(CC) $(LDFLAGS) $(TIMINGS) testprof/$(LIBTEST) $(LIBNAME) $(EXTRALIBS) -o $(TIMING) +timing: library $(LIBTEST) $(TIMINGS) + $(CC) $(LDFLAGS) $(TIMINGS) $(LIBTEST) $(LIBNAME) $(EXTRALIBS) -o $(TIMING) .PHONY: test -test: library testprof/$(LIBTEST) $(TESTS) - $(CC) $(LDFLAGS) $(TESTS) testprof/$(LIBTEST) $(LIBNAME) $(EXTRALIBS) -o $(TEST) +test: library $(LIBTEST) $(TESTS) + $(CC) $(LDFLAGS) $(TESTS) $(LIBTEST) $(LIBNAME) $(EXTRALIBS) -o $(TEST) all_test: test tv_gen hashsum crypt small timing install: library - cmd /c if not exist "$(DESTDIR)$(LIBPATH)" mkdir "$(DESTDIR)$(LIBPATH)" - cmd /c if not exist "$(DESTDIR)$(INCPATH)" mkdir "$(DESTDIR)$(INCPATH)" - copy /Y $(LIBNAME) "$(DESTDIR)$(LIBPATH)" - copy /Y src\headers\tomcrypt*.h "$(DESTDIR)$(INCPATH)" + cmd /c if not exist "$(LIBPATH)" mkdir "$(LIBPATH)" + cmd /c if not exist "$(INCPATH)" mkdir "$(INCPATH)" + copy /Y $(LIBNAME) "$(LIBPATH)" + copy /Y src\headers\tomcrypt*.h "$(INCPATH)" -install_test: testprof/$(LIBTEST) - cmd /c if not exist "$(DESTDIR)$(LIBPATH)" mkdir "$(DESTDIR)$(LIBPATH)" - copy /Y testprof\$(LIBTEST) "$(DESTDIR)$(LIBPATH)" +install_test: $(LIBTEST) + cmd /c if not exist "$(LIBPATH)" mkdir "$(LIBPATH)" + copy /Y testprof\$(LIBTEST) "$(LIBPATH)" clean: cmd /c del /Q /S *.o *.a *.exe diff --git a/makefile.msvc b/makefile.msvc index e4894c7..eae515f 100644 --- a/makefile.msvc +++ b/makefile.msvc @@ -8,7 +8,7 @@ EXTRAINCLUDE=../libtommath CFLAGS = /nologo /Isrc/headers/ /I$(EXTRAINCLUDE) /Itestprof/ /Ox /D_CRT_SECURE_NO_WARNINGS /DUSE_LTM /DLTM_DESC /DLTC_SOURCE /DLTC_NO_PROTOTYPES /W3 $(CF) -#START_INS +# List of objects to compile (all goes to libtomcrypt.lib) OBJECTS=src/ciphers/aes/aes.obj src/ciphers/aes/aes_enc.obj src/ciphers/anubis.obj src/ciphers/blowfish.obj \ src/ciphers/camellia.obj src/ciphers/cast5.obj src/ciphers/des.obj src/ciphers/kasumi.obj src/ciphers/khazad.obj \ src/ciphers/kseed.obj src/ciphers/multi2.obj src/ciphers/noekeon.obj src/ciphers/rc2.obj src/ciphers/rc5.obj \ @@ -160,13 +160,20 @@ src/stream/chacha/chacha_keystream.obj src/stream/chacha/chacha_setup.obj src/st src/stream/rc4/rc4.obj src/stream/rc4/rc4_test.obj src/stream/sober128/sober128.obj \ src/stream/sober128/sober128_test.obj +# List of test objects to compile (all goes to libtomcrypt_prof.lib) +TOBJECTS=testprof/base64_test.o testprof/cipher_hash_test.o testprof/der_tests.o testprof/dh_test.o \ +testprof/dsa_test.o testprof/ecc_test.o testprof/file_test.o testprof/katja_test.o testprof/mac_test.o \ +testprof/misc_test.o testprof/modes_test.o testprof/multi_test.o testprof/no_prng.o \ +testprof/pkcs_1_eme_test.o testprof/pkcs_1_emsa_test.o testprof/pkcs_1_oaep_test.o \ +testprof/pkcs_1_pss_test.o testprof/pkcs_1_test.o testprof/rotate_test.o testprof/rsa_test.o \ +testprof/store_test.o testprof/test_driver.o testprof/x86_prof.o + +# The following headers will be installed by "make install" HEADERS=src/headers/tomcrypt.h src/headers/tomcrypt_argchk.h src/headers/tomcrypt_cfg.h \ src/headers/tomcrypt_cipher.h src/headers/tomcrypt_custom.h src/headers/tomcrypt_hash.h \ src/headers/tomcrypt_mac.h src/headers/tomcrypt_macros.h src/headers/tomcrypt_math.h \ src/headers/tomcrypt_misc.h src/headers/tomcrypt_pk.h src/headers/tomcrypt_pkcs.h \ -src/headers/tomcrypt_prng.h testprof/tomcrypt_test.h - -#END_INS +src/headers/tomcrypt_prng.h default: library @@ -177,11 +184,9 @@ default: library src/ciphers/aes/aes_enc.obj: src/ciphers/aes/aes.c src/ciphers/aes/aes_tab.c $(CC) $(CFLAGS) /DENCRYPT_ONLY /c src/ciphers/aes/aes.c /Fosrc/ciphers/aes/aes_enc.obj -library: $(OBJECTS) +library: $(OBJECTS) $(TOBJECTS) lib /out:tomcrypt.lib $(OBJECTS) - cd testprof - nmake -f makefile.msvc - cd .. + lib /out:tomcrypt_prof.lib $(TOBJECTS) tv_gen: demos/tv_gen.c library cl $(CFLAGS) demos/tv_gen.c tomcrypt.lib advapi32.lib $(EXTRALIBS) @@ -189,12 +194,11 @@ tv_gen: demos/tv_gen.c library hashsum: demos/hashsum.c library cl $(CFLAGS) demos/hashsum.c tomcrypt.lib advapi32.lib $(EXTRALIBS) -.PHONY: test test: demos/test.c library - cl $(CFLAGS) demos/test.c testprof/tomcrypt_prof.lib tomcrypt.lib advapi32.lib $(EXTRALIBS) + cl $(CFLAGS) demos/test.c tomcrypt_prof.lib tomcrypt.lib advapi32.lib $(EXTRALIBS) timing: demos/timing.c library - cl $(CFLAGS) demos/timing.c testprof/tomcrypt_prof.lib tomcrypt.lib advapi32.lib $(EXTRALIBS) + cl $(CFLAGS) demos/timing.c tomcrypt_prof.lib tomcrypt.lib advapi32.lib $(EXTRALIBS) all_test: test tv_gen hashsum timing diff --git a/makefile.shared b/makefile.shared index e96a051..3e888c5 100644 --- a/makefile.shared +++ b/makefile.shared @@ -185,11 +185,20 @@ src/stream/chacha/chacha_keystream.o src/stream/chacha/chacha_setup.o src/stream src/stream/rc4/rc4.o src/stream/rc4/rc4_test.o src/stream/sober128/sober128.o \ src/stream/sober128/sober128_test.o +# List of test objects to compile (all goes to libtomcrypt_prof.a) +TOBJECTS=testprof/base64_test.o testprof/cipher_hash_test.o testprof/der_tests.o testprof/dh_test.o \ +testprof/dsa_test.o testprof/ecc_test.o testprof/file_test.o testprof/katja_test.o testprof/mac_test.o \ +testprof/misc_test.o testprof/modes_test.o testprof/multi_test.o testprof/no_prng.o \ +testprof/pkcs_1_eme_test.o testprof/pkcs_1_emsa_test.o testprof/pkcs_1_oaep_test.o \ +testprof/pkcs_1_pss_test.o testprof/pkcs_1_test.o testprof/rotate_test.o testprof/rsa_test.o \ +testprof/store_test.o testprof/test_driver.o testprof/x86_prof.o + +# The following headers will be installed by "make install" HEADERS=src/headers/tomcrypt.h src/headers/tomcrypt_argchk.h src/headers/tomcrypt_cfg.h \ src/headers/tomcrypt_cipher.h src/headers/tomcrypt_custom.h src/headers/tomcrypt_hash.h \ src/headers/tomcrypt_mac.h src/headers/tomcrypt_macros.h src/headers/tomcrypt_math.h \ src/headers/tomcrypt_misc.h src/headers/tomcrypt_pk.h src/headers/tomcrypt_pkcs.h \ -src/headers/tomcrypt_prng.h testprof/tomcrypt_test.h +src/headers/tomcrypt_prng.h #END_INS @@ -198,7 +207,7 @@ default:library #ciphers come in two flavours... enc+dec and enc src/ciphers/aes/aes_enc.o: src/ciphers/aes/aes.c src/ciphers/aes/aes_tab.c - $(LTCOMPILE) $(CFLAGS) $(LDFLAGS) -DENCRYPT_ONLY -c src/ciphers/aes/aes.c -o src/ciphers/aes/aes_enc.o + $(LTCOMPILE) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -DENCRYPT_ONLY -c src/ciphers/aes/aes.c -o src/ciphers/aes/aes_enc.o #These are the rules to make certain object files. src/ciphers/aes/aes.o: src/ciphers/aes/aes.c src/ciphers/aes/aes_tab.c @@ -212,39 +221,39 @@ src/hashes/sha2/sha256.o: src/hashes/sha2/sha256.c src/hashes/sha2/sha224.c #This rule makes the libtomcrypt library. library: $(LIBNAME) -.PHONY: testprof/$(LIBTEST) -testprof/$(LIBTEST): - cd testprof ; CFLAGS="$(CFLAGS)" GROUP=$(GROUP) USER=$(USER) VERSION=$(VERSION_LT) LIBPATH=$(LIBPATH) LIBTEST=$(LIBTEST) LIBTEST_S=$(LIBTEST_S) LT=$(LT) CC="$(CC)" make -f makefile.shared +#Dependencies on *.h +$(OBJECTS): $(HEADERS) +$(TOBJECTS): $(HEADERS) testprof/tomcrypt_test.h .c.o: $(LTCOMPILE) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ -c $< $(LIBNAME): $(OBJECTS) - $(LT) --mode=link --tag=CC $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) `find ./src -type f -name "*.lo"` $(EXTRALIBS) -o $(LIBNAME) -rpath $(LIBPATH) -version-info $(VERSION_LT) + $(LT) --mode=link --tag=CC $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) `find ./src -type f -name "*.lo"` $(EXTRALIBS) -o $@ -rpath $(LIBPATH) -version-info $(VERSION_LT) + +$(LIBTEST): $(TOBJECTS) + $(LT) --mode=link --tag=CC $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) `find ./testprof -type f -name "*.lo"` -o $@ -rpath $(LIBPATH) -version-info $(VERSION_LT) install: $(LIBNAME) - install -d $(DESTDIR)$(LIBPATH) - $(LT) --mode=install install -c libtomcrypt.la $(DESTDIR)$(LIBPATH)/libtomcrypt.la - install -d $(DESTDIR)$(INCPATH) - install -m 644 $(HEADERS) $(DESTDIR)$(INCPATH) - install -d $(DESTDIR)$(LIBPATH)/pkgconfig - sed 's,@LIBDIR@,$(LIBPATH),g' libtomcrypt.pc.in > libtomcrypt.pc - install -m 644 libtomcrypt.pc $(DESTDIR)$(LIBPATH)/pkgconfig/libtomcrypt.pc + install -d $(LIBPATH)/pkgconfig + install -d $(INCPATH) + $(LT) --mode=install install -c $(LIBNAME) $(LIBPATH)/$(LIBNAME) + install -m 644 $(HEADERS) $(INCPATH) + sed -e 's,^prefix=.*,prefix=$(DESTDIR),' -e 's,^Version:.*,Version: $(VERSION),' libtomcrypt.pc.in > $(LIBPATH)/pkgconfig/libtomcrypt.pc + install -m 644 libtomcrypt.pc $(LIBPATH)/pkgconfig/libtomcrypt.pc install_test: testprof/$(LIBTEST) - install -d $(DESTDIR)$(LIBPATH) - install -d $(DESTDIR)$(INCPATH) - cd testprof ; CFLAGS="$(CFLAGS)" VERSION=$(VERSION_LT) LIBPATH=$(LIBPATH) LIBTEST=$(LIBTEST) LIBTEST_S=$(LIBTEST_S) DESTDIR=$(DESTDIR) LT=$(LT) CC=$(CC) make -f makefile.shared install + install -d $(LIBPATH) + install -d $(INCPATH) + install -m 644 testprof/tomcrypt_test.h $(INCPATH) + $(LT) --mode=install install -c $(LIBTEST) $(LIBPATH)/$(LIBTEST) - -.PHONY: test test: library testprof/$(LIBTEST) $(TESTS) $(LT) --mode=link --tag=CC $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(TEST) $(TESTS) testprof/$(LIBTEST) $(LIBNAME) $(EXTRALIBS) timing: library testprof/$(LIBTEST) $(TIMINGS) $(LT) --mode=link --tag=CC $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(TIMING) $(TIMINGS) testprof/$(LIBTEST) $(LIBNAME) $(EXTRALIBS) - # build the demos from a template define DEMO_template $(1): demos/$(1).o library