forked from schreiberx/sweet
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsconscript
74 lines (53 loc) · 1.63 KB
/
sconscript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import os
import sys
import glob
Import('env')
env.Append(CPPPATH = ['include'])
sweet_root = env['SWEET_ROOT']+'/'
mainsrcadddir = ''
if env['compile_program'] != '':
mainsrcadddir = 'src/programs/'+env['compile_program']
elif env['unit_test'] != '':
mainsrcadddir = 'src/unit_tests/'+env['unit_test']
else:
mainsrcadddir = ''
if mainsrcadddir != '':
#
# Add an action to move any module files
#
def moveModFiles(target=None, source=None, env=None):
import glob, os, os.path
targetdir = target[0].dir
for t in target:
if t.name[-4:] == '.mod':
os.rename(t.name,os.path.join(str(targetdir),t.name))
#
# Add main source file
#
env.src_files.append(env.Object(mainsrcadddir+'.cpp'))
real_foodir = sweet_root+mainsrcadddir
#
# Check for program specific source code files in
# src/programs/[compile_program]
#
if os.path.isdir(real_foodir):
cpp_files = glob.glob(real_foodir+'/*.cpp')
for i in cpp_files:
filerelpath = i.replace(sweet_root, '')
# SWE PLANE REXI SPECIAL HANDLING
if os.path.basename(filerelpath) in ['SWE_Plane_REXI.cpp', 'SWE_Sphere_REXI.cpp']:
if env['rexi_thread_parallel_sum']=='enable':
env_omp = env.Clone()
env_omp.Append(CXXFLAGS = ' -fopenmp')
env_omp.src_files.append(env_omp.Object(filerelpath))
else:
env.src_files.append(env.Object(filerelpath))
else:
env.src_files.append(env.Object(filerelpath))
fortran_files = glob.glob(real_foodir+'/*.f90')
for i in fortran_files:
filerelpath = i.replace(sweet_root, '')
obj = env.Object(filerelpath)
env.src_files.append(obj)
#env.AddPostAction(obj, moveModFiles)
Export('env')