bootloader: Import bootloader-final.ld.
[gps-watch.git] / SConscript.target
index 8ee82a3463fac66ea6569bc29a62f3f515dd72c8..b5eb085628154436ba9ed7dae9d4239dc0ffd62d 100644 (file)
@@ -51,22 +51,35 @@ libbootloader_source_files = [
     'src/bootloader/flash.rs',
 ]
 
-libbootloader = env.Rustc('libbootloader.a', libbootloader_source_files[0])
+start_o = env.Object('src/bootloader/start.c')
 
-for f in libbootloader_source_files:
-    Depends(libbootloader, f)
+for s in ['intermediate', 'final']:
+    libbootloader_env = env.Clone()
 
-Depends(libbootloader, 'libcommon.rlib')
-Depends(libbootloader, 'libcommon.a')
+    libbootloader_env.Append(RUSTCFLAGS = [
+        '--cfg',
+        'bootloader_type=\\"{}\\"'.format(s)
+    ])
 
-bootloader_env = env.Clone()
+    libbootloader = libbootloader_env.Rustc('libbootloader-{}.a'.format(s),
+                                            libbootloader_source_files[0])
 
-bootloader_env.Append(LINKFLAGS = [
-    '-Tsrc/bootloader/bootloader-intermediate.ld',
-])
+    for f in libbootloader_source_files:
+        Depends(libbootloader, f)
+
+    Depends(libbootloader, 'libcommon.rlib')
+    Depends(libbootloader, 'libcommon.a')
+
+    bootloader_env = env.Clone()
+
+    bootloader_env.Append(LINKFLAGS = [
+        '-Tsrc/bootloader/bootloader-{}.ld'.format(s),
+    ])
 
-bootloader_elf = bootloader_env.Program('gps-watch-bootloader.elf', 'src/bootloader/start.c', LIBS = ['bootloader', 'common'])
+    bootloader_elf = \
+        bootloader_env.Program('gps-watch-bootloader-{}.elf'.format(s),
+                               start_o, LIBS = ['bootloader-{}'.format(s), 'common'])
 
-bootloader_bin = bootloader_env.Objcopy(bootloader_elf)
+    bootloader_bin = bootloader_env.Objcopy(bootloader_elf)
 
-Default(bootloader_bin)
+    Default(bootloader_bin)