Index: buildbot/osuosl/master/config/builders.py =================================================================== --- buildbot/osuosl/master/config/builders.py +++ buildbot/osuosl/master/config/builders.py @@ -609,6 +609,40 @@ 'factory': LLDBBuilder.getLLDBBuildFactory(triple=None, # use default make='gmake', extra_configure_args=['--enable-cxx11', '--enable-optimized', '--enable-assertions'])}, + {'name': "lldb-x86-windows-msvc", + 'slavenames': ["zturner-win2008"], + 'builddir': "lldb-windows-x86", + 'factory': LLDBBuilder.getLLDBWindowsCMakeBuildFactory(triple=None, # use default + config=Debug, + # This sets up the environment to be identical to what would happen if you ran vcvarsall.bat + # which is a required step before invoking the compiler, linker, or for CMake to even be + # able to generate the relevant ninja. + env={ + 'PATH': 'C:\\Program Files (x86)\\MSBuild\\12.0\\bin;' + + 'C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\Common7\\IDE\\;' + + 'C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\BIN;' + + 'C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\Common7\\Tools;' + + 'C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319;' + + 'C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\VCPackages;' + + 'C:\\Program Files (x86)\\Windows Kits\\8.1\\bin\\x86;', + 'DevEnvDir': 'C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\Common7\\IDE\\', + 'ExtensionSdkDir': 'C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v8.1\\ExtensionSDKs\\', + 'Framework40Version': 'v4.0', + 'FrameworkDir': 'C:\\Windows\\Microsoft.NET\\Framework\\', + 'FrameworkDIR32': 'C:\\Windows\\Microsoft.NET\\Framework\\', + 'FrameworkVersion': 'v4.0.30319', + 'FrameworkVersion32': 'v4.0.30319', + 'INCLUDE': 'C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\INCLUDE;C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\ATLMFC\\INCLUDE;C:\\Program Files (x86)\\Windows Kits\\8.1\\include\\shared;C:\\Program Files (x86)\\Windows Kits\\8.1\\include\\um;C:\\Program Files (x86)\\Windows Kits\\8.1\\include\\winrt;', + 'LIB': 'C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\LIB;C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\ATLMFC\\LIB;C:\\Program Files (x86)\\Windows Kits\\8.1\\lib\\winv6.3\\um\\x86;', + 'LIBPATH': 'C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319;C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\LIB;C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\ATLMFC\\LIB;', + 'VCINSTALLDIR': 'C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\', + 'VisualStudioVersion': '12.0', + 'VSINSTALLDIR': 'C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\', + 'WindowsSdkDir': 'C:\\Program Files (x86)\\Windows Kits\\8.1\\', + 'WindowsSDK_ExecutablePath_x64': 'C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v8.1A\\bin\\NETFX 4.5.1 Tools\\x64\\', + 'WindowsSDK_ExecutablePath_x86': 'C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v8.1A\\bin\\NETFX 4.5.1 Tools\\', + } + )}, ] # Offline. Index: buildbot/osuosl/master/config/slaves.py =================================================================== --- buildbot/osuosl/master/config/slaves.py +++ buildbot/osuosl/master/config/slaves.py @@ -169,6 +169,9 @@ create_slave('ericwf-buildslave2', properties={'jobs': 4}, max_builds=2), # OS X 10.10 x86_64, Intel Core 2 Duo @ 2.40GHz create_slave("ericwf-osx-slave", properties={'jobs': 2}, max_builds=1), + + # Windows Server 2008 R2, Quad 2.6GHz Intel Xeon(R) 4GB RAM + create_slave("zturner-win2008", properties={'jobs': 4}, max_builds=1), # Defunct. # # GCC Compile Farm Slaves, see http://gcc.gnu.org/wiki/CompileFarm Index: zorg/buildbot/builders/LLDBBuilder.py =================================================================== --- zorg/buildbot/builders/LLDBBuilder.py +++ zorg/buildbot/builders/LLDBBuilder.py @@ -8,6 +8,84 @@ from buildbot.process.properties import WithProperties from zorg.buildbot.commands.LitTestCommand import LitTestCommand +# CMake Windows builds +def getLLDBWindowsCMakeBuildFactory( + clean=True, + cmake='cmake', + jobs=None, + + config='Release', + + # Environmental variables for all steps. + env={}, + extra_cmake_args=[]): + + ############# PREPARING + f = buildbot.process.factory.BuildFactory() + + # We *must* checkout at least Clang, LLVM, and LLDB. Once we add a step to run + # tests (e.g. ninja check-lldb), we will also need to add a step for LLD, since + # MSVC LD.EXE cannot link executables with DWARF debug info. + f.addStep(SVN(name='svn-llvm', + mode='update', baseURL='http://llvm.org/svn/llvm-project/llvm/', + defaultBranch='trunk', + workdir='llvm')) + f.addStep(SVN(name='svn-clang', + mode='update', baseURL='http://llvm.org/svn/llvm-project/cfe/', + defaultBranch='trunk', + workdir='llvm/tools/clang')) + f.addStep(SVN(name='svn-lldb', + mode='update', baseURL='http://llvm.org/svn/llvm-project/lldb/', + defaultBranch='trunk', + workdir='llvm/tools/lldb')) + + # If jobs not defined, Ninja will choose a suitable value + jobs_cmd=[] + if jobs is not None: + jobs_cmd=["-j"+str(jobs)] + ninja_cmd=['ninja'] + jobs_cmd + + # Global configurations + build_dir='build' + + ############# CLEANING + if clean: + f.addStep(ShellCommand(name='clean', + command=['rmdir', '/S/Q', build_dir], + warnOnFailure=True, + description='Cleaning', + descriptionDone='clean', + workdir='.', + env=env)) + + # Use batch files instead of ShellCommand directly, Windows quoting is + # borked. FIXME: See buildbot ticket #595 and buildbot ticket #377. + f.addStep(batch_file_download.BatchFileDownload(name='cmakegen', + command=[cmake, "-G", "Ninja", "../llvm", + "-DCMAKE_BUILD_TYPE="+config, + # Need to use our custom built version of python + "-DPYTHON_LIBRARY=C:\\src\\python\\PCbuild\\python27_d.lib", + "-DPYTHON_INCLUDE_DIR=C:\\src\\python\\Include", + "-DPYTHON_EXECUTABLE=C:\\src\\python\\PCbuild\\python_d.exe"] + + extra_cmake_args, + workdir=build_dir)) + + f.addStep(ShellCommand(name='cmake', + command=['cmakegen.bat'], + haltOnFailure=True, + description='cmake gen', + workdir=build_dir, + env=env)) + + f.addStep(WarningCountingShellCommand(name='build', + command=ninja_cmd, + haltOnFailure=True, + description='ninja build', + workdir=build_dir, + env=env)) + + return f + def getLLDBBuildFactory( triple, outOfDir=False,