aboutsummaryrefslogtreecommitdiffstats
path: root/src/includegen/includegen.targets
blob: b74b0dbbdd1b86cf12a722581a8f12e7c074a7ae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<!--
/***************************************************************************************************
 Copyright (C) 2023 The Qt Company Ltd.
 SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
***************************************************************************************************/
-->
<Project>
  <Target Name="Clean">
    <ItemGroup>
      <GeneratedHeaders Include="..\..\include\*" />
      <GeneratedHeaders Remove="..\..\include\*.h" />
    </ItemGroup>
    <Delete Files="@(GeneratedHeaders)" />
  </Target>
  <Target Name="Build">
    <PropertyGroup>
      <ClassRegex>class QDotNet\w+\b(?!;)</ClassRegex>
    </PropertyGroup>
    <ItemGroup>
      <Header Include="..\..\include\*.h" />
      <Header>
        <Text>$([System.IO.File]::ReadAllText('%(Identity)'))</Text>
      </Header>
      <Header>
        <Classes
          >$([System.Text.RegularExpressions.Regex]::Matches('%(Text)','$(ClassRegex)'))</Classes>
      </Header>
      <Class Include="%(Header.Classes)">
        <Header>$([System.IO.Path]::GetFileName('%(Header.Identity)'))</Header>
      </Class>
      <Class>
        <Name>$([System.String]::Copy('%(Identity)').Substring(6))</Name>
      </Class>
      <Class>
        <Include>#include &lt;%(Header)&gt;</Include>
        <Current
          Condition="Exists('%(..\..\..\..\include\%(Name)')"
          >$([System.IO.File]::ReadAllText('%(..\..\..\..\include\%(Name)').Replace('
',''))</Current>
      </Class>
    </ItemGroup>
    <WriteLinesToFile
      Condition="'%(Class.Include)' != '%(Class.Current)'"
      File="..\..\include\%(Class.Name)" Lines="#include &lt;%(Class.Header)&gt;"/>
  </Target>
  <Target Name="Rebuild" DependsOnTargets="Clean;Build"/>
</Project>