Find compiler version-specific output files automatically
[ghc.git] / testsuite / config / ghc
1
2 import os
3 import re
4
5 # Testsuite configuration setup for GHC
6 #
7 # This file is Python source
8 #
9 config.compiler_type         = 'ghc'
10 config.compiler              = 'ghc'
11 config.compiler_always_flags = ['-no-recomp', '-dcore-lint', '-dcmm-lint']
12
13 config.hp2ps                 = 'hp2ps'
14 config.gs                    = 'gs'
15 config.confdir               = '.'
16
17 # By default, we test the 'normal', 'opt' and 'hpc' ways.
18 # 'optasm' is added by mk/test.mk if the compiler has a native code gen,
19 # 'prof'   is added by mk/test.mk if the profiling way is enabled.
20 config.compile_ways          = ['normal', 'optc', 'hpc']
21 config.run_ways              = ['normal', 'optc', 'hpc']
22
23 # ways that are not enabled by default, but can always be invoked explicitly
24 config.other_ways            = ['extcore','optextcore',
25                                 'prof_hc_hb','prof_hb',
26                                 'prof_hd','prof_hy','prof_hr']
27
28 if (ghc_with_native_codegen == 1):
29         config.compile_ways.append('optasm')
30         config.run_ways.append('optasm')
31
32 if (ghc_with_profiling == 1):
33         config.have_profiling = True
34         config.compile_ways.append('profc')
35         config.run_ways.append('profc')
36         if (ghc_with_native_codegen == 1):
37                 config.compile_ways.append('profasm')
38                 config.run_ways.append('profasm')
39
40 if (ghc_with_interpreter == 1):
41         config.run_ways.append('ghci')
42
43 config.unregisterised = (ghc_unregisterised == 1)
44
45 if (ghc_with_threaded_rts == 1):
46         config.run_ways.append('threaded1')
47         if (ghc_with_smp == 1):
48                 config.run_ways.append('threaded2')
49
50 config.way_flags = {
51         'normal'     : [],
52         'optc'       : ['-O -fvia-C'],
53         'optasm'     : ['-O -fasm'],
54         'profc'      : ['-O -prof -auto-all -fvia-C'],
55         'profasm'    : ['-O -prof -auto-all -fasm'],
56         'ghci'       : ['--interactive', '-v0', '-ignore-dot-ghci'],
57         'extcore'    : ['-fext-core'],
58         'optextcore' : ['-O -fext-core'],
59         'threaded1'  : ['-threaded', '-debug'],
60         'threaded2'  : ['-O', '-threaded'],
61         'hpc'        : ['-O', '-fhpc' ],
62         'prof_hc_hb' : ['-O -prof -auto-all'],
63         'prof_hb'    : ['-O -prof -auto-all'],
64         'prof_hd'    : ['-O -prof -auto-all'],
65         'prof_hy'    : ['-O -prof -auto-all'],
66         'prof_hr'    : ['-O -prof -auto-all']
67         }
68
69 config.way_rts_flags = { 
70         'normal'     : [],
71         'optc'       : [],
72         'optasm'     : [],
73         'profc'      : ['-p'],
74         'profasm'    : ['-hc'], # test heap profiling too
75         'ghci'       : [],
76         'extcore'    : [],
77         'optextcore' : [],
78         'threaded1'  : [],
79         'threaded2'  : ['-N2'],
80         'hpc'        : [],
81         'prof_hc_hb' : ['-hc -hbvoid'],
82         'prof_hb'    : ['-hb'],
83         'prof_hd'    : ['-hd'],
84         'prof_hy'    : ['-hy'],
85         'prof_hr'    : ['-hr']
86         }
87
88 def get_compiler_info():
89     h = os.popen(config.compiler + ' --numeric-version', 'r')
90     v = h.read()
91     h.close()
92     v = re.sub('[\r\n]', '', v)
93     v = v.split('-')
94     config.compiler_version = v[0]
95     config.compiler_maj_version = re.sub('^([0-9]+\.[0-9]+).*',r'\1', v[0])
96     config.compiler_tags = v[1:]