Browse Source

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 years ago
parent
commit
11026d0579
2 changed files with 27 additions and 1 deletions
  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)