import os import sys import rtconfig import subprocess IS_EXPORTED = False # setup RT-Thread Root Path if os.getenv('RTT_ROOT'): RTT_ROOT = os.getenv('RTT_ROOT') else: RTT_ROOT = os.path.join(os.getcwd(),'..','..','..') sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')] try: from building import * except Exception as e: print('Cannot found RT-Thread root directory, please check RTT_ROOT') exit(-1) if RTT_ROOT == 'rt-thread': IS_EXPORTED = True # if kenrel and bsp has been exported by export_project.py # setup Phytium BSP Root Path if IS_EXPORTED: BSP_ROOT = '.' else: BSP_ROOT = os.path.join(RTT_ROOT ,'bsp','phytium') TARGET = 'rtthread_a64.' + rtconfig.TARGET_EXT DefaultEnvironment(tools=[]) env = Environment(tools = ['mingw'], AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS, CC = rtconfig.CC, CFLAGS = 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'] os.environ["BSP_ROOT"] = BSP_ROOT os.environ["SDK_DIR"] = os.path.join(BSP_ROOT,'libraries','phytium_standalone_sdk') Export('RTT_ROOT') Export('BSP_ROOT') Export('rtconfig') def is_phytium_sdk_installed(): py_target_folder = os.path.join(BSP_ROOT,"libraries","phytium_standalone_sdk") return os.path.exists(py_target_folder) def install_phytium_sdk(): if is_phytium_sdk_installed(): return 0 install_script_path = os.path.join(BSP_ROOT,"libraries","phytium_standalone_sdk_install.py") if os.path.exists(install_script_path): try: subprocess.call(["python", install_script_path]) except: subprocess.call(["python3", install_script_path]) if not is_phytium_sdk_installed(): print("Error: phytium_standalone_sdk install failed") exit(0) else: print("Error: phytium_standalone_sdk_install.py is not exists, exit compilation") exit(0) install_phytium_sdk() # prepare building environment objs = PrepareBuilding(env, RTT_ROOT, has_libcpu = False) if not IS_EXPORTED: # if project is not exported, libraries and board need to manually add # include libraries objs.extend(SConscript(os.path.join(BSP_ROOT,'libraries','SConscript'))) # include board objs.extend(SConscript(os.path.join(BSP_ROOT,'board','SConscript'))) # make a building DoBuilding(TARGET, objs)