bootloader: Add the bootloader module.
[gps-watch.git] / SConscript.target
1 import os
2
3 Import('env')
4 env = env.Clone()
5
6 host = os.environ.get('HOST', 'arm-none-eabi-')
7
8 d = {
9     'CC': 'gcc',
10     'LD': 'ld',
11     'AR': 'ar',
12     'RANLIB': 'ranlib',
13     'OBJCOPY': 'objcopy',
14 }
15
16 for k, v in d.items():
17     env[k] = host + v
18
19 env.Append(CCFLAGS = [
20     '-mcpu=cortex-m0plus',
21     '-mthumb',
22     '-ffunction-sections',
23     '-fdata-sections',
24     '-Os',
25 ])
26
27 env.Append(LINKFLAGS = [
28     '-mcpu=cortex-m0plus',
29     '-mthumb',
30     '-specs=nano.specs',
31     '-specs=nosys.specs',
32     '-nostdlib',
33     '-nostartfiles',
34 ])
35
36 env.Append(RUSTCFLAGS = [
37     '-C', 'opt-level=s',
38     '--target=thumbv6m-none-eabi',
39     '-L', '$LIBPATH',
40 ])
41
42 env.Append(LINKFLAGS = [
43     '-Wl,--gc-sections'
44 ])
45
46 SConscript('SConscript.libcommon', exports='env', duplicate=0)
47
48 libbootloader_source_files = [
49     'src/bootloader/main.rs', # Must be listed first (see below).
50     'src/bootloader/bootloader.rs',
51     'src/bootloader/flash.rs',
52 ]
53
54 libbootloader = env.Rustc('libbootloader.a', libbootloader_source_files[0])
55
56 for f in libbootloader_source_files:
57     Depends(libbootloader, f)
58
59 Depends(libbootloader, 'libcommon.rlib')
60 Depends(libbootloader, 'libcommon.a')
61
62 bootloader_env = env.Clone()
63
64 bootloader_env.Append(LINKFLAGS = [
65     '-Tsrc/bootloader/bootloader.ld',
66 ])
67
68 bootloader_elf = bootloader_env.Program('gps-watch-bootloader.elf', 'src/bootloader/start.c', LIBS = ['bootloader', 'common'])
69
70 bootloader_bin = bootloader_env.Objcopy(bootloader_elf)
71
72 Default(bootloader_bin)