import os

Import ('env')

# math libs
mlib = env['RAD_MLIB']

# compose paths
def rbin(name): return os.path.join(env['RAD_BUILDBIN'], name)

MGFPROGS = (
('3ds2mgf', Split('3ds2mgf.c rayopt3ds.c vect3ds.c')),
)
for p in MGFPROGS:
	prog = env.Program(target=rbin(p[0]), source=p[1], LIBS=mlib+['mgf','rtcont'])
	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),
('mgf2inv',   ['mgf2inv.c'],       ['mgf','rtall'] + mlib),
('obj2rad',   ['obj2rad.c',trans], 
    ['rtscene','rtargs','rtio','rtcont','rtmem','rtmath','rterror'] + mlib),
('mgf2rad',   ['mgf2rad.c'],       ['mgf','rtall'] + mlib),
('mgfilt',    ['mgfilt.c'],        ['mgf','rtall'] + 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','mgf','rtall'] + mlib)
env.Append(RAD_BININSTALL=[env.Install(env['RAD_BINDIR'], prog)])

LIBFILES = Split('source.cal tilt.cal 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'))
