VirtualBox

Changeset 85802 in vbox


Ignore:
Timestamp:
Aug 17, 2020 9:15:12 PM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
139959
Message:

configure.vbs: Replaced most CfgPrint with CfgPrintAssign. Refreshed the midl detection. Added openwatcom detection. Generalized the start menu item scanning used in finding Qt5 as it's handy for finding openwatcom too.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/configure.vbs

    r85787 r85802  
    160160end function
    161161
     162''
     163' Checks if the given character is a decimal digit
     164function CharIsDigit(ch)
     165   CharIsDigit = (InStr(1, "0123456789", ch) > 0)
     166end function
     167
     168''
     169' Worker for StrVersionCompare
     170' The offset is updated to point to the first non-digit character.
     171function CountDigitsIgnoreLeadingZeros(ByRef str, ByRef off)
     172   dim cntDigits, blnLeadingZeros, ch, offInt
     173   cntDigits = 0
     174   if CharIsDigit(Mid(str, off, 1)) then
     175      ' Rewind to start of digest sequence.
     176      do while off > 1
     177         if not CharIsDigit(Mid(str, off - 1, 1)) then exit do
     178         off = off - 1
     179      loop
     180      ' Count digits, ignoring leading zeros.
     181      blnLeadingZeros = True
     182      for off = off to Len(str)
     183         ch = Mid(str, off, 1)
     184         if CharIsDigit(ch) then
     185            if ch <> "0" or blnLeadingZeros = False then
     186               cntDigits = cntDigits + 1
     187               blnLeadingZeros = False
     188            end if
     189         else
     190            exit for
     191         end if
     192      next
     193      ' If all zeros, count one of them.
     194      if cntDigits = 0 then cntDigits = 1
     195   end if
     196   CountDigitsIgnoreLeadingZeros = cntDigits
     197end function
     198
     199''
     200' Very simple version string compare function.
     201' @returns < 0 if str1 is smaller than str2
     202' @returns 0   if str1 and str2 are equal
     203' @returns > 1 if str2 is larger than str1
     204function StrVersionCompare(str1, str2)
     205   ' Compare the strings.  We can rely on StrComp if equal or one is empty.
     206   'LogPrint "StrVersionCompare("&str1&","&str2&"):"
     207   StrVersionCompare = StrComp(str2, str1)
     208   if StrVersionCompare <> 0 then
     209      dim cch1, cch2, off1, off2, ch1, ch2, chPrev1, chPrev2, intDiff, cchDigits
     210      cch1 = Len(str1)
     211      cch2 = Len(str2)
     212      if cch1 > 0 and cch2 > 0 then
     213         ' Compare the common portion
     214         off1 = 1
     215         off2 = 1
     216         chPrev1 = "x"
     217         chPrev2 = "x"
     218         do while off1 <= cch1 and off2 <= cch2
     219            ch1 = Mid(str1, off1, 1)
     220            ch2 = Mid(str2, off2, 1)
     221            if ch1 = ch2 then
     222               off1 = off1 + 1
     223               off2 = off2 + 1
     224               chPrev1 = ch1
     225               chPrev2 = ch2
     226            else
     227               ' Is there a digest sequence in play.  This includes the scenario where one of the
     228               ' string ran out of digests.
     229               dim blnDigest1 : blnDigest1 = CharIsDigit(ch1)
     230               dim blnDigest2 : blnDigest2 = CharIsDigit(ch2)
     231               if    (blnDigest1 = True or blnDigest2 = True) _
     232                 and (blnDigest1 = True or CharIsDigit(chPrev1) = True) _
     233                 and (blnDigest2 = True or CharIsDigit(chPrev2) = True) _
     234               then
     235                  'LogPrint "StrVersionCompare: off1="&off1&" off2="&off2&" ch1="&ch1&" chPrev1="&chPrev1&" ch2="&ch2&" chPrev2="&chPrev2
     236                  if blnDigest1 = False then off1 = off1 - 1
     237                  if blnDigest2 = False then off2 = off2 - 1
     238                  ' The one with the fewer digits comes first.
     239                  ' Note! off1 and off2 are adjusted to next non-digit character in the strings.
     240                  cchDigits = CountDigitsIgnoreLeadingZeros(str1, off1)
     241                  intDiff = cchDigits - CountDigitsIgnoreLeadingZeros(str2, off2)
     242                  'LogPrint "StrVersionCompare: off1="&off1&" off2="&off2&" cchDigits="&cchDigits
     243                  if intDiff <> 0 then
     244                     StrVersionCompare = intDiff
     245                     'LogPrint "StrVersionCompare: --> "&intDiff&" #1"
     246                     exit function
     247                  end if
     248
     249                  ' If the same number of digits, the smaller digit wins. However, because of
     250                  ' potential leading zeros, we must redo the compare. Assume ASCII-like stuff
     251                  ' and we can use StrComp for this.
     252                  intDiff = StrComp(Mid(str1, off1 - cchDigits, cchDigits), Mid(str2, off2 - cchDigits, cchDigits))
     253                  if intDiff <> 0 then
     254                     StrVersionCompare = intDiff
     255                     'LogPrint "StrVersionCompare: --> "&intDiff&" #2"
     256                     exit function
     257                  end if
     258                  chPrev1 = "x"
     259                  chPrev2 = "x"
     260               else
     261                  if blnDigest1 then
     262                     StrVersionCompare = -1   ' Digits before characters
     263                     'LogPrint "StrVersionCompare: --> -1 (#3)"
     264                  elseif blnDigest2 then
     265                     StrVersionCompare = 1       ' Digits before characters
     266                     'LogPrint "StrVersionCompare: --> 1 (#4)"
     267                  else
     268                     StrVersionCompare = StrComp(ch1, ch2)
     269                     'LogPrint "StrVersionCompare: --> "&StrVersionCompare&" (#5)"
     270                  end if
     271                  exit function
     272               end if
     273            end if
     274         loop
     275
     276         ' The common part matches up, so the shorter string 'wins'.
     277         StrVersionCompare = (cch1 - off1) - (cch2 - off2)
     278      end if
     279   end if
     280   'LogPrint "StrVersionCompare: --> "&StrVersionCompare&" (#6)"
     281end function
     282
     283''
     284' Returns a reverse array (copy).
     285function ArrayReverse(arr)
     286   dim cnt, i, j, iHalf, objTmp
     287   cnt = UBound(arr) - LBound(arr) + 1
     288   if cnt > 0 then
     289      j     = UBound(arr)
     290      iHalf = Fix(LBound(arr) + cnt / 2)
     291      for i = LBound(arr) to iHalf - 1
     292         objTmp = arr(i)
     293         arr(i) = arr(j)
     294         arr(j) = objTmp
     295         j = j - 1
     296      next
     297   end if
     298   ArrayReverse = arr
     299end function
     300
    162301
    163302''
    164303' Returns a reverse sorted array (strings).
    165 function ArraySortStrings(arrStrings)
     304function ArraySortStringsEx(arrStrings, ByRef fnCompare)
     305   dim str1, str2, i, j
    166306   for i = LBound(arrStrings) to UBound(arrStrings)
    167307      str1 = arrStrings(i)
    168308      for j = i + 1 to UBound(arrStrings)
    169309         str2 = arrStrings(j)
    170          if StrComp(str2, str1) < 0 then
     310         if fnCompare(str2, str1) < 0 then
    171311            arrStrings(j) = str1
    172312            str1 = str2
     
    175315      arrStrings(i) = str1
    176316   next
    177    ArraySortStrings = arrStrings
     317   ArraySortStringsEx = arrStrings
     318end function
     319
     320
     321''
     322' Returns a reverse sorted array (strings).
     323function ArraySortStrings(arrStrings)
     324   ArraySortStrings = ArraySortStringsEx(arrStrings, GetRef("StrComp"))
     325end function
     326
     327
     328''
     329' Returns a reverse sorted array (strings).
     330function ArrayVerSortStrings(arrStrings)
     331   ArrayVerSortStrings = ArraySortStringsEx(arrStrings, GetRef("StrVersionCompare"))
     332end function
     333
     334
     335''
     336' Returns a reverse sorted array (strings).
     337function ArrayRSortStrings(arrStrings)
     338   ArrayRSortStrings = ArrayReverse(ArraySortStringsEx(arrStrings, GetRef("StrComp")))
     339end function
     340
     341
     342''
     343' Returns a reverse version sorted array (strings).
     344function ArrayRVerSortStrings(arrStrings)
     345   ArrayRVerSortStrings = ArrayReverse(ArraySortStringsEx(arrStrings, GetRef("StrVersionCompare")))
    178346end function
    179347
     
    189357
    190358''
    191 ' Returns a reverse sorted array (strings).
    192 function ArrayRSortStrings(arrStrings)
    193    ' Sort it.
    194    arrStrings = ArraySortStrings(arrStrings)
    195 
    196    ' Reverse the array.
    197    cnt = UBound(arrStrings) - LBound(arrStrings) + 1
    198    if cnt > 0 then
    199       j   = UBound(arrStrings)
    200       iHalf = Fix(LBound(arrStrings) + cnt / 2)
    201       for i = LBound(arrStrings) to iHalf - 1
    202          strTmp = arrStrings(i)
    203          arrStrings(i) = arrStrings(j)
    204          arrStrings(j) = strTmp
    205          j = j - 1
    206       next
    207    end if
    208    ArrayRSortStrings = arrStrings
    209 end function
    210 
    211 
    212 ''
    213359' Returns the input array with the string appended.
    214360' Note! There must be some better way of doing this...
     361' @todo Lots of copying here...
    215362function ArrayAppend(arr, str)
    216363   dim i, cnt
     
    222369   arrRet(UBound(arr) + 1) = str
    223370   ArrayAppend = arrRet
     371end function
     372
     373
     374''
     375' Checks if the array contains the given string (case sensitive).
     376function ArrayContainsString(ByRef arr, str)
     377   dim strCur
     378   ArrayContainsString = False
     379   for each strCur in arr
     380      if StrComp(strCur, str) = 0 then
     381         ArrayContainsString = True
     382         exit function
     383      end if
     384   next
     385end function
     386
     387
     388''
     389' Checks if the array contains the given string, using case insensitive compare.
     390function ArrayContainsStringI(ByRef arr, str)
     391   dim strCur
     392   ArrayContainsStringI = False
     393   for each strCur in arr
     394      if StrComp(strCur, str, vbTextCompare) = 0 then
     395         ArrayContainsStringI = True
     396         exit function
     397      end if
     398   next
     399end function
     400
     401''
     402' Returns the number of entries in an array.
     403function ArraySize(ByRef arr)
     404   if (UBound(arr) >= 0) then
     405      ArraySize = UBound(arr) - LBound(arr) + 1
     406   else
     407      ArraySize = 0
     408   end if
    224409end function
    225410
     
    315500   if RegInit() then
    316501      dim strRoot, strKey, strValue
    317       dim iRoot
    318502
    319503      ' split up into root, key and value parts.
     
    348532   if RegInit() then
    349533      dim strRoot, strKey, strValue
    350       dim iRoot
    351534
    352535      ' split up into root, key and value parts.
     
    419602''
    420603' Returns an rsorted array of subkey strings.
    421 function RegEnumSubKeysRSort(strRoot, strKeyPath)
    422    RegEnumSubKeysRSort = ArrayRSortStrings(RegEnumSubKeys(strRoot, strKeyPath))
     604function RegEnumSubKeysRVerSorted(strRoot, strKeyPath)
     605   RegEnumSubKeysRVerSorted = ArrayRVerSortStrings(RegEnumSubKeys(strRoot, strKeyPath))
    423606end function
    424607
     
    426609''
    427610' Returns an rsorted array of subkey strings.
    428 function RegEnumSubKeysFullRSort(strRoot, strKeyPath)
    429    RegEnumSubKeysFullRSort = ArrayRSortStrings(RegEnumSubKeysFull(strRoot, strKeyPath))
     611function RegEnumSubKeysFullRVerSorted(strRoot, strKeyPath)
     612   RegEnumSubKeysFullRVerSorted = ArrayRVerSortStrings(RegEnumSubKeysFull(strRoot, strKeyPath))
    430613end function
    431614
     
    470653   next
    471654   RegEnumValueNamesFull = arrTmp
     655end function
     656
     657
     658''
     659' Extract relevant paths from program links using a callback function.
     660'
     661' Enumerates start menu program links from "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\UFH\SHC"
     662' and similar, using the given callback to examine each and return a path if relevant.  The relevant
     663' paths are returned in reverse sorted order.
     664'
     665' The callback prototype is as follows fnCallback(ByRef arrStrings, cStrings, ByRef objUser).
     666' Any non-empty return strings are collected, reverse sorted uniquely and returned.
     667'
     668function CollectFromProgramItemLinks(ByRef fnCallback, ByRef objUser)
     669   dim arrValues, strValue, arrStrings, str, arrCandidates, iCandidates, cStrings
     670   CollectFromProgramItemLinks = Array()
     671
     672   arrValues = RegEnumValueNamesFull("HKCU", "SOFTWARE\Microsoft\Windows\CurrentVersion\UFH\SHC")
     673   redim arrCandidates(UBound(arrValues) - LBound(arrValues) + 1)
     674   iCandidates = 0
     675   for each strValue in arrValues
     676      arrStrings = RegGetMultiString("HKCU\" & strValue)
     677      if UBound(arrStrings) >= 0 then
     678         cStrings = UBound(arrStrings) + 1 - LBound(arrStrings)
     679         str = fnCallback(arrStrings, cStrings, objUser)
     680         if str <> "" then
     681            if not ArrayContainsStringI(arrCandidates, str) then
     682               arrCandidates(iCandidates) = str
     683               iCandidates = iCandidates + 1
     684            end if
     685         end if
     686      end if
     687   next
     688   if iCandidates > 0 then
     689      redim preserve arrCandidates(iCandidates - 1)
     690      arrCandidates = ArrayRVerSortStrings(arrCandidates)
     691      for iCandidates = LBound(arrCandidates) to UBound(arrCandidates)
     692         LogPrint "CollectFromProgramItemLinks: #" & iCandidates & ": " & arrCandidates(iCandidates)
     693      next
     694      CollectFromProgramItemLinks = arrCandidates
     695   end if
    472696end function
    473697
     
    680904''
    681905' Returns a sorted array of subfolder names that starts with the given string.
    682 function GetSubdirsStartingWithSorted(strFolder, strStartingWith)
    683    GetSubdirsStartingWithSorted = ArraySortStrings(GetSubdirsStartingWith(strFolder, strStartingWith))
    684 end function
    685 
    686 
    687 ''
    688 ' Returns a reverse sorted array of subfolder names that starts with the given string.
    689 function GetSubdirsStartingWithRSorted(strFolder, strStartingWith)
    690    GetSubdirsStartingWithRSorted = ArrayRSortStrings(GetSubdirsStartingWith(strFolder, strStartingWith))
     906function GetSubdirsStartingWithVerSorted(strFolder, strStartingWith)
     907   GetSubdirsStartingWithVerSorted = ArrayVerSortStrings(GetSubdirsStartingWith(strFolder, strStartingWith))
     908end function
     909
     910
     911''
     912' Returns a reverse version sorted array of subfolder names that starts with the given string.
     913function GetSubdirsStartingWithRVerSorted(strFolder, strStartingWith)
     914   GetSubdirsStartingWithRSortedVersion = ArrayRVerSortStrings(GetSubdirsStartingWith(strFolder, strStartingWith))
    691915end function
    692916
     
    8851109
    8861110''
     1111' Checks if the file exists and logs failures.
     1112function LogFileExists1(strPath)
     1113   LogFileExists1 = FileExists(strPath)
     1114   if LogFileExists1 = False then
     1115      LogPrint "Testing '" & strPath & "': file not found"
     1116   end if
     1117end function
     1118
     1119
     1120''
    8871121' Checks if the directory exists and logs failures.
    8881122function LogDirExists(strPath)
     
    9621196end sub
    9631197
     1198''
     1199' Prints a string to the config file.
     1200sub CfgPrintAssign(strVar, strValue)
     1201   if strValue = "" then
     1202      FileAppendLine g_strCfgFile, RightPad(strVar, 17) & " :="
     1203   else
     1204      FileAppendLine g_strCfgFile, RightPad(strVar, 17) & " := " & strValue
     1205   end if
     1206end sub
     1207
    9641208
    9651209''
     
    10351279      g_blnDisableCOM = True
    10361280      g_strDisableCOM = strReason
    1037       CfgPrint "VBOX_WITH_MAIN="
    1038       CfgPrint "VBOX_WITH_QTGUI="
    1039       CfgPrint "VBOX_WITH_VBOXSDL="
    1040       CfgPrint "VBOX_WITH_DEBUGGER_GUI="
     1281      CfgPrintAssign "VBOX_WITH_MAIN", ""
     1282      CfgPrintAssign "VBOX_WITH_QTGUI", ""
     1283      CfgPrintAssign "VBOX_WITH_VBOXSDL", ""
     1284      CfgPrintAssign "VBOX_WITH_DEBUGGER_GUI", ""
    10411285   end if
    10421286end sub
     
    10501294      g_blnDisableUDPTunnel = True
    10511295      g_strDisableUDPTunnel = strReason
    1052       CfgPrint "VBOX_WITH_UDPTUNNEL="
     1296      CfgPrintAssign "VBOX_WITH_UDPTUNNEL", ""
    10531297   end if
    10541298end sub
     
    10621306      g_blnDisableSDL = True
    10631307      g_strDisableSDL = strReason
    1064       CfgPrint "VBOX_WITH_VBOXSDL="
     1308      CfgPrintAssign "VBOX_WITH_VBOXSDL", ""
    10651309   end if
    10661310end sub
     
    13101554   PrintResult "kBuild binaries", g_strPathkBuildBin
    13111555end sub
     1556
    13121557
    13131558''
     
    13931638          and LogFileExists(strPathVC, "lib/x64/libcpmt.lib") _
    13941639          and LogFileExists(strPathVC, "lib/x86/libcpmt.lib") _
     1640          and LogFileExists(strPathVC, "bin/Host" & g_strHostArchWin & "/" & g_strTargetArchWin & "/cl.exe") _
     1641          and LogFileExists(strPathVC, "bin/Host" & g_strHostArchWin & "/" & g_strHostArchWin & "/cl.exe") _
    13951642         then
    13961643            LogPrint " => seems okay. new layout."
    1397             m_blnFound = checkClExe(strPathVC & "/bin/Host" & g_strHostArchWin & "/bin/" & g_strHostArchWin & "/cl.exe")
     1644            m_blnFound = checkClExe(strPathVC & "/bin/Host" & g_strHostArchWin & "/" & g_strTargetArchWin & "/cl.exe")
    13981645            if m_blnFound then
    13991646               m_strPathVC = strPathVC
     
    14181665               LogPrint " => seems okay. new layout."
    14191666               dim arrFolders, i
    1420                arrFolders = GetSubdirsStartingWithSorted(m_strPathVC & "/Tools/MSVC", "14.2")
    1421                if UBound(arrFolders) < 0 then arrFolders = GetSubdirsStartingWithSorted(m_strPathVC & "/Tools/MSVC", "14.1")
    1422                if UBound(arrFolders) < 0 then arrFolders = GetSubdirsStartingWithSorted(m_strPathVC & "/Tools/MSVC", "1")
     1667               arrFolders = GetSubdirsStartingWithVerSorted(m_strPathVC & "/Tools/MSVC", "14.2")
     1668               if UBound(arrFolders) < 0 then arrFolders = GetSubdirsStartingWithVerSorted(m_strPathVC & "/Tools/MSVC", "14.1")
     1669               if UBound(arrFolders) < 0 then arrFolders = GetSubdirsStartingWithVerSorted(m_strPathVC & "/Tools/MSVC", "1")
    14231670               for i = UBound(arrFolders) to LBound(arrFolders) step -1
    14241671                  if checkInner(m_strPathVC & "/Tools/MSVC/" & arrFolders(i)) then exit for ' modifies m_strPathVC on success
     
    15131760
    15141761''
    1515 ' Checks for Visual C++ version 10 (2010).
     1762' Checks for Visual C++ version 16 (2019), 15 (2017), 14 (2015), 12 (2013), 11 (2012) or 10 (2010).
    15161763sub CheckForVisualCPP(strOptVC, strOptVCCommon)
    15171764   PrintHdr "Visual C++"
     
    15241771   objState.check strOptVC, strOptVCCommon
    15251772   if g_blnInternalFirst = True then objState.checkInternal
    1526    objState.checkProg "cl.exe"
    15271773   objState.checkProgFiles "Microsoft Visual Studio\2019\BuildTools\VC"
    15281774   objState.checkProgFiles "Microsoft Visual Studio\2019\Professional\VC"
     
    15371783   objState.checkRegistry "Microsoft\VisualStudio\SxS\VS7\12.0",             "VC", "Common7" '?
    15381784   objState.checkRegistry "Microsoft\VisualStudio\SxS\VS7\11.0",             "VC", "Common7" '?
     1785   objState.checkProg "cl.exe"
    15391786   objState.checkRegistry "Microsoft\VisualStudio\10.0\Setup\VS\ProductDir", "VC", "Common7"
    15401787   if g_blnInternalFirst = False then objState.checkInternal
     
    15501797   ' Ok, emit build config variables.
    15511798   '
    1552    CfgPrint "VBOX_VCC_TOOL_STEM    := " & objState.m_strVersion
    1553    CfgPrint "PATH_TOOL_" & objState.m_strVersion & "      := " & g_strPathVCC
    1554    CfgPrint "PATH_TOOL_" & objState.m_strVersion & "X86   := $(PATH_TOOL_" & objState.m_strVersion & ")"
    1555    CfgPrint "PATH_TOOL_" & objState.m_strVersion & "AMD64 := $(PATH_TOOL_" & objState.m_strVersion & ")"
     1799   CfgPrintAssign "VBOX_VCC_TOOL_STEM", objState.m_strVersion
     1800   CfgPrintAssign "PATH_TOOL_" & objState.m_strVersion, g_strPathVCC
     1801   CfgPrintAssign "PATH_TOOL_" & objState.m_strVersion & "X86",   "$(PATH_TOOL_" & objState.m_strVersion & ")"
     1802   CfgPrintAssign "PATH_TOOL_" & objState.m_strVersion & "AMD64", "$(PATH_TOOL_" & objState.m_strVersion & ")"
    15561803
    15571804   if   objState.m_strVersion = "VCC100" _
     
    15601807     or objState.m_strVersion = "VCC140" _
    15611808   then
    1562       CfgPrint "VBOX_WITH_NEW_VCC     :=" '?? for VCC110+
     1809      CfgPrintAssign "VBOX_WITH_NEW_VCC", "" '?? for VCC110+
    15631810   else
    1564       CfgPrint "VBOX_WITH_NEW_VCC     := 1"
     1811      CfgPrintAssign "VBOX_WITH_NEW_VCC", "1"
    15651812   end if
    15661813   PrintResult "Visual C++ " & objState.m_strVersion, g_strPathVCC
     
    16151862
    16161863   ' Check the registry next (ASSUMES sorting).
    1617    arrSubKeys = RegEnumSubKeysRSort("HKLM", "SOFTWARE\Microsoft\Microsoft SDKs\Windows")
     1864   arrSubKeys = RegEnumSubKeysRVerSorted("HKLM", "SOFTWARE\Microsoft\Microsoft SDKs\Windows")
    16181865   for each strSubKey in arrSubKeys
    16191866      str = RegGetString("HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\" & strSubKey & "\InstallationFolder")
     
    16221869      end if
    16231870   Next
    1624    arrSubKeys = RegEnumSubKeysRSort("HKCU", "SOFTWARE\Microsoft\Microsoft SDKs\Windows")
     1871   arrSubKeys = RegEnumSubKeysRVerSorted("HKCU", "SOFTWARE\Microsoft\Microsoft SDKs\Windows")
    16251872   for each strSubKey in arrSubKeys
    16261873      str = RegGetString("HKCU\SOFTWARE\Microsoft\Microsoft SDKs\Windows\" & strSubKey & "\InstallationFolder")
     
    16511898   '
    16521899   strPathPSDK = UnixSlashes(PathAbs(strPathPSDK))
    1653    CfgPrint "PATH_SDK_WINPSDK" & g_strVerPSDK & "    := " & strPathPSDK
    1654    CfgPrint "VBOX_WINPSDK          := WINPSDK" & g_strVerPSDK
    1655 
    1656    PrintResult "Windows Platform SDK (v" & g_strVerPSDK & ")", strPathPSDK
     1900   CfgPrintAssign "PATH_SDK_WINPSDK" & g_strVerPSDK, strPathPSDK
     1901   CfgPrintAssign "VBOX_WINPSDK",  "WINPSDK" & g_strVerPSDK
     1902
     1903   PrintResult "Windows Platform SDK", strPathPSDK
     1904   PrintResultMsg "Windows Platform SDK version", g_strVerPSDK
    16571905   g_strPathPSDK = strPathPSDK
    16581906end sub
     
    16811929
    16821930''
    1683 ' Checks for a platform SDK that works with the compiler
     1931' Checks for a windows 10 SDK (later also WDK).
    16841932sub CheckForSDK10(strOptSDK10, strOptSDK10Version)
    16851933   dim strPathSDK10, strSDK10Version, str
     
    17141962   '
    17151963   strPathSDK10 = UnixSlashes(PathAbs(strPathSDK10))
    1716    CfgPrint "PATH_SDK_WINSDK10     := " & strPathSDK10
    1717    CfgPrint "SDK_WINSDK10_VERSION  := " & strSDK10Version
    1718 
    1719    PrintResult "Windows 10 SDK (" & strSDK10Version & ")", strPathSDK10
     1964   CfgPrintAssign "PATH_SDK_WINSDK10", strPathSDK10
     1965   CfgPrintAssign "SDK_WINSDK10_VERSION", strSDK10Version
     1966
     1967   PrintResult "Windows 10 SDK", strPathSDK10
     1968   PrintResultMsg "Windows 10 SDK version", strSDK10Version
    17201969   g_strPathSDK10 = strPathSDK10
    17211970end sub
     
    17291978                        g_strPathDev & "/win.x86/sdk", g_strPathDev & "/win.amd64/sdk")
    17301979   for each strToolsDir in arrToolsDirs
    1731       arrDirs = GetSubdirsStartingWithRSorted(strToolsDir, "v10.")
     1980      arrDirs = GetSubdirsStartingWithRSortedVersion(strToolsDir, "v10.")
    17321981      for each strDir in arrDirs
    17331982         CheckForSDK10ToolsSub = CheckForSDK10Sub(strToolsDir & "/" & strDir, strSDK10Version)
     
    17542003            ' Only testing the highest one, for now. '' @todo incorporate strOptSDK10Version
    17552004            dim arrVersions
    1756             arrVersions = GetSubdirsStartingWithSorted(strPathSDK10 & "/Include", "10.0.")
     2005            arrVersions = GetSubdirsStartingWithVerSorted(strPathSDK10 & "/Include", "10.0.")
    17572006            if UBound(arrVersions) >= 0 then
    17582007               dim strVersion
     
    17692018                and  LogFileExists(strPathSDK10, "bin/" & strVersion & "/" & g_strHostArchWin & "/midl.exe") _
    17702019               then
    1771                   '' @todo check minimum version (for WinHv).
    1772                   strSDK10Version  = strVersion
    1773                   CheckForSDK10Sub = strPathSDK10
     2020                  if StrComp(strVersion, "10.0.17134.0") >= 0 then
     2021                     strSDK10Version  = strVersion
     2022                     CheckForSDK10Sub = strPathSDK10
     2023                  else
     2024                     LogPrint "Version " & strVersion & " is too low, minimum: 10.0.17134.0"
     2025                  end if
    17742026               end if
    17752027            else
     
    18312083      next
    18322084   next
    1833    arrLocations = ArrayRSortStrings(arrLocations)
     2085   arrLocations = ArrayRVerSortStrings(arrLocations)
    18342086
    18352087   ' Check the locations we've gathered.
     
    18562108   '
    18572109   strPathDDK = UnixSlashes(PathAbs(strPathDDK))
    1858    CfgPrint "PATH_SDK_WINDDK71     := " & strPathDDK
     2110   CfgPrintAssign "PATH_SDK_WINDDK71", strPathDDK
    18592111
    18602112   PrintResult "Windows DDK v7.1", strPathDDK
     
    18872139''
    18882140' Finds midl.exe
    1889 sub CheckForMidl()
     2141sub CheckForMidl(strOptMidl)
    18902142   dim strMidl
    18912143   PrintHdr "Midl.exe"
     
    18932145   ' Skip if no COM/ATL.
    18942146   if g_blnDisableCOM then
    1895       PrintResultMsg "Midl", "Skipped (" & g_strDisableCOM & ")"
     2147      PrintResultMsg "Midl.exe", "Skipped (" & g_strDisableCOM & ")"
    18962148      exit sub
    18972149   end if
    18982150
    1899    if LogFileExists(g_strPathPSDK, "bin/Midl.exe") then
    1900       strMidl = g_strPathPSDK & "/bin/Midl.exe"
    1901    elseif LogFileExists(g_strPathVCC, "Common7/Tools/Bin/Midl.exe") then
    1902       strMidl = g_strPathVCC & "/Common7/Tools/Bin/Midl.exe"
    1903    elseif LogFileExists(g_strPathDDK, "bin/x86/Midl.exe") then
    1904       strMidl = g_strPathDDK & "/bin/x86/Midl.exe"
    1905    elseif LogFileExists(g_strPathDDK, "bin/Midl.exe") then
    1906       strMidl = g_strPathDDK & "/bin/Midl.exe"
    1907    elseif LogFileExists(g_strPathDev, "win.x86/bin/Midl.exe") then
    1908       strMidl = g_strPathDev & "/win.x86/bin/Midl.exe"
    1909    else
    1910       MsgWarning "Midl.exe not found!"
     2151   strMidl = CheckForMidlSub(strOptMidl)
     2152   if strMidl = "" then strMidl = CheckForMidlSub(g_strPathSDK10 & "/bin/" & g_strHostArchWin & "/Midl.exe")
     2153   if strMidl = "" then strMidl = CheckForMidlSub(g_strPathSDK10 & "/bin/x86/Midl.exe")
     2154   if strMidl = "" then strMidl = CheckForMidlSub(g_strPathPSDK  & "/bin/Midl.exe")
     2155   if strMidl = "" then strMidl = CheckForMidlSub(g_strPathVCC   & "/Common7/Tools/Bin/Midl.exe")
     2156   if strMidl = "" then strMidl = CheckForMidlSub(g_strPathDDK   & "/bin/" & g_strHostArchWin & "/Midl.exe")
     2157   if strMidl = "" then strMidl = CheckForMidlSub(g_strPathDDK   & "/bin/x86/Midl.exe")
     2158   if strMidl = "" then strMidl = CheckForMidlSub(g_strPathDDK   & "/bin/Midl.exe")
     2159   if strMidl = "" then strMidl = CheckForMidlSub(g_strPathDev   & "/win.x86/bin/Midl.exe")
     2160   if strMidl = "" then
     2161      PrintResultMsg "Midl.exe", "not found"
    19112162      exit sub
    19122163   end if
    19132164
    1914    CfgPrint "VBOX_MAIN_IDL         := " & strMidl
     2165   CfgPrintAssign "VBOX_MAIN_IDL", strMidl
    19152166   PrintResult "Midl.exe", strMidl
    19162167end sub
     2168
     2169function CheckForMidlSub(strMidl)
     2170   CheckForMidlSub = ""
     2171   if strMidl <> "" then
     2172      if LogFileExists1(strMidl) then
     2173         CheckForMidlSub = UnixSlashes(PathAbs(strMidl))
     2174      end if
     2175   end if
     2176end function
     2177
     2178
     2179''
     2180' Finds OpenWatcom
     2181sub CheckForOpenWatcom(strOptOpenWatcom)
     2182   dim strPathOpenWatcom
     2183   PrintHdr "OpenWatcom"
     2184
     2185   strPathOpenWatcom = CheckForOpenWatcomSub(strOptOpenWatcom)
     2186   if strPathOpenWatcom = "" and g_blnInternalFirst = True then strPathOpenWatcom = CheckForOpenWatcomToolsSub()
     2187   if strPathOpenWatcom = "" then strPathOpenWatcom = CheckForOpenWatcomSub(EnvGet("WATCOM"))
     2188   if strPathOpenWatcom = "" then strPathOpenWatcom = CheckForOpenWatcomSub(PathParent(PathStripFilename(Which("wcc386.exe"))))
     2189   if strPathOpenWatcom = "" then
     2190      dim arrCandiates, strCandidate
     2191      arrCandidates = CollectFromProgramItemLinks(GetRef("OpenWatcomProgramItemCallback"), strPathOpenWatcom)
     2192      for each strCandidate in arrCandidates
     2193         if strPathOpenWatcom = "" then strPathOpenWatcom = CheckForOpenWatcomSub(strCandidate)
     2194      next
     2195   end if
     2196   if strPathOpenWatcom = "" and g_blnInternalFirst = False then strPathOpenWatcom = CheckForOpenWatcomToolsSub()
     2197
     2198   if strPathOpenWatcom = "" then
     2199      PrintResultMsg "OpenWatcom", "not found"
     2200      CfgPrintAssign "VBOX_WITH_OPEN_WATCOM", ""
     2201      exit sub
     2202   end if
     2203
     2204   CfgPrintAssign "VBOX_WITH_OPEN_WATCOM", "1"
     2205   CfgPrintAssign "PATH_TOOL_OPENWATCOM", strPathOpenWatcom
     2206   PrintResult "OpenWatcom", strPathOpenWatcom
     2207end sub
     2208
     2209function CheckForOpenWatcomToolsSub()
     2210   dim arrToolsDirs, strToolsDir, arrDirs, strDir
     2211   arrToolsDirs = Array(g_strPathDev & "/common/openwatcom", _
     2212                        g_strPathDev & "/win." & g_strTargetArch & "/openwatcom", _
     2213                        g_strPathDev & "/win.x86/openwatcom", g_strPathDev & "/win.amd64/openwatcom")
     2214   for each strToolsDir in arrToolsDirs
     2215      arrDirs = GetSubdirsStartingWithRSortedVersion(strToolsDir, "v")
     2216      for each strDir in arrDirs
     2217         CheckForOpenWatcomToolsSub = CheckForOpenWatcomSub(strToolsDir & "/" & strDir)
     2218         if CheckForOpenWatcomToolsSub <> "" then
     2219            exit function
     2220         end if
     2221      next
     2222   next
     2223   CheckForOpenWatcomToolsSub = ""
     2224end function
     2225
     2226function OpenWatcomProgramItemCallback(ByRef arrStrings, cStrings, ByRef strUnused)
     2227   dim str, off
     2228   OpenWatcomProgramItemCallback = ""
     2229   if cStrings > 1 then
     2230      str = arrStrings(1)
     2231      off = InStr(1, str, "\binnt\", vbTextCompare)
     2232      if off > 0 then
     2233         OpenWatcomProgramItemCallback = Left(str, off - 1)
     2234      end if
     2235   end if
     2236end function
     2237
     2238function CheckForOpenWatcomSub(strPathOpenWatcom)
     2239   CheckForOpenWatcomSub = ""
     2240   if strPathOpenWatcom <> "" then
     2241      LogPrint "Trying: " & strPathOpenWatcom
     2242      if LogDirExists(strPathOpenWatcom) then
     2243         if   LogDirExists(strPathOpenWatcom & "/binnt") _
     2244          and LogDirExists(strPathOpenWatcom & "/h") _
     2245          and LogDirExists(strPathOpenWatcom & "/eddat") _
     2246          and LogFileExists(strPathOpenWatcom, "binnt/wcc386.exe") _
     2247          and LogFileExists(strPathOpenWatcom, "binnt/wcc.exe") _
     2248          and LogFileExists(strPathOpenWatcom, "binnt/wlink.exe") _
     2249          and LogFileExists(strPathOpenWatcom, "binnt/wcl386.exe") _
     2250          and LogFileExists(strPathOpenWatcom, "binnt/wcl.exe") _
     2251          and LogFileExists(strPathOpenWatcom, "binnt/wlib.exe") _
     2252          and LogFileExists(strPathOpenWatcom, "binnt/wasm.exe") _
     2253          and LogFileExists(strPathOpenWatcom, "h/stdarg.h") _
     2254         then
     2255            '' @todo check the version!
     2256            CheckForOpenWatcomSub = UnixSlashes(PathAbs(strPathOpenWatcom))
     2257         end if
     2258      end if
     2259   end if
     2260end function
    19172261
    19182262
     
    19822326
    19832327   strPathLibSDL = UnixSlashes(PathAbs(strPathLibSDL))
    1984    CfgPrint "PATH_SDK_LIBSDL       := " & strPathlibSDL
     2328   CfgPrintAssign "PATH_SDK_LIBSDL", strPathlibSDL
    19852329
    19862330   PrintResult "libSDL", strPathlibSDL
     
    20522396
    20532397   strPathXml2 = UnixSlashes(PathAbs(strPathXml2))
    2054    CfgPrint "SDK_VBOX_LIBXML2_DEFS  := _REENTRANT"
    2055    CfgPrint "SDK_VBOX_LIBXML2_INCS  := " & strPathXml2 & "/include"
    2056    CfgPrint "SDK_VBOX_LIBXML2_LIBS  := " & strPathXml2 & "/lib/libxml2.lib"
     2398   CfgPrintAssign "SDK_VBOX_LIBXML2_DEFS", "_REENTRANT"
     2399   CfgPrintAssign "SDK_VBOX_LIBXML2_INCS", strPathXml2 & "/include"
     2400   CfgPrintAssign "SDK_VBOX_LIBXML2_LIBS", strPathXml2 & "/lib/libxml2.lib"
    20572401
    20582402   PrintResult "libxml2", strPathXml2
     
    21292473   strPathSsl = UnixSlashes(PathAbs(strPathSsl))
    21302474   if bln32Bit = True then
    2131       CfgPrint "SDK_VBOX_OPENSSL-x86_INCS := " & strPathSsl & "/include"
    2132       CfgPrint "SDK_VBOX_OPENSSL-x86_LIBS := " & strPathSsl & "/lib/libcrypto.lib" & " " & strPathSsl & "/lib/libssl.lib"
    2133       CfgPrint "SDK_VBOX_BLD_OPENSSL-x86_LIBS := " & strPathSsl & "/lib/libcrypto.lib" & " " & strPathSsl & "/lib/libssl.lib"
     2475      CfgPrintAssign "SDK_VBOX_OPENSSL-x86_INCS",    strPathSsl & "/include"
     2476      CfgPrintAssign "SDK_VBOX_OPENSSL-x86_LIBS",    strPathSsl & "/lib/libcrypto.lib" & " " & strPathSsl & "/lib/libssl.lib"
     2477      CfgPrintAssign "SDK_VBOX_BLD_OPENSSL-x86_LIBS", strPathSsl & "/lib/libcrypto.lib" & " " & strPathSsl & "/lib/libssl.lib"
    21342478   else
    2135       CfgPrint "SDK_VBOX_OPENSSL_INCS := " & strPathSsl & "/include"
    2136       CfgPrint "SDK_VBOX_OPENSSL_LIBS := " & strPathSsl & "/lib/libcrypto.lib" & " " & strPathSsl & "/lib/libssl.lib"
    2137       CfgPrint "SDK_VBOX_BLD_OPENSSL_LIBS := " & strPathSsl & "/lib/libcrypto.lib" & " " & strPathSsl & "/lib/libssl.lib"
     2479      CfgPrintAssign "SDK_VBOX_OPENSSL_INCS",        strPathSsl & "/include"
     2480      CfgPrintAssign "SDK_VBOX_OPENSSL_LIBS",        strPathSsl & "/lib/libcrypto.lib" & " " & strPathSsl & "/lib/libssl.lib"
     2481      CfgPrintAssign "SDK_VBOX_BLD_OPENSSL_LIBS",    strPathSsl & "/lib/libcrypto.lib" & " " & strPathSsl & "/lib/libssl.lib"
    21382482   end if
    21392483
     
    22052549   strPathCurl = UnixSlashes(PathAbs(strPathCurl))
    22062550   if bln32Bit = True then
    2207       CfgPrint "SDK_VBOX_LIBCURL-x86_INCS := " & strPathCurl & "/include"
    2208       CfgPrint "SDK_VBOX_LIBCURL-x86_LIBS.x86 := " & strPathCurl & "/libcurl.lib"
     2551      CfgPrintAssign "SDK_VBOX_LIBCURL-x86_INCS",    strPathCurl & "/include"
     2552      CfgPrintAssign "SDK_VBOX_LIBCURL-x86_LIBS.x86", strPathCurl & "/libcurl.lib"
    22092553   else
    2210       CfgPrint "SDK_VBOX_LIBCURL_INCS := " & strPathCurl & "/include"
    2211       CfgPrint "SDK_VBOX_LIBCURL_LIBS := " & strPathCurl & "/libcurl.lib"
     2554      CfgPrintAssign "SDK_VBOX_LIBCURL_INCS", strPathCurl & "/include"
     2555      CfgPrintAssign "SDK_VBOX_LIBCURL_LIBS", strPathCurl & "/libcurl.lib"
    22122556   end if
    22132557
     
    22542598      '   /A /Q /K E:\qt\installed\5.x.y\msvc20zz_64\bin\qtenv2.bat
    22552599      '
    2256       dim arrValues, strValue, arrStrings, str, arrCandidates, iCandidates, strCandidate, off
    2257       arrValues = RegEnumValueNamesFull("HKCU", "SOFTWARE\Microsoft\Windows\CurrentVersion\UFH\SHC")
    2258       redim arrCandidates(UBound(arrValues) - LBound(arrValues) + 1)
    2259       iCandidates   = 0
    2260       for each strValue in arrValues
    2261          arrStrings = RegGetMultiString("HKCU\" & strValue)
    2262          if UBound(arrStrings) >= 0 and UBound(arrStrings) - LBound(arrStrings) >= 2 then
    2263             str = Trim(arrStrings(UBound(arrStrings)))
    2264             if   LCase(Right(str, Len("\bin\qtenv2.bat"))) = "\bin\qtenv2.bat" _
    2265              and InStr(1, LCase(str), "\msvc20") > 0 _
    2266              and InStr(1, str, ":") > 0 _
    2267             then
    2268                off = InStr(1, str, ":") - 1
    2269                arrCandidates(iCandidates) = Mid(str, off, Len(str) - off - Len("\bin\qtenv2.bat") + 1)
    2270                LogPrint "qt5 candidate #" & iCandidates & "=" & arrCandidates(iCandidates) & " (" & str & ")"
    2271                iCandidates = iCandidates + 1
    2272             end if
    2273          end if
    2274       next
    2275       redim preserve arrCandidates(iCandidates)
    2276       if iCandidates > 0 then arrCandidates = ArrayRSortStrings(arrCandidates)   ' Kind of needs version sorting here...
    2277       LogPrint "Testing qtenv2.bat links (" & iCandidates & ") ..."
     2600      dim arrCandidates, strCandidate
     2601      arrCandidates = CollectFromProgramItemLinks(GetRef("Qt5ProgramItemCallback"), strPathQt5)
     2602      LogPrint "Testing qtenv2.bat links (" & ArraySize(arrCandidates) & ") ..."
    22782603
    22792604      ' VC infixes/subdir names to consider (ASSUMES 64bit)
     
    23082633   if strPathQt5 = "" then
    23092634      LogPrint "Testing tools dir (" & g_strPathDev & "/win." & g_strTargetArch & "/qt/v5*) ..."
    2310       arrFolders = GetSubdirsStartingWithSorted(g_strPathDev & "/win." & g_strTargetArch & "/qt", "v5")
     2635      arrFolders = GetSubdirsStartingWithVerSorted(g_strPathDev & "/win." & g_strTargetArch & "/qt", "v5")
    23112636      arrVccInfixes = Array(LCase(g_strVCCVersion), Left(LCase(g_strVCCVersion), Len(g_strVCCVersion) - 1), "")
    23122637      for each strVccInfix in arrVccInfixes
     
    23272652      PrintResult "Qt5", strPathQt5
    23282653      PrintResultMsg "Qt5 infix", strInfixQt5
    2329       CfgPrint "PATH_SDK_QT5          := " & strPathQt5
    2330       CfgPrint "PATH_TOOL_QT5         := $(PATH_SDK_QT5)"
    2331       CfgPrint "VBOX_PATH_QT          := $(PATH_SDK_QT5)"
    2332       CfgPrint "VBOX_QT_INFIX         := " & strInfixQt5
    2333       CfgPrint "VBOX_WITH_QT_PAYLOAD  := 1"
     2654      CfgPrintAssign "PATH_SDK_QT5",          strPathQt5
     2655      CfgPrintAssign "PATH_TOOL_QT5",         "$(PATH_SDK_QT5)"
     2656      CfgPrintAssign "VBOX_PATH_QT",          "$(PATH_SDK_QT5)"
     2657      CfgPrintAssign "VBOX_QT_INFIX",        strInfixQt5
     2658      CfgPrintAssign "VBOX_WITH_QT_PAYLOAD",  "1"
    23342659   else
    2335       CfgPrint "VBOX_WITH_QTGUI       :="
    23362660      PrintResultMsg "Qt5", "not found"
    2337    end if
    2338 end sub
     2661      CfgPrintAssign "VBOX_WITH_QTGUI", ""
     2662   end if
     2663end sub
     2664
     2665function Qt5ProgramItemCallback(ByRef arrStrings, cStrings, ByRef strUnused)
     2666   dim str, off
     2667   Qt5ProgramItemCallback = ""
     2668   if cStrings >= 3 then
     2669      str = Trim(arrStrings(UBound(arrStrings)))
     2670      if   LCase(Right(str, Len("\bin\qtenv2.bat"))) = "\bin\qtenv2.bat" _
     2671       and InStr(1, LCase(str), "\msvc20") > 0 _
     2672       and InStr(1, str, ":") > 0 _
     2673      then
     2674         off = InStr(1, str, ":") - 1
     2675         Qt5ProgramItemCallback = Mid(str, off, Len(str) - off - Len("\bin\qtenv2.bat") + 1)
     2676      end if
     2677   end if
     2678end function
    23392679
    23402680''
     
    23942734   CheckForPython = strPathPython <> ""
    23952735   if CheckForPython then
    2396       CfgPrint "VBOX_BLD_PYTHON       := " & strPathPython
     2736      CfgPrintAssign "VBOX_BLD_PYTHON", strPathPython
    23972737      PrintResult "Python", strPathPython
    23982738   else
     
    24142754end function
    24152755
     2756
     2757''
     2758' Simple self test.
     2759sub SelfTest
     2760   dim i, str
     2761   str = "0123456789"
     2762   for i = 1 to Len(str)
     2763      if CharIsDigit(Mid(str, i, 1)) <> True then MsgFatal "SelfTest failed: CharIsDigit("&Mid(str, i, 1)&")"
     2764   next
     2765   str = "abcdefghijklmnopqrstuvwxyz~`!@#$%^&*()_+-=ABCDEFGHIJKLMNOPQRSTUVWXYZ/\[]{}"
     2766   for i = 1 to Len(str)
     2767      if CharIsDigit(Mid(str, i, 1)) <> False then MsgFatal "SelfTest failed: CharIsDigit("&Mid(str, i, 1)&")"
     2768   next
     2769   if StrVersionCompare("1234", "1234") <> 0 then MsgFatal "SelfTest failed: StrVersionCompare #1"
     2770   if StrVersionCompare("1", "1") <> 0 then MsgFatal "SelfTest failed: StrVersionCompare #2"
     2771   if StrVersionCompare("2", "1") <= 0 then MsgFatal "SelfTest failed: StrVersionCompare #3"
     2772   if StrVersionCompare("1", "2") >= 0 then MsgFatal "SelfTest failed: StrVersionCompare #4"
     2773   if StrVersionCompare("01", "1") <> 0 then MsgFatal "SelfTest failed: StrVersionCompare #5"
     2774   if StrVersionCompare("01", "001") <> 0 then MsgFatal "SelfTest failed: StrVersionCompare #6"
     2775   if StrVersionCompare("12", "123") >= 0 then MsgFatal "SelfTest failed: StrVersionCompare #7"
     2776   if StrVersionCompare("v123", "123") <= 0 then MsgFatal "SelfTest failed: StrVersionCompare #8"
     2777   if StrVersionCompare("v1.2.3", "v1.3.4") >= 0 then MsgFatal "SelfTest failed: StrVersionCompare #9"
     2778   if StrVersionCompare("v1.02.3", "v1.3.4") >= 0 then MsgFatal "SelfTest failed: StrVersionCompare #10"
     2779   if StrVersionCompare("v1.2.3", "v1.03.4") >= 0 then MsgFatal "SelfTest failed: StrVersionCompare #11"
     2780   if StrVersionCompare("v1.2.4", "v1.23.4") >= 0 then MsgFatal "SelfTest failed: StrVersionCompare #12"
     2781   if StrVersionCompare("v10.0.17163", "v10.00.18363") >= 0 then MsgFatal "SelfTest failed: StrVersionCompare #13"
     2782end sub
    24162783
    24172784''
     
    24432810   Print "  --with-VC-Common=PATH   Maybe needed for 2015 and older to"
    24442811   Print "                          locate the Common7 directory."
     2812   Print "  --with-midl=PATH        Where midl.exe is to be found."
     2813   Print "  --with-openwatcom=PATH  Where OpenWatcom 1.9 is to be found."
    24452814   Print "  --with-python=PATH      The python to use."
    24462815   Print "  --with-libxml2=PATH     To use a libxml2 other than the VBox one."
     
    24652834      exit function
    24662835   end if
     2836   SelfTest
    24672837
    24682838   '
     
    24802850   strOptVC = ""
    24812851   strOptVCCommon = ""
     2852   strOptMidl = ""
     2853   strOptOpenWatcom = ""
    24822854   strOptXml2 = ""
    24832855   strOptSsl = ""
     
    25362908         case "--with-w32api"
    25372909            ' ignore
     2910         case "--with-midl"
     2911            strOptMidl = strPath
     2912         case "--with-openwatcom"
     2913            strOptOpenWatcom = strPath
    25382914         case "--with-libxml2"
    25392915            strOptXml2 = strPath
     
    26192995   CheckForPlatformSDK  strOptSDK
    26202996   CheckForSDK10        strOptSDK10, strOptSDK10Version
    2621    CheckForMidl
    2622    CfgPrint "VBOX_WITH_OPEN_WATCOM := " '' @todo look for openwatcom 1.9+
    2623    CfgPrint "VBOX_WITH_LIBVPX := " '' @todo look for libvpx 1.1.0+
    2624    CfgPrint "VBOX_WITH_LIBOPUS := " '' @todo look for libopus 1.2.1+
     2997   CheckForMidl         strOptMidl
     2998   CheckForOpenWatcom   strOptOpenWatcom
     2999   CfgPrintAssign "VBOX_WITH_LIBVPX",  "" '' @todo look for libvpx 1.1.0+
     3000   CfgPrintAssign "VBOX_WITH_LIBOPUS", "" '' @todo look for libopus 1.2.1+
    26253001
    26263002   EnvPrintAppend "PATH", DosSlashes(g_strPath & "\tools\win." & g_strHostArch & "\bin"), ";" '' @todo look for yasm
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette