15f9996aaSopenharmony_ci#!/usr/bin/env python3 25f9996aaSopenharmony_ci# -*- coding: utf-8 -*- 35f9996aaSopenharmony_ci# Copyright (c) 2022 Huawei Device Co., Ltd. 45f9996aaSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License"); 55f9996aaSopenharmony_ci# you may not use this file except in compliance with the License. 65f9996aaSopenharmony_ci# You may obtain a copy of the License at 75f9996aaSopenharmony_ci# 85f9996aaSopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0 95f9996aaSopenharmony_ci# 105f9996aaSopenharmony_ci# Unless required by applicable law or agreed to in writing, software 115f9996aaSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS, 125f9996aaSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135f9996aaSopenharmony_ci# See the License for the specific language governing permissions and 145f9996aaSopenharmony_ci# limitations under the License. 155f9996aaSopenharmony_ci 165f9996aaSopenharmony_ci 175f9996aaSopenharmony_ciimport argparse 185f9996aaSopenharmony_ciimport os 195f9996aaSopenharmony_ciimport subprocess 205f9996aaSopenharmony_ciimport sys 215f9996aaSopenharmony_ci 225f9996aaSopenharmony_ci 235f9996aaSopenharmony_cidef do_strip(strip, output, unstripped_file, mini_debug, clang_base_dir): 245f9996aaSopenharmony_ci if strip: 255f9996aaSopenharmony_ci result = subprocess.call( 265f9996aaSopenharmony_ci [strip, '-o', output, unstripped_file]) 275f9996aaSopenharmony_ci 285f9996aaSopenharmony_ci if mini_debug and not unstripped_file.endswith(".exe") and not unstripped_file.endswith(".dll"): 295f9996aaSopenharmony_ci unstripped_libfile = os.path.abspath(unstripped_file) 305f9996aaSopenharmony_ci script_path = os.path.join( 315f9996aaSopenharmony_ci os.path.dirname(__file__), 'mini_debug_info.py') 325f9996aaSopenharmony_ci ohos_root_path = os.path.join(os.path.dirname(__file__), '../..') 335f9996aaSopenharmony_ci result = subprocess.call( 345f9996aaSopenharmony_ci ['python3', script_path, '--unstripped-path', unstripped_libfile, '--stripped-path', output, 355f9996aaSopenharmony_ci '--root-path', ohos_root_path, '--clang-base-dir', clang_base_dir]) 365f9996aaSopenharmony_ci 375f9996aaSopenharmony_ci return result 385f9996aaSopenharmony_ci 395f9996aaSopenharmony_ci 405f9996aaSopenharmony_cidef main(): 415f9996aaSopenharmony_ci parser = argparse.ArgumentParser(description=__doc__) 425f9996aaSopenharmony_ci parser.add_argument('--strip', 435f9996aaSopenharmony_ci help='The strip binary to run', 445f9996aaSopenharmony_ci metavar='FILE') 455f9996aaSopenharmony_ci parser.add_argument('--unstripped-file', 465f9996aaSopenharmony_ci help='Binary file produced by linking command', 475f9996aaSopenharmony_ci metavar='FILE') 485f9996aaSopenharmony_ci parser.add_argument('--output', 495f9996aaSopenharmony_ci required=True, 505f9996aaSopenharmony_ci help='Final output binary file', 515f9996aaSopenharmony_ci metavar='FILE') 525f9996aaSopenharmony_ci parser.add_argument('command', nargs='+', 535f9996aaSopenharmony_ci help='Linking command') 545f9996aaSopenharmony_ci parser.add_argument('--mini-debug', 555f9996aaSopenharmony_ci action='store_true', 565f9996aaSopenharmony_ci default=False, 575f9996aaSopenharmony_ci help='Add .gnu_debugdata section for stripped sofile') 585f9996aaSopenharmony_ci parser.add_argument('--clang-base-dir', help='') 595f9996aaSopenharmony_ci args = parser.parse_args() 605f9996aaSopenharmony_ci 615f9996aaSopenharmony_ci return do_strip(args.strip, args.output, args.unstripped_file, args.mini_debug, args.clang_base_dir) 625f9996aaSopenharmony_ci 635f9996aaSopenharmony_ci 645f9996aaSopenharmony_ciif __name__ == "__main__": 655f9996aaSopenharmony_ci sys.exit(main()) 66