VirtualBox

Changeset 85786 in vbox


Ignore:
Timestamp:
Aug 16, 2020 8:05:53 PM (4 years ago)
Author:
vboxsync
Message:

configure.vbs: More work on qt detection. Must allow/detect infix, at least for our VBox stuff. Find python using registry and PATH.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/configure.vbs

    r85785 r85786  
    222222
    223223
     224''
     225' Gets the SID of the current user.
     226function GetSid()
     227   dim objNet, strUser, strDomain, offSlash, objWmiUser
     228   GetSid = ""
     229
     230   ' Figure the user + domain
     231   set objNet = CreateObject("WScript.Network")
     232   strUser   = objNet.UserName
     233   strDomain = objNet.UserDomain
     234   offSlash  = InStr(1, strUser, "\")
     235   if offSlash > 0 then
     236      strDomain = Left(strUser, offSlash - 1)
     237      strUser   = Right(strUser, Len(strUser) - offSlash)
     238   end if
     239
     240   ' Lookup the user.
     241   on error resume next
     242   set objWmiUser = GetObject("winmgmts:{impersonationlevel=impersonate}!/root/cimv2:Win32_UserAccount." _
     243                              & "Domain='" & strDomain &"',Name='" & strUser & "'")
     244   if err.number = 0 then
     245      GetSid = objWmiUser.SID
     246   end if
     247end function
     248
    224249
    225250''
    226251' Translates a register root name to a value
    227 function RegTransRoot(strRoot)
     252' This will translate HKCU path to HKEY_USERS and fixing
     253function RegTransRoot(strRoot, ByRef sSubKeyName)
    228254   const HKEY_LOCAL_MACHINE = &H80000002
    229255   const HKEY_CURRENT_USER  = &H80000001
     256   const HKEY_USERS         = &H80000003
     257
    230258   select case strRoot
    231259      case "HKLM"
    232260         RegTransRoot = HKEY_LOCAL_MACHINE
     261      case "HKUS"
     262         RegTransRoot = HKEY_USERS
    233263      case "HKCU"
    234          RegTransRoot = HKEY_CURRENT_USER
     264         dim strCurrentSid
     265         strCurrentSid = GetSid()
     266         if strCurrentSid <> "" then
     267            sSubKeyName  = strCurrentSid & "\" & sSubKeyName
     268            RegTransRoot = HKEY_USERS
     269            'LogPrint "RegTransRoot: HKCU -> HKEY_USERS + " & sSubKeyName
     270         else
     271            RegTransRoot = HKEY_CURRENT_USER
     272            LogPrint "RegTransRoot: Warning! HKCU -> HKEY_USERS failed!"
     273         end if
    235274      case else
    236275         MsgFatal "RegTransRoot: Unknown root: '" & strRoot & "'"
     
    282321      ' Must use ExecMethod to call the GetStringValue method because of the context.
    283322      Set InParms = g_objReg.Methods_("GetStringValue").Inparameters
    284       InParms.hDefKey     = RegTransRoot(strRoot)
     323      InParms.hDefKey     = RegTransRoot(strRoot, strKey)
    285324      InParms.sSubKeyName = strKey
    286325      InParms.sValueName  = strValue
     
    288327      set OutParms = g_objReg.ExecMethod_("GetStringValue", InParms, , g_objRegCtx)
    289328      if OutParms.ReturnValue = 0 then
    290          RegGetString = OutParms.sValue
     329         if OutParms.sValue <> Null then
     330            RegGetString = OutParms.sValue
     331         end if
    291332      end if
    292333   else
     
    299340
    300341''
     342' Gets a multi string value from the registry. Returns array of strings if found, otherwise empty array().
     343function RegGetMultiString(strName)
     344   RegGetMultiString = Array()
     345   if RegInit() then
     346      dim strRoot, strKey, strValue
     347      dim iRoot
     348
     349      ' split up into root, key and value parts.
     350      strRoot = left(strName, instr(strName, "\") - 1)
     351      strKey = mid(strName, instr(strName, "\") + 1, instrrev(strName, "\") - instr(strName, "\"))
     352      strValue = mid(strName, instrrev(strName, "\") + 1)
     353
     354      ' Must use ExecMethod to call the GetStringValue method because of the context.
     355      Set InParms = g_objReg.Methods_("GetMultiStringValue").Inparameters
     356      InParms.hDefKey     = RegTransRoot(strRoot, strKey)
     357      InParms.sSubKeyName = strKey
     358      InParms.sValueName  = strValue
     359      On Error Resume Next
     360      set OutParms = g_objReg.ExecMethod_("GetMultiStringValue", InParms, , g_objRegCtx)
     361      if OutParms.ReturnValue = 0 then
     362         if OutParms.sValue <> Null then
     363            RegGetMultiString = OutParms.sValue
     364         end if
     365      end if
     366   else
     367      ' fallback mode
     368      On Error Resume Next
     369      RegGetMultiString = g_objShell.RegRead(strName)
     370   end if
     371end function
     372
     373
     374''
    301375' Returns an array of subkey strings.
    302 function RegEnumSubKeys(strRoot, strKeyPath)
    303    dim iRoot
    304    iRoot = RegTransRoot(strRoot)
     376function RegEnumSubKeys(strRoot, ByVal strKeyPath)
    305377   RegEnumSubKeys = Array()
    306 
    307378   if RegInit() then
    308379      ' Must use ExecMethod to call the EnumKey method because of the context.
    309380      Set InParms = g_objReg.Methods_("EnumKey").Inparameters
    310       InParms.hDefKey     = RegTransRoot(strRoot)
     381      InParms.hDefKey     = RegTransRoot(strRoot, strKeyPath)
    311382      InParms.sSubKeyName = strKeyPath
    312383      On Error Resume Next
    313384      set OutParms = g_objReg.ExecMethod_("EnumKey", InParms, , g_objRegCtx)
     385      'LogPrint "RegEnumSubKeys(" & Hex(InParms.hDefKey) & "," & InParms.sSubKeyName &") -> " & OutParms.GetText_(1)
    314386      if OutParms.ReturnValue = 0 then
    315          RegEnumSubKeys = OutParms.sNames
     387         if OutParms.sNames <> Null then
     388            RegEnumSubKeys = OutParms.sNames
     389         end if
    316390      end if
    317391   else
     
    320394      set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
    321395      On Error Resume Next
    322       rc = objReg.EnumKey(iRoot, strKeyPath, arrSubKeys)
     396      rc = objReg.EnumKey(RegTransRoot(strRoot, strKeyPath), strKeyPath, arrSubKeys)
    323397      if rc = 0 then
    324398         RegEnumSubKeys = arrSubKeys
     
    351425function RegEnumSubKeysFullRSort(strRoot, strKeyPath)
    352426   RegEnumSubKeysFullRSort = ArrayRSortStrings(RegEnumSubKeysFull(strRoot, strKeyPath))
     427end function
     428
     429
     430''
     431' Returns an array of value name strings.
     432function RegEnumValueNames(strRoot, ByVal strKeyPath)
     433   RegEnumValueNames = Array()
     434   if RegInit() then
     435      ' Must use ExecMethod to call the EnumKey method because of the context.
     436      Set InParms = g_objReg.Methods_("EnumValues").Inparameters
     437      InParms.hDefKey     = RegTransRoot(strRoot, strKeyPath)
     438      InParms.sSubKeyName = strKeyPath
     439      On Error Resume Next
     440      set OutParms = g_objReg.ExecMethod_("EnumValues", InParms, , g_objRegCtx)
     441      'LogPrint "RegEnumValueNames(" & Hex(InParms.hDefKey) & "," & InParms.sSubKeyName &") -> " & OutParms.GetText_(1)
     442      if OutParms.ReturnValue = 0 then
     443         if OutParms.sNames <> Null then
     444            RegEnumValueNames = OutParms.sNames
     445         end if
     446      end if
     447   else
     448      ' fallback mode
     449      dim objReg, rc, arrSubKeys
     450      set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
     451      On Error Resume Next
     452      rc = objReg.EnumValues(RegTransRoot(strRoot, strKeyPath), strKeyPath, arrSubKeys)
     453      if rc = 0 then
     454         RegEnumValueNames = arrSubKeys
     455      end if
     456   end if
     457end function
     458
     459
     460''
     461' Returns an array of full path value name strings.
     462function RegEnumValueNamesFull(strRoot, strKeyPath)
     463   dim arrTmp
     464   arrTmp = RegEnumValueNames(strRoot, strKeyPath)
     465   for i = LBound(arrTmp) to UBound(arrTmp)
     466      arrTmp(i) = strKeyPath & "\" & arrTmp(i)
     467   next
     468   RegEnumValueNamesFull = arrTmp
    353469end function
    354470
     
    20072123
    20082124
    2009 
    20102125''
    20112126' Checks for any Qt5 binaries.
    2012 sub CheckForQt(strOptQt5)
    2013    dim strPathQt5, arrFolders, arrInfixes, strInfix
     2127sub CheckForQt(strOptQt5, strOptInfix)
     2128   dim strPathQt5, strInfixQt5, arrFolders, arrVccInfixes, strVccInfix
    20142129   PrintHdr "Qt5"
    20152130
     
    20202135   strPathQt5 = ""
    20212136   if strOptQt5 <> "" then
    2022       strPathQt5 = CheckForQt5Sub(UnixSlashes(strOptQt5))
    2023    end if
    2024 
    2025    ' Check the dev tools - prefer ones matching the compiler.
    2026    if strPathQt5 = "" then
    2027       arrFolders = GetSubdirsStartingWithSorted(g_strPathDev & "/win." & g_strTargetArch & "/qt", "v5")
    2028       arrInfixes = Array(LCase(g_strVCCVersion), Left(LCase(g_strVCCVersion), Len(g_strVCCVersion) - 1), "")
    2029       for each strInfix in arrInfixes
    2030          for i = UBound(arrFolders) to LBound(arrFolders) step -1
    2031             if strInfix = "" or InStr(1, LCase(arrFolders(i)), strInfix) > 0 then
    2032                strPathQt5 = CheckForQt5Sub(g_strPathDev & "/win." & g_strTargetArch & "/qt/" & arrFolders(i))
     2137      strPathQt5 = CheckForQt5Sub(UnixSlashes(strOptQt5), strOptInfix, strInfixQt5)
     2138   end if
     2139
     2140   if strPathQt = "" then
     2141      '
     2142      ' Collect links from "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\UFH\SHC"
     2143      '
     2144      ' Typical string list:
     2145      '   C:\Users\someuser\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Qt\5.x.y\MSVC 20zz (64-bit)\Qt 5.x.y (MSVC 20zz 64-bit).lnk
     2146      '   C:\Windows\System32\cmd.exe
     2147      '   /A /Q /K E:\qt\installed\5.x.y\msvc20zz_64\bin\qtenv2.bat
     2148      '
     2149      dim arrValues, strValue, arrStrings, str, arrCandidates, iCandidates, strCandidate, off
     2150      arrValues = RegEnumValueNamesFull("HKCU", "SOFTWARE\Microsoft\Windows\CurrentVersion\UFH\SHC")
     2151      redim arrCandidates(UBound(arrValues) - LBound(arrValues) + 1)
     2152      iCandidates   = 0
     2153      for each strValue in arrValues
     2154         arrStrings = RegGetMultiString("HKCU\" & strValue)
     2155         if UBound(arrStrings) >= 0 and UBound(arrStrings) - LBound(arrStrings) >= 2 then
     2156            str = Trim(arrStrings(UBound(arrStrings)))
     2157            if   LCase(Right(str, Len("\bin\qtenv2.bat"))) = "\bin\qtenv2.bat" _
     2158             and InStr(1, LCase(str), "\msvc20") > 0 _
     2159             and InStr(1, str, ":") > 0 _
     2160            then
     2161               off = InStr(1, str, ":") - 1
     2162               arrCandidates(iCandidates) = Mid(str, off, Len(str) - off - Len("\bin\qtenv2.bat") + 1)
     2163               LogPrint "qt5 candidate #" & iCandidates & "=" & arrCandidates(iCandidates) & " (" & str & ")"
     2164               iCandidates = iCandidates + 1
     2165            end if
     2166         end if
     2167      next
     2168      redim preserve arrCandidates(iCandidates)
     2169      if iCandidates > 0 then arrCandidates = ArrayRSortStrings(arrCandidates)   ' Kind of needs version sorting here...
     2170      LogPrint "Testing qtenv2.bat links (" & iCandidates & ") ..."
     2171
     2172      ' VC infixes/subdir names to consider (ASSUMES 64bit)
     2173      if     g_strVCCVersion = "VCC142" or g_strVCCVersion = "" then
     2174         arrVccInfixes = Array("msvc2019_64", "msvc2017_64", "msvc2015_64")
     2175      elseif g_strVCCVersion = "VCC141" then
     2176         arrVccInfixes = Array("msvc2017_64", "msvc2015_64", "msvc2019_64")
     2177      elseif g_strVCCVersion = "VCC140" then
     2178         arrVccInfixes = Array("msvc2015_64", "msvc2017_64", "msvc2019_64")
     2179      elseif g_strVCCVersion = "VCC120" then
     2180         arrVccInfixes = Array("msvc2013_64")
     2181      elseif g_strVCCVersion = "VCC110" then
     2182         arrVccInfixes = Array("msvc2012_64")
     2183      elseif g_strVCCVersion = "VCC100" then
     2184         arrVccInfixes = Array("msvc2010_64")
     2185      else
     2186         MsgFatal "Unexpected VC version: " & g_strVCCVersion
     2187         arrVccInfixes = Array()
     2188      end if
     2189      for each strVccInfix in arrVccInfixes
     2190         for each strCandidate in arrCandidates
     2191            if InStr(1, LCase(strCandidate), strVccInfix) > 0 then
     2192               strPathQt5 = CheckForQt5Sub(strCandidate, strOptInfix, strInfixQt5)
    20332193               if strPathQt5 <> "" then exit for
    20342194            end if
     
    20382198   end if
    20392199
    2040    ' Note! We could scan Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\UFH\SHC looking for entries
    2041    '       executing stuff like C:\qt\5.x.y\msvc2017_64\bin\qtenv2.bat
    2042 
    2043    ' Display the result.
     2200   ' Check the dev tools - prefer ones matching the compiler.
    20442201   if strPathQt5 = "" then
    2045       PrintResultMsg "Qt5", "not found"
    2046    else
     2202      LogPrint "Testing tools dir (" & g_strPathDev & "/win." & g_strTargetArch & "/qt/v5*) ..."
     2203      arrFolders = GetSubdirsStartingWithSorted(g_strPathDev & "/win." & g_strTargetArch & "/qt", "v5")
     2204      arrVccInfixes = Array(LCase(g_strVCCVersion), Left(LCase(g_strVCCVersion), Len(g_strVCCVersion) - 1), "")
     2205      for each strVccInfix in arrVccInfixes
     2206         for i = UBound(arrFolders) to LBound(arrFolders) step -1
     2207            if strVccInfix = "" or InStr(1, LCase(arrFolders(i)), strVccInfix) > 0 then
     2208               strPathQt5 = CheckForQt5Sub(g_strPathDev & "/win." & g_strTargetArch & "/qt/" & arrFolders(i), strOptInfix, strInfixQt5)
     2209               if strPathQt5 <> "" then exit for
     2210            end if
     2211         next
     2212         if strPathQt5 <> "" then exit for
     2213      next
     2214   end if
     2215
     2216   '
     2217   ' Display the result and output the config.
     2218   '
     2219   if strPathQt5 <> "" then
    20472220      PrintResult "Qt5", strPathQt5
    2048    end if
    2049 
    2050    if strPathQt5 <> "" then
     2221      PrintResultMsg "Qt5 infix", strInfixQt5
    20512222      CfgPrint "PATH_SDK_QT5          := " & strPathQt5
    20522223      CfgPrint "PATH_TOOL_QT5         := $(PATH_SDK_QT5)"
    20532224      CfgPrint "VBOX_PATH_QT          := $(PATH_SDK_QT5)"
    2054    end if
    2055    if strPathQt5 = "" then
     2225      CfgPrint "VBOX_QT_INFIX         := " & strInfixQt5
     2226      CfgPrint "VBOX_WITH_QT_PAYLOAD  := 1"
     2227   else
    20562228      CfgPrint "VBOX_WITH_QTGUI       :="
    2057    end if
    2058 end sub
    2059 
     2229      PrintResultMsg "Qt5", "not found"
     2230   end if
     2231end sub
    20602232
    20612233''
    20622234' Checks if the specified path points to an usable Qt5 library.
    2063 function CheckForQt5Sub(strPathQt5)
     2235function CheckForQt5Sub(strPathQt5, strOptInfix, ByRef strInfixQt5)
    20642236   CheckForQt5Sub = ""
    20652237   LogPrint "trying: strPathQt5=" & strPathQt5
    20662238
    20672239   if   LogFileExists(strPathQt5, "bin/moc.exe") _
    2068     And LogFileExists(strPathQt5, "bin/uic.exe") _
    2069     And LogFileExists(strPathQt5, "include/QtWidgets/qwidget.h") _
    2070     And LogFileExists(strPathQt5, "include/QtWidgets/QApplication") _
    2071     And LogFileExists(strPathQt5, "include/QtGui/QImage") _
    2072     And LogFileExists(strPathQt5, "include/QtNetwork/QHostAddress") _
    2073     And (   LogFileExists(strPathQt5, "lib/Qt5Core.lib") _
    2074          Or LogFileExists(strPathQt5, "lib/Qt5CoreVBox.lib")) _
    2075     And (   LogFileExists(strPathQt5, "lib/Qt5Network.lib") _
    2076          Or LogFileExists(strPathQt5, "lib/Qt5NetworkVBox.lib")) _
     2240    and LogFileExists(strPathQt5, "bin/uic.exe") _
     2241    and LogFileExists(strPathQt5, "include/QtWidgets/qwidget.h") _
     2242    and LogFileExists(strPathQt5, "include/QtWidgets/QApplication") _
     2243    and LogFileExists(strPathQt5, "include/QtGui/QImage") _
     2244    and LogFileExists(strPathQt5, "include/QtNetwork/QHostAddress") _
     2245   then
     2246      ' Infix testing.
     2247      if   LogFileExists(strPathQt5, "lib/Qt5Core.lib") _
     2248       and LogFileExists(strPathQt5, "lib/Qt5Network.lib") then
     2249         strInfixQt5 = ""
     2250         CheckForQt5Sub = UnixSlashes(PathAbs(strPathQt5))
     2251      elseif LogFileExists(strPathQt5, "lib/Qt5Core" & strOptInfix & ".lib") _
     2252         and LogFileExists(strPathQt5, "lib/Qt5Network" & strOptInfix & ".lib") then
     2253         strInfixQt5 = strOptInfix
     2254         CheckForQt5Sub = UnixSlashes(PathAbs(strPathQt5))
     2255      elseif LogFileExists(strPathQt5, "lib/Qt5CoreVBox.lib") _
     2256         and LogFileExists(strPathQt5, "lib/Qt5NetworkVBox.lib") then
     2257         strInfixQt5 = "VBox"
     2258         CheckForQt5Sub = UnixSlashes(PathAbs(strPathQt5))
     2259      end if
     2260   end if
     2261end function
     2262
     2263
     2264''
     2265' Checks for python.
     2266function CheckForPython(strOptPython)
     2267   dim strPathPython, arrVersions, strVer, str
     2268   PrintHdr "Python"
     2269   CheckForPython = False
     2270
     2271   '
     2272   ' Locate it.
     2273   '
     2274   strPathPython = CheckForPythonSub(strOptPython)
     2275   if strPathPython = "" then
     2276      arrVersions = Array("3.12", "3.11", "3.10", "3.9", "3.8", "3.7", "3.6", "3.5", "2.7")
     2277      for each strVer in arrVersions
     2278         strPathPython = CheckForPythonSub(RegGetString("HKLM\SOFTWARE\Python\PythonCore\" & strVer & "\InstallPath\"))
     2279         if strPathPython <> "" then exit for
     2280      next
     2281   end if
     2282   if strPathPython = "" then strPathPython = CheckForPythonSub(PathStripFilename(Which("python.exe")))
     2283
     2284   '
     2285   ' Output config & result.
     2286   '
     2287   CheckForPython = strPathPython <> ""
     2288   if CheckForPython then
     2289      CfgPrint "VBOX_BLD_PYTHON       := " & strPathPython
     2290      PrintResult "Python", strPathPython
     2291   else
     2292      PrintResultMsg "Python", "not found"
     2293   end if
     2294end function
     2295
     2296'' Worker for CheckForPython.
     2297'
     2298function CheckForPythonSub(strPathPython)
     2299   CheckForPythonSub = ""
     2300   if strPathPython <> "" then
     2301      if   LogFileExists(strPathPython, "python.exe") _
     2302       and LogDirExists(strPathPython & "/DLLs") _
    20772303      then
    2078          CheckForQt5Sub = strPathQt5
    2079    end if
    2080 end function
    2081 
    2082 
    2083 '
    2084 '
    2085 function CheckForPython(strPathPython)
    2086 
    2087    PrintHdr "Python"
    2088 
    2089    CheckForPython = False
    2090    LogPrint "trying: strPathPython=" & strPathPython
    2091 
    2092    if LogFileExists(strPathPython, "python.exe") then
    2093       CfgPrint "VBOX_BLD_PYTHON       := " & strPathPython & "\python.exe"
    2094       CheckForPython = True
    2095    end if
    2096 
    2097    PrintResult "Python ", strPathPython
     2304         CheckForPythonSub = UnixSlashes(PathAbs(strPathPython & "/python.exe"))
     2305      end if
     2306   end if
    20982307end function
    20992308
     
    21582367   strOptlibSDL = ""
    21592368   strOptQt5 = ""
     2369   strOptQt5Infix = ""
    21602370   strOptSDK = ""
    21612371   strOptVC = ""
     
    21862396      ' Process the argument
    21872397      select case LCase(strArg)
     2398         ' --with-something:
    21882399         case "--with-ddk"
    21892400            strOptDDK = strPath
     
    22002411         case "--with-qt5"
    22012412            strOptQt5 = strPath
     2413         case "--with-qt5-infix"
     2414            strOptQt5Infix = strPath
    22022415         case "--with-sdk"
    22032416            strOptSDK = strPath
     
    22222435         case "--with-python"
    22232436            strOptPython = strPath
     2437
     2438         ' --disable-something/--enable-something
    22242439         case "--disable-com"
    22252440            blnOptDisableCOM = True
     
    22282443         case "--disable-udptunnel"
    22292444            blnOptDisableUDPTunnel = True
     2445         case "--enable-udptunnel"
     2446            blnOptDisableUDPTunnel = False
    22302447         case "--disable-sdl"
    22312448            blnOptDisableSDL = True
     2449         case "--endable-sdl"
     2450            blnOptDisableSDL = False
     2451
     2452         ' Other stuff.
    22322453         case "--continue-on-error"
    22332454            g_blnContinueOnError = True
     
    22802501   end if
    22812502   CheckSourcePath
    2282    CheckForkBuild strOptkBuild
    2283    CheckForWinDDK strOptDDK
    2284    CheckForVisualCPP strOptVC, strOptVCCommon
    2285    CheckForPlatformSDK strOptSDK
     2503   CheckForkBuild       strOptkBuild
     2504   CheckForWinDDK       strOptDDK
     2505   CheckForVisualCPP    strOptVC, strOptVCCommon
     2506   CheckForPlatformSDK  strOptSDK
    22862507   CheckForMidl
    22872508   CfgPrint "VBOX_WITH_OPEN_WATCOM := " '' @todo look for openwatcom 1.9+
     
    22982519      DisableSDL "--disable-sdl"
    22992520   else
    2300       CheckForlibSDL strOptlibSDL
    2301    end if
    2302    CheckForXml2 strOptXml2
    2303    CheckForSsl strOptSsl, False
     2521      CheckForlibSDL    strOptlibSDL
     2522   end if
     2523   CheckForXml2         strOptXml2
     2524   CheckForSsl          strOptSsl, False
    23042525   if g_strTargetArch = "amd64" then
    23052526       ' 32-bit openssl required as well
    2306        CheckForSsl strOptSsl32, True
    2307    end if
    2308    CheckForCurl strOptCurl, False
     2527       CheckForSsl      strOptSsl32, True
     2528   end if
     2529   CheckForCurl         strOptCurl, False
    23092530   if g_strTargetArch = "amd64" then
    23102531       ' 32-bit Curl required as well
    2311        CheckForCurl strOptCurl32, True
    2312    end if
    2313    CheckForQt strOptQt5
    2314    if (strOptPython <> "") then
    2315      CheckForPython strOptPython
    2316    end if
     2532       CheckForCurl     strOptCurl32, True
     2533   end if
     2534   CheckForQt           strOptQt5, strOptQt5Infix
     2535   CheckForPython       strOptPython
    23172536
    23182537   Print ""
Note: See TracChangeset for help on using the changeset viewer.

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