summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--SConstruct34
-rw-r--r--winddk.py42
2 files changed, 64 insertions, 12 deletions
diff --git a/SConstruct b/SConstruct
index 02e61650057..219997ca914 100644
--- a/SConstruct
+++ b/SConstruct
@@ -39,13 +39,17 @@ if default_platform in ('linux', 'freebsd', 'darwin'):
default_statetrackers = 'mesa'
default_drivers = 'softpipe,failover,i915simple,i965simple'
default_winsys = 'xlib'
+ default_dri = 'yes'
elif default_platform in ('winddk',):
default_statetrackers = 'none'
default_drivers = 'softpipe,i915simple'
default_winsys = 'none'
+ default_dri = 'no'
else:
default_drivers = 'all'
default_winsys = 'all'
+ default_dri = 'no'
+
# TODO: auto-detect defaults
opts = Options('config.py')
@@ -75,7 +79,7 @@ opts.Add(ListOption('winsys', 'winsys drivers to build', default_winsys,
],
))
opts.Add(BoolOption('llvm', 'use LLVM', 'no'))
-opts.Add(BoolOption('dri', 'build DRI drivers', 'no'))
+opts.Add(BoolOption('dri', 'build DRI drivers', default_dri))
env = Environment(
options = opts,
@@ -125,17 +129,23 @@ if platform == 'winddk':
WINDDK = "C:\\WINDDK\\3790.1830"
# NOTE: We need this elaborate construct to get the absolute paths and
# forward slashes to msvc unharmed when cross compiling from posix platforms
- env.Append(CPPFLAGS = [
- escape('/I' + ntpath.join(WINDDK, 'inc\\ddk\\wxp')),
- escape('/I' + ntpath.join(WINDDK, 'inc\\ddk\\wdm\\wxp')),
- escape('/I' + ntpath.join(WINDDK, 'inc\\crt')),
- ])
- env.Append(CPPDEFINES = [
- ('i386', '1'),
- ])
- if debug:
- env.Append(CPPDEFINES = ['DBG'])
+ #env.Append(CPPFLAGS = [
+ # escape('/I' + ntpath.join(WINDDK, 'inc\\wxp')),
+ # escape('/I' + ntpath.join(WINDDK, 'inc\\ddk\\wxp')),
+ # escape('/I' + ntpath.join(WINDDK, 'inc\\ddk\\wdm\\wxp')),
+ # escape('/I' + ntpath.join(WINDDK, 'inc\\crt')),
+ #])
+ env.Append(CFLAGS = '/W3')
+ if debug:
+ env.Append(CPPDEFINES = [
+ ('DBG', '1'),
+ ('DEBUG', '1'),
+ ('_DEBUG', '1'),
+ ])
+ env.Append(CFLAGS = '/Od /Zi')
+ env.Append(CXXFLAGS = '/Od /Zi')
+
# Optimization flags
if gcc:
@@ -224,7 +234,7 @@ if llvm:
# libGL
-if 1:
+if platform not in ('winddk',):
env.Append(LIBS = [
'X11',
'Xext',
diff --git a/winddk.py b/winddk.py
index af4335dbb01..1a5a0d1aa74 100644
--- a/winddk.py
+++ b/winddk.py
@@ -212,6 +212,48 @@ def generate(env):
SCons.Tool.mslink.generate(env)
+ # See also:
+ # - WINDDK's bin/makefile.new 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
+ #'/EHsc', # Enable 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',
+ ])
+
if not env.has_key('ENV'):
env['ENV'] = {}
if not env['ENV'].has_key('SystemRoot'): # required for dlls in the winsxs folders