You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
134 lines
3.6 KiB
134 lines
3.6 KiB
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)
|
|
if sys.platform == 'win32':
|
|
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
|
|
|
|
if rtconfig.CPU != 'posix':
|
|
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)
|
|
|