浏览代码

lpc43xx: clean the .o before building M0 and M4

SCons will omit the file in parent dir of SConstruct somehow and build
the object files in that dir instead of in variant dir. This cause
problem because we cannot mix the object files between M0 and M4 which
SCons failed to rebuild. So we have to manually remove the files before
building.
Grissiom 10 年之前
父节点
当前提交
11026d0579
共有 2 个文件被更改,包括 27 次插入1 次删除
  1. 18 0
      bsp/lpc43xx/M0/SConstruct
  2. 9 1
      bsp/lpc43xx/M4/SConstruct

+ 18 - 0
bsp/lpc43xx/M0/SConstruct

@@ -25,5 +25,23 @@ Export('rtconfig')
 # prepare building environment
 objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 
+if rtconfig.CROSS_TOOL == 'gcc':
+    import glob
+    # Remove the .o for M0 left on the drivers dir.
+    for i in glob.glob(GetCurrentDir() + '/../drivers/*.o'):
+        print 'RM %s' % i
+        os.unlink(i)
+
+    if sys.platform.startswith('linux'):
+        import glob
+        ocwd = os.getcwdu()
+        res = os.system('cd ../Libraries/; find -name \*.o -exec rm {} \;')
+        os.chdir(ocwd)
+    else:
+        # Assume Windows.
+        ocwd = os.getcwdu()
+        print 'TODO: remove the object files in ../Libraries'
+        os.chdir(ocwd)
+
 # do building 
 DoBuilding(TARGET, objs)

+ 9 - 1
bsp/lpc43xx/M4/SConstruct

@@ -28,6 +28,7 @@ objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
 if rtconfig.CROSS_TOOL == 'gcc':
     print 'build M0 code first'
     if sys.platform.startswith('linux'):
+        import glob
         ocwd = os.getcwdu()
         os.chdir('../M0')
         res = os.system('scons')
@@ -35,12 +36,19 @@ if rtconfig.CROSS_TOOL == 'gcc':
             print 'build M0 exit with code %d\n' % res
             sys.exit(res)
         os.chdir(ocwd)
+        res = os.system('cd ../Libraries/; find -name \*.o -exec rm {} \;')
+        os.chdir(ocwd)
     else:
-        # assume Windows.
+        # Assume Windows.
         ocwd = os.getcwdu()
         os.chdir('..\M0')
         os.system('scons.bat')
         os.chdir(ocwd)
 
+    # Remove the .o for M0 left on the drivers dir.
+    for i in glob.glob(GetCurrentDir() + '/../drivers/*.o'):
+        print 'RM %s' % i
+        os.unlink(i)
+
 # do building 
 DoBuilding(TARGET, objs)