X-Git-Url: http://git.code-monkey.de/?p=gps-watch.git;a=blobdiff_plain;f=SConstruct;h=6823b768066b8f95c4ac6a0947ec3b5ccd720e63;hp=4b5a1bc6b3d3d546d9c351ce83be39abc9dda1d9;hb=6b632e25e7a08c19ccb6f36d1a8529e35bfee4e8;hpb=e9d9270ef470e7141a9f6d9dea76e0108105a902 diff --git a/SConstruct b/SConstruct index 4b5a1bc..6823b76 100644 --- a/SConstruct +++ b/SConstruct @@ -11,6 +11,7 @@ if ARGUMENTS.get('V', '0') != '1': root_env['ARCOMSTR'] = ' AR $TARGET' root_env['RANLIBCOMSTR'] = ' RANLIB $TARGET' root_env['OBJCOPYCOMSTR'] = ' OBJCOPY $TARGET' + root_env['FRMCOMSTR'] = ' FRM $TARGET' # Make colored output of e.g. gcc work. root_env['ENV']['TERM'] = os.environ.get('TERM') @@ -32,6 +33,26 @@ root_env.Append(BUILDERS = { 'Objcopy': Builder( suffix='.bin', src_suffix='.elf')}) +def xor8(buf): + import functools + + return functools.reduce(lambda x, y: (x & 0xff) ^ (y & 0xff), buf) + +def build_frm(target, source, env): + with open(str(source[0]), 'rb') as f_in: + buf = f_in.read() + + with open(str(target[0]), 'wb') as f_out: + f_out.write(buf) + f_out.write(bytearray([xor8(buf)])) + + return 0 + +root_env.Append(BUILDERS = { 'Frm': Builder( + action=Action(build_frm, '$FRMCOMSTR'), + suffix='.frm', + src_suffix='.bin')}) + env = root_env.Clone() env['variant_dir'] = 'build-target' env['LIBPATH'] = env['variant_dir']