Add README.
[gps-watch.git] / SConscript.target
index 1e5f40299db24dddac0bd645cf7ae25436c96fab..a927dd7292259df9195a792a06735dd65558e6ea 100644 (file)
@@ -36,93 +36,83 @@ env.Append(LINKFLAGS = [
 
 libgcc_path = \
     subprocess.check_output('{} -print-libgcc-file-name'.format(env['CC']),
-                            shell=True).strip()
+                            shell=True).strip().decode('utf-8')
 
 env.Append(RUSTCFLAGS = [
     '-C', 'opt-level=s',
+    '-C', 'link-arg={}'.format(libgcc_path),
     '--target=thumbv6m-none-eabi',
     '-L', '$LIBPATH',
+    '-l', 'common',
 ])
 
 env.Append(LINKFLAGS = [
     '-Wl,--gc-sections'
 ])
 
-SConscript('SConscript.libcommon', exports='env', duplicate=0)
+SConscript('SConscript.libcommon.c', exports='env', duplicate=0)
+SConscript('SConscript.libcommon.rs', exports='env', duplicate=0)
 
-libbootloader_source_files = [
+bootloader_source_files = [
     'src/bootloader/main.rs', # Must be listed first (see below).
     'src/bootloader/bootloader.rs',
     'src/bootloader/flash.rs',
 ]
 
-start_o = env.Object('src/bootloader/start.c')
+bootloader_bins = []
 
 for s in ['intermediate', 'final']:
-    libbootloader_env = env.Clone()
+    bootloader_env = env.Clone()
 
-    libbootloader_env.Append(RUSTCFLAGS = [
+    bootloader_env.Append(RUSTCFLAGS = [
+        '-C', 'link-arg=-Tsrc/bootloader/bootloader-{}.ld'.format(s),
         '--cfg',
         'bootloader_type=\\"{}\\"'.format(s)
     ])
 
-    libbootloader = libbootloader_env.Rustc('libbootloader-{}.a'.format(s),
-                                            libbootloader_source_files[0])
-
-    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.Rustc('gps-watch-bootloader-{}.elf'.format(s),
+                             bootloader_source_files[0])
 
-    bootloader_libs = [
-        'bootloader-{}'.format(s),
-        'common',
-        File(libgcc_path),
-    ]
+    for f in bootloader_source_files:
+        Depends(bootloader_elf, f)
 
-    bootloader_elf = \
-        bootloader_env.Program('gps-watch-bootloader-{}.elf'.format(s),
-                               start_o, LIBS = bootloader_libs)
+    Depends(bootloader_elf, 'libcommon.rlib')
+    Depends(bootloader_elf, 'libcommon.a')
 
     bootloader_bin = bootloader_env.Objcopy(bootloader_elf)
 
     Default(bootloader_bin)
 
-libapplication_source_files = [
-    'src/application/main.rs', # Must be listed first (see below).
-]
-
-libapplication = env.Rustc('libapplication.a', libapplication_source_files[0])
+    bootloader_bins.append(bootloader_bin)
 
-for f in libapplication_source_files:
-    Depends(libapplication, f)
+bootloader_intermediate_frm = \
+    bootloader_env.Frm(bootloader_bins[0])
 
-Depends(libapplication, 'libcommon.rlib')
-Depends(libapplication, 'libcommon.a')
+Default(bootloader_intermediate_frm)
 
-start_o = env.Object('src/application/start.c')
+application_source_files = [
+    'src/application/main.rs', # Must be listed first (see below).
+    'src/application/button.rs',
+    'src/application/model.rs',
+    'src/application/views.rs',
+    'src/application/uart0.rs',
+]
 
 application_env = env.Clone()
 
-application_env.Append(LINKFLAGS = [
-    '-Tsrc/application/application.ld'
+application_env.Append(RUSTCFLAGS = [
+    '-C', 'link-arg=-Tsrc/application/application.ld',
 ])
 
-application_libs = [
-    'application',
-    'common',
-    File(libgcc_path),
-]
+application_elf = application_env.Rustc('gps-watch-application.elf',
+                                        application_source_files[0])
+
+for f in application_source_files:
+    Depends(application_elf, f)
 
-application_elf = application_env.Program('gps-watch-application.elf',
-                                          start_o, LIBS = application_libs)
+Depends(application_elf, 'libcommon.rlib')
+Depends(application_elf, 'libcommon.a')
 
 application_bin = application_env.Objcopy(application_elf)