import os

Import ('env')

# math libs
mlib = env['RAD_MLIB']

# compose paths
def rbin(name): return os.path.join(env['RAD_BUILDBIN'], name)
def rlib(name): return os.path.join(env['RAD_BUILDLIB'], name)
def mgfs(src): return map(lambda s:os.path.join('mgflib', s), src)

MGFSRC = Split('''parser.c context.c xf.c object.c lookup.c badarg.c
		words.c
		fvect.c''')
libmgf = env.StaticLibrary(rlib('mgf'), source=mgfs(MGFSRC))

MGFPROGS = (
('mgfilt',  Split('mgfilt.c')),
('mgf2inv', Split('mgf2inv.c cvrgb.c')),
('3ds2mgf', Split('3ds2mgf.c rayopt.c vect.c')),
)
for p in MGFPROGS:
	prog = env.Program(target=rbin(p[0]), source=mgfs(p[1]), LIBS=mlib+['mgf'])
	Default(prog)
	env.Append(RAD_BININSTALL=[env.Install(env['RAD_BINDIR'], prog)])

trans = env.Object(source="trans.c")

# standard targets
PROGS = [
('ies2rad',   ['ies2rad.c'],       ['rtlamps','rtcolor','rtio','rtpath']+ mlib),
('arch2rad',  ['arch2rad.c',trans],['rtcont','rtmem'] + mlib),
('nff2rad',   ['nff2rad.c'],       []),
('lampcolor', ['lampcolor.c'],     ['rtlamps','rtcolor','rtio','rtpath']),
('tmesh2rad', ['tmesh2rad.c'],     ['rtscene','rtmath'] + mlib),
('obj2rad',   ['obj2rad.c',trans], 
    ['rtscene','rtargs','rtio','rtcont','rtmem','rtmath','rterror'] + mlib),
('mgf2rad',   ['mgf2rad.c'],       ['rtscene','rtcolor','mgf'] + mlib),
('rad2mgf',   ['rad2mgf.c'],
	['rtproc', 'rtpath', # for win_popen()
    'rtscene','rtio','rtcolor','rtcont','rtmem','rterror'] + mlib),
]
for p in PROGS:
	prog = env.Program(target=rbin(p[0]), source=p[1], LIBS=p[2])
	Default(prog)
	env.Append(RAD_BININSTALL=[env.Install(env['RAD_BINDIR'], prog)])

# meta targets
prog = env.Program(target=rbin('mgf2meta'), source=['mgf2meta.c'],
		CPPPATH=env.get('CPPPATH', []) + [os.path.join('#src','meta')],
		LIBS=['meta','rtmath','rtcont','rtmem','rterror','mgf'] + mlib)

LIBFILES = Split('source.cal tilt.cal lamp.tab window.cal')
env.Append(RAD_RLIBINSTALL=env.Install(env['RAD_RLIBDIR'], LIBFILES))

if os.name == 'posix':
	for s in Split('''optics2rad'''):
		Default(env.InstallCsh(rbin(s), s + '.csh'))
