aboutsummaryrefslogtreecommitdiffhomepage
path: root/third_party/sycl/crosstool/computecpp.tpl
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/sycl/crosstool/computecpp.tpl')
-rwxr-xr-xthird_party/sycl/crosstool/computecpp.tpl61
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())