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