1Import('rtconfig') 2from building import * 3import os 4 5cwd = GetCurrentDir() 6src = [] 7CPPPATH = [cwd] 8 9support_arch = {"arm": ["cortex-m3", "cortex-m4", "cortex-m7", "arm926", "cortex-a"], 10 "aarch64":["cortex-a"], 11 "risc-v": ["rv64"], 12 "x86": ["i386"]} 13platform_file = {'armcc': 'rvds.S', 'gcc': 'gcc.S', 'iar': 'iar.S'} 14 15platform = rtconfig.PLATFORM 16arch = rtconfig.ARCH 17cpu = rtconfig.CPU 18 19# fix the cpu for risc-v 20if arch == 'risc-v': 21 if GetDepend('ARCH_CPU_64BIT'): 22 cpu = 'rv64' 23 24if platform in platform_file.keys(): # support platforms 25 if arch in support_arch.keys() and cpu in support_arch[arch]: 26 asm_path = 'arch/' + arch + '/' + cpu + '/*_' + platform_file[platform] 27 arch_common = 'arch/' + arch + '/' + 'common/*.c' 28 common = 'arch/common/*.c' 29 if not GetDepend('RT_USING_VDSO'): 30 vdso_files = ['vdso_data.c', 'vdso.c'] 31 src += [f for f in Glob(arch_common) if os.path.basename(str(f)) not in vdso_files] 32 src += [f for f in Glob(common) if os.path.basename(str(f)) not in vdso_files] 33 else: 34 src += Glob(arch_common) 35 src += Glob(common) 36 if not GetDepend('ARCH_MM_MMU'): 37 excluded_files = ['ioremap.c', 'lwp_futex.c', 'lwp_mm_area.c', 'lwp_pmutex.c', 'lwp_shm.c', 'lwp_user_mm.c'] 38 src += [f for f in Glob('*.c') if os.path.basename(str(f)) not in excluded_files] + Glob(asm_path) 39 else: 40 src += Glob('*.c') + Glob(asm_path) 41 src += Glob('arch/' + arch + '/' + cpu + '/*.c') 42 CPPPATH = [cwd] 43 CPPPATH += [cwd + '/arch/' + arch + '/' + cpu] 44 45# Terminal I/O Subsystem 46termios_path = ['./terminal/', './terminal/freebsd/'] 47for item in termios_path: 48 src += Glob(item + '*.c') 49CPPPATH += ['./terminal/'] 50 51# Remove optional sources 52if not GetDepend(['LWP_USING_RUNTIME']): 53 SrcRemove(src, 'lwp_runtime.c') 54 55group = DefineGroup('lwProcess', src, depend = ['RT_USING_SMART'], CPPPATH = CPPPATH) 56 57group = group + SConscript(os.path.join('vdso', 'SConscript')) 58Return('group') 59