| 1 | schorsch | 1.1 | import os | 
| 2 | schorsch | 1.5 | from build_utils import vstamp | 
| 3 | schorsch | 1.1 |  | 
| 4 |  |  | Import('env') # inherit from parent | 
| 5 |  |  |  | 
| 6 | schorsch | 1.2 | mlib = env['RAD_MLIB'] | 
| 7 | schorsch | 1.1 |  | 
| 8 |  |  | # compose paths | 
| 9 | schorsch | 1.2 | def radbin(name): return os.path.join(env['RAD_BUILDBIN'], name) | 
| 10 |  |  | def radlib(name): return os.path.join(env['RAD_BUILDLIB'], name) | 
| 11 | schorsch | 1.1 |  | 
| 12 |  |  | # custom compile flags | 
| 13 | schorsch | 1.2 | dielectric = env.Object(source='dielectric.c', | 
| 14 |  |  | CCFLAGS=env.get('CCFLAGS',[]) + ['-DDISPERSE']) | 
| 15 |  |  |  | 
| 16 |  |  | duphead = env.Object(source="duphead.c") | 
| 17 |  |  | persist = env.Object(source="persist.c") | 
| 18 |  |  | ambio = env.Object(source="ambio.c") | 
| 19 |  |  |  | 
| 20 | schorsch | 1.1 |  | 
| 21 |  |  | # source and object dependencies | 
| 22 | schorsch | 1.2 | RAY = Split('''ambcomp.c ambient.c freeobjmem.c initotypes.c preload.c | 
| 23 | schorsch | 1.5 | raytrace.c renderopts.c''') + [ambio] | 
| 24 | schorsch | 1.1 |  | 
| 25 | schorsch | 1.3 | SURF = Split('''srcsamp.c srcsupp.c srcobstr.c source.c virtuals.c sphere.c | 
| 26 |  |  | o_face.c o_cone.c o_instance.c o_mesh.c''') | 
| 27 | schorsch | 1.1 |  | 
| 28 |  |  | MAT = Split('''aniso.c normal.c m_clip.c glass.c m_brdf.c m_mirror.c | 
| 29 |  |  | m_direct.c m_mist.c fprism.c m_alias.c''') + [dielectric] | 
| 30 |  |  |  | 
| 31 |  |  | MOD = Split('p_func.c t_func.c p_data.c t_data.c text.c mx_func.c mx_data.c') | 
| 32 |  |  |  | 
| 33 |  |  | SUP = Split('func.c noise3.c data.c') | 
| 34 |  |  |  | 
| 35 |  |  | # build libraries | 
| 36 |  |  | rsrc = RAY + SURF + MAT + MOD + SUP | 
| 37 | schorsch | 1.5 | env.Command('Version.c', 'VERSION', vstamp.build_version_c) | 
| 38 |  |  | env.Depends('Version.c', rsrc) | 
| 39 | schorsch | 1.6 | Version = env.Object(source=['Version.c']) | 
| 40 | schorsch | 1.5 | rlib = env.Library(target=radlib('rttrace'), source=rsrc + [Version]) | 
| 41 | schorsch | 1.1 |  | 
| 42 | schorsch | 1.10 | #if os.name == 'nt': # XXX until we get around fork() and friends | 
| 43 |  |  | #       rcsrc = Split('raycalls.c') | 
| 44 |  |  | #else: rcsrc = Split('raycalls.c raypcalls.c') | 
| 45 |  |  | rcsrc = Split('raycalls.c $RAD_PCALLS') | 
| 46 | schorsch | 1.2 | rclib = env.Library(target=radlib('raycalls'), source=rcsrc) | 
| 47 | schorsch | 1.1 | Default(rclib) | 
| 48 |  |  |  | 
| 49 | schorsch | 1.10 | fullib=['rttrace', 'rtscene', 'rtpic', 'rtfunc', 'rtproc', 'rtmath', | 
| 50 |  |  | 'rtargs', 'rtpath', 'rtio', 'rtcont', 'rtmem', 'rterror'] | 
| 51 | schorsch | 1.1 | # build executables | 
| 52 | schorsch | 1.2 | lasrc = ['lookamb.c', ambio] | 
| 53 |  |  | lookamb = env.Program(target=radbin('lookamb'), source=lasrc, | 
| 54 |  |  | LIBS=['rtio', 'rtpic']) | 
| 55 | schorsch | 1.1 | Default(lookamb) | 
| 56 | schorsch | 1.6 | env.Append(RAD_BININSTALL=[env.Install('$RAD_BINDIR', lookamb)]) | 
| 57 | schorsch | 1.1 |  | 
| 58 | schorsch | 1.2 | rtmain = env.Object(source=['rtmain.c'], | 
| 59 |  |  | CCFLAGS=env.get('CCFLAGS',[]) + ['-DNICE=4']) | 
| 60 |  |  | rtsrc = ['rtrace.c', duphead, persist, rtmain] | 
| 61 |  |  | rtrace = env.Program(target=radbin('rtrace'), source=rtsrc, | 
| 62 | schorsch | 1.6 | LIBS=fullib + mlib | 
| 63 |  |  | ) | 
| 64 | schorsch | 1.2 | Default(rtrace) | 
| 65 | schorsch | 1.6 | env.Append(RAD_BININSTALL=[env.Install('$RAD_BINDIR', rtrace)]) | 
| 66 | schorsch | 1.2 |  | 
| 67 |  |  | rpsrc = Split('rpmain.c rpict.c srcdraw.c') + [duphead, persist] | 
| 68 |  |  | rpict = env.Program(target=radbin('rpict'), source=rpsrc, | 
| 69 | schorsch | 1.8 | LIBS=fullib+['rtnet','$RAD_SOCKETLIB']+mlib) | 
| 70 | schorsch | 1.2 | Default(rpict) | 
| 71 | schorsch | 1.6 | env.Append(RAD_BININSTALL=[env.Install('$RAD_BINDIR', rpict)]) | 
| 72 | schorsch | 1.2 |  | 
| 73 | schorsch | 1.4 | if env.has_key('X11LIB'): # lots of special requirements for rvu | 
| 74 | schorsch | 1.2 | x11incls = [env['X11INCLUDE']] + env['CPPPATH'] | 
| 75 |  |  | x11 = env.Object(source='x11.c', CPPPATH=x11incls) | 
| 76 |  |  | x11twind = env.Object(source='x11twind.c', CPPPATH=x11incls) | 
| 77 |  |  | rvmain = env.Object(source='rvmain.c', | 
| 78 |  |  | CCFLAGS=env['CCFLAGS'] + ['-DNICE=6']) | 
| 79 | schorsch | 1.9 | rv3 = env.Object(source='rv3.c', | 
| 80 |  |  | CCFLAGS=env['CCFLAGS'] | 
| 81 | schorsch | 1.6 | ) | 
| 82 | schorsch | 1.1 |  | 
| 83 |  |  | devsrc  = Split('devtable.c devcomm.c colortab.c editline.c') | 
| 84 |  |  | rvobjs = [x11, x11twind, rv3, rvmain, rlib] | 
| 85 |  |  | rvsrc = Split('rview.c rv2.c') + devsrc + rvobjs | 
| 86 | schorsch | 1.4 | rvu = env.Program(target=radbin('rvu'), source=rvsrc, | 
| 87 | schorsch | 1.2 | LIBPATH=env['LIBPATH'] + [env['X11LIB']], | 
| 88 | schorsch | 1.11 | LIBS = (['rtscene', rclib, 'rttrace', 'rtpic', 'rtfunc', 'rtproc', 'rtmath', | 
| 89 |  |  | 'rtargs', 'rtpath', 'rtio', 'rtcont', 'rtmem', 'rterror', | 
| 90 |  |  | 'X11'] + mlib) | 
| 91 |  |  | #LIBS=fullib + ['X11', rclib] + mlib | 
| 92 |  |  | ) | 
| 93 | schorsch | 1.4 | Default(rvu) | 
| 94 | schorsch | 1.6 | env.Append(RAD_BININSTALL=[env.Install('$RAD_BINDIR', rvu)]) | 
| 95 | schorsch | 1.1 |  | 
| 96 |  |  | LIBFILES = Split('rayinit.cal') | 
| 97 | schorsch | 1.6 | env.Append(RAD_RLIBINSTALL=[env.Install('$RAD_RLIBDIR', LIBFILES)]) | 
| 98 | schorsch | 1.1 |  |