123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- 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() + '/../..')
- if os.getenv('RTT_RTGUI'):
- RTT_RTGUI = os.getenv('RTT_RTGUI')
- else:
- # set the rtgui root directory by hand
- # empty string means use the RTGUI in svn
- RTT_RTGUI = os.path.normpath(r'F:\Project\git\rt-gui\components\rtgui')
- # RTT_RTGUI =''
- 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
- _TIME_T_DEFINED
- ''')
- 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
- 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)
- else:
- TARGET = 'rtthread'
- env['CC']=rtconfig.CC
- env.Append(CCFLAGS=rtconfig.CFLAGS)
- env.Append(LINKFLAGS=rtconfig.LFLAGS)
- env.Append(LIBS=['m'])
- # prepare building environment
- objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False, remove_components=['rtgui'])
- if GetDepend('RT_USING_RTGUI'):
- sdl_lib = ['SDL', 'SDLmain']
- sdl_lib_path = [os.path.abspath('SDL/lib/x86')]
- sdl_include_path = [os.path.abspath('SDL/include')]
- env.Append(LIBS=sdl_lib)
- env.Append(LIBPATH=sdl_lib_path)
- env.Append(CPPPATH=sdl_include_path)
- if RTT_RTGUI:
- objs += SConscript(os.path.join(RTT_RTGUI, 'SConscript'),
- variant_dir='build/components/rtgui',
- duplicate=0)
- objs = objs + SConscript(RTT_RTGUI+'/../../demo/examples/SConscript',
- variant_dir='build/examples/gui', duplicate=0)
- else:
- objs += SConscript(os.path.join(RTT_ROOT + '/components/rtgui', 'SConscript'),
- variant_dir='build/components/rtgui',
- duplicate=0)
- objs = objs + SConscript(RTT_ROOT + '/examples/gui/SConscript',
- variant_dir='build/examples/gui', duplicate=0)
- if GetDepend('RT_USING_TC'):
- objs = objs + SConscript(RTT_ROOT + '/examples/kernel/SConscript', variant_dir = 'build/tc/kernel', duplicate=0)
- 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
- # build program -shared
- if GetDepend('RT_USING_MODULE'):
- # Remove module.c in $RTT_ROOT/src
- ObjRemove(objs, ['module.obj', 'module.o'])
- AddOption('--def',
- dest='def',
- action='store_true',
- default=False,
- help='create rthread.def of rtthread.dll on windows')
- if GetOption('def'):
- if rtconfig.PLATFORM != 'mingw':
- print "scons error: `--def' can only work with mingw"
- exit(1)
- env['LINKFLAGS'] = rtconfig.DEFFILE_LFLAGS
- env.SharedLibrary("rtthread.dll", objs)
- program = ''
- 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)
|