소스 검색

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)