rt-thread/bsp/simulator/SConstruct

133 lines
3.6 KiB
Python
Executable File

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)