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