mirror of
				https://github.com/RetroDECK/Duckstation.git
				synced 2025-04-10 19:15:14 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			225 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			225 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
| <?xml version="1.0" encoding="utf-8"?>
 | |
| <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 | |
|   <PropertyGroup Label="UserMacros">
 | |
|     <BinaryOutputDir>$(SolutionDir)bin\$(Platform)\</BinaryOutputDir>
 | |
|     <DSQTDIRDefault Condition="'$(Platform)'=='x64'">$(SolutionDir)dep\msvc\deps-x64\</DSQTDIRDefault>
 | |
|     <DSQTDIRDefault Condition="'$(Platform)'=='ARM64'">$(SolutionDir)dep\msvc\deps-arm64\</DSQTDIRDefault>
 | |
|     <DSQTDIR Condition="Exists('$(DSQTDIRDefault)') And ('$(DSQTDIR)'=='' Or !Exists('$(DSQTDIR)'))">$(DSQTDIRDefault)</DSQTDIR>
 | |
|     <DSQTDIR Condition="Exists('$(DSQTDIR)') And !HasTrailingSlash('$(DSQTDIR)')">$(DSQTDIR)\</DSQTDIR>
 | |
|     <DSQTDIRHost>$(SolutionDir)dep\msvc\deps-x64\</DSQTDIRHost>
 | |
|     <DSQTDIRValid>false</DSQTDIRValid>
 | |
|     <DSQTDIRValid Condition="Exists('$(DSQTDIR)')">true</DSQTDIRValid>
 | |
|     <QtIncludeDir>$(DSQTDIR)include\</QtIncludeDir>
 | |
|     <QtLibDir>$(DSQTDIR)lib\</QtLibDir>
 | |
|     <QtBinDir>$(DSQTDIR)bin\</QtBinDir>
 | |
|     <QtHostBinDir>$(DSQTDIRHost)bin\</QtHostBinDir>
 | |
|     <QtPluginsDir>$(DSQTDIR)plugins\</QtPluginsDir>
 | |
|     <QtTranslationsDir>$(DSQTDIR)translations\</QtTranslationsDir>
 | |
|     <QtToolOutDir>$(IntDir)</QtToolOutDir>
 | |
|     <QtMocOutPrefix>$(QtToolOutDir)moc_</QtMocOutPrefix>
 | |
|     <QtTsOutDir>$(BinaryOutputDir)translations\</QtTsOutDir>
 | |
|     <QtDebugSuffix>d</QtDebugSuffix>
 | |
|     <QtLibSuffix Condition="$(Configuration.Contains(Debug))">$(QtDebugSuffix)</QtLibSuffix>
 | |
|     <QtPluginFolder>QtPlugins</QtPluginFolder>
 | |
|     <QtEntryPointLib>$(QtLibDir)Qt6EntryPoint$(QtLibSuffix).lib</QtEntryPointLib>
 | |
|   </PropertyGroup>
 | |
|   <ItemDefinitionGroup>
 | |
|     <ClCompile>
 | |
|       <PreprocessorDefinitions Condition="!$(Configuration.Contains(Debug))">QT_NO_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 | |
|       <AdditionalIncludeDirectories>$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
 | |
|       <AdditionalIncludeDirectories>$(QtToolOutDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
 | |
|       <AdditionalIncludeDirectories>$(QtIncludeDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
 | |
|     </ClCompile>
 | |
|     <Link>
 | |
|       <AdditionalLibraryDirectories>$(QtLibDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
 | |
|       <AdditionalDependencies>Qt6Core$(QtLibSuffix).lib;Qt6Gui$(QtLibSuffix).lib;Qt6Widgets$(QtLibSuffix).lib;Qt6Network$(QtLibSuffix).lib;Qt6Concurrent$(QtLibSuffix).lib;%(AdditionalDependencies)</AdditionalDependencies>
 | |
|     </Link>
 | |
|   </ItemDefinitionGroup>
 | |
| 
 | |
|   <!--Passes all .qrc files to rcc and puts output in the build directory-->
 | |
|   <ItemGroup>
 | |
|     <ResFiles Include="$(MSBuildProjectDirectory)\**\*.qrc" />
 | |
|   </ItemGroup>
 | |
|   <Target Name="QtResource"
 | |
|     BeforeTargets="ClCompile"
 | |
|     Inputs="@(ResFiles)"
 | |
|     Condition="'@(QtResource)'!=''"
 | |
|     Outputs="@(ResFiles->'$(QtToolOutDir)qrc_%(Filename).cpp')">
 | |
|     <Message Text="rcc %(ResFiles.Filename)" Importance="High" />
 | |
|     <Error Condition="!$(DSQTDIRValid)" Text="Qt directory non-existent (download/extract the zip)" />
 | |
|     <MakeDir Directories="$(QtToolOutDir)" />
 | |
|     <Exec Command=""$(QtHostBinDir)rcc.exe" "%(ResFiles.FullPath)" -o "$(QtToolOutDir)qrc_%(ResFiles.Filename).cpp"" />
 | |
|   </Target>
 | |
| 
 | |
|   <Target Name="QtResourceClean">
 | |
|     <Delete Files="@(ResFiles->'$(QtToolOutDir)qrc_%(Filename).cpp')" />
 | |
|   </Target>
 | |
| 
 | |
|   <!--Passes all .ui files to uic and puts output in the build directory-->
 | |
|   <ItemGroup>
 | |
|     <UiFiles Include="$(MSBuildProjectDirectory)\**\*.ui" />
 | |
|   </ItemGroup>
 | |
|   <Target Name="QtUi"
 | |
|     BeforeTargets="ClCompile"
 | |
|     Inputs="@(UiFiles)"
 | |
|     Condition="'@(QtUi)'!=''"
 | |
|     Outputs="@(UiFiles->'$(QtToolOutDir)ui_%(Filename).h')">
 | |
|     <Message Text="uic %(UiFiles.Filename)" Importance="High" />
 | |
|     <Error Condition="!$(DSQTDIRValid)" Text="Qt directory non-existent (download/extract the zip)" />
 | |
|     <MakeDir Directories="$(QtToolOutDir)" />
 | |
|     <Exec Command=""$(QtHostBinDir)uic.exe" "%(UiFiles.FullPath)" -o "$(QtToolOutDir)ui_%(UiFiles.Filename).h"" />
 | |
|   </Target>
 | |
| 
 | |
|   <Target Name="QtUiClean">
 | |
|     <Delete Files="@(UiFiles->'$(QtToolOutDir)ui_%(Filename).h')" />
 | |
|   </Target>
 | |
| 
 | |
|   <!--Compile files needed to MOC and output in the build directory-->
 | |
|   <!--TODO find a way to autocreate from ClCompile settings-->
 | |
|   <PropertyGroup>
 | |
|     <MocDefines></MocDefines>
 | |
|     <MocDefines Condition="!$(Configuration.Contains(Debug))">-DQT_NO_DEBUG -DNDEBUG $(MocDefines)</MocDefines>
 | |
|     <MocIncludes>-I"$(QtIncludeDir)." -I"$(SolutionDir)pcsx2" "-I$(SolutionDir)." -I.</MocIncludes>
 | |
|   </PropertyGroup>
 | |
|   <Target Name="QtMoc"
 | |
|     BeforeTargets="ClCompile"
 | |
|     Condition="'@(QtMoc)'!=''"
 | |
|     Inputs="%(QtMoc.Identity);%(QtMoc.AdditionalDependencies);$(MSBuildProjectFile)"
 | |
|     Outputs="$(QtToolOutDir)%(QtMoc.RelativeDir)moc_%(QtMoc.Filename).cpp">
 | |
|     <Message Text="moc %(QtMoc.Filename) $(QtToolOutDir)%(QtMoc.RelativeDir)moc_%(QtMoc.Filename).cpp" Importance="High" />
 | |
|     <Error Condition="!$(DSQTDIRValid)" Text="Qt directory non-existent (download/extract the zip)" />
 | |
|     <MakeDir Directories="$(QtToolOutDir)" />
 | |
|     <Exec Command=""$(QtHostBinDir)moc.exe" "%(QtMoc.FullPath)" -o "$(QtToolOutDir)%(QtMoc.RelativeDir)moc_%(QtMoc.Filename).cpp" -f%(QtMoc.Filename)%(QtMoc.Extension) $(MocDefines) $(MocIncludes)" />
 | |
|   </Target>
 | |
| 
 | |
|   <ItemGroup>
 | |
|     <MocOutputs Include="$(QtToolOutDir)moc_*.cpp" />
 | |
|   </ItemGroup>
 | |
|   <Target Name="QtMocClean">
 | |
|     <Delete Files="@(MocOutputs)" />
 | |
|   </Target>
 | |
| 
 | |
|   <!--Expose the new targets to VS-->
 | |
|   <ItemGroup>
 | |
|     <PropertyPageSchema Include="$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml" />
 | |
|     <AvailableItemName Include="QtResource">
 | |
|       <Targets>QtResource</Targets>
 | |
|     </AvailableItemName>
 | |
|     <AvailableItemName Include="QtUi">
 | |
|       <Targets>QtUi</Targets>
 | |
|     </AvailableItemName>
 | |
|     <AvailableItemName Include="QtMoc">
 | |
|       <Targets>QtMoc</Targets>
 | |
|     </AvailableItemName>
 | |
|     <AvailableItemName Include="QtTs">
 | |
|       <Targets>QtTs</Targets>
 | |
|     </AvailableItemName>
 | |
|   </ItemGroup>
 | |
| 
 | |
|   <!--Copy the needed dlls-->
 | |
|   <ItemGroup>
 | |
|     <QtLibNames Include="Qt6Core$(QtLibSuffix);Qt6Gui$(QtLibSuffix);Qt6Widgets$(QtLibSuffix);Qt6Network$(QtLibSuffix);Qt6Svg$(QtLibSuffix);Qt6Concurrent$(QtLibSuffix)" />
 | |
|     <QtDlls Include="@(QtLibNames -> '$(QtBinDir)%(Identity).dll')" />
 | |
|     <!--Filter plugins to copy based on the observation that all debug versions end in "d"-->
 | |
|     <QtAllPlugins Include="$(QtPluginsDir)**\*$(QtLibSuffix).dll" />
 | |
|     <QtPlugins Condition="$(Configuration.Contains(Debug))" Include="@(QtAllPlugins)" />
 | |
|     <QtPlugins Condition="!$(Configuration.Contains(Debug))" Exclude="$(QtPluginsDir)**\*$(QtDebugSuffix).dll" Include="@(QtAllPlugins)" />
 | |
|     <QtPluginsDest Include="@(QtPlugins -> '$(BinaryOutputDir)$(QtPluginFolder)\%(RecursiveDir)%(Filename)%(Extension)')" />
 | |
|     <!--Our normal *d filter fails for the TLS DLLs, because backend ends in d. -->
 | |
|     <QtTLSDlls Include="$(QtPluginsDir)tls\qcertonlybackend$(QtLibSuffix).dll;$(QtPluginsDir)tls\qschannelbackend$(QtLibSuffix).dll" />
 | |
|     <QtTLSDllsDest Include="@(QtTLSDlls -> '$(BinaryOutputDir)$(QtPluginFolder)\tls\%(Filename)%(Extension)')" />
 | |
|   </ItemGroup>
 | |
|   <PropertyGroup>
 | |
|     <QtConfFile>$(BinaryOutputDir)qt.conf</QtConfFile>
 | |
|   </PropertyGroup>
 | |
|   <Target Name="QtCopyBinaries"
 | |
|     AfterTargets="Build"
 | |
|     Inputs="@(QtDlls);@(QtPlugins);@(QtTLSDlls)"
 | |
|     Outputs="@(QtDlls -> '$(BinaryOutputDir)%(RecursiveDir)%(Filename)%(Extension)');@(QtPluginsDest);@(QtTLSDllsDest)">
 | |
|     <Message Text="Copying Qt .dlls" />
 | |
|     <Copy
 | |
|       SourceFiles="@(QtDlls)"
 | |
|       DestinationFolder="$(BinaryOutputDir)"
 | |
|       SkipUnchangedFiles="true"
 | |
|     />
 | |
|     <Copy
 | |
|       SourceFiles="@(QtPlugins)"
 | |
|       DestinationFiles="@(QtPluginsDest)"
 | |
|       SkipUnchangedFiles="true"
 | |
|     />
 | |
|     <Copy
 | |
|       SourceFiles="@(QtTLSDlls)"
 | |
|       DestinationFiles="@(QtTLSDllsDest)"
 | |
|       SkipUnchangedFiles="true"
 | |
|     />
 | |
|   </Target>
 | |
|   <Target Name="QtCreateConf"
 | |
|     BeforeTargets="QtCopyBinaries"
 | |
|     Condition="!Exists('$(QtConfFile)')">
 | |
|     <!--
 | |
|       Create a file which tells Qt where to look for "plugins".
 | |
|       Otherwise Qt only looks in ./<subtype>/type.dll instead of ./$(QtPluginFolder)/<subtype>/type.dll, which is messy
 | |
|       -->
 | |
|     <WriteLinesToFile
 | |
|       File="$(QtConfFile)"
 | |
|       Lines="[Paths];Plugins = ./$(QtPluginFolder)"
 | |
|       Overwrite="true"
 | |
|     />
 | |
|   </Target>
 | |
|   
 | |
|   <!--Copies base translation files, and combines split into one -->
 | |
|   <ItemGroup>
 | |
|     <AllQmFiles Include="$(QtTranslationsDir)qt*.qm">
 | |
|     <Language>$([System.String]::Copy('%(Filename)').Substring($([MSBuild]::Add($([System.String]::Copy('%(Filename)').IndexOf('_')), 1))))</Language>
 | |
|     </AllQmFiles>
 | |
|     <BaseQmFiles Include="$(QtTranslationsDir)qtbase_*.qm" />
 | |
|     <SourceMergeQmFileNames Include="@(BaseQmFiles -> '%(Filename)%(Extension)'->Replace('qtbase_', 'qt_'))" />
 | |
|     <SourceMergeQmFiles Include="@(SourceMergeQmFileNames -> '$(QtTranslationsDir)%(Filename)%(Extension)')" />
 | |
|     <MergedQmFiles Include="@(SourceMergeQmFileNames -> '$(QtTsOutDir)%(Filename)%(Extension)')">
 | |
|     <Language>$([System.String]::Copy('%(Filename)').Replace('qt_', ''))</Language>
 | |
|     </MergedQmFiles>
 | |
|     <CopyTsFilesSource Include="$(QtTranslationsDir)qt_*.qm" Exclude="@(SourceMergeQmFiles);$(QtTranslationsDir)\qt_help_*.qm" />
 | |
|     <CopyTsFilesDest Include="@(CopyTsFilesSource -> '$(QtTsOutDir)%(Filename)%(Extension)')" />
 | |
|   </ItemGroup>
 | |
|   <Target Name="QtGenerateBaseTranslations" AfterTargets="Build" Inputs="@(SourceMergeQmFiles)" Outputs="%(MergedQmFiles.FullPath)">
 | |
|     <PropertyGroup>
 | |
|       <Language>%(MergedQmFiles.Language)</Language>
 | |
|     </PropertyGroup>
 | |
|     <Message Text="Generate Base Translation qt_$(Language).qm" Importance="High" />
 | |
|     <ItemGroup>
 | |
|       <SourceQmFiles Include="%(AllQmFiles.FullPath)" Condition="'%(AllQmFiles.Language)' == '$(Language)'" />
 | |
|     </ItemGroup>
 | |
|     <Error Condition="!$(DSQTDIRValid)" Text="Qt directory non-existent (download/extract the zip)" />
 | |
|     <MakeDir Directories="$(QtTsOutDir)" />
 | |
|     <Exec Command=""$(QtHostBinDir)lconvert.exe" -verbose -of qm -o "$(QtTsOutDir)qt_$(Language).qm" @(SourceQmFiles -> '"%(FullPath)"', ' ')" />
 | |
|   </Target>
 | |
|   <Target Name="QtCopyBaseTranslations"
 | |
|     AfterTargets="Build"
 | |
|     Inputs="@(CopyTsFilesSource)"
 | |
|     Outputs="@(CopyTsFilesDest.FullPath)">
 | |
|       <Message Text="Copy Base Translation %(CopyTsFilesSource.Filename)%(CopyTsFilesSource.Extension)" />
 | |
|       <Copy SourceFiles="@(CopyTsFilesSource)" DestinationFiles="@(CopyTsFilesDest)" SkipUnchangedFiles="true" />
 | |
|   </Target>
 | |
| 
 | |
|   <!--Compiles all translation files-->
 | |
|   <ItemGroup>
 | |
|     <TsFiles Include="$(MSBuildProjectDirectory)\**\*.ts" />
 | |
|   </ItemGroup>
 | |
|   <Target Name="QtTs"
 | |
|     BeforeTargets="ClCompile"
 | |
|     Inputs="@(TsFiles)"
 | |
|     Condition="'@(QtTs)'!=''"
 | |
|     Outputs="@(TsFiles->'$(QtTsOutDir)%(Filename).qm')">
 | |
|     <Message Text="lrelease %(TsFiles.Filename)" Importance="High" />
 | |
|     <Error Condition="!$(DSQTDIRValid)" Text="Qt directory non-existent (download/extract the zip)" />
 | |
|     <MakeDir Directories="$(QtTsOutDir)" />
 | |
|     <Exec Command=""$(QtHostBinDir)lrelease.exe" "%(TsFiles.FullPath)" -qm "$(QtTsOutDir)%(TsFiles.Filename).qm"" />
 | |
|   </Target>
 | |
|   <ItemGroup>
 | |
|     <TsOutputs Include="$(QtTsOutDir)*.qm" />
 | |
|   </ItemGroup>
 | |
|   <Target Name="QtTsClean">
 | |
|     <Delete Files="@(TsOutputs)" />
 | |
|   </Target>
 | |
| </Project>
 | 
