diff options
author | mikhnenko <mikhnenko@yandex-team.com> | 2023-07-20 10:12:30 +0300 |
---|---|---|
committer | mikhnenko <mikhnenko@yandex-team.com> | 2023-07-20 10:12:30 +0300 |
commit | 1b2504dbde60c815023eb3151505ebd955b0b8dc (patch) | |
tree | 023e9ce52fd51d1f024dc3f48d3f433cbd8f0ac6 /build/scripts/clang_profile.py | |
parent | 9e49f01dad6a12a8bb3604e13784747e841f5759 (diff) | |
download | ydb-1b2504dbde60c815023eb3151505ebd955b0b8dc.tar.gz |
Use profile from sources
Diffstat (limited to 'build/scripts/clang_profile.py')
-rw-r--r-- | build/scripts/clang_profile.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/build/scripts/clang_profile.py b/build/scripts/clang_profile.py new file mode 100644 index 00000000000..a47149d8351 --- /dev/null +++ b/build/scripts/clang_profile.py @@ -0,0 +1,45 @@ +import fnmatch +import shutil +import optparse +import os + +import process_command_files as pcf + +def copy_clang_rt_profile(cmd, build_root, arch): + profile_path = None + resource_dir_path = None + + for flag in cmd: + if fnmatch.fnmatch(flag, 'contrib/libs/clang14-rt/lib/profile/libclang_rt.profile-*.a'): + profile_path = flag + if flag.startswith('-resource-dir='): + resource_dir_path = flag[len('-resource-dir='):] + + lib_profile = os.path.join(build_root, profile_path) + profile_name = os.path.basename(lib_profile) + + if arch == 'DARWIN': + dst_dir = os.path.join(build_root, resource_dir_path, 'lib/darwin') + + if arch == 'LINUX': + dst_dir = os.path.join(build_root, resource_dir_path, 'lib/linux') + + os.makedirs(dst_dir, exist_ok=True) + shutil.copy(lib_profile, os.path.join(dst_dir, profile_name)) + + +def parse_args(): + parser = optparse.OptionParser() + parser.disable_interspersed_args() + parser.add_option('--build-root') + parser.add_option('--arch') + parser.add_option('--need-profile-runtime') + return parser.parse_args() + + +if __name__ == '__main__': + opts, args = parse_args() + args = pcf.skip_markers(args) + + if opts.need_profile_runtime != "no": + copy_clang_rt_profile(args, opts.build_root, opts.arch) |