scons: Update to target WinCE 6.0.
authorJosé Fonseca <jrfonseca@tungstengraphics.com>
Mon, 23 Jun 2008 03:49:45 +0000 (12:49 +0900)
committerJosé Fonseca <jrfonseca@tungstengraphics.com>
Mon, 23 Jun 2008 10:44:37 +0000 (19:44 +0900)
scons/evc.py [deleted file]
scons/gallium.py
scons/wcesdk.py [new file with mode: 0644]

diff --git a/scons/evc.py b/scons/evc.py
deleted file mode 100644 (file)
index 22a9260..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-"""evc
-
-Tool-specific initialization for Microsoft eMbedded Visual C++.
-
-"""
-
-#
-# Copyright (c) 2001-2007 The SCons Foundation
-# Copyright (c) 2008 Tungsten Graphics, Inc.
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-import os.path
-import re
-import string
-
-import SCons.Action
-import SCons.Builder
-import SCons.Errors
-import SCons.Platform.win32
-import SCons.Tool
-import SCons.Util
-import SCons.Warnings
-
-import msvc_sa
-import mslib_sa
-import mslink_sa
-
-def get_evc_paths(env, version=None):
-    """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 = []
-
-    # mymic the batch files located in Microsoft eMbedded C++ 4.0\EVC\WCExxx\BIN
-    os_version = os.environ.get('OSVERSION', 'WCE500')
-    platform = os.environ.get('PLATFORM', 'STANDARDSDK_500')
-    wce_root = os.environ.get('WCEROOT', 'C:\\Program Files\\Microsoft eMbedded C++ 4.0')
-    sdk_root = os.environ.get('SDKROOT', 'C:\\Windows CE Tools')
-
-    target_cpu = 'x86'
-    cfg = 'none'
-
-    exe_paths.append( os.path.join(wce_root, 'COMMON', 'EVC', 'bin') )
-    exe_paths.append( os.path.join(wce_root, 'EVC', os_version, 'bin') )
-    include_paths.append( os.path.join(sdk_root, os_version, platform, 'include', target_cpu) )
-    include_paths.append( os.path.join(sdk_root, os_version, platform, 'MFC', 'include') )
-    include_paths.append( os.path.join(sdk_root, os_version, platform, 'ATL', 'include') )
-    lib_paths.append( os.path.join(sdk_root, os_version, platform, 'lib', target_cpu) )
-    lib_paths.append( os.path.join(sdk_root, os_version, platform, 'MFC', 'lib', target_cpu) )
-    lib_paths.append( os.path.join(sdk_root, os_version, platform, 'ATL', 'lib', target_cpu) )
-    
-    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)
-    mslib_sa.generate(env)
-    mslink_sa.generate(env)
-
-    if not env.has_key('ENV'):
-        env['ENV'] = {}
-    
-    try:
-        include_path, lib_path, exe_path = get_evc_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)
-    except (SCons.Util.RegError, SCons.Errors.InternalError):
-        pass
-
-def exists(env):
-    if not msvc_sa.exits(env):
-        return 0
-    if not mslib_sa.exits(env):
-        return 0
-    if not mslink_sa.exits(env):
-        return 0
-    return 1
-
-# vim:set ts=4 sw=4 et:
index 1787adb31233d48394e9310727ea667b5295e90a..217a1d61d360cf0ce7a47ba0c19b4cf22942bde2 100644 (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
diff --git a/scons/wcesdk.py b/scons/wcesdk.py
new file mode 100644 (file)
index 0000000..bdaab7d
--- /dev/null
@@ -0,0 +1,158 @@
+"""wcesdk
+
+Tool-specific initialization for Microsoft Window CE SDKs.
+
+"""
+
+#
+# Copyright (c) 2001-2007 The SCons Foundation
+# Copyright (c) 2008 Tungsten Graphics, Inc.
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+
+import os.path
+import re
+import string
+
+import SCons.Action
+import SCons.Builder
+import SCons.Errors
+import SCons.Platform.win32
+import SCons.Tool
+import SCons.Util
+import SCons.Warnings
+
+import msvc_sa
+import mslib_sa
+import mslink_sa
+
+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."""
+    
+    exe_paths = []
+    lib_paths = []
+    include_paths = []
+
+    # mymic the batch files located in Microsoft eMbedded C++ 4.0\EVC\WCExxx\BIN
+    os_version = os.environ.get('OSVERSION', 'WCE500')
+    platform = os.environ.get('PLATFORM', 'STANDARDSDK_500')
+    wce_root = os.environ.get('WCEROOT', 'C:\\Program Files\\Microsoft eMbedded C++ 4.0')
+    sdk_root = os.environ.get('SDKROOT', 'C:\\Windows CE Tools')
+
+    target_cpu = 'x86'
+    cfg = 'none'
+
+    exe_paths.append( os.path.join(wce_root, 'COMMON', 'EVC', 'bin') )
+    exe_paths.append( os.path.join(wce_root, 'EVC', os_version, 'bin') )
+    include_paths.append( os.path.join(sdk_root, os_version, platform, 'include', target_cpu) )
+    include_paths.append( os.path.join(sdk_root, os_version, platform, 'MFC', 'include') )
+    include_paths.append( os.path.join(sdk_root, os_version, platform, 'ATL', 'include') )
+    lib_paths.append( os.path.join(sdk_root, os_version, platform, 'lib', target_cpu) )
+    lib_paths.append( os.path.join(sdk_root, os_version, platform, 'MFC', 'lib', target_cpu) )
+    lib_paths.append( os.path.join(sdk_root, os_version, platform, 'ATL', 'lib', target_cpu) )
+    
+    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 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)
+    mslib_sa.generate(env)
+    mslink_sa.generate(env)
+
+    if not env.has_key('ENV'):
+        env['ENV'] = {}
+    
+    try:
+        include_path, lib_path, exe_path = get_wce600_paths(env)
+
+        env.PrependENVPath('INCLUDE', include_path)
+        env.PrependENVPath('LIB', lib_path)
+        env.PrependENVPath('PATH', exe_path)
+    except (SCons.Util.RegError, SCons.Errors.InternalError):
+        pass
+
+def exists(env):
+    if not msvc_sa.exits(env):
+        return 0
+    if not mslib_sa.exits(env):
+        return 0
+    if not mslink_sa.exits(env):
+        return 0
+    return 1
+
+# vim:set ts=4 sw=4 et: