# vim: set ts=2 sw=2 tw=99 noet ft=python: 
import os

builder.SetBuildFolder('package')

def deduce_target_sdk(path):
	for sdk_name in MMS.sdks:
		sdk = MMS.sdks[sdk_name]
		if ('metamod.' + sdk.ext) in path:
			return sdk
	return None

addons_folder = builder.AddFolder('addons')
metamod_folder = builder.AddFolder(os.path.join('addons', 'metamod'))
bin_folder = builder.AddFolder(os.path.join('addons', 'metamod', 'bin'))

for cxx in MMS.all_targets:
	if cxx.target.arch == 'x86_64':
		if cxx.target.platform == 'windows':
			bin64_folder = builder.AddFolder(os.path.join('addons', 'metamod', 'bin', 'win64'))
			bin64_s2_folder = bin64_folder
			builder.AddCopy(os.path.join(builder.sourcePath, 'support', 'metamod_win64.vdf'), 
			                os.path.join('addons', 'metamod_x64.vdf'))
		elif cxx.target.platform == 'linux':
			bin64_folder = builder.AddFolder(os.path.join('addons', 'metamod', 'bin', 'linux64'))
			bin64_s2_folder = builder.AddFolder(os.path.join('addons', 'metamod', 'bin', 'linuxsteamrt64'))
			builder.AddCopy(os.path.join(builder.sourcePath, 'support', 'metamod_linux64.vdf'), 
			                os.path.join('addons', 'metamod_x64.vdf'))
		elif cxx.target.platform == 'mac':
			bin64_folder = builder.AddFolder(os.path.join('addons', 'metamod', 'bin', 'osx64'))
			bin64_s2_folder = bin64_folder
			builder.AddCopy(os.path.join(builder.sourcePath, 'support', 'metamod_osx64.vdf'), 
			                os.path.join('addons', 'metamod_x64.vdf'))

builder.AddCopy(os.path.join(builder.sourcePath, 'support', 'metamod.vdf'), addons_folder)
builder.AddCopy(os.path.join(builder.sourcePath, 'support', 'metaplugins.ini'), metamod_folder)
builder.AddCopy(os.path.join(builder.sourcePath, 'support', 'README.txt'), metamod_folder)

pdb_list = []
for task in MMS.binaries:
	sdk = deduce_target_sdk(task.binary.path)

	if task.target.arch == 'x86_64':
		# libserver check is a hack to make sure that binary ends up in the correct folder
		# as s2 folders differ to s1 layout
		if 'libserver' in task.binary.path or (sdk is not None and sdk.name in ['dota', 'cs2']):
			builder.AddCopy(task.binary, bin64_s2_folder)
		else:
			builder.AddCopy(task.binary, bin64_folder)
	else:
		builder.AddCopy(task.binary, bin_folder)

	if task.debug:
		pdb_list.append(task.debug)

# Generate PDB info.
with open(os.path.join(builder.buildPath, 'pdblog.txt'), 'wt') as fp:
	for line in pdb_list:
		fp.write(line.path + '\n')