build: Add infrastructure for the bootloader program and libcommon.
[gps-watch.git] / SConstruct
diff --git a/SConstruct b/SConstruct
new file mode 100644 (file)
index 0000000..7f486b2
--- /dev/null
@@ -0,0 +1,38 @@
+import SCons
+import os
+
+root_env = Environment(ENV = {'PATH': os.environ['PATH']})
+
+# Beautify output.
+if ARGUMENTS.get('V', '0') != '1':
+    root_env['CCCOMSTR'] = '    CC $TARGET'
+    root_env['RUSTCCOMSTR'] = '    RUSTC $TARGET'
+    root_env['LINKCOMSTR'] = '    LINK $TARGET'
+    root_env['ARCOMSTR'] = '    AR $TARGET'
+    root_env['RANLIBCOMSTR'] = '    RANLIB $TARGET'
+    root_env['OBJCOPYCOMSTR'] = '    OBJCOPY $TARGET'
+
+# Make colored output of e.g. gcc work.
+root_env['ENV']['TERM'] = os.environ.get('TERM')
+
+root_env.Append(CCFLAGS = [
+    '-std=gnu99',
+    '-Wall',
+    '-Wextra',
+    '-Wwrite-strings',
+])
+
+root_env.Append(RUSTC = 'rustc')
+
+root_env.Append(BUILDERS = { 'Rustc': Builder(
+    action=Action('$RUSTC $RUSTCFLAGS -o $TARGET $SOURCE', '$RUSTCCOMSTR'))})
+
+root_env.Append(BUILDERS = { 'Objcopy': Builder(
+    action=Action('$OBJCOPY -O binary $OBJCOPYFLAGS $SOURCES $TARGET', '$OBJCOPYCOMSTR'),
+    suffix='.bin',
+    src_suffix='.elf')})
+
+env = root_env.Clone()
+env['variant_dir'] = 'build-target'
+env['LIBPATH'] = env['variant_dir']
+SConscript('SConscript.target', exports='env', variant_dir=env['variant_dir'], duplicate=0)