123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- #! /usr/bin/env python
- # Copyright (c) 2021, The Linux Foundation. All rights reserved.
- #
- # Redistribution and use in source and binary forms, with or without
- # modification, are permitted provided that the following conditions are
- # met:
- # * Redistributions of source code must retain the above copyright
- # notice, this list of conditions and the following disclaimer.
- # * Redistributions in binary form must reproduce the above
- # copyright notice, this list of conditions and the following
- # disclaimer in the documentation and/or other materials provided
- # with the distribution.
- # * Neither the name of The Linux Foundation nor the names of its
- # contributors may be used to endorse or promote products derived
- # from this software without specific prior written permission.
- #
- # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- # BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- import os
- import os.path
- import subprocess
- import sys
- import shutil
- install_dir = '/ipa-kernel-tests' # unlikely to ever change, so 'file constant'
- def get_args():
- class Args:
- pass
- args = Args()
- try:
- args.cc_path = os.path.dirname(os.environ['CROSS_COMPILE'])
- except:
- args.cc_path = None
- try:
- args.arch = os.environ['ARCH']
- except:
- raise Exception("ARCH must be set")
- try:
- args.kdir = os.environ['KDIR']
- except:
- raise Exception("KDIR must be set")
- try:
- args.dest = os.environ['DESTDIR']
- except:
- raise Exception("DESTDIR must be set")
- return args
- def do(cmd, wdir=None):
- cwd = None
- if wdir:
- cwd = os.getcwd()
- os.chdir(wdir)
- subprocess.check_call(cmd)
- if cwd:
- os.chdir(cwd)
- def build(args):
- if args.cc_path:
- os.environ['PATH'] = args.cc_path + ':' + os.environ['PATH']
- args.uapi = args.kdir + '/usr/include'
- args.src = args.kdir + '/techpack/dataipa/kernel-tests'
- args.inc = args.kdir + '/techpack/dataipa/drivers/platform/msm/ipa/ipa_test_module'
- full_uapi = os.path.abspath(args.uapi)
- os.environ['CPPFLAGS'] = ('-I' + full_uapi)
- full_inc = os.path.abspath(args.inc)
- os.environ['CPPFLAGS'] += (' -I' + full_inc)
- configure(args, args.src)
- do(['make'], args.src)
- do(['make', 'DESTDIR=' + args.dest, 'install'], args.src)
- def configure(args, wdir):
- if os.path.isfile(os.path.join(wdir, 'config.h')):
- return
- do(['libtoolize'], wdir)
- do(['./autogen.sh'], wdir)
- full_idir = os.path.abspath(os.path.join(wdir, install_dir))
- host_str = 'arm-linux-gnueabihf'
- config_extra = ''
- if args.arch == 'arm64':
- host_str = 'aarch64-linux-gnu'
- config_extra = '--disable-swp'
- do(['./configure',
- '--host=' + host_str,
- '--prefix=' + full_idir,
- config_extra], wdir)
- def main():
- rc = 0
- try:
- args = get_args()
- build(args)
- except Exception as e:
- rc = 1
- print(e)
- sys.exit(rc)
- if __name__ == '__main__':
- main()
|