123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- 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(CCFLAGS=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, CCFLAGS = 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(CCFLAGS=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)
|