Changeset 5355


Ignore:
Timestamp:
Oct 23, 2022 8:49:57 PM (5 months ago)
Author:
toby
Message:

start work on interfacing NIST*LATTICE

Location:
trunk/fsource
Files:
33 added
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/fsource/SConstruct

    r5133 r5355  
    117117tmpdir = None
    118118#==========================================================================================
     119EXEsuffix = ''
    119120# configure platform dependent options here:
    120121if sys.platform == "win32":
    121122    F2PYsuffix = '.pyd'
     123    EXEsuffix = '.exe'
    122124    if G77path != "":
    123125      FCompiler='g77'
     
    371373env.Append(BUILDERS = {'fort' : fort, 'lib' : lib},)
    372374
     375# Define a builder to compile and copy NIST*LATTICE programs
     376def generate_nist(source, target, env, for_signature):
     377    #exe = os.path.splitext(str(source[0]))[0] + EXEsuffix
     378    exe = target
     379#    cmd = FCompiler + ' $SOURCE ' + NISTlib[0] + ' -o ' + exe
     380    cmd = FCompiler + ' $SOURCE ' + NISTlib[0] + ' -o $TARGET'
     381    if sys.platform == "win32":
     382        installcmd = "copy $TARGET " + InstallLoc
     383    else:
     384        installcmd = "cp $TARGET " + InstallLoc
     385    return [cmd, installcmd]
     386env.Append(BUILDERS = {'nist' : Builder(generator = generate_nist)},)
     387
     388
    373389#==========================================================================================
    374390# Setup build Environment
     
    388404# locate libraries to be built (subdirectories named *subs)
    389405liblist = []
     406NISTlib = []
    390407for sub in glob.glob('*subs'):
    391408    filelist = []
    392     for file in glob.glob(os.path.join(sub,'*.for')):
     409    for file in glob.glob(os.path.join(sub,'*.for'))+glob.glob(os.path.join(sub,'*.f')):
    393410        #target = os.path.splitext(file)[0]+'.o'
    394411        target = env.fort(file) # connect .o files to .for files
     
    400417    else:
    401418       lib = Library(sub, filelist) # register library to be created
    402     liblist.append(lib[0].name)
     419    if 'NIST' in lib[0].name:
     420       NISTlib = [lib[0].name]
     421    else:       
     422       liblist.append(lib[0].name)
    403423    filename = str(lib[0])
     424
     425# NIST*LATTICE programs
     426for src in 'LATTIC.f','convcell.f':
     427    target = os.path.splitext(src)[0] + EXEsuffix
     428    out = env.nist(target,src)
     429    Clean(out, target)
     430    Depends(target, NISTlib) # make sure library is rebuilt if old
     431
    404432# find modules that need to be built
    405433modlist = []
    406434for src in glob.glob('*.for'):
     435    #break # bail out early for testing
    407436    target = os.path.splitext(src)[0] + F2PYsuffix # xxx.pyd or xxx.so
    408437    out = env.f2py(target,src)
     
    410439    Depends(target, liblist) # make sure libraries are rebuilt if old
    411440    modlist.append(out[0].name)
    412     #break # bail out early for testing
    413441#==========================================================================================
    414442# all done with setup, show the user the options and let scons do the work
Note: See TracChangeset for help on using the changeset viewer.