aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXpol Wan <xpolife@gmail.com>2015-11-01 14:08:09 +0800
committerXpol Wan <xpolife@gmail.com>2015-11-01 14:08:09 +0800
commit21839814515a42e9c2da4a9cbc28029bddbab43e (patch)
tree39c480e11717264d3218167fa46e5896b2411de6
parent4c3b41e765cf42afecfba8e32965e5c057c96870 (diff)
downloadluarocks-21839814515a42e9c2da4a9cbc28029bddbab43e.tar.gz
luarocks-21839814515a42e9c2da4a9cbc28029bddbab43e.tar.bz2
luarocks-21839814515a42e9c2da4a9cbc28029bddbab43e.zip
Support Visual Studio Express Editions and cleanup code.
-rw-r--r--install.bat32
1 files changed, 18 insertions, 14 deletions
diff --git a/install.bat b/install.bat
index 0514af1b..01461667 100644
--- a/install.bat
+++ b/install.bat
@@ -412,21 +412,18 @@ end
412-- get a string value from windows registry. 412-- get a string value from windows registry.
413local function get_registry(key, value) 413local function get_registry(key, value)
414 local keys = {key} 414 local keys = {key}
415 local key64, replaces = key:gsub("(%u+\\SOFTWARE\\)", "\1Wow6432Node\\", 1) 415 local key64, replaced = key:gsub("(%u+\\Software\\)", "\1Wow6432Node\\", 1)
416 if replaces == 0 then
417 key64, replaces = key:gsub("(%u+\\Software\\)", "\1Wow6432Node\\", 1)
418 end
419 416
420 if replaces == 1 then 417 if replaced == 1 then
421 table.insert(keys, 1, key64) 418 keys = {key64, key}
422 end 419 end
423 420
424 for _, k in ipairs(keys) do 421 for _, k in ipairs(keys) do
425 local h = io.popen('reg query "'..k..'" /v '..value..' 2>NUL') 422 local h = io.popen('reg query "'..k..'" /v '..value..' 2>NUL')
426 local output = h:read('*a') 423 local output = h:read("*a")
427 h:close() 424 h:close()
428 425
429 local v = output:match('REG_SZ%s+([^\n]+)') 426 local v = output:match("REG_SZ%s+([^\n]+)")
430 if v then 427 if v then
431 return v 428 return v
432 end 429 end
@@ -437,9 +434,16 @@ end
437-- requires vars.LUA_RUNTIME to be set before calling this function. 434-- requires vars.LUA_RUNTIME to be set before calling this function.
438local function get_visual_studio_directory() 435local function get_visual_studio_directory()
439 local major, minor = vars.LUA_RUNTIME:match('VCR%u*(%d+)(%d)$') -- MSVCR<x><y> or VCRUNTIME<x><y> 436 local major, minor = vars.LUA_RUNTIME:match('VCR%u*(%d+)(%d)$') -- MSVCR<x><y> or VCRUNTIME<x><y>
440 if not major then return "" end 437 if not major then return nil end
441 local key = ("HKLM\\SOFTWARE\\Microsoft\\VisualStudio\\%d.%d\\Setup\\VC"):format(major, minor) 438 local keys = {
442 return get_registry(key, 'ProductDir') 439 "HKLM\\Software\\Microsoft\\VisualStudio\\%d.%d\\Setup\\VC",
440 "HKLM\\Software\\Microsoft\\VCExpress\\%d.%d\\Setup\\VS"
441 }
442 for _, key in ipairs(keys) do
443 local vcdir = get_registry(key:format(major, minor), "ProductDir")
444 if vcdir then return vcdir end
445 end
446 return nil
443end 447end
444 448
445-- requires vars.LUA_RUNTIME to be set before calling this function. 449-- requires vars.LUA_RUNTIME to be set before calling this function.
@@ -456,8 +460,8 @@ local function get_windows_sdk_directory()
456 return nil 460 return nil
457 end 461 end
458 462
459 local key = "HKLM\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows\\"..wsdkver 463 local key = "HKLM\\Software\\Microsoft\\Microsoft SDKs\\Windows\\"..wsdkver
460 return get_registry(key, 'InstallationFolder') 464 return get_registry(key, "InstallationFolder")
461end 465end
462-- returns the batch command to setup msvc compiler path. 466-- returns the batch command to setup msvc compiler path.
463-- requires vars.LUA_RUNTIME and vars.UNAME_M to be set before calling this function. 467-- requires vars.LUA_RUNTIME and vars.UNAME_M to be set before calling this function.
@@ -486,7 +490,7 @@ local function get_msvc_env_setup_cmd()
486 if wsdkdir then 490 if wsdkdir then
487 local setenv = wsdkdir.."Bin\\SetEnv.cmd" 491 local setenv = wsdkdir.."Bin\\SetEnv.cmd"
488 if exists(setenv) then 492 if exists(setenv) then
489 return ("call \"%s\" /Release /%s"):format(setenv, x64 and "x64" or "x86") 493 return ('call "%s" /Release /%s'):format(setenv, x64 and "x64" or "x86")
490 end 494 end
491 end 495 end
492 496