STT-tensorflow/third_party/sycl/crosstool/computecpp.tpl
Benoit Steiner 715585c506 Added a new rule to handle the OpenCL backend: we comment it out in
google3, and enable it in github. This is because we haven't imported the backed in google3 just yet.
Change: 138689620
2016-11-09 15:06:00 -08:00

62 lines
2.3 KiB
Smarty
Executable File

#!/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())