111986Sandreas.sandberg@arm.comfrom __future__ import print_function, division
211986Sandreas.sandberg@arm.comimport os
311986Sandreas.sandberg@arm.comimport sys
411986Sandreas.sandberg@arm.com
511986Sandreas.sandberg@arm.com# Internal build script for generating debugging test .so size.
611986Sandreas.sandberg@arm.com# Usage:
711986Sandreas.sandberg@arm.com#     python libsize.py file.so save.txt -- displays the size of file.so and, if save.txt exists, compares it to the
811986Sandreas.sandberg@arm.com#                                           size in it, then overwrites save.txt with the new size for future runs.
911986Sandreas.sandberg@arm.com
1011986Sandreas.sandberg@arm.comif len(sys.argv) != 3:
1111986Sandreas.sandberg@arm.com    sys.exit("Invalid arguments: usage: python libsize.py file.so save.txt")
1211986Sandreas.sandberg@arm.com
1311986Sandreas.sandberg@arm.comlib = sys.argv[1]
1411986Sandreas.sandberg@arm.comsave = sys.argv[2]
1511986Sandreas.sandberg@arm.com
1611986Sandreas.sandberg@arm.comif not os.path.exists(lib):
1711986Sandreas.sandberg@arm.com    sys.exit("Error: requested file ({}) does not exist".format(lib))
1811986Sandreas.sandberg@arm.com
1911986Sandreas.sandberg@arm.comlibsize = os.path.getsize(lib)
2011986Sandreas.sandberg@arm.com
2111986Sandreas.sandberg@arm.comprint("------", os.path.basename(lib), "file size:", libsize, end='')
2211986Sandreas.sandberg@arm.com
2311986Sandreas.sandberg@arm.comif os.path.exists(save):
2411986Sandreas.sandberg@arm.com    with open(save) as sf:
2511986Sandreas.sandberg@arm.com        oldsize = int(sf.readline())
2611986Sandreas.sandberg@arm.com
2711986Sandreas.sandberg@arm.com    if oldsize > 0:
2811986Sandreas.sandberg@arm.com        change = libsize - oldsize
2911986Sandreas.sandberg@arm.com        if change == 0:
3011986Sandreas.sandberg@arm.com            print(" (no change)")
3111986Sandreas.sandberg@arm.com        else:
3211986Sandreas.sandberg@arm.com            print(" (change of {:+} bytes = {:+.2%})".format(change, change / oldsize))
3311986Sandreas.sandberg@arm.comelse:
3411986Sandreas.sandberg@arm.com    print()
3511986Sandreas.sandberg@arm.com
3611986Sandreas.sandberg@arm.comwith open(save, 'w') as sf:
3711986Sandreas.sandberg@arm.com    sf.write(str(libsize))
3811986Sandreas.sandberg@arm.com
39