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': if platform == 'winddk':
env.Tool('winddk') env.Tool('winddk')
elif platform == 'wince': elif platform == 'wince':
env.Tool('evc') env.Tool('wcesdk')
else: else:
env.Tool('default') env.Tool('default')
@@ -165,16 +165,20 @@ def generate(env):
cppdefines += [('DBG', 1)] cppdefines += [('DBG', 1)]
if platform == 'wince': if platform == 'wince':
cppdefines += [ cppdefines += [
('_WIN32_WCE', '500'), '_CRT_SECURE_NO_DEPRECATE',
'WCE_PLATFORM_STANDARDSDK_500', '_USE_32BIT_TIME_T',
'_i386_',
('UNDER_CE', '500'),
'UNICODE', 'UNICODE',
'_UNICODE', '_UNICODE',
'_X86_', ('UNDER_CE', '600'),
('_WIN32_WCE', '0x600'),
'WINCEOEM',
'WINCEINTERNAL',
'WIN32',
'STRICT',
'x86', 'x86',
'_USRDLL', '_X86_',
'TEST_EXPORTS' , 'INTERNATIONAL',
('INTLMSG_CODEPAGE', '1252'),
] ]
if platform == 'windows': if platform == 'windows':
cppdefines += ['PIPE_SUBSYSTEM_WINDOWS_USER'] cppdefines += ['PIPE_SUBSYSTEM_WINDOWS_USER']
@@ -262,9 +266,18 @@ def generate(env):
#'/Z7', #enable old-style debug info #'/Z7', #enable old-style debug info
] ]
if platform == 'wince': if platform == 'wince':
# See also C:\WINCE600\public\common\oak\misc\makefile.def
cflags += [ cflags += [
'/Gs8192',
'/GF', # enable read-only string pooling '/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 # Automatic pdb generation
# See http://scons.tigris.org/issues/show_bug.cgi?id=1656 # 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 mslib_sa
import mslink_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 """Return a 3-tuple of (INCLUDE, LIB, PATH) as the values
of those three environment variables that should be set of those three environment variables that should be set
in order to execute the MSVC tools properly.""" 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 ) exe_path = string.join(exe_paths, os.pathsep )
return (include_path, lib_path, exe_path) 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): def generate(env):
msvc_sa.generate(env) msvc_sa.generate(env)
@@ -86,10 +138,8 @@ def generate(env):
env['ENV'] = {} env['ENV'] = {}
try: 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('INCLUDE', include_path)
env.PrependENVPath('LIB', lib_path) env.PrependENVPath('LIB', lib_path)
env.PrependENVPath('PATH', exe_path) env.PrependENVPath('PATH', exe_path)