Visual Studio: Universal sln #690

Merged
merged 10 commits into from Aug 18, 2015

Projects

None yet

6 participants

@micove
Contributor
micove commented Jul 31, 2015

I explain the reasoning in Issue #684.

Here is what I did so it's easier to review.

Using:

  • Git Bash from https://git-scm.com/download/win
    • Using "git config --global core.autocrlf true"
    • The new .gitattributes file makes this obsolete.
  • Powershell
  • VS2013 x86 Native Tools Command Prompt
  • VS2015 x86 Native Tools Command Prompt

Commit 1:

VS2015 GUI:
Add 4 wx30 projects and libpng
Add wx30 dependencies to ZZogl
Remove wx28

Git Bash:
git commit -am "commit 1 text"

Commit 2:

VS2013 tools:
devenv pcsx2_suite_2013.sln /upgrade
devenv old_plugins_2013.sln /upgrade

Git Bash:
git commit -am "commit 2 text"

Commit 3:

VS2015 GUI:
Open pcsx2_suite_2013.sln and upgrade.
Open old_plugins_2013.sln and upgrade.

# devenv misses xpad & CDVDolio so previous step is needed.
VS2015 tools:
devenv pcsx2_suite_2013.sln /upgrade
devenv old_plugins_2013.sln /upgrade

Git Bash:
# fix devenv xpad & CDVDolio issue
sed -b -i 's/"xpad_vs2013"/"xpad"/g' pcsx2_suite_2013.sln
sed -b -i 's/"cdvd_vs2013"/"CDVDolio"/g' old_plugins_2013.sln

mv 3rdparty/w32pthreads/pthreads_vs2013_vs2013.vcxproj 3rdparty/w32pthreads/pthreads_vs2013_vs2013a.vcxproj
find -type f -name *_vs2013.vcxproj -print0 | xargs -0 sed -b -i 's/ToolsVersion="14.0" //g;s/>v140_xp</>$(DefaultPlatformToolset)_xp</g;s/>v140</>$(DefaultPlatformToolset)_xp</g'
sed -b -i 's/ToolsVersion="14.0" //g;s/>v140_xp</>$(DefaultPlatformToolset)_xp</g;s/>v140</>$(DefaultPlatformToolset)_xp</g' 3rdparty/opencl/opencl.vcxproj
mv 3rdparty/w32pthreads/pthreads_vs2013_vs2013a.vcxproj 3rdparty/w32pthreads/pthreads_vs2013_vs2013.vcxproj

# Only upgrade the ones in the sln file (36 vcxproj + 2 sln = 38 files)
git add -f pcsx2_suite_2013.sln 3rdparty/opencl/ pcsx2/windows/VCprojects/ plugins/spu2-x/src/Windows/ plugins/GSdx/ 3rdparty/soundtouch/ 3rdparty/zlib/ plugins/LilyPad/ 3rdparty/w32pthreads/ plugins/xpad/ plugins/CDVDnull/Windows/ plugins/USBnull/Windows/ plugins/FWnull/Windows/ plugins/dev9null/Windows/ common/build/x86emitter/ common/build/Utilities/ tools/bin2cpp/ 3rdparty/libjpeg/ 3rdparty/w32pthreads/ plugins/cdvdGigaherz/src/Windows/ plugins/GSnull/Windows/ plugins/PadNull/Windows/ 3rdparty/portaudio/build/msvc/ plugins/USBqemu/Win32/ plugins/dev9ghzdrk/Win32/ 3rdparty/wxwidgets3.0/build/msw/ 3rdparty/wxwidgets3.0/build/msw/ 3rdparty/wxwidgets3.0/build/msw/ 3rdparty/wxwidgets3.0/build/msw/ 3rdparty/libpng/projects/vstudio/libpng/
git add old_plugins_2013.sln 3rdparty/bzip2/ plugins/CDVDiso/src/Windows/ plugins/CDVDolio/ plugins/SSSPSXPAD/ plugins/zerogs/dx/Windows/ plugins/zerospu2/Windows/ plugins/zzogl-pg/opengl/Win32/
git commit -m "commit 3 text"

Change $(DefaultPlatformToolset)_xp to $(DefaultPlatformToolset) to drop XP support. Well this needs props refractoring since _WIN32_WINNT is defined in a few places.

Commit 4:

Powershell:
# Recursive Rename
Rename-Item -path 3rdparty\w32pthreads\pthreads_vs2013_vs2013.vcxproj -newname pthreads_vs2013_vs2013a.vcxproj
Get-ChildItem -Filter "*_vs2013.vcxproj*" -Recurse | Rename-Item -NewName {$_.name -replace '_vs2013.vcxproj','.vcxproj' }
Rename-Item -path 3rdparty/w32pthreads/pthreads_vs2013_vs2013a.vcxproj -newname pthreads_vs2013_vs2013.vcxproj
Rename-Item -path pcsx2_suite_2013.sln -newname PCSX2_suite.sln
Rename-Item -path old_plugins_2013.sln -newname old_plugins.sln
Rename-Item -path plugins\CDVDolio\cdvd.vcxproj -newname CDVDolio.vcxproj
Rename-Item -path plugins\CDVDolio\cdvd.vcxproj.filters -newname CDVDolio.vcxproj.filters

Git Bash:
# Only rename the ones in the sln file (35 vcxproj + 33 filters + 2 sln = 70 files)
# I just renamed but there is no EOL normalization so the wx3 files get normalized by git.
git add -f --all pcsx2_suite_2013.sln PCSX2_suite.sln pcsx2/windows/VCprojects/ plugins/spu2-x/src/Windows/ plugins/GSdx/ 3rdparty/soundtouch/ 3rdparty/zlib/ plugins/LilyPad/ 3rdparty/w32pthreads/ plugins/xpad/ plugins/CDVDnull/Windows/ plugins/USBnull/Windows/ plugins/FWnull/Windows/ plugins/dev9null/Windows/ common/build/x86emitter/ common/build/Utilities/ tools/bin2cpp/ 3rdparty/libjpeg/ 3rdparty/w32pthreads/ plugins/cdvdGigaherz/src/Windows/ plugins/GSnull/Windows/ plugins/PadNull/Windows/ 3rdparty/portaudio/build/msvc/ plugins/USBqemu/Win32/ plugins/dev9ghzdrk/Win32/ 3rdparty/wxwidgets3.0/build/msw/ 3rdparty/wxwidgets3.0/build/msw/ 3rdparty/wxwidgets3.0/build/msw/ 3rdparty/wxwidgets3.0/build/msw/ 3rdparty/libpng/projects/vstudio/libpng/
git add --all old_plugins_2013.sln old_plugins.sln 3rdparty/bzip2/ plugins/CDVDiso/src/Windows/ plugins/CDVDolio/ plugins/SSSPSXPAD/ plugins/zerogs/dx/Windows/ plugins/zerospu2/Windows/ plugins/zzogl-pg/opengl/Win32/
git commit -m "commit 4 text"

Commit 5:

Git Bash:
find -type f -name *.vcxproj -print0 | xargs -0 sed -b -i 's/_vs2013.vcxproj/.vcxproj/g'
sed -b -i 's/_vs2013.vcxproj/.vcxproj/g' PCSX2_suite.sln
sed -b -i 's/_vs2013.vcxproj/.vcxproj/g' old_plugins.sln
sed -b -i 's/cdvd.vcxproj/CDVDolio.vcxproj/g' old_plugins.sln
sed -b -i 's/pcsx2_suite_2013/PCSX2_suite/g' build.cmd
# Only upgrade the ones in the sln file (11 vcxproj + 2 sln + 1 cmd = 14 files)
git add -f build.cmd PCSX2_suite.sln pcsx2/windows/VCprojects/ plugins/spu2-x/src/Windows/ plugins/GSdx/ 3rdparty/soundtouch/ 3rdparty/zlib/ plugins/LilyPad/ 3rdparty/w32pthreads/ plugins/xpad/ plugins/CDVDnull/Windows/ plugins/USBnull/Windows/ plugins/FWnull/Windows/ plugins/dev9null/Windows/ common/build/x86emitter/ common/build/Utilities/ tools/bin2cpp/ 3rdparty/libjpeg/ 3rdparty/w32pthreads/ plugins/cdvdGigaherz/src/Windows/ plugins/GSnull/Windows/ plugins/PadNull/Windows/ 3rdparty/portaudio/build/msvc/ plugins/USBqemu/Win32/ plugins/dev9ghzdrk/Win32/ 3rdparty/wxwidgets3.0/build/msw/ 3rdparty/wxwidgets3.0/build/msw/ 3rdparty/wxwidgets3.0/build/msw/ 3rdparty/wxwidgets3.0/build/msw/ 3rdparty/libpng/projects/vstudio/libpng/
git add old_plugins.sln 3rdparty/bzip2/ plugins/CDVDiso/src/Windows/ plugins/CDVDolio/ plugins/SSSPSXPAD/ plugins/zerogs/dx/Windows/ plugins/zerospu2/Windows/ plugins/zzogl-pg/opengl/Win32/
git commit -m "commit 5 text"

Commit 6:

Fix compilation errors of the old plugins.

- zerospu2: include stdint.h in Windows. (VC2012+)
- CDVDolio: Remove hash_map (not used, VC2015+)
- zerogs: Fix extern and link to utilities. (VC2012+)
- zzogl: Port windows part to wx30. (VC2012+)

Note: zzogl porting changes based on 20b9dba

Commit 7:

Disable 4456 and 4458 since they clog up the logs and it slows down or crashes VS2015.

A cleanup commit could do:

find -type f -name *_vs2012.vcxproj -print0 | xargs -0 rm -f
find -type f -name *_vs2013.vcxproj -print0 | xargs -0 rm -f
find -type f -name *_vs2012.vcxproj.filters -print0 | xargs -0 rm -f
find -type f -name *_vs2013.vcxproj.filters -print0 | xargs -0 rm -f
rm -rf 3rdparty/wxWidgets/ pcsx2_suite_2012.sln
@micove
Contributor
micove commented Aug 2, 2015

@gabest11

Could you check the last 4 commits and check their sanity.

The xbyak upgrade was to go down from 16563 warnings to 8243 warnings (fixed in 4.62) since 17,000+ warnings crashed VS2015 for me.

There are still 8,114 of the new C4458 warning from VS2015. Example:

pcsx2\plugins\gsdx\GSVector.h(186): warning C4458: declaration of 'v' hides class member (compiling source file GLState.cpp)
pcsx2\plugins\gsdx\GSVector.h(104): note: see declaration of 'GSVector4i::v' (compiling source file GLState.cpp)
pcsx2\plugins\gsdx\GSVector.h(204): warning C4458: declaration of 'm' hides class member (compiling source file GLState.cpp)
pcsx2\plugins\gsdx\GSVector.h(114): note: see declaration of 'GSVector4i::m' (compiling source file GLState.cpp)
pcsx2\plugins\gsdx\GSVector.h(236): warning C4458: declaration of 'a' hides class member (compiling source file GLState.cpp)
pcsx2\plugins\gsdx\GSVector.h(102): note: see declaration of 'GSVector4i::<unnamed-tag>::a' (compiling source file GLState.cpp)
pcsx2\plugins\gsdx\GSVector.h(266): warning C4458: declaration of 'a' hides class member (compiling source file GLState.cpp)
pcsx2\plugins\gsdx\GSVector.h(102): note: see declaration of 'GSVector4i::<unnamed-tag>::a' (compiling source file GLState.cpp)
pcsx2\plugins\gsdx\GSVector.h(313): warning C4458: declaration of 'v' hides class member (compiling source file GLState.cpp)
pcsx2\plugins\gsdx\GSVector.h(104): note: see declaration of 'GSVector4i::v' (compiling source file GLState.cpp)
pcsx2\plugins\gsdx\GSVector.h(335): warning C4458: declaration of 'a' hides class member (compiling source file GLState.cpp)
pcsx2\plugins\gsdx\GSVector.h(102): note: see declaration of 'GSVector4i::<unnamed-tag>::a' (compiling source file GLState.cpp)

The warnings just require variable renaming for the most part.

It would be better if you cherry picked those 4 commits and fixed/applied them to your liking so I can remove them from this PR.

Edit: Also doing a test compilation of GSdx with VS2015 to see the warnings helps.

@gabest11
Contributor
gabest11 commented Aug 3, 2015

I'm not a git expert, should I clone https://github.com/micove/pcsx2.git (--branch VS_universal_sln) and test that? Or is there a link on this pull request page somewhere I'm missing?

@gabest11
Contributor
gabest11 commented Aug 3, 2015

1>------ Build started: Project: GSdx, Configuration: Debug AVX2 Win32 ------
1> commit 7e97b02
1> Author: Miguel A. Col├│n V├ęlez <...>
1> Date: Sun Aug 2 22:01:44 2015 -0400
1>
1> Gsdx: Move the stdext namespace declaration.
1>
1> This will eventually lead to
1>EXEC : error C2871: 'stdext' : a namespace with this name does not exist.
1> might as well fix it now.
1> 1 file(s) copied.
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(123,5): error MSB3073: The command ""C:\Users\Gabest.TESTENV\Desktop\pcsx2\plugins\GSdx.....\common\vsprops\preBuild.cmd" "C:\Users\Gabest.TESTENV\Desktop\pcsx2\plugins\GSdx."
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(123,5): error MSB3073: :VCEnd" exited with code -1.

@micove
Contributor
micove commented Aug 3, 2015

Oh the idea was to test/check if the GSdx changes were sane and maybe you could commit them so I could remove them from this PR since they are technically unrelated. I only asked since I saw you were active in the last few days and GSdx requires the most changes for VS2015.

Also, I'm not sure why that error occurred. I tested this branch more than I have wanted to and it built in
Win 8.1 with VS2013 Professional /VS2015 Professional
Windows 10 with VS2013 Professional /VS2015 Professional

Community should work too since it's practically the same.

Edit:
Something like this would work
git clone https://github.com/micove/pcsx2.git
cd pcsx2
git checkout VS_universal_sln
git format-patch -4

This would generate 4 patches with the last 4 commits. I think you mentioned you used TortoiseGit so I'm not sure the equivalent in that,

@gabest11
Contributor
gabest11 commented Aug 3, 2015

I have no idea what is wrong with the prebuild command, it runs in a simple command line just fine. This is vs2015 enterprise.

If I disable it then I get the directx errors. The platform toolset is on DefaultPlatformToolSet, which isn't the *_xp needed for old directx. Is there perhaps a macro for this backwards compatibility toolset too?

For the warnings, I suggest "Disable Specific Warnings", add 4456 and 4458. Declaring a variable that has the same name as another from higher scope is one of the features of the language, should not even be a warning to my opinion. Otherwise you would get the same silly errors as in c#, not even a int i; for(int i; ..;) {} can be compiled. Brrrr.

@gabest11
Contributor
gabest11 commented Aug 3, 2015

$(DefaultPlatformToolset)_xp seems to work :)

@micove
Contributor
micove commented Aug 3, 2015

Yes, I had it in the notes. Not sure if XP support is wanted or not but it can be easily reverted.

Change $(DefaultPlatformToolset) to $(DefaultPlatformToolset)_xp for XP support.

Commit 4:

It compiled fine for me with and without the _xp using the DirectX SDK. It won't work with the Windows SDK since the DirectX part needs porting.

What OS are you using?

@gabest11
Contributor
gabest11 commented Aug 3, 2015

Now that you say, it does compile, just with a few DX macro re-declaration warnings (not errors).

On Windows 8.1.

@micove
Contributor
micove commented Aug 3, 2015

Yeah, I get those warnings too. They get lost in the sea of C4458 warnings.

@gregory38
Contributor

I merged the 5 latest commit. We could still revert them if it explodes. Hopefully you can merge the remaining soon

@gregory38
Contributor

@gigaherz @refractionpcsx2 @ramapcsx2
Your opinion is welcome on the round-tripping enhancement.

@micove
Contributor
micove commented Aug 4, 2015

Oh, I figured out why the error MSB3073 error was happening. It seems to be a visual studio bug when used with git or probably others VCS. My last commit had this as the commit message

This will eventually lead to
error C2871: 'stdext' : a namespace with this name does not exist.
might as well fix it now.

VS parses the last commit message and it actually thought it was a real error and broke everything. I noticed when the master branch started giving me that error and it suddenly was fixed by the next commit. I had a unpushed commit to silence warnings and never noticed.

@gabest11
Contributor
gabest11 commented Aug 5, 2015

That's funny.

@mirh mirh referenced this pull request Aug 7, 2015
Closed

Visual Studio 2015 Community #668

@gregory38
Contributor

@refractionpcsx2
Any opinion? Can we merge it?

@micove
Contributor
micove commented Aug 17, 2015

To summarize my long winded explanation.
I just:

  • Removed ToolsVersion="12.0"
  • Renamed v120_xp to $(DefaultPlatformToolset)_xp
  • Renamed the files to not use the misleading vs2013 notation.
  • Fixed some FTBFS unrelated to this but I found them while testing.

The only issues I could see are the changes to ZZogl to make it build and that unless the build bot uses the provided build.cmd file then I broke it and whoever manages it has to update to use the new solution. The rest should behave like before but now 1 solution can be used for MSVS >= 10.0.40219.1.

I would have deleted the vs2012 and some vs2013 cruft but I left it there since it would have made it take longer to merge from the looks of it. I also left XP since it seems it's wanted. Also some things in debug/devel (can't remember now) don't compile but those are old and I could have fixed them but pistachio's old PR fixes most of them but he merged it into his props PR and I did not want to duplicate his work since I'm about to break his PR (again). I kind of feel bad for #233 since there are some useful fixes in there and it's been in review for 1 year.

@refractionpcsx2
Member

I haven't actually tested this yet to be honest :P I'll try and remember to try it tonight, make sure it compiles on VS2013 and VS2010. I could try VS2015 as well, but im guessing that won't work yet.

@gregory38
Contributor

VS2010 was dropped (maybe you mean VS2012). The code isn't compatible anymore (C++11)

@refractionpcsx2
Member

i didn't actually have 2012 :P But i can probably get it from my MSDN account.

@micove
Contributor
micove commented Aug 17, 2015

It compiles with 2013/2015 well as well as before since some stuff does not currently compile in git master.

Also the current 2012 sln does not work for GSdx among other things.

@refractionpcsx2
Member

it doesn't but the idea is this sln is universal, so it should work with 2012 too

@micove
Contributor
micove commented Aug 17, 2015

Well it should work. I just meant it as that since no one used the old one then I did not test it.

If it works in 2015 and 2013 then I see no reason why it should fail on 2012 unless it no longer compiled due to C++11 stuff.

@refractionpcsx2
Member

Well the idea is we support the 3 most recent versions of Visual Studio, so I will get 2012 installed tonight and try it :) Obviously if c++11 is a problem, the we will just have to live with it.

@micove
Contributor
micove commented Aug 17, 2015

Oh, sure go ahead and try it. 2013/2015 took like 15 GB of my partition and I only had 4gb left for windows stuff so I had no space for 2012.

The only changes that affect 2012 are

  • Removed ToolsVersion="12.0"
  • Renamed v120_xp to $(DefaultPlatformToolset)_xp

But those also work in 2012 per the documentation. I checked for vs2012 only props but only GSdx had them but they were identical to the 2013 ones. So, the only thing left to see is C++11 stuff unless I missed something else.

@refractionpcsx2
Member

That's fine, ill find out later what happens :)

In an unrelated question, in the old versions of VS you used to be able to get an error window so you just saw the errors that occurred so you don't have to trawl through a massive list of lines. Does anybody know a way to get this in the newer versions of VS?

@micove
Contributor
micove commented Aug 17, 2015

Sure, after you test it tell me if I should delete the old 2012 files to avoid confusion and clean up. Also wx2.8 could be removed.

find -type f -name *_vs2012.vcxproj -print0 | xargs -0 rm -f
find -type f -name *_vs2013.vcxproj -print0 | xargs -0 rm -f
find -type f -name *_vs2012.vcxproj.filters -print0 | xargs -0 rm -f
find -type f -name *_vs2013.vcxproj.filters -print0 | xargs -0 rm -f
rm -rf 3rdparty/wxWidgets/ pcsx2_suite_2012.sln
@micove
Contributor
micove commented Aug 17, 2015
In an unrelated question, in the old versions of VS you used to be able to get an error window so you just saw the errors that occurred so you don't have to trawl through a massive list of lines. Does anybody know a way to get this in the newer versions of VS?

I'm on linux right now but if you go to either VIEW or EDIT and there is a option to enable it.

I think the keyboard shortcut is Ctrl+E or Ctrl +\ +E.

I usually just enable it using the menus.

@refractionpcsx2
Member

Nice thanks! I've missed that lol. I will check it later when I get home :)

@refractionpcsx2
Member

OK we have issues opening the projects in 2012, I received these upon opening the solution, the paths are correct, i checked :P

http://pastebin.com/hebDTN65

@micove
Contributor
micove commented Aug 17, 2015

Well the offending line is the same in the vs2012 and vs2013 project files

  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

Does the vs2012 sln works? Could be a broken vs2012 installation since co-installing multiple version sometimes breaks thing.

@refractionpcsx2
Member

Well the 2012 project fails to compile, however it loads without error

@micove
Contributor
micove commented Aug 17, 2015

Okay, I might have an idea but I'm downloading VS2012 since I deleted the ISO a while back and its faster to just check it locally.

@refractionpcsx2
Member

Ok cool, good luck :)

@micove
Contributor
micove commented Aug 17, 2015

My first guess was right and it loads now.

199 errors due to missing stuff from C99 and C++11 in VS2012. VS2012 died in the last 6 months or so.

I will test it again in 2013/2015 before pushing the changes.

Should I delete the old files and wx2.8?

find -type f -name *_vs2012.vcxproj -print0 | xargs -0 rm -f
find -type f -name *_vs2013.vcxproj -print0 | xargs -0 rm -f
find -type f -name *_vs2012.vcxproj.filters -print0 | xargs -0 rm -f
find -type f -name *_vs2013.vcxproj.filters -print0 | xargs -0 rm -f
rm -rf 3rdparty/wxWidgets/ pcsx2_suite_2012.sln
@refractionpcsx2
Member

Well 2013 is fine :) I guess we will just drop 2012 and lower completely, there's no point in polishing something that doesn't support the stuff we need, so just remove the vs 2012 project, make sure 2015 is fine then we can merge i recon!

@avih
Member
avih commented Aug 17, 2015

+1 for dropping vs2012 and focusing on 2013/2015.

micove added some commits Aug 10, 2015
@micove micove Add wx30 to old plugins.
- Remove wx28
- Add libpng since wx30 depends on it
- Add wx30 dependencies to ZZogl.
42d64b0
@micove micove Run devenv /upgrade
This ensures the solution can do round-tripping.
f52988b
@micove micove Enable round-tripping.
- Remove ToolsVersion
- Use $(DefaultPlatformToolset)_xp until XP support is dropped.
Note: opencl had no XP support and was not enabled in VS2012.
1fe5ace
@micove micove Rename files. 2772173
@micove micove Rename inside the files. a1e5651
@micove micove Fix compilation errors of the old plugins.
- zerospu2: include stdint.h in Windows. (VC2012+)
- CDVDolio: Remove hash_map (not used, VC2015+)
- zerogs: Fix extern and link to utilities. (VC2012+)
- zzogl: Port windows part to wx30. (VC2012+)
51bd9fe
@micove micove Disable 8,000+ warnings.
Someone can try renaming v,a,b,m,t but since they are
shadowed one mistakes can mess too much hence the warning.
f22bc63
@micove micove Remove vs2012 files.
It does not support several things from C99/C++11 that are
used in the project.
a1de061
@micove micove Remove unused vs2013 file. 5997e68
@micove micove Remove wx2.8 from the 3rdparty folder. 961e0b5
@micove
Contributor
micove commented Aug 18, 2015

Well since we are dropping support for VS2012 then I left it as it was. It
won't load as a warning that it won't compile :). VS2012 seems to want
ToolsVersion="4.0" or "XX.0" (it just fallsback to 4.0). If left blank it
won't load. This was fixed in VS2013+.

I added 3 commits

rm -f pcsx2_suite_2012.sln
find -type f -name *_vs2012.vcxproj -print0 | xargs -0 rm -f
find -type f -name *_vs2012.vcxproj.filters -print0 | xargs -0 rm -f
git commit -am "Remove vs2012 files.

It does not support several things from C99/C++11 that are
used in the project."

find -type f -name *_vs2013.vcxproj -print0 | xargs -0 rm -f
find -type f -name *_vs2013.vcxproj.filters -print0 | xargs -0 rm -f
git commit -am "Remove unused vs2013 file."

rm -rf 3rdparty/wxWidgets/
git commit -am "Remove wx2.8 from the 3rdparty folder."

I tested it this time using MSbuild just like the build.cmd file and it builds
fine in 2013/2015 with:

MSBuild.exe PCSX2_suite.sln /m /p:BuildInParallel=true /p:CreateHardLinksForCopyLocalIfPossible=true /t:Clean,Rebuild /p:Configuration="Release SSE4"
MSBuild.exe old_plugins.sln /m /p:BuildInParallel=true /p:CreateHardLinksForCopyLocalIfPossible=true /t:Clean,Rebuild /p:Configuration="Release SSE4"
@refractionpcsx2
Member

Cool so you're happy both versions compile the new solutions happily?

@micove
Contributor
micove commented Aug 18, 2015

Yes, I tested it with

  • 2013 Gui
  • 2013 Msbuild
  • 2015 Gui
  • 2015 Msbuild

Using both PCSX2_suite.sln and old_plugins.sln. It compiles as well as before. From what I remember the regular Release and some Debug may not compile due to some old issues (header name clash and portaudio asio). The release SSE2-4/AVX compile fine.

@refractionpcsx2 refractionpcsx2 merged commit 8539805 into PCSX2:master Aug 18, 2015
@refractionpcsx2
Member

Merged, thanks :)

Edit: should have asked you to squash it first really, doh, nevermind!

@mirh
mirh commented Aug 18, 2015

I remember Portaudio ASIO used to compile some months ago with vs2013.

@avih
Member
avih commented Aug 18, 2015

@micove , Thanks, great work!

Some issues I noticed using VS2015 Community edition on Windows 10 (with DXSDK_June2010):

  1. For release (AVX2) build, everything completed successfully on the first try (29 projects! ++ yay!), however, building again (F7) went over all/most of the projects again instead of immediately saying that everything is up to date.
  2. For Devel build, everything built except linking of pcsx2-dev.exe due to one missing symbol:
1>iCOP0.obj : error LNK2019: unresolved external symbol "void __cdecl COP0_UpdatePCCR(void)" (?COP0_UpdatePCCR@@YAXXZ) referenced in function "void __cdecl R5900::Dynarec::OpcodeImpl::COP0::recMFC0(void)" (?recMFC0@COP0@OpcodeImpl@Dynarec@R5900@@YAXXZ)
1>R5900.obj : error LNK2001: unresolved external symbol "void __cdecl COP0_UpdatePCCR(void)" (?COP0_UpdatePCCR@@YAXXZ)

I didn't try other build configurations.

Amazing work!

@avih
Member
avih commented Aug 18, 2015

Hmm.. this is weird. Now it works as it should for Release AVX2 - every time I press F7 it outputs immediately:

========== Build: 0 succeeded, 0 failed, 29 up-to-date, 0 skipped ==========

Don't know why earlier it rebuilt several projects on every rebuild without any modifications in between...

Regardless, the linkage issue in Develstill remains.

@avih
Member
avih commented Aug 18, 2015

Also, with vs2013 (on Windows 8.1), the link issue on Devel doesn't exist for me.1 . I.e. Both Release AVX2 and Devel build fine. Also it (correctly) doesn't have any outdated projects when rebuilding without modifying files, for both build targets.

@micove micove deleted the micove:VS_universal_sln branch Aug 18, 2015
@micove
Contributor
micove commented Aug 18, 2015

Okay, I got home and ate so I will look into the issues mentioned.

I think the devel issue is a VS2015 bug but I can't be sure until I look at it. I have encountered several similar errors in other programs and there is usually a similar bug reported in the MS bug tracker. For now, I would probably recommend using VS2013 update 5 until VS2015 hits update 1 or 2.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment