summaryrefslogtreecommitdiff
path: root/bsp/simulator/SConstruct
blob: 74a10ccc8486a49746b2e1831e1e80cbb2470c52 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
import os
import sys
import rtconfig

if os.getenv('RTT_ROOT'):
    RTT_ROOT = os.getenv('RTT_ROOT')
else:
    RTT_ROOT = os.path.normpath(os.getcwd() + '/../..')

sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')]
from building import *

env = Environment(TARGET_ARCH='x86')

Export('RTT_ROOT')
Export('rtconfig')

if rtconfig.PLATFORM == 'cl':
    TARGET = 'rtthread-win32.' + rtconfig.TARGET_EXT

    libs = Split('''
    winmm
    gdi32
    winspool
    comdlg32
    advapi32
    shell32
    ole32
    oleaut32
    uuid
    odbc32
    odbccp32
    ''')
    definitions = Split('''
    WIN32
    _DEBUG
    _CONSOLE
    MSVC
    ''')
    env.Append(CFLAGS=rtconfig.CFLAGS)
    env.Append(LINKFLAGS=rtconfig.LFLAGS)
    env['LIBS']=libs
    env['CPPDEFINES']=definitions
elif rtconfig.PLATFORM == 'mingw':
    libs = Split('''
        winmm
        gdi32
        winspool
        comdlg32
        advapi32
        shell32
        ole32
        oleaut32
        uuid
        odbc32
        odbccp32
        ''')
    TARGET = 'rtthread-win32.' + rtconfig.TARGET_EXT
    DefaultEnvironment(tools=[])
    env = Environment(tools = ['mingw'],
        AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS,
        CC = rtconfig.CC, CFLAGS = rtconfig.CFLAGS,
        AR = rtconfig.AR, ARFLAGS = '-rc',
        LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS)
    env['LIBS']=libs
    env.PrependENVPath('PATH', rtconfig.EXEC_PATH)
elif rtconfig.CROSS_TOOL == 'clang-analyze':
    TARGET = 'rtthread'
    env = Environment(toolpath=[os.path.join(RTT_ROOT, 'tools', 'tools')],
                      tools = [rtconfig.CROSS_TOOL])
else:
    TARGET = 'rtthread'
    env['CC']=rtconfig.CC
    env.Append(CFLAGS=rtconfig.CFLAGS)
    env.Append(LINKFLAGS=rtconfig.LFLAGS)
    env.Append(LIBS=['winmm'])

# prepare building environment

objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)

def ObjRemove(objs, remove):
    for item in objs:
        # print(type(item), os.path.basename(str(item)) )
        if os.path.basename(str(item)) in remove:
             objs.remove(item)
    return

def ProjectRemove(group, remove):
    global Projects
    for item in Projects:
        if item['name'] == group:
            for src in item['src']:
                if os.path.basename(str(src)) in remove:
                    # print(type(src), os.path.basename(str(src)) )
                    item['src'].remove(src)
    return

ObjRemove(objs, ['components.obj', 'components.o', 'components.c'])
ProjectRemove('Kernel', ['components.obj', 'components.o', 'components.c'])

# build program  -shared
if GetDepend('RT_USING_MODULE'):
    # Remove module.c in $RTT_ROOT/src
    ObjRemove(objs, ['module.obj', 'module.o', 'module.c'])

    AddOption('--def',
      dest='def',
      action='store_true',
      default=False,
      help='create rtthread.def of rtthread.dll on windows')
    if GetOption('def'):
        if rtconfig.PLATFORM == 'mingw':
            env['LINKFLAGS'] = rtconfig.DEFFILE_LFLAGS
        else:
            rtconfig.POST_ACTION = 'python createdef.py $TARGET rtthread.def'

        program = env.Program(TARGET, objs)
    else:
        if rtconfig.PLATFORM == 'cl':
            objs += ['rtthread.def']
        elif rtconfig.PLATFORM == 'mingw':
            rtconfig.POST_ACTION = 'del /Q rtthread.lib \n rename librtthread.a rtthread.lib\n'
            # rtconfig.POST_ACTION = 'lib /machine:i386 /def:rtthread.def /out:rtthread.lib'
        env.SharedLibrary("rtthread.dll", objs)
        program = env.Program(TARGET, 'dummy.c', LIBS='rtthread', LIBPATH='.')

else:
    program = env.Program(TARGET, objs)

# end building
EndBuilding(TARGET, program)