OLD | NEW |
1 # -*- python -*- | 1 # -*- python -*- |
2 # Copyright (c) 2012 The Native Client Authors. All rights reserved. | 2 # Copyright (c) 2012 The Native Client Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 import os | 6 import os |
7 Import('env') | 7 Import('env') |
8 | 8 |
9 if not env.Bit('linux'): Return() | 9 if not env.Bit('linux'): Return() |
10 | 10 |
(...skipping 13 matching lines...) Expand all Loading... |
24 # | 24 # |
25 # valgen : Regenerate any deleted source files. Note: some generated | 25 # valgen : Regenerate any deleted source files. Note: some generated |
26 # source files do understand dependencies and do not need to be | 26 # source files do understand dependencies and do not need to be |
27 # deleted before calling valgen. However, do not count on this, | 27 # deleted before calling valgen. However, do not count on this, |
28 # as some dependencies are not caught. To be safe, if you have | 28 # as some dependencies are not caught. To be safe, if you have |
29 # modified a file that effects source generation, run "valclean" | 29 # modified a file that effects source generation, run "valclean" |
30 # followed by a "valgen" to guarantee that generated sources are | 30 # followed by a "valgen" to guarantee that generated sources are |
31 # up to date. | 31 # up to date. |
32 gen_env = env.Clone(); | 32 gen_env = env.Clone(); |
33 | 33 |
| 34 # Defines dgen directory inside of common arch-independent validator directory. |
| 35 DGEN_SRC_DIR = '${MAIN_DIR}/src/trusted/validator/dgen' |
| 36 |
34 # Defines this source directory. | 37 # Defines this source directory. |
35 GEN_SRC_DIR = '${MAIN_DIR}/src/trusted/validator_arm/gen' | 38 GEN_SRC_DIR = '${MAIN_DIR}/src/trusted/validator_arm/gen' |
36 | 39 |
37 # Defines the full file name for a generated file. | 40 # Defines the full file name for a generated file. |
38 def _gen_file(filename): | 41 def _gen_file(filename): |
39 return '%s/%s' % (GEN_SRC_DIR, filename) | 42 return '%s/%s' % (GEN_SRC_DIR, filename) |
40 | 43 |
| 44 # Defines the full file name for a file inside dgen directory. |
| 45 def _dgen_dir_file(filename): |
| 46 return '%s/%s' % (DGEN_SRC_DIR, filename) |
| 47 |
41 # Set of generated source files. | 48 # Set of generated source files. |
42 GEN_LIST = [_gen_file(x) for x in | 49 GEN_LIST = [_gen_file(x) for x in |
43 ['arm32_decode.cc', 'arm32_decode.h', | 50 ['arm32_decode.cc', 'arm32_decode.h', |
44 'arm32_decode_named.cc' , | 51 'arm32_decode_named.cc' , |
45 'arm32_decode_named_classes.h', | 52 'arm32_decode_named_classes.h', |
46 'arm32_decode_named_decoder.h', | 53 'arm32_decode_named_decoder.h', |
47 'arm32_decode_tests.cc']] | 54 'arm32_decode_tests.cc']] |
48 | 55 |
49 generate = False | 56 generate = False |
50 gen_env = env.Clone(); | 57 gen_env = env.Clone(); |
51 if 'valgen' in COMMAND_LINE_TARGETS: generate = True | 58 if 'valgen' in COMMAND_LINE_TARGETS: generate = True |
52 if 'valclean' in COMMAND_LINE_TARGETS: generate = True | 59 if 'valclean' in COMMAND_LINE_TARGETS: generate = True |
53 | 60 |
54 if generate: | 61 if generate: |
55 gen_env.AlwaysBuild(gen_env.Alias('valgen', GEN_LIST)) | 62 gen_env.AlwaysBuild(gen_env.Alias('valgen', GEN_LIST)) |
56 gen_env.AlwaysBuild( | 63 gen_env.AlwaysBuild( |
57 gen_env.Alias('valclean', action=[Delete(x) for x in GEN_LIST])) | 64 gen_env.Alias('valclean', action=[Delete(x) for x in GEN_LIST])) |
58 | 65 |
59 def _generate_source(filename): | 66 def _generate_source(filename): |
60 env.Command(target=filename, | 67 env.Command(target=filename, |
61 source=['armv7.table', | 68 source=['armv7.table', |
62 'generate_decoder.py', | 69 _dgen_dir_file('generate_decoder.py'), |
63 'dgen_core.py', | 70 _dgen_dir_file('dgen_core.py'), |
64 'dgen_input.py', | 71 _dgen_dir_file('dgen_input.py'), |
65 'dgen_opt.py', | 72 _dgen_dir_file('dgen_opt.py'), |
66 'dgen_output.py', | 73 _dgen_dir_file('dgen_output.py'), |
67 'dgen_decoder_output.py', | 74 _dgen_dir_file('dgen_decoder_output.py'), |
68 'dgen_test_output.py', | 75 _dgen_dir_file('dgen_test_output.py'), |
69 ], | 76 ], |
70 action=['${SOURCES[1].abspath} ${SOURCES[0].abspath} ' | 77 action=['${SOURCES[1].abspath} ${SOURCES[0].abspath} ' |
71 '${TARGET.abspath} Arm32DecoderState']) | 78 '${TARGET.abspath} Arm32DecoderState']) |
72 | 79 |
73 for f in GEN_LIST: | 80 for f in GEN_LIST: |
74 _generate_source(f) | 81 _generate_source(f) |
75 | 82 |
76 env.ComponentLibrary('arm_validator_core', | 83 env.ComponentLibrary('arm_validator_core', |
77 ['address_set.cc', | 84 ['address_set.cc', |
78 'inst_classes.cc', | 85 'inst_classes.cc', |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
160 EXTRA_LIBS=['decoder_test_tools', 'arm_validator_core']) | 167 EXTRA_LIBS=['decoder_test_tools', 'arm_validator_core']) |
161 | 168 |
162 decoder_test_node = gtest_env.CommandTest( | 169 decoder_test_node = gtest_env.CommandTest( |
163 'arm32_decode_tests.out', | 170 'arm32_decode_tests.out', |
164 command=[decoder_tests_exe], | 171 command=[decoder_tests_exe], |
165 scale_timeout=100) | 172 scale_timeout=100) |
166 | 173 |
167 gtest_env.AddNodeToTestSuite(decoder_test_node, | 174 gtest_env.AddNodeToTestSuite(decoder_test_node, |
168 ['huge_tests', 'arm_decoder_tests'], | 175 ['huge_tests', 'arm_decoder_tests'], |
169 'run_arm_decoder_tests') | 176 'run_arm_decoder_tests') |
OLD | NEW |