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

compiler = SM.DefaultCompiler()
base = AMBuild.sourceFolder
compiler['CXXINCLUDES'].append(os.path.join(SM.mmsPath, 'core', 'sourcehook'))
compiler['CXXINCLUDES'].append(os.path.join(base, 'core', 'logic'))
compiler['CXXINCLUDES'].append(os.path.join(base, 'public'))
compiler['CXXINCLUDES'].append(os.path.join(base, 'public', 'sourcepawn'))
compiler['CDEFINES'].append('SM_DEFAULT_THREADER')
compiler['CDEFINES'].append('SM_LOGIC')

if AMBuild.target['platform'] == 'linux':
	compiler['POSTLINKFLAGS'].append('-lpthread')
if AMBuild.target['platform'] == 'darwin':
	compiler['CFLAGS'].extend(['-Wno-deprecated-declarations'])
	compiler['POSTLINKFLAGS'].extend(['-framework', 'CoreServices'])

extension = AMBuild.AddJob('sourcemod.logic')
binary = Cpp.LibraryBuilder('sourcemod.logic', AMBuild, extension, compiler)
files = [
	'common_logic.cpp',
	'smn_adt_array.cpp',
	'smn_sorting.cpp',
	'smn_maplists.cpp',
	'smn_adt_stack.cpp',
	'thread/ThreadWorker.cpp',
	'thread/BaseWorker.cpp',
	'ThreadSupport.cpp',
	'smn_float.cpp',
	'TextParsers.cpp',
	'smn_textparse.cpp',
	'smn_adt_trie.cpp',
	'Profiler.cpp',
	'smn_functions.cpp',
	'smn_timers.cpp',
	'smn_players.cpp',
	'MemoryUtils.cpp',
	'smn_admin.cpp',
	'smn_banning.cpp',
	'smn_filesystem.cpp',
	'stringutil.cpp',
	'Translator.cpp',
	'PhraseCollection.cpp',
	'smn_lang.cpp',
	'smn_string.cpp',
	'smn_handles.cpp',
	'smn_datapacks.cpp',
	'smn_gameconfigs.cpp',
	'GameConfigs.cpp',
	'sm_crc32.cpp',
	'smn_profiler.cpp',
	'DebugReporter.cpp'
	]
if AMBuild.target['platform'] == 'windows':
	files.append('thread/WinThreads.cpp')
else:
	files.append('thread/PosixThreads.cpp')
binary.AddSourceFiles('core/logic', files)
SM.AutoVersion('core/logic', binary)
binary.SendToJob()