# RT-Thread building script for RISC-V import os from building import * Import('rtconfig') cwd = GetCurrentDir() group = [] cpu = getattr(rtconfig, 'CPU', '') vendor = getattr(rtconfig, 'VENDOR', '') if GetDepend('RT_USING_RISCV_NEW_COMMON'): bsp_path = Dir('#').abspath if not os.path.exists(os.path.join(bsp_path, 'link.lds')): Env['LINKFLAGS'] = Env['LINKFLAGS'].replace( 'link.lds', os.path.join(cwd, 'link.lds')) Preprocessing('link.lds.S', '.lds', CPPPATH=[bsp_path, os.path.join(cwd, 'common', 'include')]) # The new common owns the complete C runtime entry. Env['LINKFLAGS'] += ' -nostartfiles' group += SConscript(os.path.join('common', 'SConscript')) # New vendor ports are architecture-wide overrides, not per-CPU copies. if vendor: vendor_path = os.path.join(cwd, vendor) vendor_script = os.path.join(vendor, 'SConscript') if os.path.isfile(os.path.join(cwd, vendor_script)): Env.Append(CPPPATH=[vendor_path]) group += SConscript(vendor_script) if os.path.exists(os.path.join(vendor_path, 'mmu_vendor.h')): Env.Append(ASFLAGS=' -D__HAS_MMU_VENDOR__') Env.Append(CFLAGS=' -D__HAS_MMU_VENDOR__') Env.Append(CXXFLAGS=' -D__HAS_MMU_VENDOR__') if os.path.exists(os.path.join(vendor_path, 'opcode_vendor.h')): Env.Append(ASFLAGS=' -D__HAS_OPCODE_VENDOR__') Env.Append(CFLAGS=' -D__HAS_OPCODE_VENDOR__') Env.Append(CXXFLAGS=' -D__HAS_OPCODE_VENDOR__') else: common64_cpus = ['virt64', 'c906', 'c908', 'ur-cp100'] if cpu in common64_cpus: group += SConscript(os.path.join('common64', 'SConscript')) else: group += SConscript(os.path.join('legacy_common', 'SConscript')) group += SConscript(os.path.join('vector', 'SConscript')) if vendor: if vendor == 't-head': port_script = os.path.join('legacy-t-head', cpu, 'SConscript') else: port_script = os.path.join(vendor, cpu, 'SConscript') if os.path.isfile(os.path.join(cwd, port_script)): group += SConscript(port_script) elif cpu: port_script = os.path.join(cpu, 'SConscript') if os.path.isfile(os.path.join(cwd, port_script)): group += SConscript(port_script) Return('group')