##
# CA build script
##

Import('env')

target_os = env.get('TARGET_OS')
transport = env.get('TARGET_TRANSPORT')
build_sample = env.get('BUILD_SAMPLE')
with_ra = env.get('WITH_RA')
with_tcp = env.get('WITH_TCP')
with_mq = env.get('WITH_MQ')

print "Given Transport is %s" % transport
print "Given OS is %s" % target_os
print "BUILD_SAMPLE is %s" % build_sample
print "MQ flag is %s" % with_mq

targets_disallow_multitransport = ['arduino']

if target_os in targets_disallow_multitransport:
    if ('ALL' in transport) or (len(transport) != 1):
        print "*** Error invalid option values: TARGET_TRANSPORT"
        print "%s disallowed until testing can validate use of multiple transports on %s %d" % (transport, target_os, len(transport))
        Exit(1)

if 'ALL' in transport:
	if with_ra == True:
			env.AppendUnique(CPPDEFINES = ['RA_ADAPTER'])
	if with_tcp == True:
			env.AppendUnique(CPPDEFINES = ['TCP_ADAPTER'])
	if target_os in ['linux']:
		env.AppendUnique(CPPDEFINES = ['IP_ADAPTER','NO_EDR_ADAPTER','LE_ADAPTER'])
	elif target_os == 'tizen':
		env.AppendUnique(CPPDEFINES = ['IP_ADAPTER','EDR_ADAPTER','LE_ADAPTER'])
	elif target_os == 'android':
		env.AppendUnique(CPPDEFINES = ['IP_ADAPTER','EDR_ADAPTER','LE_ADAPTER', 'NFC_ADAPTER'])
	elif target_os in['darwin','ios']:
		env.AppendUnique(CPPDEFINES = ['IP_ADAPTER','NO_EDR_ADAPTER','NO_LE_ADAPTER'])
	elif target_os in ['msys_nt', 'windows']:
		env.AppendUnique(CPPDEFINES = ['IP_ADAPTER','NO_EDR_ADAPTER','NO_LE_ADAPTER'])
	else:
		env.AppendUnique(CPPDEFINES = ['IP_ADAPTER','EDR_ADAPTER','LE_ADAPTER'])
	print "CA Transport is ALL"
else:
	if 'BT' in transport:
		if target_os in ['linux']:
			print "CA Transport BT is not supported in Linux"
			Exit(1)
		else:
			env.AppendUnique(CPPDEFINES = ['EDR_ADAPTER'])
			print "CA Transport is BT"
	else:
		env.AppendUnique(CPPDEFINES = ['NO_EDR_ADAPTER'])

	if 'BLE' in transport:
		env.AppendUnique(CPPDEFINES = ['LE_ADAPTER'])
		print "CA Transport is BLE"
	else:
		env.AppendUnique(CPPDEFINES = ['NO_LE_ADAPTER'])

	if 'IP' in transport:
		env.AppendUnique(CPPDEFINES = ['IP_ADAPTER'])
		print "CA Transport is IP"
	else:
		env.AppendUnique(CPPDEFINES = ['NO_IP_ADAPTER'])

	if with_tcp == True:
		if target_os in ['linux', 'tizen', 'android', 'arduino', 'ios']:
			env.AppendUnique(CPPDEFINES = ['TCP_ADAPTER', 'WITH_TCP'])
			print "CA Transport is TCP"
		else:
			print "CA Transport TCP is not supported "
			Exit(1)
	else:
		env.AppendUnique(CPPDEFINES = ['NO_TCP_ADAPTER'])

	if 'NFC' in transport:
		if target_os in['android']:
			env.AppendUnique(CPPDEFINES = ['NFC_ADAPTER'])
			print "CA Transport is NFC"
		else:
			print "CA Transport NFC is not supported "
			Exit(1)
	else:
		env.AppendUnique(CPPDEFINES = ['NO_NFC_ADAPTER'])

if 'SUB' in with_mq:
	env.AppendUnique(CPPDEFINES = ['MQ_SUBSCRIBER', 'WITH_MQ'])
	print "MQ SUB support"

if 'PUB' in with_mq:
	env.AppendUnique(CPPDEFINES = ['MQ_PUBLISHER', 'WITH_MQ'])
	print "MQ PUB support"

if 'BROKER' in with_mq:
	env.AppendUnique(CPPDEFINES = ['MQ_BROKER', 'WITH_MQ'])
	print "MQ Broker support"

env.SConscript('./src/SConscript')
