Commit d710a7cf authored by José Fonseca's avatar José Fonseca

Windows (DDK) compilation support.

It also works when cross compiling with Wine.
parent b9da3791
......@@ -28,6 +28,13 @@ import sys
# to get the full list of options. See scons manpage for more info.
#
platform_map = {
'linux2': 'linux',
'win32': 'winddk',
}
platform = platform_map.get(sys.platform, sys.platform)
# TODO: auto-detect defaults
opts = Options('config.py')
opts.Add(BoolOption('debug', 'build debug version', False))
......@@ -35,6 +42,8 @@ opts.Add(BoolOption('dri', 'build dri drivers', False))
opts.Add(BoolOption('llvm', 'use llvm', False))
opts.Add(EnumOption('machine', 'use machine-specific assembly code', 'x86',
allowed_values=('generic', 'x86', 'x86-64')))
opts.Add(EnumOption('platform', 'target platform', platform,
allowed_values=('linux', 'cell', 'winddk')))
env = Environment(
options = opts,
......@@ -44,25 +53,17 @@ Help(opts.GenerateHelpText(env))
# for debugging
#print env.Dump()
if 0:
# platform will be typically 'posix' or 'win32'
platform = env['PLATFORM']
else:
# platform will be one of 'linux', 'freebsd', 'win32', 'darwin', etc.
platform = sys.platform
if platform == 'linux2':
platform = 'linux'
# replicate options values in local variables
debug = env['debug']
dri = env['dri']
llvm = env['llvm']
machine = env['machine']
platform = env['platform']
# derived options
x86 = machine == 'x86'
gcc = platform in ('posix', 'linux', 'freebsd', 'darwin')
msvc = platform == 'win32'
gcc = platform in ('linux', 'freebsd', 'darwin')
msvc = platform in ('win32', 'winddk')
Export([
'debug',
......@@ -78,10 +79,32 @@ Export([
#######################################################################
# Environment setup
#
# TODO: put the compiler specific settings in seperate files
# TODO: put the compiler specific settings in separate files
# TODO: auto-detect as much as possible
if platform == 'winddk':
import ntpath
escape = env['ESCAPE']
env.Tool('msvc')
if 'BASEDIR' in os.environ:
WINDDK = os.environ['BASEDIR']
else:
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'])
# Optimization flags
if gcc:
if debug:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment