# Copyright (c) 2010 - 2011, 2013-2014, AllSeen Alliance. All rights reserved.
#
#    Permission to use, copy, modify, and/or distribute this software for any
#    purpose with or without fee is hereby granted, provided that the above
#    copyright notice and this permission notice appear in all copies.
#
#    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
#    WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
#    MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
#    ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
#    WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
#    ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
#    OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
# 

import os
import sys

Import('env')

# Dependent Projects
if not env.has_key('_ALLJOYNC_'):
    # alljoyn_c is required for the unity_bindings
    env.SConscript('../alljoyn_c/SConscript')

unityenv = env.Clone()

vars = Variables();
#TODO place any environment vars here
vars.Update(unityenv)
Help(vars.GenerateHelpText(unityenv))

sys.path.append(str(unityenv.Dir('../build_core/tools/scons').srcnode()))

# Make alljoyn_unity dist a sub-directory of the alljoyn dist.  This avoids any conflicts with alljoyn dist targets.
unityenv['UNITY_DISTDIR'] = unityenv['DISTDIR'] + '/unity'
unityenv['UNITY_TESTDIR'] = unityenv['TESTDIR'] + '/unity'

unityenv['OBJDIR_UNITY'] = unityenv['OBJDIR'] + '/alljoyn_unity'

# create the alljoyn_unity_native library this libary will link in the bundled daemon
# similar to other language bindings.
unityenv.Prepend(LIBS=[unityenv['brobj'], unityenv['ajrlib']])
libaj_unity_native = unityenv.SharedLibrary('alljoyn_unity_native', [env['AJ_C_OBJS']])
unityenv.Install('$UNITY_DISTDIR/lib', libaj_unity_native)

# Add support for multiple build targets in the same workset
unityenv.VariantDir('$OBJDIR_UNITY', 'src', duplicate = 0)
unityenv.VariantDir('$OBJDIR_UNITY/samples', 'samples', duplicate = 0)

#alljoyn_unity.dll
unityenv['ALLJOYN_UNITY_LIB'] = unityenv.SConscript('src/SConscript', exports = {'env':unityenv})

# Sample programs
progs = unityenv.SConscript('samples/SConscript', exports = {'env':unityenv, 'clib': libaj_unity_native})

#install Package support files
package_support_dir = unityenv.Dir('package_support/UnityPackage')
unityenv.Install('$UNITY_DISTDIR/package_support', package_support_dir)

#install libraries into the package support directory
if unityenv['OS_GROUP'] == 'windows':
    #place alljoyn_unity.dll into the samples
    unityenv.Install('package_support/UnityPackage/Assets/Plugins', unityenv['ALLJOYN_UNITY_LIB'])

    #place liballjoyn_unity_native.dll into the samples
    unityenv.Install('package_support/UnityPackage/Assets/Plugins', libaj_unity_native)

    # README to top
    unityenv.Install('$UNITY_DISTDIR', 'README-AllJoynUnityPackage.txt')

if unityenv['OS'] == 'android':
    #place alljoyn_unity.dll into the samples
    unityenv.Install('package_support/UnityPackage/Assets/Plugins', unityenv['ALLJOYN_UNITY_LIB'])

    #place liballjoyn_unity_native.so into the samples
    unityenv.Install('package_support/UnityPackage/Assets/Plugins/Android', libaj_unity_native)

    # README to top
    unityenv.Install('$UNITY_DISTDIR', 'README-AllJoynUnityPackage.txt')

#Build unit tests
unityenv.SConscript('unit_test/SConscript', exports = {'env':unityenv, 'clib': libaj_unity_native})
# Build docs
unityenv.SConscript('docs/SConscript', exports = {'env':unityenv})
