diff --git a/Makefile b/Makefile index c58ccd127..1730f6d47 100644 --- a/Makefile +++ b/Makefile @@ -4,20 +4,23 @@ PREFIX=mbedtls_ .SILENT: -all: programs tests +.PHONY: all no_test programs lib tests install uninstall clean test check covtest lcov apidoc apidoc_clean -no_test: programs +all: programs tests -programs: lib +no_test: programs + +programs: $(MAKE) -C programs lib: $(MAKE) -C library -tests: lib +tests: $(MAKE) -C tests -install: +ifndef WINDOWS +install: all mkdir -p $(DESTDIR)/include/mbedtls cp -r include/mbedtls $(DESTDIR)/include @@ -46,21 +49,24 @@ uninstall: rm -f $(DESTDIR)/bin/$$o ; \ fi \ done +endif clean: $(MAKE) -C library clean $(MAKE) -C programs clean $(MAKE) -C tests clean +ifndef WINDOWS find . \( -name \*.gcno -o -name \*.gcda -o -name *.info \) -exec rm {} + +endif -check: tests +ifndef WINDOWS +check: $(MAKE) -C tests check -test-ref-configs: - tests/scripts/test-ref-configs.pl +test: check # note: for coverage testing, build with: -# CFLAGS='--coverage' make OFLAGS='-g3 -O0' +# make CFLAGS='--coverage -g3 -O0' covtest: make check programs/test/selftest @@ -82,7 +88,5 @@ apidoc: doxygen doxygen/mbedtls.doxyfile apidoc_clean: - if [ -d apidoc ] ; \ - then \ - rm -rf apidoc ; \ - fi + rm -rf apidoc +endif diff --git a/README.rst b/README.rst index bec0e4b6e..89abefac6 100644 --- a/README.rst +++ b/README.rst @@ -35,7 +35,7 @@ In order to run the tests, enter:: make check -In order to build for a Windows platform, you should use WINDOWS_BUILD=1 if the target is Windows but the build environment is Unix-like (eg when cross-compiling, or compiling from an MSYS shell), and WINDOWS=1 if the build environment is a Windows shell. +In order to build for a Windows platform, you should use WINDOWS_BUILD=1 if the target is Windows but the build environment is Unix-like (eg when cross-compiling, or compiling from an MSYS shell), and WINDOWS=1 if the build environment is a Windows shell (in that case some targets will not be available). Setting the variable SHARED in your environment will build a shared library in addition to the static library. Setting DEBUG gives you a debug build. You can override CFLAGS and LDFLAGS by setting them in your environment or on the make command line; if you do so, essential parts such as -I will still be preserved. Warning options may be overridden separately using WARNING_CFLAGS. diff --git a/library/.gitignore b/library/.gitignore index 54e427671..3a63a63a4 100644 --- a/library/.gitignore +++ b/library/.gitignore @@ -1,4 +1,4 @@ *.o -libmbedtls.* +libmbed* *.sln *.vcxproj diff --git a/library/Makefile b/library/Makefile index 976b1f025..9fd7f8110 100644 --- a/library/Makefile +++ b/library/Makefile @@ -74,37 +74,86 @@ OBJS=$(OBJS_CRYPTO) $(OBJS_X509) $(OBJS_TLS) .SILENT: +.PHONY: all static shared clean + ifndef SHARED all: static else all: shared static endif -static: libmbedtls.a +static: libmbedcrypto.a libmbedx509.a libmbedtls.a -shared: libmbedtls.$(DLEXT) +shared: libmbedcrypto.$(DLEXT) libmbedx509.$(DLEXT) libmbedtls.$(DLEXT) -libmbedtls.a: $(OBJS) +# tls +libmbedtls.a: $(OBJS_TLS) echo " AR $@" - $(AR) rc $@ $(OBJS) + $(AR) rc $@ $(OBJS_TLS) echo " RL $@" $(AR) s $@ -libmbedtls.$(SOEXT): $(OBJS) +libmbedtls.$(SOEXT): $(OBJS_TLS) echo " LD $@" - $(CC) -shared -Wl,-soname,$@ $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS) + $(CC) -shared -Wl,-soname,$@ $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS_TLS) libmbedtls.so: libmbedtls.$(SOEXT) echo " LN $@ -> libmbedtls.$(SOEXT)" ln -sf libmbedtls.$(SOEXT) $@ -libmbedtls.dylib: $(OBJS) +libmbedtls.dylib: $(OBJS_TLS) echo " LD $@" - $(CC) -dynamiclib $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS) + $(CC) -dynamiclib $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS_TLS) -libmbedtls.dll: $(OBJS) +libmbedtls.dll: $(OBJS_TLS) echo " LD $@" - $(CC) -shared -Wl,-soname,$@ -Wl,--out-implib,$@.a -o $@ $(OBJS) -lws2_32 -lwinmm -lgdi32 $(LOCAL_LDFLAGS) $(LDFLAGS) + $(CC) -shared -Wl,-soname,$@ -Wl,--out-implib,$@.a -o $@ $(OBJS_TLS) -lws2_32 -lwinmm -lgdi32 $(LOCAL_LDFLAGS) $(LDFLAGS) + +# x509 +libmbedx509.a: $(OBJS_X509) + echo " AR $@" + $(AR) rc $@ $(OBJS_X509) + echo " RL $@" + $(AR) s $@ + +libmbedx509.$(SOEXT): $(OBJS_X509) + echo " LD $@" + $(CC) -shared -Wl,-soname,$@ $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS_X509) + +libmbedx509.so: libmbedx509.$(SOEXT) + echo " LN $@ -> libmbedx509.$(SOEXT)" + ln -sf libmbedx509.$(SOEXT) $@ + +libmbedx509.dylib: $(OBJS_X509) + echo " LD $@" + $(CC) -dynamiclib $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS_X509) + +libmbedx509.dll: $(OBJS_X509) + echo " LD $@" + $(CC) -shared -Wl,-soname,$@ -Wl,--out-implib,$@.a -o $@ $(OBJS_X509) -lws2_32 -lwinmm -lgdi32 $(LOCAL_LDFLAGS) $(LDFLAGS) + +# crypto +libmbedcrypto.a: $(OBJS_CRYPTO) + echo " AR $@" + $(AR) rc $@ $(OBJS_CRYPTO) + echo " RL $@" + $(AR) s $@ + +libmbedcrypto.$(SOEXT): $(OBJS_CRYPTO) + echo " LD $@" + $(CC) -shared -Wl,-soname,$@ $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS_CRYPTO) + +libmbedcrypto.so: libmbedcrypto.$(SOEXT) + echo " LN $@ -> libmbedcrypto.$(SOEXT)" + ln -sf libmbedcrypto.$(SOEXT) $@ + +libmbedcrypto.dylib: $(OBJS_CRYPTO) + echo " LD $@" + $(CC) -dynamiclib $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS_CRYPTO) + +libmbedcrypto.dll: $(OBJS_CRYPTO) + echo " LD $@" + $(CC) -shared -Wl,-soname,$@ -Wl,--out-implib,$@.a -o $@ $(OBJS_CRYPTO) -lws2_32 -lwinmm -lgdi32 $(LOCAL_LDFLAGS) $(LDFLAGS) .c.o: echo " CC $<" @@ -112,8 +161,7 @@ libmbedtls.dll: $(OBJS) clean: ifndef WINDOWS - rm -f *.o libmbedtls.* -endif -ifdef WINDOWS - del /Q /F *.o libmbedtls.* + rm -f *.o libmbed* +else + del /Q /F *.o libmbed* endif diff --git a/programs/Makefile b/programs/Makefile index abef94ee1..ee78a6537 100644 --- a/programs/Makefile +++ b/programs/Makefile @@ -7,16 +7,22 @@ WARNING_CFLAGS ?= -Wall -W -Wdeclaration-after-statement LDFLAGS ?= LOCAL_CFLAGS = $(WARNING_CFLAGS) -I../include -D_FILE_OFFSET_BITS=64 -LOCAL_LDFLAGS = -L../library -lmbedtls$(SHARED_SUFFIX) +LOCAL_LDFLAGS = -L../library \ + -lmbedcrypto$(SHARED_SUFFIX) \ + -lmbedx509$(SHARED_SUFFIX) \ + -lmbedtls$(SHARED_SUFFIX) + +ifndef SHARED +DEP=../library/libmbedcrypto.a ../library/libmbedx509.a ../library/libmbedtls.a +else +DEP=../library/libmbedcrypto.$(DLEXT) ../library/libmbedx509.$(DLEXT) ../library/libmbedtls.$(DLEXT) +endif ifdef DEBUG LOCAL_CFLAGS += -g3 endif -# -# if we running on Windows build -# for Windows -# +# if we're running on Windows, build for Windows ifdef WINDOWS WINDOWS_BUILD=1 endif @@ -29,6 +35,7 @@ ifdef SHARED SHARED_SUFFIX=.$(DLEXT) endif else +DLEXT=so EXEXT= SHARED_SUFFIX= endif @@ -69,194 +76,198 @@ endif .SILENT: +.PHONY: all clean list + all: $(APPS) -aes/aescrypt2$(EXEXT): aes/aescrypt2.c ../library/libmbedtls.a +$(DEP): + make -C ../library + +aes/aescrypt2$(EXEXT): aes/aescrypt2.c $(DEP) echo " CC aes/aescrypt2.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) aes/aescrypt2.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -aes/crypt_and_hash$(EXEXT): aes/crypt_and_hash.c ../library/libmbedtls.a +aes/crypt_and_hash$(EXEXT): aes/crypt_and_hash.c $(DEP) echo " CC aes/crypt_and_hash.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) aes/crypt_and_hash.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -hash/hello$(EXEXT): hash/hello.c ../library/libmbedtls.a +hash/hello$(EXEXT): hash/hello.c $(DEP) echo " CC hash/hello.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) hash/hello.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -hash/generic_sum$(EXEXT): hash/generic_sum.c ../library/libmbedtls.a +hash/generic_sum$(EXEXT): hash/generic_sum.c $(DEP) echo " CC hash/generic_sum.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) hash/generic_sum.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -pkey/dh_client$(EXEXT): pkey/dh_client.c ../library/libmbedtls.a +pkey/dh_client$(EXEXT): pkey/dh_client.c $(DEP) echo " CC pkey/dh_client.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/dh_client.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -pkey/dh_genprime$(EXEXT): pkey/dh_genprime.c ../library/libmbedtls.a +pkey/dh_genprime$(EXEXT): pkey/dh_genprime.c $(DEP) echo " CC pkey/dh_genprime.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/dh_genprime.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -pkey/dh_server$(EXEXT): pkey/dh_server.c ../library/libmbedtls.a +pkey/dh_server$(EXEXT): pkey/dh_server.c $(DEP) echo " CC pkey/dh_server.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/dh_server.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -pkey/ecdsa$(EXEXT): pkey/ecdsa.c ../library/libmbedtls.a +pkey/ecdsa$(EXEXT): pkey/ecdsa.c $(DEP) echo " CC pkey/ecdsa.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/ecdsa.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -pkey/gen_key$(EXEXT): pkey/gen_key.c ../library/libmbedtls.a +pkey/gen_key$(EXEXT): pkey/gen_key.c $(DEP) echo " CC pkey/gen_key.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/gen_key.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -pkey/key_app$(EXEXT): pkey/key_app.c ../library/libmbedtls.a +pkey/key_app$(EXEXT): pkey/key_app.c $(DEP) echo " CC pkey/key_app.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/key_app.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -pkey/key_app_writer$(EXEXT): pkey/key_app_writer.c ../library/libmbedtls.a +pkey/key_app_writer$(EXEXT): pkey/key_app_writer.c $(DEP) echo " CC pkey/key_app_writer.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/key_app_writer.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -pkey/mpi_demo$(EXEXT): pkey/mpi_demo.c ../library/libmbedtls.a +pkey/mpi_demo$(EXEXT): pkey/mpi_demo.c $(DEP) echo " CC pkey/mpi_demo.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/mpi_demo.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -pkey/pk_decrypt$(EXEXT): pkey/pk_decrypt.c ../library/libmbedtls.a +pkey/pk_decrypt$(EXEXT): pkey/pk_decrypt.c $(DEP) echo " CC pkey/pk_decrypt.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/pk_decrypt.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -pkey/pk_encrypt$(EXEXT): pkey/pk_encrypt.c ../library/libmbedtls.a +pkey/pk_encrypt$(EXEXT): pkey/pk_encrypt.c $(DEP) echo " CC pkey/pk_encrypt.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/pk_encrypt.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -pkey/pk_sign$(EXEXT): pkey/pk_sign.c ../library/libmbedtls.a +pkey/pk_sign$(EXEXT): pkey/pk_sign.c $(DEP) echo " CC pkey/pk_sign.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/pk_sign.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -pkey/pk_verify$(EXEXT): pkey/pk_verify.c ../library/libmbedtls.a +pkey/pk_verify$(EXEXT): pkey/pk_verify.c $(DEP) echo " CC pkey/pk_verify.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/pk_verify.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -pkey/rsa_genkey$(EXEXT): pkey/rsa_genkey.c ../library/libmbedtls.a +pkey/rsa_genkey$(EXEXT): pkey/rsa_genkey.c $(DEP) echo " CC pkey/rsa_genkey.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/rsa_genkey.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -pkey/rsa_sign$(EXEXT): pkey/rsa_sign.c ../library/libmbedtls.a +pkey/rsa_sign$(EXEXT): pkey/rsa_sign.c $(DEP) echo " CC pkey/rsa_sign.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/rsa_sign.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -pkey/rsa_verify$(EXEXT): pkey/rsa_verify.c ../library/libmbedtls.a +pkey/rsa_verify$(EXEXT): pkey/rsa_verify.c $(DEP) echo " CC pkey/rsa_verify.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/rsa_verify.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -pkey/rsa_sign_pss$(EXEXT): pkey/rsa_sign_pss.c ../library/libmbedtls.a +pkey/rsa_sign_pss$(EXEXT): pkey/rsa_sign_pss.c $(DEP) echo " CC pkey/rsa_sign_pss.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/rsa_sign_pss.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -pkey/rsa_verify_pss$(EXEXT): pkey/rsa_verify_pss.c ../library/libmbedtls.a +pkey/rsa_verify_pss$(EXEXT): pkey/rsa_verify_pss.c $(DEP) echo " CC pkey/rsa_verify_pss.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/rsa_verify_pss.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -pkey/rsa_decrypt$(EXEXT): pkey/rsa_decrypt.c ../library/libmbedtls.a +pkey/rsa_decrypt$(EXEXT): pkey/rsa_decrypt.c $(DEP) echo " CC pkey/rsa_decrypt.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/rsa_decrypt.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -pkey/rsa_encrypt$(EXEXT): pkey/rsa_encrypt.c ../library/libmbedtls.a +pkey/rsa_encrypt$(EXEXT): pkey/rsa_encrypt.c $(DEP) echo " CC pkey/rsa_encrypt.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/rsa_encrypt.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -random/gen_entropy$(EXEXT): random/gen_entropy.c ../library/libmbedtls.a +random/gen_entropy$(EXEXT): random/gen_entropy.c $(DEP) echo " CC random/gen_entropy.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) random/gen_entropy.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -random/gen_random_havege$(EXEXT): random/gen_random_havege.c ../library/libmbedtls.a +random/gen_random_havege$(EXEXT): random/gen_random_havege.c $(DEP) echo " CC random/gen_random_havege.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) random/gen_random_havege.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -random/gen_random_ctr_drbg$(EXEXT): random/gen_random_ctr_drbg.c ../library/libmbedtls.a +random/gen_random_ctr_drbg$(EXEXT): random/gen_random_ctr_drbg.c $(DEP) echo " CC random/gen_random_ctr_drbg.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) random/gen_random_ctr_drbg.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -ssl/dtls_client$(EXEXT): ssl/dtls_client.c ../library/libmbedtls.a +ssl/dtls_client$(EXEXT): ssl/dtls_client.c $(DEP) echo " CC ssl/dtls_client.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) ssl/dtls_client.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -ssl/dtls_server$(EXEXT): ssl/dtls_server.c ../library/libmbedtls.a +ssl/dtls_server$(EXEXT): ssl/dtls_server.c $(DEP) echo " CC ssl/dtls_server.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) ssl/dtls_server.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -ssl/ssl_client1$(EXEXT): ssl/ssl_client1.c ../library/libmbedtls.a +ssl/ssl_client1$(EXEXT): ssl/ssl_client1.c $(DEP) echo " CC ssl/ssl_client1.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) ssl/ssl_client1.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -ssl/ssl_client2$(EXEXT): ssl/ssl_client2.c ../library/libmbedtls.a +ssl/ssl_client2$(EXEXT): ssl/ssl_client2.c $(DEP) echo " CC ssl/ssl_client2.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) ssl/ssl_client2.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -ssl/ssl_server$(EXEXT): ssl/ssl_server.c ../library/libmbedtls.a +ssl/ssl_server$(EXEXT): ssl/ssl_server.c $(DEP) echo " CC ssl/ssl_server.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) ssl/ssl_server.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -ssl/ssl_server2$(EXEXT): ssl/ssl_server2.c ../library/libmbedtls.a +ssl/ssl_server2$(EXEXT): ssl/ssl_server2.c $(DEP) echo " CC ssl/ssl_server2.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) ssl/ssl_server2.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -ssl/ssl_fork_server$(EXEXT): ssl/ssl_fork_server.c ../library/libmbedtls.a +ssl/ssl_fork_server$(EXEXT): ssl/ssl_fork_server.c $(DEP) echo " CC ssl/ssl_fork_server.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) ssl/ssl_fork_server.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -ssl/ssl_pthread_server$(EXEXT): ssl/ssl_pthread_server.c ../library/libmbedtls.a +ssl/ssl_pthread_server$(EXEXT): ssl/ssl_pthread_server.c $(DEP) echo " CC ssl/ssl_pthread_server.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) ssl/ssl_pthread_server.c $(LOCAL_LDFLAGS) -lpthread $(LDFLAGS) -o $@ -ssl/ssl_mail_client$(EXEXT): ssl/ssl_mail_client.c ../library/libmbedtls.a +ssl/ssl_mail_client$(EXEXT): ssl/ssl_mail_client.c $(DEP) echo " CC ssl/ssl_mail_client.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) ssl/ssl_mail_client.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -ssl/mini_client$(EXEXT): ssl/mini_client.c ../library/libmbedtls.a +ssl/mini_client$(EXEXT): ssl/mini_client.c $(DEP) echo " CC ssl/mini_client.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) ssl/mini_client.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -test/ssl_cert_test$(EXEXT): test/ssl_cert_test.c ../library/libmbedtls.a +test/ssl_cert_test$(EXEXT): test/ssl_cert_test.c $(DEP) echo " CC test/ssl_cert_test.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) test/ssl_cert_test.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -test/benchmark$(EXEXT): test/benchmark.c ../library/libmbedtls.a +test/benchmark$(EXEXT): test/benchmark.c $(DEP) echo " CC test/benchmark.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) test/benchmark.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -test/selftest$(EXEXT): test/selftest.c ../library/libmbedtls.a +test/selftest$(EXEXT): test/selftest.c $(DEP) echo " CC test/selftest.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) test/selftest.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -test/udp_proxy$(EXEXT): test/udp_proxy.c ../library/libmbedtls.a +test/udp_proxy$(EXEXT): test/udp_proxy.c $(DEP) echo " CC test/udp_proxy.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) test/udp_proxy.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -util/pem2der$(EXEXT): util/pem2der.c ../library/libmbedtls.a +util/pem2der$(EXEXT): util/pem2der.c $(DEP) echo " CC util/pem2der.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) util/pem2der.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -util/strerror$(EXEXT): util/strerror.c ../library/libmbedtls.a +util/strerror$(EXEXT): util/strerror.c $(DEP) echo " CC util/strerror.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) util/strerror.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -x509/cert_app$(EXEXT): x509/cert_app.c ../library/libmbedtls.a +x509/cert_app$(EXEXT): x509/cert_app.c $(DEP) echo " CC x509/cert_app.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) x509/cert_app.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -x509/crl_app$(EXEXT): x509/crl_app.c ../library/libmbedtls.a +x509/crl_app$(EXEXT): x509/crl_app.c $(DEP) echo " CC x509/crl_app.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) x509/crl_app.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -x509/cert_req$(EXEXT): x509/cert_req.c ../library/libmbedtls.a +x509/cert_req$(EXEXT): x509/cert_req.c $(DEP) echo " CC x509/cert_req.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) x509/cert_req.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ clean: ifndef WINDOWS rm -f $(APPS) -endif -ifdef WINDOWS - del /S /Q /F *.o *.exe +else + del /Q /F *.c *.exe endif list: diff --git a/tests/Makefile b/tests/Makefile index a33f8a749..b53a7c32b 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -7,25 +7,24 @@ WARNING_CFLAGS ?= -Wall -W -Wdeclaration-after-statement -Wno-unused-function -W LDFLAGS ?= LOCAL_CFLAGS = $(WARNING_CFLAGS) -I../include -D_FILE_OFFSET_BITS=64 -LOCAL_LDFLAGS = -L../library -lmbedtls$(SHARED_SUFFIX) -DLEXT=so +LOCAL_LDFLAGS = -L../library \ + -lmbedcrypto$(SHARED_SUFFIX) \ + -lmbedx509$(SHARED_SUFFIX) \ + -lmbedtls$(SHARED_SUFFIX) ifndef SHARED -DEP=../library/libmbedtls.a +DEP=../library/libmbedcrypto.a ../library/libmbedx509.a ../library/libmbedtls.a CHECK_PRELOAD= else -DEP=../library/libmbedtls.$(DLEXT) -CHECK_PRELOAD= LD_PRELOAD=../library/libmbedtls.$(DLEXT) +DEP=../library/libmbedcrypto.$(DLEXT) ../library/libmbedx509.$(DLEXT) ../library/libmbedtls.$(DLEXT) +CHECK_PRELOAD= LD_PRELOAD=$(DEP) endif ifdef DEBUG LOCAL_CFLAGS += -g3 endif -# -# if we running on Windows build -# for Windows -# +# if we're running on Windows, build for Windows ifdef WINDOWS WINDOWS_BUILD=1 endif @@ -38,6 +37,7 @@ ifdef SHARED SHARED_SUFFIX=.$(DLEXT) endif else +DLEXT=so EXEXT= SHARED_SUFFIX= endif @@ -89,8 +89,13 @@ APPS = test_suite_aes.ecb$(EXEXT) test_suite_aes.cbc$(EXEXT) \ .SILENT: +.PHONY: all check test clean + all: $(APPS) +$(DEP): + make -C ../library + test_suite_aes.ecb.c : suites/test_suite_aes.function suites/test_suite_aes.ecb.data scripts/generate_code.pl suites/helpers.function suites/main_test.function echo " Generate $@" scripts/generate_code.pl suites test_suite_aes test_suite_aes.ecb @@ -192,243 +197,242 @@ test_suite_hmac_drbg.pr.c : suites/test_suite_hmac_drbg.function suites/test_sui scripts/generate_code.pl suites $* $* test_suite_aes.ecb$(EXEXT): test_suite_aes.ecb.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_aes.cbc$(EXEXT): test_suite_aes.cbc.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_aes.cfb$(EXEXT): test_suite_aes.cfb.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_aes.rest$(EXEXT): test_suite_aes.rest.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_arc4$(EXEXT): test_suite_arc4.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_asn1write$(EXEXT): test_suite_asn1write.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_base64$(EXEXT): test_suite_base64.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_blowfish$(EXEXT): test_suite_blowfish.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_camellia$(EXEXT): test_suite_camellia.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_ccm$(EXEXT): test_suite_ccm.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_cipher.aes$(EXEXT): test_suite_cipher.aes.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_cipher.arc4$(EXEXT): test_suite_cipher.arc4.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_cipher.ccm$(EXEXT): test_suite_cipher.ccm.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_cipher.gcm$(EXEXT): test_suite_cipher.gcm.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_cipher.blowfish$(EXEXT): test_suite_cipher.blowfish.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_cipher.camellia$(EXEXT): test_suite_cipher.camellia.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_cipher.des$(EXEXT): test_suite_cipher.des.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_cipher.null$(EXEXT): test_suite_cipher.null.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_cipher.padding$(EXEXT): test_suite_cipher.padding.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_ctr_drbg$(EXEXT): test_suite_ctr_drbg.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_des$(EXEXT): test_suite_des.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_dhm$(EXEXT): test_suite_dhm.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_ecdh$(EXEXT): test_suite_ecdh.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_ecdsa$(EXEXT): test_suite_ecdsa.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_ecp$(EXEXT): test_suite_ecp.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_entropy$(EXEXT): test_suite_entropy.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_error$(EXEXT): test_suite_error.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_gcm.aes128_de$(EXEXT): test_suite_gcm.aes128_de.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_gcm.aes192_de$(EXEXT): test_suite_gcm.aes192_de.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_gcm.aes256_de$(EXEXT): test_suite_gcm.aes256_de.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_gcm.aes128_en$(EXEXT): test_suite_gcm.aes128_en.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_gcm.aes192_en$(EXEXT): test_suite_gcm.aes192_en.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_gcm.aes256_en$(EXEXT): test_suite_gcm.aes256_en.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_gcm.camellia$(EXEXT): test_suite_gcm.camellia.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_hmac_drbg.misc$(EXEXT): test_suite_hmac_drbg.misc.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_hmac_drbg.no_reseed$(EXEXT): test_suite_hmac_drbg.no_reseed.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_hmac_drbg.nopr$(EXEXT): test_suite_hmac_drbg.nopr.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_hmac_drbg.pr$(EXEXT): test_suite_hmac_drbg.pr.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_md$(EXEXT): test_suite_md.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_mdx$(EXEXT): test_suite_mdx.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_memory_buffer_alloc$(EXEXT): test_suite_memory_buffer_alloc.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_mpi$(EXEXT): test_suite_mpi.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_pbkdf2$(EXEXT): test_suite_pbkdf2.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_pem$(EXEXT): test_suite_pem.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_pkcs1_v21$(EXEXT): test_suite_pkcs1_v21.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_pkcs5$(EXEXT): test_suite_pkcs5.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_pkparse$(EXEXT): test_suite_pkparse.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_pkwrite$(EXEXT): test_suite_pkwrite.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_pk$(EXEXT): test_suite_pk.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_rsa$(EXEXT): test_suite_rsa.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_shax$(EXEXT): test_suite_shax.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_ssl$(EXEXT): test_suite_ssl.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_x509parse$(EXEXT): test_suite_x509parse.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_x509write$(EXEXT): test_suite_x509write.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_xtea$(EXEXT): test_suite_xtea.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_debug$(EXEXT): test_suite_debug.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test_suite_version$(EXEXT): test_suite_version.c $(DEP) - echo " CC $<" + echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ clean: ifndef WINDOWS - rm -f $(APPS) *.c -endif -ifdef WINDOWS + rm -f $(APPS) +else del /Q /F *.c *.exe endif -check: $(APPS) ifndef WINDOWS +check: $(APPS) echo "Running checks (Success if all tests PASSED)" RETURN=0; \ for i in $(APPS); \ @@ -445,4 +449,6 @@ ifndef WINDOWS echo ""; \ done; \ if [ "$$RETURN" -eq 1 ]; then exit 1; fi + +test: check endif