import os import sys import rtconfig import platform import subprocess from rtconfig import RTT_ROOT import sys def generate_ldscript(input, output): if not os.path.exists(input): print('Error: file', input, 'not found') return if os.path.exists(output): os.remove(output) if rtconfig.PLATFORM == 'gcc': gcc_cmd = os.path.join(rtconfig.EXEC_PATH, rtconfig.CC) # gcc -E -P -x c $input -o $output if (platform.system() == 'Windows'): child = subprocess.Popen([gcc_cmd, '-E', '-P', '-x', 'c', input, '-o', output], stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) else: child = subprocess.Popen(gcc_cmd + f' -E -P -x c {input} -o {output}', stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) child.communicate() print(output, 'is generated from', input) sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')] from building import * TARGET = 'rtthread.' + rtconfig.TARGET_EXT # apply soft-FPU config options = LocalOptions("rtconfig.h") soft_fpu = GetLocalDepend(options, 'BSP_RISCV_FPU_SOFT') if soft_fpu: rtconfig.DEVICE = rtconfig.DEVICE.replace('-march=rv64imafdcv -mabi=lp64d', '-march=rv64imafdc -mabi=lp64') rtconfig.CFLAGS = rtconfig.CFLAGS.replace('-march=rv64imafdcv -mabi=lp64d', '-march=rv64imafdc -mabi=lp64') rtconfig.LFLAGS = rtconfig.LFLAGS.replace('-march=rv64imafdcv -mabi=lp64d', '-march=rv64imafdc -mabi=lp64') rtconfig.AFLAGS = rtconfig.AFLAGS.replace('-march=rv64imafdcv -mabi=lp64d', '-march=rv64imafdc -mabi=lp64') DefaultEnvironment(tools=[]) env = Environment(tools = ['mingw'], AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS, CC = rtconfig.CC, CCFLAGS = rtconfig.CFLAGS, CXX = rtconfig.CXX, CXXFLAGS = rtconfig.CXXFLAGS, AR = rtconfig.AR, ARFLAGS = '-rc', LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) env.PrependENVPath('PATH', rtconfig.EXEC_PATH) env['ASCOM'] = env['ASPPCOM'] Export('RTT_ROOT') Export('rtconfig') # prepare building environment objs = PrepareBuilding(env, RTT_ROOT, has_libcpu = False) generate_ldscript('link.lds', 'link.lds.generated') # make a building DoBuilding(TARGET, objs) Clean(TARGET, 'link.lds.generated') Clean(TARGET, 'build')