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)