insert mesa/ before include files
[mesa.git] / common.py
index 36b190ce89f23a0ab93ff6f1b1de5984e911da4c..c82f3026ddbbe1bd93f2ee65267c1fca0c5d173c 100644 (file)
--- a/common.py
+++ b/common.py
@@ -34,7 +34,7 @@ default_machine = _machine_map.get(default_machine, 'generic')
 
 if default_platform in ('linux', 'freebsd', 'darwin'):
        default_dri = 'yes'
-elif default_platform in ('winddk', 'windows'):
+elif default_platform in ('winddk', 'windows', 'wince'):
        default_dri = 'no'
 else:
        default_dri = 'no'
@@ -52,12 +52,13 @@ def AddOptions(opts):
                from SCons.Options.EnumOption import EnumOption
        except ImportError:
                from SCons.Variables.EnumVariable import EnumVariable as EnumOption
-       opts.Add(BoolOption('debug', 'build debug version', 'no'))
+       opts.Add(BoolOption('debug', 'debug build', 'no'))
+       opts.Add(BoolOption('profile', 'profile build', 'no'))
        #opts.Add(BoolOption('quiet', 'quiet command lines', 'no'))
        opts.Add(EnumOption('machine', 'use machine-specific assembly code', default_machine,
                                                                                         allowed_values=('generic', 'x86', 'x86_64')))
        opts.Add(EnumOption('platform', 'target platform', default_platform,
-                                                                                        allowed_values=('linux', 'cell', 'windows', 'winddk')))
+                                                                                        allowed_values=('linux', 'cell', 'windows', 'winddk', 'wince')))
        opts.Add(BoolOption('llvm', 'use LLVM', 'no'))
        opts.Add(BoolOption('dri', 'build DRI drivers', default_dri))
 
@@ -125,6 +126,8 @@ def make_build_dir(env):
                build_subdir += '-' + env['machine']
        if env['debug']:
                build_subdir += "-debug"
+       if env['profile']:
+               build_subdir += "-profile"
        build_dir = os.path.join(build_topdir, build_subdir)
        # Place the .sconsign file on the builddir too, to avoid issues with different scons
        # versions building the same source file
@@ -146,7 +149,7 @@ def generate(env):
        platform = env['platform']
        x86 = env['machine'] == 'x86'
        gcc = env['platform'] in ('linux', 'freebsd', 'darwin')
-       msvc = env['platform'] in ('windows', 'winddk')
+       msvc = env['platform'] in ('windows', 'winddk', 'wince')
 
        # C preprocessor options
        cppdefines = []
@@ -154,6 +157,8 @@ def generate(env):
                cppdefines += ['DEBUG']
        else:
                cppdefines += ['NDEBUG']
+       if env['profile']:
+               cppdefines += ['PROFILE']
        if platform == 'windows':
                cppdefines += [
                        'WIN32', 
@@ -191,10 +196,25 @@ def generate(env):
                ]
                if debug:
                        cppdefines += [('DBG', 1)]
+       if platform == 'wince':
+               cppdefines += [
+                       ('_WIN32_WCE', '500'), 
+                       'WCE_PLATFORM_STANDARDSDK_500',
+                       '_i386_',
+                       ('UNDER_CE', '500'),
+                       'UNICODE',
+                       '_UNICODE',
+                       '_X86_',
+                       'x86',
+                       '_USRDLL',
+                       'TEST_EXPORTS' ,
+               ]
        if platform == 'windows':
-               cppdefines += ['PIPE_SUBSYSTEM_USER']
+               cppdefines += ['PIPE_SUBSYSTEM_WINDOWS_USER']
        if platform == 'winddk':
-               cppdefines += ['PIPE_SUBSYSTEM_KERNEL']
+               cppdefines += ['PIPE_SUBSYSTEM_WINDOWS_DISPLAY']
+       if platform == 'wince':
+               cppdefines += ['PIPE_SUBSYSTEM_WINDOWS_CE']
        env.Append(CPPDEFINES = cppdefines)
 
        # C compiler options
@@ -204,6 +224,12 @@ def generate(env):
                        cflags += ['-O0', '-g3']
                else:
                        cflags += ['-O3', '-g3']
+               if env['profile']:
+                       cflags += ['-pg']
+               if env['machine'] == 'x86' and default_machine == 'x86_64':
+                       cflags += ['-m32']
+               if env['machine'] == 'x86_64' and default_machine == 'x86':
+                       cflags += ['-m64']
                cflags += [
                        '-Wall', 
                        '-Wmissing-prototypes',
@@ -228,10 +254,18 @@ def generate(env):
                          '/Oi', # enable intrinsic functions
                          '/Os', # favor code space
                        ]
+               if env['profile']:
+                       cflags += [
+                               '/Gh', # enable _penter hook function
+                               '/GH', # enable _pexit hook function
+                       ]
+               cflags += [
+                       '/W3', # warning level
+                       #'/Wp64', # enable 64 bit porting warnings
+               ]
                if platform == 'windows':
                        cflags += [
                                # TODO
-                               #'/Wp64', # enable 64 bit porting warnings
                        ]
                if platform == 'winddk':
                        cflags += [
@@ -239,7 +273,6 @@ def generate(env):
                                '/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
@@ -252,17 +285,28 @@ def generate(env):
                                '/hotpatch', # prepares an image for hotpatching.
                                #'/Z7', #enable old-style debug info
                        ]
+               if platform == 'wince':
+                       cflags += [
+                               '/Gs8192',
+                               '/GF', # enable read-only string pooling
+                       ]
                # Put debugging information in a separate .pdb file for each object file as
-               # descrived in the scons manpage
+               # described in the scons manpage
                env['CCPDBFLAGS'] = '/Zi /Fd${TARGET}.pdb'
        env.Append(CFLAGS = cflags)
        env.Append(CXXFLAGS = cflags)
 
        # Linker options
+       linkflags = []
+       if gcc:
+               if env['machine'] == 'x86' and default_machine == 'x86_64':
+                       linkflags += ['-m32']
+               if env['machine'] == 'x86_64' and default_machine == 'x86':
+                       linkflags += ['-m64']
        if platform == 'winddk':
                # See also:
                # - http://msdn2.microsoft.com/en-us/library/y0zzbyt4.aspx
-               env.Append(LINKFLAGS = [
+               linkflags += [
                        '/merge:_PAGE=PAGE',
                        '/merge:_TEXT=.text',
                        '/section:INIT,d',
@@ -288,7 +332,8 @@ def generate(env):
                        '/base:0x10000',
                        
                        '/entry:DrvEnableDriver',
-               ])
+               ]
+       env.Append(LINKFLAGS = linkflags)
 
 
        createConvenienceLibBuilder(env)