| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- 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')
|