7 host = os.environ.get('HOST', 'arm-none-eabi-')
17 for k, v in d.items():
20 env.Append(CCFLAGS = [
21 '-mcpu=cortex-m0plus',
23 '-ffunction-sections',
28 env.Append(LINKFLAGS = [
29 '-mcpu=cortex-m0plus',
38 subprocess.check_output('{} -print-libgcc-file-name'.format(env['CC']),
39 shell=True).strip().decode('utf-8')
41 env.Append(RUSTCFLAGS = [
43 '-C', 'link-arg={}'.format(libgcc_path),
44 '--target=thumbv6m-none-eabi',
49 env.Append(LINKFLAGS = [
53 SConscript('SConscript.libcommon.c', exports='env', duplicate=0)
54 SConscript('SConscript.libcommon.rs', exports='env', duplicate=0)
56 bootloader_source_files = [
57 'src/bootloader/main.rs', # Must be listed first (see below).
58 'src/bootloader/bootloader.rs',
59 'src/bootloader/flash.rs',
64 for s in ['intermediate', 'final']:
65 bootloader_env = env.Clone()
67 bootloader_env.Append(RUSTCFLAGS = [
68 '-C', 'link-arg=-Tsrc/bootloader/bootloader-{}.ld'.format(s),
70 'bootloader_type=\\"{}\\"'.format(s)
74 bootloader_env.Rustc('gps-watch-bootloader-{}.elf'.format(s),
75 bootloader_source_files[0])
77 for f in bootloader_source_files:
78 Depends(bootloader_elf, f)
80 Depends(bootloader_elf, 'libcommon.rlib')
81 Depends(bootloader_elf, 'libcommon.a')
83 bootloader_bin = bootloader_env.Objcopy(bootloader_elf)
85 Default(bootloader_bin)
87 bootloader_bins.append(bootloader_bin)
89 bootloader_intermediate_frm = \
90 bootloader_env.Frm(bootloader_bins[0])
92 Default(bootloader_intermediate_frm)
94 application_source_files = [
95 'src/application/main.rs', # Must be listed first (see below).
96 'src/application/button.rs',
97 'src/application/model.rs',
98 'src/application/views.rs',
99 'src/application/uart0.rs',
102 application_env = env.Clone()
104 application_env.Append(RUSTCFLAGS = [
105 '-C', 'link-arg=-Tsrc/application/application.ld',
108 application_elf = application_env.Rustc('gps-watch-application.elf',
109 application_source_files[0])
111 for f in application_source_files:
112 Depends(application_elf, f)
114 Depends(application_elf, 'libcommon.rlib')
115 Depends(application_elf, 'libcommon.a')
117 application_bin = application_env.Objcopy(application_elf)
119 Default(application_bin)