# import these variables from the parent build script 
import os
import sys

Import('env', 'gfxlibs', 'alllibs', 'installbindir', 'installdatadir', 'datadir', 'datafiles', 'version', 'osspecificsrc')

################## define sources #######################
dftdsources = Split("""subsim.cpp
	ai.cpp
	airplane.cpp
	cfg.cpp
	coastmap.cpp
	convoy.cpp
	date.cpp
	depth_charge.cpp
	filehelper.cpp
	freeview_display.cpp
	game.cpp
	gun_shell.cpp
	highscorelist.cpp
	keys.cpp
	logbook.cpp
	logbook_display.cpp
	map_display.cpp
	network.cpp
	parser.cpp
	particle.cpp
	perlinnoise.cpp
	sea_object.cpp
	sensors.cpp
	ship.cpp
	ships_sunk_display.cpp
	sky.cpp
	sound.cpp
	submarine.cpp
	submarine_interface.cpp
	sub_bridge_display.cpp
	sub_control_popup.cpp
	sub_damage_display.cpp
	sub_gauges_display.cpp
	sub_periscope_display.cpp
	sub_tdc_display.cpp
	sub_tdc_popup.cpp
	sub_torpedo_display.cpp
	sub_torpsetup_display.cpp
	sub_uzo_display.cpp
	texts.cpp
	tokenizer.cpp
	torpedo.cpp
	triangulate.cpp
	user_interface.cpp
	water.cpp
	widget.cpp""")

dftdmediasources = Split("""
	font.cpp
	image.cpp
	make_mesh.cpp
	model.cpp
	system.cpp
	texture.cpp""")

tinyxmlsources = Split("""
	tinyxml/tinystr.cpp
	tinyxml/tinyxml.cpp
	tinyxml/tinyxmlerror.cpp
	tinyxml/tinyxmlparser.cpp""")

oglextsources = Split("""
	oglext/OglExt.cpp
	oglext/RenderingContext.cpp
	oglext/RenderingContext.hpp""")

############# programs, libs, etc.
env.StaticLibrary(target = 'dftdmedia', source = dftdmediasources, LIBS = gfxlibs)
globaldataobj = env.StaticObject('global_data.cpp', CPPDEFINES = [('DATADIR', '\\"' + datadir + '/\\"'), ('VERSION', '\\"' + version + '\\"')])
binary = env.Program(target = 'dangerdeep', source = dftdsources + globaldataobj + osspecificsrc, LIBS = alllibs)
tool1 = env.Program('viewmodel', ['viewmodel.cpp', globaldataobj, 'sound.cpp'] + osspecificsrc, LIBS = alllibs)
tool2 = env.Program('damagemodel', ['damagemodel.cpp', globaldataobj, 'sound.cpp'] + osspecificsrc, LIBS = alllibs)
tool3 = env.Program('crosssection', ['crosssection.cpp', globaldataobj, 'sound.cpp'] + osspecificsrc, LIBS = alllibs)
env.StaticLibrary(target = 'oglext', source = oglextsources)
env.StaticLibrary(target = 'tinyxml', source = tinyxmlsources)
env.Default(binary)
env.Default(tool1)
env.Default(tool2)
env.Default(tool3)

############ this allows to run "scons install" to install the binary
install = env.Alias('install', env.Install(installbindir, binary))
env.Depends(install, binary)
for i in datafiles:
	# remove './data' from begin of i and filename from end
	j = i.rfind(os.sep)
	ipath = i[6:j]
	env.Depends(install, env.Install(installdatadir + ipath, '#/' + i))
