# SConscript
import os

Import('env Automatic_Program Automatic_Objects pb_name program_suffix')
Automatic_Program(env,"generate_data_analytic",["generate_data_analytic.cpp"],["Core"])
Automatic_Program(env,"compute_features_moment",["compute_features_moment.cpp"],["Core"])
Automatic_Program(env,"create_engine",["create_engine.cpp"],["Core"])
Automatic_Program(env,"generate_calibration_data",["generate_calibration_data.cpp"],["Core"])
Automatic_Program(env,"select_larger_training_data",["select_larger_training_data.cpp"],["Core"])
Automatic_Program(env,"xyz2bgeo",["xyz2bgeo.cpp"],["Core"])

if env['torch_enable'] == 1:
    objects=Automatic_Objects(env,["evaluate.cpp","construct_features.cpp","Partial_Sum.cpp"])              
    env.Command('parallel_slicing.os','parallel_slicing.cu',"nvcc --compiler-bindir "+env.subst("g++-10 -c -std=c++20 -O3 -DUSE_TORCH -DNDEBUG -I${torch_includes[0]} -I${torch_includes[1]}")+" -o $TARGET -IPublic_Library $SOURCE")

    program=env.Program("evaluate",objects+["parallel_slicing.os"],LIBS=env['LIBS']+pb_name["Core"])    
    executable_target_path=os.path.join(Dir('.').srcnode().abspath,"evaluate"+program_suffix)
    env.InstallAs(executable_target_path,program)





    
