More logic can be shared between public and private branches this way.tags/mesa_20090313
| @@ -53,8 +53,12 @@ opts.Add(ListOption('winsys', 'winsys drivers to build', default_winsys, | |||
| env = Environment( | |||
| MSVS_VERSION = '7.1', | |||
| options = opts, | |||
| ENV = os.environ) | |||
| options = opts, | |||
| tools = ['gallium'], | |||
| toolpath = ['scons'], | |||
| ENV = os.environ, | |||
| ) | |||
| Help(opts.GenerateHelpText(env)) | |||
| # replicate options values in local variables | |||
| @@ -82,25 +86,6 @@ Export([ | |||
| ####################################################################### | |||
| # Environment setup | |||
| # | |||
| # TODO: put the compiler specific settings in separate files | |||
| # TODO: auto-detect as much as possible | |||
| if platform == 'winddk': | |||
| env.Tool('winddk', ['scons']) | |||
| env.Append(CPPPATH = [ | |||
| env['SDK_INC_PATH'], | |||
| env['DDK_INC_PATH'], | |||
| env['WDM_INC_PATH'], | |||
| env['CRT_INC_PATH'], | |||
| ]) | |||
| if platform == 'wince': | |||
| env.Tool('evc', ['scons']) | |||
| common.generate(env) | |||
| # Includes | |||
| env.Append(CPPPATH = [ | |||
| @@ -111,13 +96,6 @@ env.Append(CPPPATH = [ | |||
| ]) | |||
| # x86 assembly | |||
| if x86: | |||
| if gcc: | |||
| env.Append(CFLAGS = '-m32') | |||
| env.Append(CXXFLAGS = '-m32') | |||
| # Posix | |||
| if platform in ('posix', 'linux', 'freebsd', 'darwin'): | |||
| env.Append(CPPDEFINES = [ | |||
| @@ -182,6 +160,6 @@ Export('env') | |||
| SConscript( | |||
| 'src/SConscript', | |||
| build_dir = common.make_build_dir(env), | |||
| build_dir = env['build'], | |||
| duplicate = 0 # http://www.scons.org/doc/0.97/HTML/scons-user/x2261.html | |||
| ) | |||
| @@ -62,283 +62,3 @@ def AddOptions(opts): | |||
| opts.Add(BoolOption('llvm', 'use LLVM', 'no')) | |||
| opts.Add(BoolOption('dri', 'build DRI drivers', default_dri)) | |||
| ####################################################################### | |||
| # Quiet command lines | |||
| # | |||
| # See also http://www.scons.org/wiki/HidingCommandLinesInOutput | |||
| def quietCommandLines(env): | |||
| env['CCCOMSTR'] = "Compiling $SOURCE ..." | |||
| env['CXXCOMSTR'] = "Compiling $SOURCE ..." | |||
| env['ARCOMSTR'] = "Archiving $TARGET ..." | |||
| env['RANLIBCOMSTR'] = "" | |||
| env['LINKCOMSTR'] = "Linking $TARGET ..." | |||
| ####################################################################### | |||
| # Convenience Library Builder | |||
| # based on the stock StaticLibrary and SharedLibrary builders | |||
| import SCons.Action | |||
| import SCons.Builder | |||
| def createConvenienceLibBuilder(env): | |||
| """This is a utility function that creates the ConvenienceLibrary | |||
| Builder in an Environment if it is not there already. | |||
| If it is already there, we return the existing one. | |||
| """ | |||
| try: | |||
| convenience_lib = env['BUILDERS']['ConvenienceLibrary'] | |||
| except KeyError: | |||
| action_list = [ SCons.Action.Action("$ARCOM", "$ARCOMSTR") ] | |||
| if env.Detect('ranlib'): | |||
| ranlib_action = SCons.Action.Action("$RANLIBCOM", "$RANLIBCOMSTR") | |||
| action_list.append(ranlib_action) | |||
| convenience_lib = SCons.Builder.Builder(action = action_list, | |||
| emitter = '$LIBEMITTER', | |||
| prefix = '$LIBPREFIX', | |||
| suffix = '$LIBSUFFIX', | |||
| src_suffix = '$SHOBJSUFFIX', | |||
| src_builder = 'SharedObject') | |||
| env['BUILDERS']['ConvenienceLibrary'] = convenience_lib | |||
| env['BUILDERS']['Library'] = convenience_lib | |||
| return convenience_lib | |||
| ####################################################################### | |||
| # Build | |||
| def make_build_dir(env): | |||
| # Put build output in a separate dir, which depends on the current configuration | |||
| # See also http://www.scons.org/wiki/AdvancedBuildExample | |||
| build_topdir = 'build' | |||
| build_subdir = env['platform'] | |||
| if env['dri']: | |||
| build_subdir += "-dri" | |||
| if env['llvm']: | |||
| build_subdir += "-llvm" | |||
| if env['machine'] != 'generic': | |||
| 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 | |||
| env.SConsignFile(os.path.join(build_dir, '.sconsign')) | |||
| return build_dir | |||
| ####################################################################### | |||
| # Common environment generation code | |||
| def generate(env): | |||
| # FIXME: this is already too late | |||
| #if env.get('quiet', False): | |||
| # quietCommandLines(env) | |||
| # shortcuts | |||
| debug = env['debug'] | |||
| machine = env['machine'] | |||
| platform = env['platform'] | |||
| x86 = env['machine'] == 'x86' | |||
| gcc = env['platform'] in ('linux', 'freebsd', 'darwin') | |||
| msvc = env['platform'] in ('windows', 'winddk', 'wince') | |||
| # C preprocessor options | |||
| cppdefines = [] | |||
| if debug: | |||
| cppdefines += ['DEBUG'] | |||
| else: | |||
| cppdefines += ['NDEBUG'] | |||
| if env['profile']: | |||
| cppdefines += ['PROFILE'] | |||
| if platform == 'windows': | |||
| cppdefines += [ | |||
| 'WIN32', | |||
| '_WINDOWS', | |||
| '_UNICODE', | |||
| 'UNICODE', | |||
| # http://msdn2.microsoft.com/en-us/library/6dwk3a1z.aspx, | |||
| 'WIN32_LEAN_AND_MEAN', | |||
| 'VC_EXTRALEAN', | |||
| '_CRT_SECURE_NO_DEPRECATE', | |||
| ] | |||
| if debug: | |||
| cppdefines += ['_DEBUG'] | |||
| if platform == 'winddk': | |||
| # 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 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_WINDOWS_USER'] | |||
| if platform == 'winddk': | |||
| cppdefines += ['PIPE_SUBSYSTEM_WINDOWS_DISPLAY'] | |||
| if platform == 'wince': | |||
| cppdefines += ['PIPE_SUBSYSTEM_WINDOWS_CE'] | |||
| env.Append(CPPDEFINES = cppdefines) | |||
| # C compiler options | |||
| cflags = [] | |||
| if gcc: | |||
| if debug: | |||
| 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', | |||
| '-Wno-long-long', | |||
| '-ffast-math', | |||
| '-pedantic', | |||
| '-fmessage-length=0', # be nice to Eclipse | |||
| ] | |||
| if msvc: | |||
| # See also: | |||
| # - http://msdn2.microsoft.com/en-us/library/y0zzbyt4.aspx | |||
| # - cl /? | |||
| if debug: | |||
| 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 | |||
| ] | |||
| 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 | |||
| ] | |||
| if platform == 'winddk': | |||
| cflags += [ | |||
| '/Zl', # omit default library name in .OBJ | |||
| '/Zp8', # 8bytes struct member alignment | |||
| '/Gy', # separate functions for linker | |||
| '/Gm-', # disable minimal rebuild | |||
| '/WX', # treat warnings as errors | |||
| '/Gz', # __stdcall Calling convention | |||
| '/GX-', # disable C++ EH | |||
| '/GR-', # disable C++ RTTI | |||
| '/GF', # enable read-only string pooling | |||
| '/G6', # optimize for PPro, P-II, P-III | |||
| '/Ze', # enable extensions | |||
| '/Gi-', # disable incremental compilation | |||
| '/QIfdiv-', # disable Pentium FDIV fix | |||
| '/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 | |||
| # 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 | |||
| 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', | |||
| ] | |||
| env.Append(LINKFLAGS = linkflags) | |||
| createConvenienceLibBuilder(env) | |||
| # for debugging | |||
| #print env.Dump() | |||
| @@ -0,0 +1,323 @@ | |||
| """gallium | |||
| Frontend-tool for Gallium3D architecture. | |||
| """ | |||
| # | |||
| # Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. | |||
| # All Rights Reserved. | |||
| # | |||
| # 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, sub license, 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 (including the | |||
| # next paragraph) 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 NON-INFRINGEMENT. | |||
| # IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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 SCons.Action | |||
| import SCons.Builder | |||
| def quietCommandLines(env): | |||
| # Quiet command lines | |||
| # See also http://www.scons.org/wiki/HidingCommandLinesInOutput | |||
| env['CCCOMSTR'] = "Compiling $SOURCE ..." | |||
| env['CXXCOMSTR'] = "Compiling $SOURCE ..." | |||
| env['ARCOMSTR'] = "Archiving $TARGET ..." | |||
| env['RANLIBCOMSTR'] = "" | |||
| env['LINKCOMSTR'] = "Linking $TARGET ..." | |||
| def createConvenienceLibBuilder(env): | |||
| """This is a utility function that creates the ConvenienceLibrary | |||
| Builder in an Environment if it is not there already. | |||
| If it is already there, we return the existing one. | |||
| Based on the stock StaticLibrary and SharedLibrary builders. | |||
| """ | |||
| try: | |||
| convenience_lib = env['BUILDERS']['ConvenienceLibrary'] | |||
| except KeyError: | |||
| action_list = [ SCons.Action.Action("$ARCOM", "$ARCOMSTR") ] | |||
| if env.Detect('ranlib'): | |||
| ranlib_action = SCons.Action.Action("$RANLIBCOM", "$RANLIBCOMSTR") | |||
| action_list.append(ranlib_action) | |||
| convenience_lib = SCons.Builder.Builder(action = action_list, | |||
| emitter = '$LIBEMITTER', | |||
| prefix = '$LIBPREFIX', | |||
| suffix = '$LIBSUFFIX', | |||
| src_suffix = '$SHOBJSUFFIX', | |||
| src_builder = 'SharedObject') | |||
| env['BUILDERS']['ConvenienceLibrary'] = convenience_lib | |||
| env['BUILDERS']['Library'] = convenience_lib | |||
| return convenience_lib | |||
| def generate(env): | |||
| """Common environment generation code""" | |||
| # FIXME: this is already too late | |||
| #if env.get('quiet', False): | |||
| # quietCommandLines(env) | |||
| # shortcuts | |||
| debug = env['debug'] | |||
| machine = env['machine'] | |||
| platform = env['platform'] | |||
| x86 = env['machine'] == 'x86' | |||
| gcc = env['platform'] in ('linux', 'freebsd', 'darwin') | |||
| msvc = env['platform'] in ('windows', 'winddk', 'wince') | |||
| # Tool | |||
| if platform == 'winddk': | |||
| env.Tool('winddk') | |||
| elif platform == 'wince': | |||
| env.Tool('evc') | |||
| else: | |||
| env.Tool('default') | |||
| # Put build output in a separate dir, which depends on the current | |||
| # configuration. See also http://www.scons.org/wiki/AdvancedBuildExample | |||
| build_topdir = 'build' | |||
| build_subdir = env['platform'] | |||
| if env['dri']: | |||
| build_subdir += "-dri" | |||
| if env['llvm']: | |||
| build_subdir += "-llvm" | |||
| if env['machine'] != 'generic': | |||
| 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 in the build dir too, to avoid issues with | |||
| # different scons versions building the same source file | |||
| env['build'] = build_dir | |||
| env.SConsignFile(os.path.join(build_dir, '.sconsign')) | |||
| # C preprocessor options | |||
| cppdefines = [] | |||
| if debug: | |||
| cppdefines += ['DEBUG'] | |||
| else: | |||
| cppdefines += ['NDEBUG'] | |||
| if env['profile']: | |||
| cppdefines += ['PROFILE'] | |||
| if platform == 'windows': | |||
| cppdefines += [ | |||
| 'WIN32', | |||
| '_WINDOWS', | |||
| '_UNICODE', | |||
| 'UNICODE', | |||
| # http://msdn2.microsoft.com/en-us/library/6dwk3a1z.aspx, | |||
| 'WIN32_LEAN_AND_MEAN', | |||
| 'VC_EXTRALEAN', | |||
| '_CRT_SECURE_NO_DEPRECATE', | |||
| ] | |||
| if debug: | |||
| cppdefines += ['_DEBUG'] | |||
| if platform == 'winddk': | |||
| # 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 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_WINDOWS_USER'] | |||
| if platform == 'winddk': | |||
| cppdefines += ['PIPE_SUBSYSTEM_WINDOWS_DISPLAY'] | |||
| if platform == 'wince': | |||
| cppdefines += ['PIPE_SUBSYSTEM_WINDOWS_CE'] | |||
| env.Append(CPPDEFINES = cppdefines) | |||
| # C preprocessor includes | |||
| if platform == 'winddk': | |||
| env.Append(CPPPATH = [ | |||
| env['SDK_INC_PATH'], | |||
| env['DDK_INC_PATH'], | |||
| env['WDM_INC_PATH'], | |||
| env['CRT_INC_PATH'], | |||
| ]) | |||
| # C compiler options | |||
| cflags = [] | |||
| if gcc: | |||
| if debug: | |||
| cflags += ['-O0', '-g3'] | |||
| else: | |||
| cflags += ['-O3', '-g3'] | |||
| if env['profile']: | |||
| cflags += ['-pg'] | |||
| if env['machine'] == 'x86': | |||
| cflags += ['-m32'] | |||
| if env['machine'] == 'x86_64': | |||
| cflags += ['-m64'] | |||
| cflags += [ | |||
| '-Wall', | |||
| '-Wmissing-prototypes', | |||
| '-Wno-long-long', | |||
| '-ffast-math', | |||
| '-pedantic', | |||
| '-fmessage-length=0', # be nice to Eclipse | |||
| ] | |||
| if msvc: | |||
| # See also: | |||
| # - http://msdn2.microsoft.com/en-us/library/y0zzbyt4.aspx | |||
| # - cl /? | |||
| if debug: | |||
| 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 | |||
| ] | |||
| 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 | |||
| ] | |||
| if platform == 'winddk': | |||
| cflags += [ | |||
| '/Zl', # omit default library name in .OBJ | |||
| '/Zp8', # 8bytes struct member alignment | |||
| '/Gy', # separate functions for linker | |||
| '/Gm-', # disable minimal rebuild | |||
| '/WX', # treat warnings as errors | |||
| '/Gz', # __stdcall Calling convention | |||
| '/GX-', # disable C++ EH | |||
| '/GR-', # disable C++ RTTI | |||
| '/GF', # enable read-only string pooling | |||
| '/G6', # optimize for PPro, P-II, P-III | |||
| '/Ze', # enable extensions | |||
| '/Gi-', # disable incremental compilation | |||
| '/QIfdiv-', # disable Pentium FDIV fix | |||
| '/hotpatch', # prepares an image for hotpatching. | |||
| #'/Z7', #enable old-style debug info | |||
| ] | |||
| if platform == 'wince': | |||
| cflags += [ | |||
| '/Gs8192', | |||
| '/GF', # enable read-only string pooling | |||
| ] | |||
| # Automatic pdb generation | |||
| # See http://scons.tigris.org/issues/show_bug.cgi?id=1656 | |||
| env.EnsureSConsVersion(0, 98, 0) | |||
| env['PDB'] = '${TARGET.base}.pdb' | |||
| env.Append(CFLAGS = cflags) | |||
| env.Append(CXXFLAGS = cflags) | |||
| # Linker options | |||
| linkflags = [] | |||
| if gcc: | |||
| if env['machine'] == 'x86': | |||
| linkflags += ['-m32'] | |||
| if env['machine'] == 'x86_64': | |||
| linkflags += ['-m64'] | |||
| if platform == 'winddk': | |||
| # See also: | |||
| # - http://msdn2.microsoft.com/en-us/library/y0zzbyt4.aspx | |||
| 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', | |||
| ] | |||
| env.Append(LINKFLAGS = linkflags) | |||
| # Convenience Library Builder | |||
| createConvenienceLibBuilder(env) | |||
| # for debugging | |||
| #print env.Dump() | |||
| def exists(env): | |||
| return 1 | |||