mirror of
https://github.com/bolero-MURAKAMI/Sprout.git
synced 2025-07-02 14:04:20 +00:00
fix testspr: add --compiler-option
This commit is contained in:
parent
e7b8d74c0f
commit
0f5ed91e03
3 changed files with 31 additions and 10 deletions
|
@ -10,5 +10,6 @@
|
||||||
|
|
||||||
#include <sprout/config.hpp>
|
#include <sprout/config.hpp>
|
||||||
#include <sprout/workaround/recursive_function_template.hpp>
|
#include <sprout/workaround/recursive_function_template.hpp>
|
||||||
|
#include <sprout/workaround/base_class_construct.hpp>
|
||||||
|
|
||||||
#endif // #ifndef SPROUT_WORKAROUND_HPP
|
#endif // #ifndef SPROUT_WORKAROUND_HPP
|
||||||
|
|
|
@ -23,15 +23,17 @@ def main():
|
||||||
parser.add_option('--clang_version', type='string', default='.')
|
parser.add_option('--clang_version', type='string', default='.')
|
||||||
parser.add_option('--gcc_root', type='string', default='/usr/local')
|
parser.add_option('--gcc_root', type='string', default='/usr/local')
|
||||||
parser.add_option('--clang_root', type='string', default='/usr/local')
|
parser.add_option('--clang_root', type='string', default='/usr/local')
|
||||||
parser.add_option('--compile_options', type='string', default='')
|
parser.add_option('--all_options', type='string', default='')
|
||||||
parser.add_option('--test_cpp', type='string')
|
parser.add_option('--test_cpp', type='string')
|
||||||
parser.add_option('--serialized_std_options', type='string', default='{}')
|
parser.add_option('--serialized_std_options', type='string', default='{}')
|
||||||
|
parser.add_option('--serialized_compiler_specific_options', type='string', default='{}')
|
||||||
parser.add_option('--serialized_version_specific_options', type='string', default='{}')
|
parser.add_option('--serialized_version_specific_options', type='string', default='{}')
|
||||||
parser.add_option('--max_procs', type='int', default=0)
|
parser.add_option('--max_procs', type='int', default=0)
|
||||||
(opts, args) = parser.parse_args()
|
(opts, args) = parser.parse_args()
|
||||||
|
|
||||||
std_options = eval(opts.serialized_std_options)
|
std_options = eval(opts.serialized_std_options)
|
||||||
version_specific_options = eval(opts.serialized_version_specific_options)
|
version_specific_options = eval(opts.serialized_version_specific_options)
|
||||||
|
compiler_specific_options = eval(opts.serialized_compiler_specific_options)
|
||||||
|
|
||||||
def format_command(name, version, root):
|
def format_command(name, version, root):
|
||||||
base = "%s-%s" % (name, version) if version != "." else name
|
base = "%s-%s" % (name, version) if version != "." else name
|
||||||
|
@ -40,11 +42,13 @@ def main():
|
||||||
execute_log = "%s/test.%s.execute.log" % (opts.stagedir, base.replace('.', ''))
|
execute_log = "%s/test.%s.execute.log" % (opts.stagedir, base.replace('.', ''))
|
||||||
compiler = "%s/%s/bin/%s++" % (root, base, name.rstrip('c')) if version != "." else "%s++" % name.rstrip('c')
|
compiler = "%s/%s/bin/%s++" % (root, base, name.rstrip('c')) if version != "." else "%s++" % name.rstrip('c')
|
||||||
return "%s -o %s" \
|
return "%s -o %s" \
|
||||||
" %s %s %s" \
|
" %s %s" \
|
||||||
|
" %s %s" \
|
||||||
" %s > %s 2>&1" \
|
" %s > %s 2>&1" \
|
||||||
" && %s > %s 2>&1" \
|
" && %s > %s 2>&1" \
|
||||||
% (compiler, bin,
|
% (compiler, bin,
|
||||||
std_options.get(base, ''), opts.compile_options, version_specific_options.get(base, ''),
|
std_options.get(base, ''), opts.all_options,
|
||||||
|
compiler_specific_options.get(name, ''), version_specific_options.get(base, ''),
|
||||||
opts.test_cpp, compile_log,
|
opts.test_cpp, compile_log,
|
||||||
bin, execute_log
|
bin, execute_log
|
||||||
)
|
)
|
||||||
|
@ -54,11 +58,13 @@ def main():
|
||||||
build,
|
build,
|
||||||
[format_command('gcc', version, opts.gcc_root)
|
[format_command('gcc', version, opts.gcc_root)
|
||||||
for version in opts.gcc_version.split(' ')
|
for version in opts.gcc_version.split(' ')
|
||||||
]
|
] if opts.gcc_version != ' '
|
||||||
|
else []
|
||||||
+
|
+
|
||||||
[format_command('clang', version, opts.clang_root)
|
[format_command('clang', version, opts.clang_root)
|
||||||
for version in opts.clang_version.split(' ')
|
for version in opts.clang_version.split(' ')
|
||||||
]
|
] if opts.clang_version != ' '
|
||||||
|
else []
|
||||||
))
|
))
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
|
@ -21,6 +21,8 @@ force=0
|
||||||
use_help=0
|
use_help=0
|
||||||
std="c++11"
|
std="c++11"
|
||||||
declare -a common_options=()
|
declare -a common_options=()
|
||||||
|
declare -a compiler_options=()
|
||||||
|
declare -A compiler_specific_options=()
|
||||||
declare -a version_options=()
|
declare -a version_options=()
|
||||||
declare -A version_specific_options=(
|
declare -A version_specific_options=(
|
||||||
# [clang-3.3]='-ftemplate-depth=512'
|
# [clang-3.3]='-ftemplate-depth=512'
|
||||||
|
@ -53,7 +55,7 @@ get_std_option() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
args=`getopt -o S:g:c:O:V:D:I:P:f -l stagedir:,gcc-version:,clang-version:,gcc-root:,clang-root:,std:,option:,version-option:,define:,include:,max-procs:,force,help -- "$@"`
|
args=`getopt -o S:g:c:O:C:V:D:I:P:f -l stagedir:,gcc-version:,clang-version:,gcc-root:,clang-root:,std:,option:,compiler-option:,version-option:,define:,include:,max-procs:,force,help -- "$@"`
|
||||||
if [ "$?" -ne 0 ]; then
|
if [ "$?" -ne 0 ]; then
|
||||||
echo >&2 "error: options parse error. See 'test.sh --help'"
|
echo >&2 "error: options parse error. See 'test.sh --help'"
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -68,6 +70,7 @@ while [ -n "$1" ]; do
|
||||||
--clang-root) clang_root="$2"; shift 2;;
|
--clang-root) clang_root="$2"; shift 2;;
|
||||||
--std) std="$2"; shift 2;;
|
--std) std="$2"; shift 2;;
|
||||||
-O|--option) common_options=("${common_options[@]}" "$2"); shift 2;;
|
-O|--option) common_options=("${common_options[@]}" "$2"); shift 2;;
|
||||||
|
-C|--compiler-option) compiler_options=("${compiler_options[@]}" "$2"); shift 2;;
|
||||||
-V|--version-option) version_options=("${version_options[@]}" "$2"); shift 2;;
|
-V|--version-option) version_options=("${version_options[@]}" "$2"); shift 2;;
|
||||||
-D|--define) user_macros=("${user_macros[@]}" "$2"); shift 2;;
|
-D|--define) user_macros=("${user_macros[@]}" "$2"); shift 2;;
|
||||||
-I|--include) include_paths=("${include_paths[@]}" "$2"); shift 2;;
|
-I|--include) include_paths=("${include_paths[@]}" "$2"); shift 2;;
|
||||||
|
@ -104,6 +107,9 @@ if [ ${use_help} -ne 0 ]; then
|
||||||
echo ""
|
echo ""
|
||||||
echo " -O, --option=<opt> Add compile option."
|
echo " -O, --option=<opt> Add compile option."
|
||||||
echo ""
|
echo ""
|
||||||
|
echo " -C, --compiler-option=<opt> Add compiler specific compile option."
|
||||||
|
echo " Example; 'clang -ftemplate-depth=512'"
|
||||||
|
echo ""
|
||||||
echo " -V, --version-option=<opt> Add version specific compile option."
|
echo " -V, --version-option=<opt> Add version specific compile option."
|
||||||
echo " Example; 'clang-3.3 -ftemplate-depth=512'"
|
echo " Example; 'clang-3.3 -ftemplate-depth=512'"
|
||||||
echo ""
|
echo ""
|
||||||
|
@ -129,6 +135,7 @@ echo " gcc-root = '${gcc_root}'"
|
||||||
echo " clang-root = '${clang_root}'"
|
echo " clang-root = '${clang_root}'"
|
||||||
echo " std = '${std}'"
|
echo " std = '${std}'"
|
||||||
echo " common-options = (${common_options[*]})"
|
echo " common-options = (${common_options[*]})"
|
||||||
|
echo " compiler-options = (${compiler_options[*]})"
|
||||||
echo " version-options = (${version_options[*]})"
|
echo " version-options = (${version_options[*]})"
|
||||||
echo " user-macros = (${user_macros[*]})"
|
echo " user-macros = (${user_macros[*]})"
|
||||||
echo " include-paths = (${include_paths[*]})"
|
echo " include-paths = (${include_paths[*]})"
|
||||||
|
@ -141,7 +148,7 @@ done
|
||||||
for include_path in ${include_paths}; do
|
for include_path in ${include_paths}; do
|
||||||
include_options="${include_options} -I${include_path}"
|
include_options="${include_options} -I${include_path}"
|
||||||
done
|
done
|
||||||
compile_options="-v -Wall -pedantic ${define_options} ${include_options} ${common_options[*]}"
|
all_options="-v -Wall -pedantic ${define_options} ${include_options} ${common_options[*]}"
|
||||||
vo=0
|
vo=0
|
||||||
vkey=""
|
vkey=""
|
||||||
for option in ${version_options}; do
|
for option in ${version_options}; do
|
||||||
|
@ -204,12 +211,12 @@ if [ -z "${max_procs}" ]; then
|
||||||
fail_count=0
|
fail_count=0
|
||||||
for version in ${gcc_version}; do
|
for version in ${gcc_version}; do
|
||||||
std_option=`get_std_option "gcc" "${version}" "${std}"`
|
std_option=`get_std_option "gcc" "${version}" "${std}"`
|
||||||
compile "gcc" "${version}" "${test_cpp}" "${std_option} ${compile_options}" "${gcc_root}"
|
compile "gcc" "${version}" "${test_cpp}" "${std_option} ${all_options} ${compiler_specific_options[gcc]}" "${gcc_root}"
|
||||||
let fail_count=${fail_count}+$?
|
let fail_count=${fail_count}+$?
|
||||||
done
|
done
|
||||||
for version in ${clang_version}; do
|
for version in ${clang_version}; do
|
||||||
std_option=`get_std_option "clang" "${version}" "${std}"`
|
std_option=`get_std_option "clang" "${version}" "${std}"`
|
||||||
compile "clang" "${version}" "${test_cpp}" "${std_option} ${compile_options}" "${clang_root}"
|
compile "clang" "${version}" "${test_cpp}" "${std_option} ${all_options} ${compiler_specific_options[clang]}" "${clang_root}"
|
||||||
let fail_count=${fail_count}+$?
|
let fail_count=${fail_count}+$?
|
||||||
done
|
done
|
||||||
if [ ${fail_count} -ne 0 ]; then
|
if [ ${fail_count} -ne 0 ]; then
|
||||||
|
@ -220,6 +227,12 @@ if [ -z "${max_procs}" ]; then
|
||||||
else
|
else
|
||||||
echo " processing in parallel mode."
|
echo " processing in parallel mode."
|
||||||
echo -n " "
|
echo -n " "
|
||||||
|
serialized_compiler_specific_options={`
|
||||||
|
for key in $(echo ${!compiler_specific_options[*]}); do
|
||||||
|
echo \'${key}\':\'${compiler_specific_options[${key}]}\',
|
||||||
|
done
|
||||||
|
echo \'_\':\'\'
|
||||||
|
`}
|
||||||
serialized_version_specific_options={`
|
serialized_version_specific_options={`
|
||||||
for key in $(echo ${!version_specific_options[*]}); do
|
for key in $(echo ${!version_specific_options[*]}); do
|
||||||
echo \'${key}\':\'${version_specific_options[${key}]}\',
|
echo \'${key}\':\'${version_specific_options[${key}]}\',
|
||||||
|
@ -251,8 +264,9 @@ else
|
||||||
"--stagedir=${stagedir}" \
|
"--stagedir=${stagedir}" \
|
||||||
"--gcc_version=${gcc_version}" "--clang_version=${clang_version}" \
|
"--gcc_version=${gcc_version}" "--clang_version=${clang_version}" \
|
||||||
"--gcc_root=${gcc_root}" "--clang_root=${clang_root}" \
|
"--gcc_root=${gcc_root}" "--clang_root=${clang_root}" \
|
||||||
"--compile_options=${compile_options}" "--test_cpp=${test_cpp}" \
|
"--all_options=${all_options}" "--test_cpp=${test_cpp}" \
|
||||||
"--serialized_std_options=${serialized_std_options}" \
|
"--serialized_std_options=${serialized_std_options}" \
|
||||||
|
"--serialized_compiler_specific_options=${serialized_compiler_specific_options}" \
|
||||||
"--serialized_version_specific_options=${serialized_version_specific_options}" \
|
"--serialized_version_specific_options=${serialized_version_specific_options}" \
|
||||||
"--max_procs=${max_procs}"
|
"--max_procs=${max_procs}"
|
||||||
fail_count=$?
|
fail_count=$?
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue