diff options
Diffstat (limited to 'third_party/sycl/crosstool/computecpp.tpl')
-rwxr-xr-x | third_party/sycl/crosstool/computecpp.tpl | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/third_party/sycl/crosstool/computecpp.tpl b/third_party/sycl/crosstool/computecpp.tpl new file mode 100755 index 0000000000..4860e9f0a0 --- /dev/null +++ b/third_party/sycl/crosstool/computecpp.tpl @@ -0,0 +1,61 @@ +#!/usr/bin/env python + +from argparse import ArgumentParser +import os +import subprocess +import re +import sys +import pipes + +CPU_CXX_COMPILER = ('%{host_cxx_compiler}') +CPU_C_COMPILER = ('%{host_c_compiler}') + +CURRENT_DIR = os.path.dirname(sys.argv[0]) +COMPUTECPP_ROOT = CURRENT_DIR +"/../sycl/" +COMPUTECPP_DRIVER= COMPUTECPP_ROOT+"bin/compute++" +COMPUTECPP_INCLUDE = COMPUTECPP_ROOT+"include" + +def main(): + computecpp_compiler_flags = [""] + computecpp_compiler_flags = [flag for flag in sys.argv[1:]] + computecpp_compiler_flags = computecpp_compiler_flags + ["-D_GLIBCXX_USE_CXX11_ABI=0"] + + output_file_index = computecpp_compiler_flags.index("-o") +1 + output_file_name = computecpp_compiler_flags[output_file_index] + + if(output_file_index == 1): + # we are linking + return subprocess.call([CPU_CXX_COMPILER] +computecpp_compiler_flags ) + + # find what we compile + compiling_cpp = 0 + if("-c" in computecpp_compiler_flags): + compiled_file_index = computecpp_compiler_flags.index("-c") +1 + compited_file_name = computecpp_compiler_flags[compiled_file_index] + if(compited_file_name.endswith(('.cc', '.c++', '.cpp', '.CPP', '.C', '.cxx'))): + compiling_cpp = 1; + + if(compiling_cpp == 1): + filename, file_extension = os.path.splitext(output_file_name) + bc_out = filename + ".sycl" + + computecpp_compiler_flags = ['-DTENSORFLOW_USE_SYCL', '-Wno-unused-variable','-I', COMPUTECPP_INCLUDE,'-isystem', + COMPUTECPP_INCLUDE, "-std=c++11", "-sycl", "-emit-llvm", "-no-serial-memop"] + computecpp_compiler_flags + + # dont want that in case of compiling with computecpp first + host_compiler_flags = [""] + host_compiler_flags = [flag for flag in sys.argv[1:] + if not flag.startswith(('-MF','-MD',)) + if not ".d" in flag] + + x = subprocess.call([COMPUTECPP_DRIVER] +computecpp_compiler_flags ) + if(x == 0): + host_compiler_flags = ['-DTENSORFLOW_USE_SYCL', '-Wno-unused-variable', '-I', COMPUTECPP_INCLUDE, "--include",bc_out] + host_compiler_flags + return subprocess.call([CPU_CXX_COMPILER] +host_compiler_flags ) + return x + else: + # compile for C + return subprocess.call([CPU_C_COMPILER] +computecpp_compiler_flags) + +if __name__ == '__main__': + sys.exit(main()) |