73 lines
2.7 KiB
Python
73 lines
2.7 KiB
Python
|
#!/usr/bin/env python
|
||
|
#
|
||
|
# Copyright 2018 Google Inc.
|
||
|
#
|
||
|
# Use of this source code is governed by a BSD-style license that can be
|
||
|
# found in the LICENSE file.
|
||
|
|
||
|
|
||
|
"""Create the asset."""
|
||
|
|
||
|
|
||
|
import argparse
|
||
|
import common
|
||
|
import multiprocessing
|
||
|
import os
|
||
|
import shutil
|
||
|
import subprocess
|
||
|
import utils
|
||
|
|
||
|
def create_asset(target_dir):
|
||
|
"""Create the asset."""
|
||
|
# Check out and build the Intel NEO driver. Following instructions here:
|
||
|
# https://github.com/intel/compute-runtime/blob/master/documentation/BUILD_Ubuntu.md
|
||
|
with utils.tmp_dir():
|
||
|
# Install build deps.
|
||
|
neo_build_deps = ['ccache', 'flex', 'bison', 'clang-4.0', 'cmake', 'g++',
|
||
|
'git', 'patch', 'zlib1g-dev', 'autoconf', 'xutils-dev',
|
||
|
'libtool', 'pkg-config', 'libpciaccess-dev']
|
||
|
apt_get_cmd = ['sudo', 'apt-get', 'install'] + neo_build_deps
|
||
|
print 'Running "%s"' % ' '.join(apt_get_cmd)
|
||
|
subprocess.check_call(apt_get_cmd)
|
||
|
# Check out repos.
|
||
|
for [repo, branch, local_name] in [
|
||
|
['llvm-mirror/clang', 'release_40', 'clang_source'],
|
||
|
['intel/opencl-clang', 'master', 'common_clang'],
|
||
|
['intel/llvm-patches', 'master', 'llvm_patches'],
|
||
|
['llvm-mirror/llvm', 'release_40', 'llvm_source'],
|
||
|
['intel/gmmlib', 'master', 'gmmlib'],
|
||
|
['intel/intel-graphics-compiler', 'master', 'igc'],
|
||
|
['KhronosGroup/OpenCL-Headers', 'master', 'opencl_headers'],
|
||
|
['intel/compute-runtime', 'master', 'neo']
|
||
|
]:
|
||
|
subprocess.check_call(['git', 'clone', '--depth', '1', '--branch', branch,
|
||
|
'https://github.com/' + repo, local_name])
|
||
|
# Configure the build.
|
||
|
build_dir = os.path.join(os.getcwd(), 'build')
|
||
|
os.mkdir(build_dir)
|
||
|
os.chdir(build_dir)
|
||
|
subprocess.check_call(['cmake', '-DBUILD_TYPE=Release',
|
||
|
'-DCMAKE_BUILD_TYPE=Release', '../neo'])
|
||
|
# Build and package the library.
|
||
|
subprocess.check_call(['make', '-j%d' % multiprocessing.cpu_count(),
|
||
|
'package'])
|
||
|
# Extract library and move necessary files to target_dir. We ignore the ICD
|
||
|
# file because it's generated on the bot after we know the path to the CIPD
|
||
|
# package.
|
||
|
subprocess.check_call(['dpkg-deb', '--extract',
|
||
|
'intel-opencl-1.0-0.x86_64-igdrcl.deb', build_dir])
|
||
|
lib_dir = os.path.join(build_dir, 'usr', 'local', 'lib')
|
||
|
for f in os.listdir(lib_dir):
|
||
|
shutil.move(os.path.join(lib_dir, f), target_dir)
|
||
|
|
||
|
|
||
|
def main():
|
||
|
parser = argparse.ArgumentParser()
|
||
|
parser.add_argument('--target_dir', '-t', required=True)
|
||
|
args = parser.parse_args()
|
||
|
create_asset(args.target_dir)
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
main()
|