13
def generate_makefiles (params, config):
14
lang = config.get_host_language()
15
if "C" == lang or "c" == lang:
16
generate_makefiles_c (params)
18
generate_makefiles_fortran (params)
22
def generate_makefiles_fortran (params):
24
platform = params.get_target()
26
settings = skel_settings.skel_settings()
28
makefile = open ('Makefile', 'w')
30
# Makefile generation no longer depends on the target, just using default here.
31
#makefile_template_name = '~/.skel/templates/Makefile.' + platform + '.tpl'
32
makefile_template_name = '~/.skel/templates/Makefile.default.tpl'
33
makefile_template = open(os.path.expanduser(makefile_template_name), 'r')
35
include_statement = "" + os.path.dirname (sys.argv[0]) + '/../etc/skel/compiler_fragment.mk'
37
for template_line in makefile_template:
39
# Fill in any replacement vars in this line...
40
template_line = template_line.replace ('$$APP$$', params.get_application () )
41
template_line = template_line.replace ('$$INCLUDE$$', include_statement)
42
template_line = template_line.replace ('$$TARGET$$', platform)
43
template_line = template_line.replace ('$$DEPLOY_DIR$$', settings.get_deploy_dir())
44
template_line = template_line.replace ('$$CORES_USED$$', '%d'%params.get_batches()[0].get_cores())
46
if '$$CTESTS$$' in template_line:
47
template_line = template_line.replace ('$$CTESTS$$', '')
49
if '$$FTESTS$$' in template_line:
52
for batch in params.get_batches():
53
for test in batch.get_tests():
54
test_set.add (params.get_application() + '_skel_' + test.get_group_name() + '_' + test.get_type() + ' ')
57
test_string = test_string + t
58
template_line = template_line.replace ('$$FTESTS$$', test_string)
60
makefile.write (template_line)
63
def generate_makefiles_c (params):
65
platform = params.get_target()
67
settings = skel_settings.skel_settings()
69
makefile = open ('Makefile', 'w')
71
# Makefile generation no longer depends on the target, just using default here.
72
#makefile_template_name = os.path.dirname (sys.argv[0]) + '/../etc/skel/templates/Makefile.' + platform + '.tpl'
73
makefile_template_name = os.path.dirname (sys.argv[0]) + '/../etc/skel/templates/Makefile.default.tpl'
74
makefile_template = open(os.path.expanduser(makefile_template_name), 'r')
76
include_statement = "" + os.path.dirname (sys.argv[0]) + '/../etc/skel/compiler_fragment.mk'
78
for template_line in makefile_template:
80
# Fill in any replacement vars in this line...
81
template_line = template_line.replace ('$$APP$$', params.get_application () )
82
template_line = template_line.replace ('$$INCLUDE$$', include_statement)
83
template_line = template_line.replace ('$$TARGET$$', platform)
84
template_line = template_line.replace ('$$DEPLOY_DIR$$', settings.get_deploy_dir())
86
template_line = template_line.replace ('$$CORES_USED$$', '%d'%params.get_batches()[0].get_cores())
88
if '$$FTESTS$$' in template_line:
89
template_line = template_line.replace ('$$FTESTS$$', '')
91
if '$$CTESTS$$' in template_line:
94
for batch in params.get_batches():
95
for test in batch.get_tests():
96
test_set.add (params.get_application() + '_skel_' + test.get_group_name() + '_' + test.get_type() + ' ')
99
test_string = test_string + t
100
template_line = template_line.replace ('$$CTESTS$$', test_string)
102
makefile.write (template_line)
105
def parse_command_line():
107
parser = argparse.ArgumentParser (description='Create a Makefile for the given skel project')
108
parser.add_argument ('project', metavar='project', help='Name of the skel project')
110
return parser.parse_args()
115
skel_settings.create_settings_dir_if_needed()
117
args = parse_command_line()
119
config = adios.adiosConfig (args.project + '_skel.xml')
120
params = skelconf.skelConfig (args.project + '_params.xml')
122
lang = config.get_host_language ()
123
if 'c' == lang or 'C' == lang:
124
print 'generating C flavored Makefile'
125
generate_makefiles_c (params)
127
print 'generating fortran flavored Makefile'
128
generate_makefiles_fortran (params)
132
if __name__ == "__main__":