Simplify BuildBot and add a helper script for compilation.

This commit is contained in:
Miguel A. Colón Vélez 2015-09-17 22:29:09 -04:00
parent b9e00ab611
commit f201aac946
6 changed files with 146 additions and 65 deletions

16
.gitignore vendored
View File

@ -12,11 +12,12 @@
*.dsw *.dsw
*.bsc *.bsc
*.aps *.aps
*.exe
*.trace *.trace
*.asm
*.dump *.dump
*.asm
!/pcsx2/IPU/yuv2rgb.asm !/pcsx2/IPU/yuv2rgb.asm
!/pcsx2/x86/ix86-32/aVif_proc-32.asm !/pcsx2/x86/ix86-32/aVif_proc-32.asm
!/plugins/CDVDpeops/i386.asm !/plugins/CDVDpeops/i386.asm
@ -51,11 +52,15 @@ Devel
oprofile_data/ oprofile_data/
/BuildLog.htm # Visual Studio upgrades
/UpgradeLog.XML /Backup*
/UpgradeLog2.XML /UpgradeLog*.htm
/UpgradeLog3.XML
/bin/**/*.dll
/bin/**/*.exp
/bin/**/*.ilk
/bin/**/*.lib
/bin/**/*.pdb
/bin/PCSX2 /bin/PCSX2
/bin/*ReplayLoader /bin/*ReplayLoader
/bin/bios /bin/bios
@ -95,7 +100,6 @@ oprofile_data/
/nsis/svnrev_spu2x.nsh /nsis/svnrev_spu2x.nsh
/nsis/svnrev_zerogs.nsh /nsis/svnrev_zerogs.nsh
/nsis/svnrev_zerospu2.nsh /nsis/svnrev_zerospu2.nsh
/nsis/*.exe
/pcsx2/gui/Resources/*.h /pcsx2/gui/Resources/*.h
!/pcsx2/gui/Resources/EmbeddedImage.h !/pcsx2/gui/Resources/EmbeddedImage.h
/plugins/CDVDolio/Template /plugins/CDVDolio/Template

6
bin/.gitignore vendored
View File

@ -1,6 +0,0 @@
*.dll
*.exe
*.pdb
*.ilk
*.exp
*.lib

View File

@ -1,24 +0,0 @@
REM PCSX2 - PS2 Emulator for PCs
REM Copyright (C) 2002-2011 PCSX2 Dev Team
REM
REM PCSX2 is free software: you can redistribute it and/or modify it under the terms
REM of the GNU Lesser General Public License as published by the Free Software Found-
REM ation, either version 3 of the License, or (at your option) any later version.
REM
REM PCSX2 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
REM without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
REM PURPOSE. See the GNU General Public License for more details.
REM
REM You should have received a copy of the GNU General Public License along with PCSX2.
REM If not, see <http://www.gnu.org/licenses/>.
REM
REM Ensure use Visual Studio Developer Command Prompt
REM Example, into Solution Folder (pcsx2\)
REM build.cmd "Debug" or
REM build.cmd "Release" or
REM build.cmd "Release AVX"
@echo off
SET Configuration=%1
call clean_msvc.cmd
MSBuild.exe PCSX2_suite.sln /m /p:BuildInParallel=true /p:CreateHardLinksForCopyLocalIfPossible=true /t:Clean,Rebuild /p:Configuration=%Configuration%

71
buildbot.xml Normal file
View File

@ -0,0 +1,71 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="ReleaseAll" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- Add all the solutions here. -->
<ItemGroup>
<SolutionSet Include="$(MSBuildProjectDirectory)\PCSX2_suite.sln" />
<!--SolutionSet Include="$(MSBuildProjectDirectory)\old_plugins.sln" /-->
<ProjectSetCPU Include="$(MSBuildProjectDirectory)\plugins\GSdx\GSdx.vcxproj" />
</ItemGroup>
<!-- Add common build properties here. -->
<PropertyGroup>
<CreateHardLinksIfPossible>true</CreateHardLinksIfPossible>
<CompileFastPlz>BuildInParallel=True;
CreateHardLinksForCopyFilesToOutputDirectoryIfPossible=$(CreateHardLinksIfPossible);
CreateHardLinksForCopyAdditionalFilesIfPossible=$(CreateHardLinksIfPossible);
CreateHardLinksForCopyLocalIfPossible=$(CreateHardLinksIfPossible);
CreateHardLinksForPublishFilesIfPossible=$(CreateHardLinksIfPossible);
</CompileFastPlz>
</PropertyGroup>
<!-- Add all the custom targets here. -->
<Target Name="CleanBloat" AfterTargets="InternalBuild">
<ItemGroup>
<BloatToDelete Include="$(MSBuildProjectDirectory)\bin\**\*.bsc"/>
<BloatToDelete Include="$(MSBuildProjectDirectory)\bin\**\*.exp"/>
<BloatToDelete Include="$(MSBuildProjectDirectory)\bin\**\*.ilk"/>
<BloatToDelete Include="$(MSBuildProjectDirectory)\bin\**\*.iobj"/>
<BloatToDelete Include="$(MSBuildProjectDirectory)\bin\**\*.ipdb"/>
<BloatToDelete Include="$(MSBuildProjectDirectory)\bin\**\*.lib"/>
<BloatToDelete Include="$(MSBuildProjectDirectory)\bin\**\*.pdb"/>
</ItemGroup>
<Delete Files="@(BloatToDelete)" />
</Target>
<Target Name="CleanCruft">
<ItemGroup>
<CruftToDelete Include="$(MSBuildProjectDirectory)\**\svnrev.h"/>
<CruftToDelete Include="$(MSBuildProjectDirectory)\**\*.CppClean.log" />
</ItemGroup>
<Delete Files="@(CruftToDelete)" />
</Target>
<Target Name="InternalBuild" AfterTargets="DebugAll;DevelAll;ReleaseAll">
<MSBuild Projects="@(SolutionSet)" BuildInParallel="false" Properties="Configuration=$(BaseConfiguration)" Targets="Clean" />
<MSBuild Projects="@(ProjectSetCPU)" BuildInParallel="false" Properties="Configuration=%(ConfigCPU.Identity)" Targets="Clean" />
<CallTarget Targets="CleanCruft" />
<MSBuild Projects="@(SolutionSet)" BuildInParallel="false" Properties="Configuration=$(BaseConfiguration);$(CompileFastPlz)" Targets="Build" />
<MSBuild Projects="@(ProjectSetCPU)" BuildInParallel="true" Properties="Configuration=%(ConfigCPU.Identity);BuildProjectReferences=false;$(CompileFastPlz);SolutionDir=$(MSBuildProjectDirectory)\" Targets="Build" />
</Target>
<Target Name="DebugAll">
<PropertyGroup>
<BaseConfiguration>Debug</BaseConfiguration>
</PropertyGroup>
<ItemGroup>
<ConfigCPU Include="Debug AVX;Debug AVX2;Debug SSE4;Debug SSSE3"/>
</ItemGroup>
</Target>
<Target Name="DevelAll">
<PropertyGroup>
<BaseConfiguration>Devel</BaseConfiguration>
</PropertyGroup>
<ItemGroup>
<ConfigCPU Include="Release AVX;Release AVX2;Release SSE4;Release SSSE3"/>
<!--ConfigCPU Include="Devel AVX;Devel AVX2;Devel SSE4;Devel SSSE3"/-->
</ItemGroup>
</Target>
<Target Name="ReleaseAll">
<PropertyGroup>
<BaseConfiguration>Release</BaseConfiguration>
</PropertyGroup>
<ItemGroup>
<ConfigCPU Include="Release AVX;Release AVX2;Release SSE4;Release SSSE3"/>
</ItemGroup>
</Target>
</Project>

View File

@ -1,29 +0,0 @@
:: clean_msvc.cmd
::
:: This batch file cleans up some files that MSVC's Clean/Rebuild commands tend to miss. In
:: particular the .ilk and .pdb files are known to get corrupted and cause all sorts of odd linker
:: linker errors, and the .ncb files can also get corrupted and cause intellisense breakges.
::
:: Safety: This tool should be pretty safe. It uses the command path to perform the deletion,
:: instead of relying on the CWD (which can sometimes fail to be set when working with UNCs across
:: network shares). Furthermore, none of the files it deletes are important. That is, they're
:: all files MSVC just rebuilds automatically next time you run/recompile. The one minor
:: exception is *.pdb, since windows and a lot of developer tools include PDB sets to assist in
:: application debugging (however these files are by no means required by any software).
del /s "%~dp0\*.ncb"
del /s "%~dp0\*.obj"
del /s "%~dp0\bin\*.ilk"
del /s "%~dp0\*.idb"
del /s "%~dp0\*.bsc"
del /s "%~dp0\*.sbr"
del /s "%~dp0\*.pch"
del /s "%~dp0\*.pdb"
del /s /q "%~dp0\deps"
:: These two can't be used currently because they match unwanted 4+ letter extensions, such
:: as *.resx and *.tmpl ... wow, stupid. >_<
:: del /s "%~dp0\*.tmp"
:: del /s "%~dp0\*.res"

65
mscompile.cmd Normal file
View File

@ -0,0 +1,65 @@
@ECHO OFF
REM PCSX2 - PS2 Emulator for PCs
REM Copyright (C) 2002-2015 PCSX2 Dev Team
REM
REM PCSX2 is free software: you can redistribute it and/or modify it under the terms
REM of the GNU Lesser General Public License as published by the Free Software Found-
REM ation, either version 3 of the License, or (at your option) any later version.
REM
REM PCSX2 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
REM without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
REM PURPOSE. See the GNU General Public License for more details.
REM
REM You should have received a copy of the GNU General Public License along with PCSX2.
REM If not, see <http://www.gnu.org/licenses/>.
CLS
ECHO Select your Visual Studio version:
ECHO 1. Microsoft Visual Studio 2013 (default)
ECHO 2. Microsoft Visual Studio 2015
ECHO Q. Exit the script.
CHOICE /C 12Q /T 10 /D 1 /M "Visual Studio version: "
IF ERRORLEVEL 3 GOTO END
IF ERRORLEVEL 2 SET "VCVARPATH=%VS140COMNTOOLS%..\..\VC\vcvarsall.bat"
IF ERRORLEVEL 1 SET "VCVARPATH=%VS120COMNTOOLS%..\..\VC\vcvarsall.bat"
ECHO.
ECHO Select the desired configuration:
ECHO 1. Release 32bit (default)
ECHO 2. Devel 32bit
ECHO 3. Debug 32bit
ECHO 4. Release 64bit (WIP)
ECHO 5. Devel 64bit (WIP)
ECHO 6. Debug 64bit (WIP)
ECHO Q. Exit the script.
CHOICE /C 123456Q /T 10 /D 1 /M "Configuration: "
IF ERRORLEVEL 7 GOTO END
IF ERRORLEVEL 6 SET "SELARCH=amd64" && SET "SELCONF=DebugAll"
IF ERRORLEVEL 5 SET "SELARCH=amd64" && SET "SELCONF=DevelAll"
IF ERRORLEVEL 4 SET "SELARCH=amd64" && SET "SELCONF=ReleaseAll"
IF ERRORLEVEL 3 SET "SELARCH=x86" && SET "SELCONF=DebugAll"
IF ERRORLEVEL 2 SET "SELARCH=x86" && SET "SELCONF=DevelAll"
IF ERRORLEVEL 1 SET "SELARCH=x86" && SET "SELCONF=ReleaseAll"
IF EXIST "%VCVARPATH%" (call "%VCVARPATH%" %SELARCH%) ELSE GOTO ERRORVS
cl > NUL 2>&1
if %ERRORLEVEL% NEQ 0 GOTO ERRORVS
ECHO.
ECHO Using:
cl 2>&1 | findstr "Version"
ECHO.
SET "LOGOPTIONS=/v:m /fl1 /fl2 /flp1:logfile="%~dpn0-%SELARCH%-%SELCONF%-errors.log";errorsonly /flp2:logfile="%~dpn0-%SELARCH%-%SELCONF%-warnings.log";warningsonly"
msbuild "%~dp0\buildbot.xml" /m %LOGOPTIONS% /t:%SELCONF%
GOTO END
:ERRORVS
ECHO.
ECHO The selected Visual Studio version was not found.
:END
ECHO.
ECHO Bye!
ECHO.
timeout /t 10