Looks like you need to make a couple changes.
Firstly, since you are on windows, SCons will default to configuring Visual Studio tools if they are available,
See: SCons/Tool/init.py
c_compilers = ['msvc', 'mingw', 'gcc', 'intelc', 'icl', 'icc', 'cc', 'bcc32' ]
So first let's fix that:
env = Environment(tools=[])
env['CC'] = 'C:\Program Files (x86)\clearspeed\bin\cscn.exe'
env.Tool('cc')
env['LINK'] = 'C:\Program Files (x86)\clearspeed\bin\cscn.exe'
env.Tool('link')
env.Program('pi.csx', 'pi.cn', CFLAGS='-lcn_reduction')
Likely, that's still not enough because SCons doesn't know about .csx and .cn file suffixes. So let's fix that:
env = Environment(tools=[])
env['CC'] = 'C:\Program Files (x86)\clearspeed\bin\cscn.exe'
env.Tool('cc')
env['LINK'] = 'C:\Program Files (x86)\clearspeed\bin\cscn.exe'
env.Tool('link')
env['PROGSUFFIX'] = '.csx'
# Note we removed that from the output for program as it should automatically add it.
env.Program('pi', 'pi.cn', CFLAGS='-lcn_reduction')
Next you'll need to tell SCons that .cn's can make object files.
import SCons.Tool
import SCons.Default
static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
my_suffix = '.cn'
static_obj.add_action(my_suffix, SCons.Defaults.CAction)
#shared_obj.add_action(my_suffix, SCons.Defaults.ShCAction)
static_obj.add_emitter(my_suffix, SCons.Defaults.StaticObjectEmitter)
#shared_obj.add_emitter(my_suffix, SCons.Defaults.SharedObjectEmitter)
That should take care of that.
So let's put it all together:
env = Environment(tools=[])
env['CC'] = 'C:\Program Files (x86)\clearspeed\bin\cscn.exe'
env.Tool('cc')
env['LINK'] = 'C:\Program Files (x86)\clearspeed\bin\cscn.exe'
env.Tool('link')
env['PROGSUFFIX'] = '.csx'
# Add .cn suffix as able to create objects.
import SCons.Tool
import SCons.Default
static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
my_suffix = '.cn'
static_obj.add_action(my_suffix, SCons.Defaults.CAction)
#shared_obj.add_action(my_suffix, SCons.Defaults.ShCAction)
static_obj.add_emitter(my_suffix, SCons.Defaults.StaticObjectEmitter)
#shared_obj.add_emitter(my_suffix, SCons.Defaults.SharedObjectEmitter)
# Note we removed that from the output for program as it should automatically add it.
env.Program('pi', 'pi.cn', CFLAGS='-lcn_reduction')
Now, I don't have access to your compiler toolchain, so I've not tried the above, but I believe it should get you most, if not all the way there.
'C:/Prog...'or'C:\\Prog...'orr'C:\Prog...'. - Robᵩ