Import("env")

# build reduced libs that just provides enough for daemon auth

# build/external/libtommath
libtommath = env.Command(
    File("libtommath/libtommath.a"), [File("libtommath/mp_init.c").srcnode()],
    'cp -ru %s %s && make -C %s -j%s CFLAGS="-fPIC $CFLAGS" CC="$CC"' % (
        Dir("libtommath/").srcnode().abspath,
        Dir(".").abspath,
        Dir("libtommath").abspath,
        GetOption('num_jobs')
    )
)[0]

# reduce libtomcrypt build times - only what we need for daemon auth:
defines = """
LTM_DESC
USE_LTM
LTC_NO_MODES
LTC_NO_MACS
LTC_NO_PKCS
LTC_NO_MISC
LTC_NO_PKCS
LTC_NO_PK
LTC_NO_CIPHERS
LTC_NO_HASHES
LTC_NO_PRNGS
LTC_DER
LTC_MDSA
LTC_YARROW
LTC_CTR_MODE
LTC_XTEA
LTC_SHA1
"""
defines = " ".join(["-D" + define.strip() for define in defines.strip().split("\n")])

libtomcrypt = env.Command(
    File("libtomcrypt/libtomcrypt.a"), [File("libtomcrypt/src/pk/dsa/dsa_sign_hash.c").srcnode()],
    'cp -ru %s %s/ && make -C %s -j%s library CFLAGS="-fPIC %s -I../libtommath $CFLAGS" EXTRALIBS="-ltommath" CC="$CC"' % (
        Dir("libtomcrypt/").srcnode(),
        Dir(".").abspath,
        Dir("libtomcrypt").abspath,
        GetOption('num_jobs'),
        defines
    )
)[0]
env.Depends(libtomcrypt, libtommath)
Return("libtomcrypt libtommath")
