import os Import ('env') # math libs mlib = env['RAD_MLIB'] # compose paths def radbin(name): return os.path.join(env['RAD_BUILDBIN'], name) def radlib(name): return os.path.join(env['RAD_BUILDLIB'], name) def mgfsf(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(radlib('mgf'), source=mgfsf(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=radbin(p[0]), source=mgfsf(p[1]) + [libmgf], LIBS=mlib) Default(prog) env.Append(RAD_BININSTALL=[env.Install(env['RAD_BINDIR'], prog)]) trans = env.Object(source="trans.c") # standard targets PROGS = [ ('thf2rad', ['thf2rad.c'], []), ('ies2rad', ['ies2rad.c'], ['rtlamps','rtcolor','rtio','rtpath']+ mlib), ('arch2rad', ['arch2rad.c',trans],['rtcont','rtmem'] + mlib), ('nff2rad', ['nff2rad.c'], []), ('lampcolor', ['lampcolor.c'], ['rtlamps','rtcolor','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=radbin(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=radbin('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') env.Append(RAD_RLIBINSTALL=env.Install(env['RAD_RLIBDIR'], LIBFILES))