duckstation

duckstation, but archived from the revision just before upstream changed it to a proprietary software project, this version is the libre one
git clone https://git.neptards.moe/u3shit/duckstation.git
Log | Files | Refs | README | LICENSE

QtCompile.props (10975B)


      1 <?xml version="1.0" encoding="utf-8"?>
      2 <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      3   <PropertyGroup Label="UserMacros">
      4     <BinaryOutputDir>$(SolutionDir)bin\$(Platform)\</BinaryOutputDir>
      5     <DSQTDIRDefault Condition="'$(Platform)'=='x64'">$(SolutionDir)dep\msvc\deps-x64\</DSQTDIRDefault>
      6     <DSQTDIRDefault Condition="'$(Platform)'=='ARM64'">$(SolutionDir)dep\msvc\deps-arm64\</DSQTDIRDefault>
      7     <DSQTDIR Condition="Exists('$(DSQTDIRDefault)') And ('$(DSQTDIR)'=='' Or !Exists('$(DSQTDIR)'))">$(DSQTDIRDefault)</DSQTDIR>
      8     <DSQTDIR Condition="Exists('$(DSQTDIR)') And !HasTrailingSlash('$(DSQTDIR)')">$(DSQTDIR)\</DSQTDIR>
      9     <DSQTDIRHost>$(SolutionDir)dep\msvc\deps-x64\</DSQTDIRHost>
     10     <DSQTDIRValid>false</DSQTDIRValid>
     11     <DSQTDIRValid Condition="Exists('$(DSQTDIR)')">true</DSQTDIRValid>
     12     <QtIncludeDir>$(DSQTDIR)include\</QtIncludeDir>
     13     <QtLibDir>$(DSQTDIR)lib\</QtLibDir>
     14     <QtBinDir>$(DSQTDIR)bin\</QtBinDir>
     15     <QtHostBinDir>$(DSQTDIRHost)bin\</QtHostBinDir>
     16     <QtPluginsDir>$(DSQTDIR)plugins\</QtPluginsDir>
     17     <QtTranslationsDir>$(DSQTDIR)translations\</QtTranslationsDir>
     18     <QtToolOutDir>$(IntDir)</QtToolOutDir>
     19     <QtMocOutPrefix>$(QtToolOutDir)moc_</QtMocOutPrefix>
     20     <QtTsOutDir>$(BinaryOutputDir)translations\</QtTsOutDir>
     21     <QtRccOutDir>$(BinaryOutputDir)resources\</QtRccOutDir>
     22     <QtDebugSuffix>d</QtDebugSuffix>
     23     <QtLibSuffix Condition="$(Configuration.Contains(Debug))">$(QtDebugSuffix)</QtLibSuffix>
     24     <QtPluginFolder>QtPlugins</QtPluginFolder>
     25     <QtEntryPointLib>$(QtLibDir)Qt6EntryPoint$(QtLibSuffix).lib</QtEntryPointLib>
     26   </PropertyGroup>
     27   <ItemDefinitionGroup>
     28     <ClCompile>
     29       <PreprocessorDefinitions Condition="!$(Configuration.Contains(Debug))">QT_NO_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     30       <AdditionalIncludeDirectories>$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     31       <AdditionalIncludeDirectories>$(QtToolOutDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     32       <AdditionalIncludeDirectories>$(QtIncludeDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     33     </ClCompile>
     34     <Link>
     35       <AdditionalLibraryDirectories>$(QtLibDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
     36       <AdditionalDependencies>Qt6Core$(QtLibSuffix).lib;Qt6Gui$(QtLibSuffix).lib;Qt6Widgets$(QtLibSuffix).lib;Qt6Concurrent$(QtLibSuffix).lib;%(AdditionalDependencies)</AdditionalDependencies>
     37     </Link>
     38   </ItemDefinitionGroup>
     39 
     40   <!--Passes all .qrc files to rcc and puts output in the build directory-->
     41   <ItemGroup>
     42     <ResFiles Include="$(MSBuildProjectDirectory)\**\*.qrc" />
     43   </ItemGroup>
     44   <Target Name="QtResource"
     45     AfterTargets="Build"
     46     Inputs="@(ResFiles)"
     47     Condition="'@(QtResource)'!=''"
     48     Outputs="@(ResFiles->'$(QtRccOutDir)%(Filename).rcc')">
     49     <Message Text="rcc %(ResFiles.Filename)" Importance="High" />
     50     <Error Condition="!$(DSQTDIRValid)" Text="Qt directory non-existent (download/extract the zip)" />
     51     <MakeDir Directories="$(QtRccOutDir)" />
     52     <Exec Command="&quot;$(QtHostBinDir)rcc.exe&quot; -binary -no-compress &quot;%(ResFiles.FullPath)&quot; -o &quot;$(QtRccOutDir)%(ResFiles.Filename).rcc&quot;" />
     53   </Target>
     54 
     55   <Target Name="QtResourceClean">
     56     <Delete Files="@(ResFiles->'$(QtRccOutDir)%(Filename).rcc')" />
     57   </Target>
     58 
     59   <!--Passes all .ui files to uic and puts output in the build directory-->
     60   <ItemGroup>
     61     <UiFiles Include="$(MSBuildProjectDirectory)\**\*.ui" />
     62   </ItemGroup>
     63   <Target Name="QtUi"
     64     BeforeTargets="ClCompile"
     65     Inputs="@(UiFiles)"
     66     Condition="'@(QtUi)'!=''"
     67     Outputs="@(UiFiles->'$(QtToolOutDir)ui_%(Filename).h')">
     68     <Message Text="uic %(UiFiles.Filename)" Importance="High" />
     69     <Error Condition="!$(DSQTDIRValid)" Text="Qt directory non-existent (download/extract the zip)" />
     70     <MakeDir Directories="$(QtToolOutDir)" />
     71     <Exec Command="&quot;$(QtHostBinDir)uic.exe&quot; &quot;%(UiFiles.FullPath)&quot; -o &quot;$(QtToolOutDir)ui_%(UiFiles.Filename).h&quot;" />
     72   </Target>
     73 
     74   <Target Name="QtUiClean">
     75     <Delete Files="@(UiFiles->'$(QtToolOutDir)ui_%(Filename).h')" />
     76   </Target>
     77 
     78   <!--Compile files needed to MOC and output in the build directory-->
     79   <!--TODO find a way to autocreate from ClCompile settings-->
     80   <PropertyGroup>
     81     <MocDefines></MocDefines>
     82     <MocDefines Condition="!$(Configuration.Contains(Debug))">-DQT_NO_DEBUG -DNDEBUG $(MocDefines)</MocDefines>
     83     <MocIncludes>-I"$(QtIncludeDir)." -I"$(SolutionDir)pcsx2" "-I$(SolutionDir)." -I.</MocIncludes>
     84   </PropertyGroup>
     85   <Target Name="QtMoc"
     86     BeforeTargets="ClCompile"
     87     Condition="'@(QtMoc)'!=''"
     88     Inputs="%(QtMoc.Identity);%(QtMoc.AdditionalDependencies);$(MSBuildProjectFile)"
     89     Outputs="$(QtToolOutDir)%(QtMoc.RelativeDir)moc_%(QtMoc.Filename).cpp">
     90     <Message Text="moc %(QtMoc.Filename) $(QtToolOutDir)%(QtMoc.RelativeDir)moc_%(QtMoc.Filename).cpp" Importance="High" />
     91     <Error Condition="!$(DSQTDIRValid)" Text="Qt directory non-existent (download/extract the zip)" />
     92     <MakeDir Directories="$(QtToolOutDir)" />
     93     <Exec Command="&quot;$(QtHostBinDir)moc.exe&quot; &quot;%(QtMoc.FullPath)&quot; -o &quot;$(QtToolOutDir)%(QtMoc.RelativeDir)moc_%(QtMoc.Filename).cpp&quot; -f%(QtMoc.Filename)%(QtMoc.Extension) $(MocDefines) $(MocIncludes)" />
     94   </Target>
     95 
     96   <ItemGroup>
     97     <MocOutputs Include="$(QtToolOutDir)moc_*.cpp" />
     98   </ItemGroup>
     99   <Target Name="QtMocClean">
    100     <Delete Files="@(MocOutputs)" />
    101   </Target>
    102 
    103   <!--Expose the new targets to VS-->
    104   <ItemGroup>
    105     <PropertyPageSchema Include="$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml" />
    106     <AvailableItemName Include="QtResource">
    107       <Targets>QtResource</Targets>
    108     </AvailableItemName>
    109     <AvailableItemName Include="QtUi">
    110       <Targets>QtUi</Targets>
    111     </AvailableItemName>
    112     <AvailableItemName Include="QtMoc">
    113       <Targets>QtMoc</Targets>
    114     </AvailableItemName>
    115     <AvailableItemName Include="QtTs">
    116       <Targets>QtTs</Targets>
    117     </AvailableItemName>
    118   </ItemGroup>
    119 
    120   <!--Copy the needed dlls-->
    121   <ItemGroup>
    122     <QtLibNames Include="Qt6Core$(QtLibSuffix);Qt6Gui$(QtLibSuffix);Qt6Widgets$(QtLibSuffix);Qt6Svg$(QtLibSuffix);Qt6Concurrent$(QtLibSuffix)" />
    123     <QtDlls Include="@(QtLibNames -> '$(QtBinDir)%(Identity).dll')" />
    124     <!--Filter plugins to copy based on the observation that all debug versions end in "d"-->
    125     <QtAllPlugins Include="$(QtPluginsDir)**\*$(QtLibSuffix).dll" />
    126     <QtPlugins Condition="$(Configuration.Contains(Debug))" Include="@(QtAllPlugins)" />
    127     <QtPlugins Condition="!$(Configuration.Contains(Debug))" Exclude="$(QtPluginsDir)**\*$(QtDebugSuffix).dll" Include="@(QtAllPlugins)" />
    128     <QtPluginsDest Include="@(QtPlugins -> '$(BinaryOutputDir)$(QtPluginFolder)\%(RecursiveDir)%(Filename)%(Extension)')" />
    129   </ItemGroup>
    130   <PropertyGroup>
    131     <QtConfFile>$(BinaryOutputDir)qt.conf</QtConfFile>
    132   </PropertyGroup>
    133   <Target Name="QtCopyBinaries"
    134     AfterTargets="Build"
    135     Inputs="@(QtDlls);@(QtPlugins)"
    136     Outputs="@(QtDlls -> '$(BinaryOutputDir)%(RecursiveDir)%(Filename)%(Extension)');@(QtPluginsDest)">
    137     <Message Text="Copying Qt .dlls" />
    138     <Copy
    139       SourceFiles="@(QtDlls)"
    140       DestinationFolder="$(BinaryOutputDir)"
    141       SkipUnchangedFiles="true"
    142     />
    143     <Copy
    144       SourceFiles="@(QtPlugins)"
    145       DestinationFiles="@(QtPluginsDest)"
    146       SkipUnchangedFiles="true"
    147     />
    148   </Target>
    149   <Target Name="QtCreateConf"
    150     BeforeTargets="QtCopyBinaries"
    151     Condition="!Exists('$(QtConfFile)')">
    152     <!--
    153       Create a file which tells Qt where to look for "plugins".
    154       Otherwise Qt only looks in ./<subtype>/type.dll instead of ./$(QtPluginFolder)/<subtype>/type.dll, which is messy
    155       -->
    156     <WriteLinesToFile
    157       File="$(QtConfFile)"
    158       Lines="[Paths];Plugins = ./$(QtPluginFolder)"
    159       Overwrite="true"
    160     />
    161   </Target>
    162   
    163   <!--Copies base translation files, and combines split into one -->
    164   <ItemGroup>
    165     <AllQmFiles Include="$(QtTranslationsDir)qt*.qm">
    166     <Language>$([System.String]::Copy('%(Filename)').Substring($([MSBuild]::Add($([System.String]::Copy('%(Filename)').IndexOf('_')), 1))))</Language>
    167     </AllQmFiles>
    168     <BaseQmFiles Include="$(QtTranslationsDir)qtbase_*.qm" />
    169     <SourceMergeQmFileNames Include="@(BaseQmFiles -> '%(Filename)%(Extension)'->Replace('qtbase_', 'qt_'))" />
    170     <SourceMergeQmFiles Include="@(SourceMergeQmFileNames -> '$(QtTranslationsDir)%(Filename)%(Extension)')" />
    171     <MergedQmFiles Include="@(SourceMergeQmFileNames -> '$(QtTsOutDir)%(Filename)%(Extension)')">
    172     <Language>$([System.String]::Copy('%(Filename)').Replace('qt_', ''))</Language>
    173     </MergedQmFiles>
    174     <CopyTsFilesSource Include="$(QtTranslationsDir)qt_*.qm" Exclude="@(SourceMergeQmFiles);$(QtTranslationsDir)\qt_help_*.qm" />
    175     <CopyTsFilesDest Include="@(CopyTsFilesSource -> '$(QtTsOutDir)%(Filename)%(Extension)')" />
    176   </ItemGroup>
    177   <Target Name="QtGenerateBaseTranslations" AfterTargets="Build" Inputs="@(SourceMergeQmFiles)" Outputs="%(MergedQmFiles.FullPath)">
    178     <PropertyGroup>
    179       <Language>%(MergedQmFiles.Language)</Language>
    180     </PropertyGroup>
    181     <Message Text="Generate Base Translation qt_$(Language).qm" Importance="High" />
    182     <ItemGroup>
    183       <SourceQmFiles Include="%(AllQmFiles.FullPath)" Condition="'%(AllQmFiles.Language)' == '$(Language)'" />
    184     </ItemGroup>
    185     <Error Condition="!$(DSQTDIRValid)" Text="Qt directory non-existent (download/extract the zip)" />
    186     <MakeDir Directories="$(QtTsOutDir)" />
    187     <Exec Command="&quot;$(QtHostBinDir)lconvert.exe&quot; -verbose -of qm -o &quot;$(QtTsOutDir)qt_$(Language).qm&quot; @(SourceQmFiles -> '&quot;%(FullPath)&quot;', ' ')" />
    188   </Target>
    189   <Target Name="QtCopyBaseTranslations"
    190     AfterTargets="Build"
    191     Inputs="@(CopyTsFilesSource)"
    192     Outputs="@(CopyTsFilesDest.FullPath)">
    193       <Message Text="Copy Base Translation %(CopyTsFilesSource.Filename)%(CopyTsFilesSource.Extension)" />
    194       <Copy SourceFiles="@(CopyTsFilesSource)" DestinationFiles="@(CopyTsFilesDest)" SkipUnchangedFiles="true" />
    195   </Target>
    196 
    197   <!--Compiles all translation files-->
    198   <ItemGroup>
    199     <TsFiles Include="$(MSBuildProjectDirectory)\**\*.ts" />
    200   </ItemGroup>
    201   <Target Name="QtTs"
    202     BeforeTargets="ClCompile"
    203     Inputs="@(TsFiles)"
    204     Condition="'@(QtTs)'!=''"
    205     Outputs="@(TsFiles->'$(QtTsOutDir)%(Filename).qm')">
    206     <Message Text="lrelease %(TsFiles.Filename)" Importance="High" />
    207     <Error Condition="!$(DSQTDIRValid)" Text="Qt directory non-existent (download/extract the zip)" />
    208     <MakeDir Directories="$(QtTsOutDir)" />
    209     <Exec Command="&quot;$(QtHostBinDir)lrelease.exe&quot; &quot;%(TsFiles.FullPath)&quot; -qm &quot;$(QtTsOutDir)%(TsFiles.Filename).qm&quot;" />
    210   </Target>
    211   <ItemGroup>
    212     <TsOutputs Include="$(QtTsOutDir)*.qm" />
    213   </ItemGroup>
    214   <Target Name="QtTsClean">
    215     <Delete Files="@(TsOutputs)" />
    216   </Target>
    217 </Project>