2014-09-14 08:36:58 +02:00

102 lines
2.8 KiB
Lua

-- msvc6.lua - Visual Studio 6
module(..., package.seeall)
local native = require "tundra.native"
local os = require "os"
function path_combine(path, path_to_append)
if path == nil then
return path_to_append
end
if path:find("\\$") then
return path .. path_to_append
end
return path .. "\\" .. path_to_append
end
function path_it(maybe_list)
if type(maybe_list) == "table" then
return ipairs(maybe_list)
end
return ipairs({maybe_list})
end
function apply(env, options)
if native.host_platform ~= "windows" then
error("the msvc6 toolset only works on windows hosts")
end
-- Load basic MSVC environment setup first.
-- We're going to replace the paths to some tools.
tundra.unitgen.load_toolset('msvc', env)
options = options or {}
-- We'll find any edition of VS (including Express) here
local vs_root = native.reg_query("HKLM", "SOFTWARE\\Microsoft\\VisualStudio\\6.0\\Setup\\Microsoft Visual C++", "ProductDir")
assert(vs_root, "The requested version of Visual Studio isn't installed")
vs_root = string.gsub(vs_root, "\\+$", "\\")
local common_root = native.reg_query("HKLM", "SOFTWARE\\Microsoft\\VisualStudio\\6.0\\Setup", "VsCommonDir")
assert(common_root, "The requested version of Visual Studio isn't installed")
common_root = string.gsub(common_root, "\\+$", "\\")
local vc_lib
local vc_bin
vc_bin = vs_root .. "\\bin"
vc_lib = vs_root .. "\\lib"
-- Tools
local cl_exe = '"' .. path_combine(vc_bin, "cl.exe") .. '"'
local lib_exe = '"' .. path_combine(vc_bin, "lib.exe") .. '"'
local link_exe = '"' .. path_combine(vc_bin, "link.exe") .. '"'
local rc_exe = '"' .. path_combine(common_root, "MSDev98\\Bin\\rc.exe") .. '"'
env:set('CC', cl_exe)
env:set('CXX', cl_exe)
env:set('LIB', lib_exe)
env:set('LD', link_exe)
env:set('RC', rc_exe)
env:set("RCOPTS", "") -- clear the "/nologo" option (it was first added in VS2010)
-- Wire-up the external environment
env:set_external_env_var('VSINSTALLDIR', vs_root)
env:set_external_env_var('VCINSTALLDIR', vs_root .. "\\vc")
--env:set_external_env_var('DevEnvDir', vs_root .. "Common7\\IDE")
do
local include = {
path_combine(vs_root, "ATL\\INCLUDE"),
path_combine(vs_root, "INCLUDE"),
path_combine(vs_root, "MFC\\INCLUDE"),
}
env:set_external_env_var("INCLUDE", table.concat(include, ';'))
end
do
local lib = {
path_combine(vs_root, "LIB"),
path_combine(vs_root, "MFC\\LIB"),
}
local lib_str = table.concat(lib, ';')
env:set_external_env_var("LIB", lib_str)
env:set_external_env_var("LIBPATH", lib_str)
end
-- Modify %PATH%
do
local path = {
path_combine(vs_root, "BIN"),
path_combine(common_root, "MSDev98\\BIN"),
env:get_external_env_var('PATH'),
}
env:set_external_env_var("PATH", table.concat(path, ';'))
end
end