summaryrefslogtreecommitdiff
path: root/config/makedepend.vbs
blob: c3f7c7f86321cb6a1da340bda6c7836dc2c78873 (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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
Const ForReading = 1, ForWriting = 2, ForAppending =8

Dim line, i, fs, baseName, outFile, depends, errors, shell, topSrcDir, cppSrcDir, cppIncludeDir, cppTestIncludeDir, workDir, objPrefix

Set depends = CreateObject("Scripting.Dictionary")

errors = False

Set fs = CreateObject("Scripting.FileSystemObject")

Set shell = WScript.CreateObject("WScript.Shell")

baseName = WScript.Arguments(0)


topSrcDir = fs.GetAbsolutePathName(WScript.Arguments(1) & "\..")
cppThirdPartyDir = fs.GetAbsolutePathName(WScript.Arguments(1) & "\third-party-packages\")
cppSrcDir = fs.GetAbsolutePathName(WScript.Arguments(1) & "\src\")
cppIncludeDir = fs.GetAbsolutePathName(WScript.Arguments(1) & "\include\")
cppTestIncludeDir = fs.GetAbsolutePathName(WScript.Arguments(1) & "\test\include\")
workDir = fs.GetAbsolutePathName(".")

iceCppIncludeDir = fs.GetAbsolutePathName(WScript.Arguments(1) & "\..\cpp\include\")

objPrefix = ""

If InStr(1, shell.ExpandEnvironmentStrings("%WINRT%"), "yes") Then
    baseName = Replace(baseName, "..\..\IceDiscovery\", "IceDiscovery\")
    baseName = Replace(baseName, "..\..\IceLocatorDiscovery\", "IceLocatorDiscovery\")
    baseName = Replace(baseName, "..\", "")
    objPrefix = "$(ARCH)\$(CONFIG)\"
End If

Set outFile = fs.OpenTextFile(".depend.mak", ForAppending, True)

outFile.WriteLine("")

outFile.WriteLine(objPrefix & Replace(baseName, ".cpp", ".obj") & ": \")
outFile.WriteLine("	" & WScript.Arguments(0) & " \")

Set stream = fs.OpenTextFile(Replace(basename, ".cpp", ".d"), ForReading)

Do While Not stream.AtEndOfStream
    Do
        line = stream.ReadLine()

        i = InStr(1, line, "Note: including file:")
        If i > 0 Then
            i = i + Len("Note: including file:")
            line = Mid(line, i)
            line = Trim(line)

            line = fs.GetAbsolutePathName(line)
            
            If InStr(1, line, cppThirdPartyDir) Then Exit Do

            If InStr(1, line, topSrcDir) Then
                If InStr(1, line, workDir & "\") > 0 Then
                    line = Right(line, len(line) - len(workDir) -1)
                Elseif InStr(1, line, cppSrcDir) > 0 Then
                    line = WScript.Arguments(1) & "\src" & Right(line, len(line) - len(cppSrcDir))
                Elseif InStr(1, line, cppIncludeDir) > 0 Then
                    line = "$(includedir)" & Right(line, len(line) - len(cppIncludeDir))
                Elseif InStr(1, line, iceCppIncludeDir) > 0 Then
                    line = "$(ice_cpp_dir)\include" & Right(line, len(line) - len(iceCppIncludeDir))
                Elseif InStr(1, line, cppTestIncludeDir) > 0 Then
                    line = "$(top_srcdir)\test\include" & Right(line, len(line) - len(cppTestIncludeDir))
                End If

                line = "    """ & line & """ \"
                If Not depends.Exists(line) Then
                    depends.Add line, ""
                    outFile.WriteLine(line)
                End If
            End If
        End If
    Loop While False
Loop

stream.Close()

If errors Then
    WScript.Quit 1
End If