Import('env Automatic_Library pb pb_name')

if env['SHARED']: builder=env.SharedObject
else: builder=env.StaticObject

ly=[]
if env['USE_LEX_YACC']:
    yy=builder('Tools/Symbolics/PROGRAM_YACC.yy')
    ll=builder('Tools/Symbolics/PROGRAM_LEX.ll')
    env.Depends("Tools/Symbolics/PROGRAM.cpp",yy)
    env.Depends("Tools/Symbolics/PROGRAM.cpp",ll)
    ly=[yy,ll]

pb['Core']=Automatic_Library(env,'PhysBAM_Core',['Core'])
pb['Tools']=Automatic_Library(env,'PhysBAM_Tools',['Tools'],ly)+pb['Core']
pb['Grid_Tools']=Automatic_Library(env,'PhysBAM_Grid_Tools',['Grid_Tools'])+pb['Tools']
pb['Grid_PDE']=Automatic_Library(env,'PhysBAM_Grid_PDE',['Grid_PDE'])+pb['Grid_Tools']
pb['Geometry']=Automatic_Library(env,'PhysBAM_Geometry',['Geometry'])+pb['Grid_PDE']
pb['Rigids']=Automatic_Library(env,'PhysBAM_Rigids',['Rigids'])+pb['Geometry']
pb['Deformables']=Automatic_Library(env,'PhysBAM_Deformables',['Deformables'])+pb['Rigids']
pb['Solids']=Automatic_Library(env,'PhysBAM_Solids',['Solids'])+pb['Deformables']
pb['Hybrid_Methods']=Automatic_Library(env,'PhysBAM_Hybrid_Methods',['Hybrid_Methods'])+pb['Solids']
pb['OpenGL']=Automatic_Library(env,'PhysBAM_OpenGL',['OpenGL'])+pb['Hybrid_Methods']

pb_name['Core']=['PhysBAM_Core']
pb_name['Tools']=['PhysBAM_Tools']+pb_name['Core']
pb_name['Grid_Tools']=['PhysBAM_Grid_Tools']+pb_name['Tools']
pb_name['Grid_PDE']=['PhysBAM_Grid_PDE']+pb_name['Grid_Tools']
pb_name['Geometry']=['PhysBAM_Geometry']+pb_name['Grid_PDE']
pb_name['Rigids']=['PhysBAM_Rigids']+pb_name['Geometry']
pb_name['Deformables']=['PhysBAM_Deformables']+pb_name['Rigids']
pb_name['Solids']=['PhysBAM_Solids']+pb_name['Deformables']
pb_name['Hybrid_Methods']=['PhysBAM_Hybrid_Methods']+pb_name['Solids']
pb_name['OpenGL']=['PhysBAM_OpenGL']+pb_name['Hybrid_Methods']

