mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 13:58:04 +02:00
scons: Faithfully mimic every WINDDK builtin compiler/linker option.
This commit is contained in:
parent
8fd633b5cf
commit
4f17bd270e
2 changed files with 108 additions and 60 deletions
26
SConstruct
26
SConstruct
|
|
@ -113,17 +113,9 @@ if gcc:
|
|||
env.Append(CXXFLAGS = '-fmessage-length=0')
|
||||
|
||||
if msvc:
|
||||
env.Append(CFLAGS = '/W3')
|
||||
if debug:
|
||||
cflags = [
|
||||
'/Od', # disable optimizations
|
||||
'/Oy-', # disable frame pointer omission
|
||||
]
|
||||
else:
|
||||
cflags = [
|
||||
'/Ox', # maximum optimizations
|
||||
'/Os', # favor code space
|
||||
]
|
||||
cflags = [
|
||||
#'/Wp64', # enable 64 bit porting warnings
|
||||
]
|
||||
env.Append(CFLAGS = cflags)
|
||||
env.Append(CXXFLAGS = cflags)
|
||||
# Put debugging information in a separate .pdb file for each object file as
|
||||
|
|
@ -132,14 +124,7 @@ if msvc:
|
|||
|
||||
# Defines
|
||||
if debug:
|
||||
if gcc:
|
||||
env.Append(CPPDEFINES = ['DEBUG'])
|
||||
if msvc:
|
||||
env.Append(CPPDEFINES = [
|
||||
('DBG', '1'),
|
||||
('DEBUG', '1'),
|
||||
('_DEBUG', '1'),
|
||||
])
|
||||
env.Append(CPPDEFINES = ['DEBUG'])
|
||||
else:
|
||||
env.Append(CPPDEFINES = ['NDEBUG'])
|
||||
|
||||
|
|
@ -217,6 +202,9 @@ if platform not in ('winddk',):
|
|||
'Xfixes',
|
||||
])
|
||||
|
||||
# for debugging
|
||||
#print env.Dump()
|
||||
|
||||
Export('env')
|
||||
|
||||
|
||||
|
|
|
|||
142
winddk.py
142
winddk.py
|
|
@ -89,6 +89,105 @@ def get_winddk_paths(env, version=None):
|
|||
exe_path = string.join(exe_paths, os.pathsep )
|
||||
return (include_path, lib_path, exe_path)
|
||||
|
||||
def set_winddk_flags(env):
|
||||
"""Mimic WINDDK's builtin flags.
|
||||
|
||||
See also:
|
||||
- WINDDK's bin/makefile.new i386mk.inc for more info.
|
||||
- buildchk_wxp_x86.log files, generated by the WINDDK's build
|
||||
- http://alter.org.ua/docs/nt_kernel/vc8_proj/
|
||||
"""
|
||||
|
||||
cppdefines = [
|
||||
('_X86_', '1'),
|
||||
('i386', '1'),
|
||||
'STD_CALL',
|
||||
('CONDITION_HANDLING', '1'),
|
||||
('NT_INST', '0'),
|
||||
('WIN32', '100'),
|
||||
('_NT1X_', '100'),
|
||||
('WINNT', '1'),
|
||||
('_WIN32_WINNT', '0x0501'), # minimum required OS version
|
||||
('WINVER', '0x0501'),
|
||||
('_WIN32_IE', '0x0603'),
|
||||
('WIN32_LEAN_AND_MEAN', '1'),
|
||||
('DEVL', '1'),
|
||||
('__BUILDMACHINE__', 'WinDDK'),
|
||||
('FPO', '0'),
|
||||
]
|
||||
if env.get('DEBUG', False):
|
||||
cppdefines += [
|
||||
('DBG', 1),
|
||||
]
|
||||
env.Append(CPPDEFINES = cppdefines)
|
||||
|
||||
# See also:
|
||||
# - http://msdn2.microsoft.com/en-us/library/y0zzbyt4.aspx
|
||||
# - cl /?
|
||||
cflags = [
|
||||
'/Zl', # omit default library name in .OBJ
|
||||
'/Zp8', # 8bytes struct member alignment
|
||||
'/Gy', # separate functions for linker
|
||||
'/Gm-', # disable minimal rebuild
|
||||
'/W3', # warning level
|
||||
'/WX', # treat warnings as errors
|
||||
'/Gz', # __stdcall Calling convention
|
||||
'/GX-', # disable C++ EH
|
||||
'/GR-', # disable C++ RTTI
|
||||
'/GF', # enable read-only string pooling
|
||||
'/GS', # enable security checks
|
||||
'/G6', # optimize for PPro, P-II, P-III
|
||||
'/Ze', # enable extensions
|
||||
#'/Gi-', # ???
|
||||
'/QIfdiv-', # disable Pentium FDIV fix
|
||||
#'/hotpatch', # ???
|
||||
#'/Z7', #enable old-style debug info
|
||||
]
|
||||
if env.get('debug', False):
|
||||
cflags += [
|
||||
'/Od', # disable optimizations
|
||||
'/Oi', # enable intrinsic functions
|
||||
'/Oy-', # disable frame pointer omission
|
||||
]
|
||||
else:
|
||||
cflags += [
|
||||
'/Ox', # maximum optimizations
|
||||
'/Oi', # enable intrinsic functions
|
||||
'/Os', # favor code space
|
||||
]
|
||||
env.Append(CFLAGS = cflags)
|
||||
env.Append(CXXFLAGS = cflags)
|
||||
|
||||
# See also:
|
||||
# - http://msdn2.microsoft.com/en-us/library/y0zzbyt4.aspx
|
||||
env.Append(LINKFLAGS = [
|
||||
'/merge:_PAGE=PAGE',
|
||||
'/merge:_TEXT=.text',
|
||||
'/section:INIT,d',
|
||||
'/opt:ref',
|
||||
'/opt:icf',
|
||||
'/ignore:4198,4010,4037,4039,4065,4070,4078,4087,4089,4221',
|
||||
'/incremental:no',
|
||||
'/fullbuild',
|
||||
'/release',
|
||||
'/nodefaultlib',
|
||||
'/wx',
|
||||
'/debug',
|
||||
'/debugtype:cv',
|
||||
'/version:5.1',
|
||||
'/osversion:5.1',
|
||||
'/functionpadmin:5',
|
||||
'/safeseh',
|
||||
'/pdbcompress',
|
||||
'/stack:0x40000,0x1000',
|
||||
'/driver',
|
||||
'/align:0x80',
|
||||
'/subsystem:native,5.01',
|
||||
'/base:0x10000',
|
||||
|
||||
'/entry:DrvEnableDriver',
|
||||
])
|
||||
|
||||
def validate_vars(env):
|
||||
"""Validate the PCH and PCHSTOP construction variables."""
|
||||
if env.has_key('PCH') and env['PCH']:
|
||||
|
|
@ -215,47 +314,7 @@ def generate(env):
|
|||
|
||||
SCons.Tool.mslink.generate(env)
|
||||
|
||||
# See also:
|
||||
# - WINDDK's bin/makefile.new i386mk.inc for more info.
|
||||
# - http://alter.org.ua/docs/nt_kernel/vc8_proj/
|
||||
env.Append(CPPDEFINES = [
|
||||
'WIN32',
|
||||
'_WINDOWS',
|
||||
('i386', '1'),
|
||||
('_X86_', '1'),
|
||||
'STD_CALL',
|
||||
('CONDITION_HANDLING', '1'),
|
||||
('NT_INST', '0'),
|
||||
('_NT1X_', '100'),
|
||||
('WINNT', '1'),
|
||||
('_WIN32_WINNT', '0x0500'), # minimum required OS version
|
||||
('WIN32_LEAN_AND_MEAN', '1'),
|
||||
('DEVL', '1'),
|
||||
('FPO', '1'),
|
||||
])
|
||||
cflags = [
|
||||
'/GF', # Enable String Pooling
|
||||
'/GX-', # Disable C++ Exceptions
|
||||
'/Zp8', # 8bytes struct member alignment
|
||||
#'/GS-', # No Buffer Security Check
|
||||
'/GR-', # Disable Run-Time Type Info
|
||||
'/Gz', # __stdcall Calling convention
|
||||
]
|
||||
env.Append(CFLAGS = cflags)
|
||||
env.Append(CXXFLAGS = cflags)
|
||||
|
||||
env.Append(LINKFLAGS = [
|
||||
'/DEBUG',
|
||||
'/NODEFAULTLIB',
|
||||
'/SUBSYSTEM:NATIVE',
|
||||
'/INCREMENTAL:NO',
|
||||
#'/DRIVER',
|
||||
|
||||
#'-subsystem:native,4.00',
|
||||
'-base:0x10000',
|
||||
|
||||
'-entry:DrvEnableDriver',
|
||||
])
|
||||
set_winddk_flags(env)
|
||||
|
||||
if not env.has_key('ENV'):
|
||||
env['ENV'] = {}
|
||||
|
|
@ -275,3 +334,4 @@ def generate(env):
|
|||
def exists(env):
|
||||
return env.Detect('cl')
|
||||
|
||||
# vim:set sw=4 et:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue