1import os
2import sys
3import rtconfig
4import re
5RTT_ROOT = os.getenv('RTT_ROOT') or os.path.join('..', '..', '..', '..')
6
7sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')]
8from building import *
9
10def bsp_pkg_check():
11    import subprocess
12
13    check_paths = [
14        os.path.join("packages", "nxp-imx6ul-sdk-latest"),
15    ]
16
17    need_update = not all(os.path.exists(p) for p in check_paths)
18
19    if need_update:
20        print("\n===============================================================================")
21        print("Dependency packages missing, please running 'pkgs --update'...")
22        print("If no packages are fetched, run 'pkgs --upgrade' first, then 'pkgs --update'...")
23        print("===============================================================================")
24        exit(1)
25
26RegisterPreBuildingAction(bsp_pkg_check)
27
28TARGET = 'rtthread.' + rtconfig.TARGET_EXT
29
30content = ""
31TRACE_CONFIG = ''
32with open("rtconfig.h") as f:
33    for line in f.readlines():
34        if line.find("RT_BACKTRACE_FUNCTION_NAME") != -1:
35            for token in line.split(" "):
36                if re.match(r'RT_BACKTRACE_FUNCTION_NAME$', token, flags=0):
37                    TRACE_CONFIG = " -mpoke-function-name"
38
39DefaultEnvironment(tools=[])
40env = Environment(tools = ['mingw'],
41    AS   = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS + TRACE_CONFIG,
42    CC   = rtconfig.CC, CFLAGS = rtconfig.CFLAGS + TRACE_CONFIG,
43    CXX  = rtconfig.CXX, CXXFLAGS = rtconfig.CXXFLAGS + TRACE_CONFIG,
44    AR   = rtconfig.AR, ARFLAGS = '-rc',
45    LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS)
46env.PrependENVPath('PATH', rtconfig.EXEC_PATH)
47env['ASCOM'] = env['ASPPCOM']
48env['LINKCOM'] = '$LINK -o $TARGET $LINKFLAGS $__RPATH $SOURCES $_LIBDIRFLAGS -Wl,--start-group $_LIBFLAGS -Wl,--end-group'
49
50Export('RTT_ROOT')
51Export('rtconfig')
52
53# prepare building environment
54objs = PrepareBuilding(env, RTT_ROOT)
55
56if GetDepend('RT_USING_SMART'):
57    # use smart link.lds
58    env['LINKFLAGS'] = env['LINKFLAGS'].replace('link.lds', 'link_smart.lds')
59
60# make a building
61DoBuilding(TARGET, objs)
62