firmware/stm32/make_filetime.py
2022-01-14 14:52:04 -05:00

46 lines
1.4 KiB
Python
Executable File

#!/usr/bin/env python3
#
# (c) Copyright 2020 by Coinkite Inc. This file is covered by license found in COPYING-CC.
#
# Capture build time and version number into a number used as the timestamp on
# all created files for that Coldcard version.
#
import os, sys, time, datetime
out_fname, version = sys.argv[1:]
assert out_fname.endswith('.c'), out_fname
if os.path.exists(out_fname):
# to help deterministic builds, don't replace the file from git if verison # is right
with open(out_fname, 'rt') as fd:
if ('// version: %s\n' % version) in fd.read():
print("==> %s already version %s; not changing it" % (out_fname, version))
sys.exit(0)
# DWORD contains date+time w/ 2-second resolution
today = datetime.date.today()
value = ((today.year - 1980) << 25) | (today.month << 21) | (today.day << 16)
# only 2second resolution for times, so can only support minor verion up to x.x.5 and hard to see
# anyway, let's omit ... worst case, use the date instead
h, m, _ = [int(x) for x in version.split('b')[0].split('.')]
value |= (h << 11) | (m << 5)
with open(out_fname, 'wt') as fd:
fd.write('''\
// (c) Copyright 2020-2022 by Coinkite Inc. This file is covered by license found in COPYING-CC.
//
// AUTO-generated.
//
// built: %s
// version: %s
//
#include <stdint.h>
// this overrides ports/stm32/fatfs_port.c
uint32_t get_fattime(void) {
return 0x%08xUL;
}
''' % (today.isoformat(), version, value))