X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=extlibs%2Fmbedtls%2FSConscript;h=cfcec9dabef0ff08448a62cac3701a88047df16a;hb=4f964073c7ab4d8d4727692122a630dc5c8a7b23;hp=fe1b75efb39430b625a16127a5bab2ed71809556;hpb=bf72b57c4f5711f045c34288566c078ef72df990;p=platform%2Fupstream%2Fiotivity.git diff --git a/extlibs/mbedtls/SConscript b/extlibs/mbedtls/SConscript index fe1b75e..cfcec9d 100644 --- a/extlibs/mbedtls/SConscript +++ b/extlibs/mbedtls/SConscript @@ -22,66 +22,168 @@ Import('env') import os import sys +import subprocess -def run(cmd): - """Run a command and decipher the return code. Exit by default.""" - res = os.system(cmd) - # Assumes that if a process doesn't call exit, it was successful - if (os.WIFEXITED(res)): - code = os.WEXITSTATUS(res) - if code != 0: - print "Error: return code: " + str(code) - if SCons.Script.keep_going_on_error == 0: - sys.exit(code) - +target_os = env.get('TARGET_OS') root_dir = env.get('SRC_DIR') +static_lib = env.get('WITH_MBEDTLS_STATIC_LIB'); +mbedtls_dir = os.path.join(root_dir, 'extlibs','mbedtls','mbedtls/') +start_dir = os.getcwd() +# Right now this script assumes the revision is a tag, and not a branch or an arbitrary +# commit. If this changes, update the check below, or else the script will always conclude +# the repo is not up to date because a tag with that name doesn't exist. +mbedtls_revision = 'mbedtls-2.4.0' -tls_dir = os.path.join(root_dir, 'extlibs','mbedtls','mbedtls') - -if not os.path.exists(tls_dir): +if not os.path.exists(mbedtls_dir): print ''' *********************************** Error: **************************************** * Please download mbedtls using the following command: * -* $ git clone https://github.com/ARMmbed/mbedtls.git extlibs/mbedtls/mbedtls * +* $ git clone https://github.com/ARMmbed/mbedtls.git extlibs/mbedtls/mbedtls -b %s *********************************************************************************** -''' + ''' % mbedtls_revision Exit(1) - -start_dir = os.getcwd() -os.chdir(tls_dir) - -#Apply patch to enable TLS_ECDH_ANON_WITH_AES_128_CBC_SHA256 ciphersuite and server identity hint -cmd = 'git reset --hard ad249f509fd62a3bbea7ccd1fef605dbd482a7bd && git apply ../ocf.patch' -run(cmd) - -build_dir = env.get('BUILD_DIR') -libs_list = ['libmbedcrypto.so', 'libmbedtls.so', 'libmbedx509.so'] - -if env.GetOption('clean'): - print 'Clean-up mbedtls...' - run('make clean') - - #Delete copied libs from out folder - for file_name in libs_list: - run("rm -f " + build_dir + file_name + "*") +#cd extlib/mbedtls/mbedtls +os.chdir(mbedtls_dir) + +# Tizen uses its own process to prepare the mbedTLS repo in gbsbuild.sh. Make sure +# the mbedtls_revision tag selected is the same as in extlibs/mbedtls/prep.sh. +# This code also assumes mbedtls_revision is a tag; if it changes to +# a branch or an arbitrary commit, disable this check below. +# if target_os != 'tizen': +# out = subprocess.check_output('git tag -l ' + mbedtls_revision, shell = True) +# if mbedtls_revision not in out: +# print out +# print ''' +# *********************************** Error: **************************************** +# * Your mbedTLS repo is not up to date with the latest version we require. Please * +# * update with the following commands: * +# * $ cd extlibs/mbedtls/mbedtls * +# * $ git fetch * +# *********************************************************************************** +# ''' +# Exit(1) + +# Apply ocf patch on git revision +if os.path.exists('.git/HEAD'): + cmd = 'git checkout development && git reset --hard ' + mbedtls_revision + ' && git apply --whitespace=fix ../ocf.patch' + os.system(cmd) else: - #Pass to make proper debug option - if env.get('RELEASE'): debug = '' - else: debug = 'DEBUG=1 ' - - cmd = 'export SHARED=1 ' + debug + '&& make no_test' - - print 'Making mbedtls libraries...' - print cmd - run(cmd) - - #Copy libs to out folder - if not os.path.exists(build_dir): os.makedirs(build_dir) - for file_name in libs_list: - run("cp -d " + tls_dir + '/library/' + file_name + " " + build_dir) - run("cp " + tls_dir + '/library/' + file_name + ".* " + build_dir) - + print 'mbedtls: Assume ocf.patch (TLS_ECDH_ANON_WITH_AES_128_CBC_SHA256) was applied in %s' % mbedtls_dir os.chdir(start_dir) - +mbedtls_env = env.Clone() +mbedtls_env.PrependUnique(CPPPATH = [mbedtls_dir]) +mbedtls_env.AppendUnique(CPPPATH = [mbedtls_dir+'include/']) +mbedtls_env.AppendUnique(CFLAGS = ['-fPIC', '-Wall']) + +###################################################################### +# Source files and Target(s) +###################################################################### +mbedtls_src = [ + 'mbedtls/library/debug.c', + 'mbedtls/library/net_sockets.c', + 'mbedtls/library/ssl_cache.c', + 'mbedtls/library/ssl_ciphersuites.c', + 'mbedtls/library/ssl_cli.c', + 'mbedtls/library/ssl_cookie.c', + 'mbedtls/library/ssl_srv.c', + 'mbedtls/library/ssl_ticket.c', + 'mbedtls/library/ssl_tls.c' + ] + + +mbedcrypto_src = [ + 'mbedtls/library/aes.c', + 'mbedtls/library/aesni.c', + 'mbedtls/library/arc4.c', + 'mbedtls/library/asn1parse.c', + 'mbedtls/library/asn1write.c', + 'mbedtls/library/base64.c', + 'mbedtls/library/bignum.c', + 'mbedtls/library/blowfish.c', + 'mbedtls/library/camellia.c', + 'mbedtls/library/ccm.c', + 'mbedtls/library/cipher.c', + 'mbedtls/library/cipher_wrap.c', + 'mbedtls/library/ctr_drbg.c', + 'mbedtls/library/des.c', + 'mbedtls/library/dhm.c', + 'mbedtls/library/ecdh.c', + 'mbedtls/library/ecdsa.c', + 'mbedtls/library/ecjpake.c', + 'mbedtls/library/ecp.c', + 'mbedtls/library/ecp_curves.c', + 'mbedtls/library/entropy.c', + 'mbedtls/library/entropy_poll.c', + 'mbedtls/library/error.c', + 'mbedtls/library/gcm.c', + 'mbedtls/library/havege.c', + 'mbedtls/library/hmac_drbg.c', + 'mbedtls/library/md.c', + 'mbedtls/library/md2.c', + 'mbedtls/library/md4.c', + 'mbedtls/library/md5.c', + 'mbedtls/library/md_wrap.c', + 'mbedtls/library/memory_buffer_alloc.c', + 'mbedtls/library/oid.c', + 'mbedtls/library/padlock.c', + 'mbedtls/library/pem.c', + 'mbedtls/library/pk.c', + 'mbedtls/library/pk_wrap.c', + 'mbedtls/library/pkcs12.c', + 'mbedtls/library/pkcs5.c', + 'mbedtls/library/pkparse.c', + 'mbedtls/library/pkwrite.c', + 'mbedtls/library/platform.c', + 'mbedtls/library/ripemd160.c', + 'mbedtls/library/rsa.c', + 'mbedtls/library/sha1.c', + 'mbedtls/library/sha256.c', + 'mbedtls/library/sha512.c', + 'mbedtls/library/threading.c', + 'mbedtls/library/timing.c', + 'mbedtls/library/version.c', + 'mbedtls/library/version_features.c', + 'mbedtls/library/xtea.c' + ] + +mbeX509_src = [ + 'mbedtls/library/certs.c', + 'mbedtls/library/pkcs11.c', + 'mbedtls/library/x509.c', + 'mbedtls/library/x509_create.c', + 'mbedtls/library/x509_crl.c', + 'mbedtls/library/x509_crt.c', + 'mbedtls/library/x509_csr.c', + 'mbedtls/library/x509write_crt.c', + 'mbedtls/library/x509write_csr.c' + ] + +mbedcrypto_env = mbedtls_env.Clone() +static_libmbedcrypto = mbedcrypto_env.StaticLibrary('mbedcrypto', mbedcrypto_src) +mbedcrypto_env.InstallTarget(static_libmbedcrypto, 'mbedcrypto') + +mbex509_env = mbedtls_env.Clone() +mbex509_env.AppendUnique(LIBS = ['mbedcrypto']) +static_libmbedx509 = mbex509_env.StaticLibrary('mbedx509', mbeX509_src) +mbex509_env.InstallTarget(static_libmbedx509, 'mbedx509') + +if static_lib == '1': + mbedtls_env.AppendUnique(LIBS = ['mbedx509', 'mbedcrypto']) + static_libmbedtls = mbedtls_env.StaticLibrary('mbedtls', mbedtls_src) + mbedtls_env.InstallTarget(static_libmbedtls, 'mbedtls') +else: + if target_os in ['windows', 'msys_nt', 'ios']: + mbedtls_env.AppendUnique(LIBS = ['mbedx509', 'mbedcrypto']) + static_libmbedtls = mbedtls_env.StaticLibrary('mbedtls', mbedtls_src) + mbedtls_env.InstallTarget(static_libmbedtls, 'mbedtls') + else: + mbedtls_env.AppendUnique(LIBPATH = [env.get('BUILD_DIR')]) + mbedtls_env.AppendUnique(LIBS = ['mbedx509', 'mbedcrypto']) + static_libmbedtls = mbedtls_env.StaticLibrary('mbedtls', mbedtls_src) + shared_libmbedtls = mbedtls_env.SharedLibrary('mbedtls', mbedtls_src) + mbedtls_env.InstallTarget([static_libmbedtls, shared_libmbedtls], 'mbedtls') + mbedtls_env.UserInstallTargetLib([static_libmbedtls, shared_libmbedtls], 'mbedtls') + if target_os in ['android']: + mbedtls_env.AppendUnique(LINKFLAGS = ['-Wl,-soname,libmbedtls.so'])