scons: Update to target WinCE 6.0.

This commit is contained in:
José Fonseca
2008-06-23 12:49:45 +09:00
parent f08da6b821
commit f78cc24c4b
2 changed files with 78 additions and 15 deletions

View File

@@ -94,7 +94,7 @@ def generate(env):
if platform == 'winddk':
env.Tool('winddk')
elif platform == 'wince':
env.Tool('evc')
env.Tool('wcesdk')
else:
env.Tool('default')
@@ -165,16 +165,20 @@ def generate(env):
cppdefines += [('DBG', 1)]
if platform == 'wince':
cppdefines += [
('_WIN32_WCE', '500'),
'WCE_PLATFORM_STANDARDSDK_500',
'_i386_',
('UNDER_CE', '500'),
'_CRT_SECURE_NO_DEPRECATE',
'_USE_32BIT_TIME_T',
'UNICODE',
'_UNICODE',
'_X86_',
('UNDER_CE', '600'),
('_WIN32_WCE', '0x600'),
'WINCEOEM',
'WINCEINTERNAL',
'WIN32',
'STRICT',
'x86',
'_USRDLL',
'TEST_EXPORTS' ,
'_X86_',
'INTERNATIONAL',
('INTLMSG_CODEPAGE', '1252'),
]
if platform == 'windows':
cppdefines += ['PIPE_SUBSYSTEM_WINDOWS_USER']
@@ -262,9 +266,18 @@ def generate(env):
#'/Z7', #enable old-style debug info
]
if platform == 'wince':
# See also C:\WINCE600\public\common\oak\misc\makefile.def
cflags += [
'/Gs8192',
'/GF', # enable read-only string pooling
'/GR-', # disable C++ RTTI
'/GS', # enable security checks
# Allow disabling language conformance to maintain backward compat
#'/Zc:wchar_t-', # don't force wchar_t as native type, instead of typedef
#'/Zc:forScope-', # don't enforce Standard C++ for scoping rules
#'/wd4867',
#'/wd4430',
#'/MT',
#'/U_MT',
]
# Automatic pdb generation
# See http://scons.tigris.org/issues/show_bug.cgi?id=1656

View File

@@ -1,6 +1,6 @@
"""evc
"""wcesdk
Tool-specific initialization for Microsoft eMbedded Visual C++.
Tool-specific initialization for Microsoft Window CE SDKs.
"""
@@ -44,7 +44,7 @@ import msvc_sa
import mslib_sa
import mslink_sa
def get_evc_paths(env, version=None):
def get_wce500_paths(env):
"""Return a 3-tuple of (INCLUDE, LIB, PATH) as the values
of those three environment variables that should be set
in order to execute the MSVC tools properly."""
@@ -76,6 +76,58 @@ def get_evc_paths(env, version=None):
exe_path = string.join(exe_paths, os.pathsep )
return (include_path, lib_path, exe_path)
def get_wce600_paths(env):
"""Return a 3-tuple of (INCLUDE, LIB, PATH) as the values
of those three environment variables that should be set
in order to execute the MSVC tools properly."""
exe_paths = []
lib_paths = []
include_paths = []
# See also C:\WINCE600\public\common\oak\misc\wince.bat
os_version = os.environ.get('_winceosver', '600')
wince_root = os.environ.get('_winceroot', r'C:\WINCE600')
platform_root = os.environ.get('_platformroot', os.path.join(wince_root, 'platform'))
sdk_root = os.environ.get('_sdkroot' ,os.path.join(wince_root, 'sdk'))
platform_root = os.environ.get('_platformroot', os.path.join(wince_root, 'platform'))
sdk_root = os.environ.get('_sdkroot' ,os.path.join(wince_root, 'sdk'))
host_cpu = os.environ.get('_hostcputype', 'i386')
target_cpu = os.environ.get('_tgtcpu', 'x86')
if env['debug']:
build = 'debug'
else:
build = 'retail'
try:
project_root = os.environ['_projectroot']
except KeyError:
# No project root defined -- use the common stuff instead
project_root = os.path.join(wince_root, 'public', 'common')
exe_paths.append( os.path.join(sdk_root, 'bin', host_cpu) )
exe_paths.append( os.path.join(sdk_root, 'bin', host_cpu, target_cpu) )
exe_paths.append( os.path.join(wince_root, 'common', 'oak', 'bin', host_cpu) )
exe_paths.append( os.path.join(wince_root, 'common', 'oak', 'misc') )
include_paths.append( os.path.join(project_root, 'sdk', 'inc') )
include_paths.append( os.path.join(project_root, 'oak', 'inc') )
include_paths.append( os.path.join(project_root, 'ddk', 'inc') )
include_paths.append( os.path.join(sdk_root, 'CE', 'inc') )
lib_paths.append( os.path.join(project_root, 'sdk', 'lib', target_cpu, build) )
lib_paths.append( os.path.join(project_root, 'oak', 'lib', target_cpu, build) )
lib_paths.append( os.path.join(project_root, 'ddk', 'lib', target_cpu, build) )
include_path = string.join( include_paths, os.pathsep )
lib_path = string.join(lib_paths, os.pathsep )
exe_path = string.join(exe_paths, os.pathsep )
return (include_path, lib_path, exe_path)
def generate(env):
msvc_sa.generate(env)
@@ -86,10 +138,8 @@ def generate(env):
env['ENV'] = {}
try:
include_path, lib_path, exe_path = get_evc_paths(env)
include_path, lib_path, exe_path = get_wce600_paths(env)
# since other tools can set these, we just make sure that the
# relevant stuff from WINDDK is in there somewhere.
env.PrependENVPath('INCLUDE', include_path)
env.PrependENVPath('LIB', lib_path)
env.PrependENVPath('PATH', exe_path)