fix building with wine wrapped MSVC

This commit is contained in:
Edremon 2024-08-22 01:53:27 +00:00
parent d440a0ad73
commit 3bc03070aa
2 changed files with 53 additions and 18 deletions

View File

@ -40,6 +40,22 @@ newoption {
default = nil
}
newoption {
category = "tools",
trigger = "cmake-toolchain",
description = "Use cmake toolchain",
value = 'path/to/toolchain.cmake',
default = nil
}
newoption {
category = "tools",
trigger = "custom-extractor",
description = "Use custom extractor",
value = 'path/to/7z.exe',
default = nil
}
-- deps extraction
newoption {
category = "extract",
@ -177,11 +193,16 @@ if not third_party_dir or not os.isdir(third_party_dir) then
error('third-party dir is missing')
end
if os.host() == 'windows' then
extractor = extractor .. '.exe'
end
if not extractor or not os.isfile(extractor) then
error('extractor is missing from third-party dir. extractor: ' .. extractor)
if _OPTIONS["custom-extractor"] then
extractor = _OPTIONS["custom-extractor"]
print('using custom extractor: ' .. _OPTIONS["custom-extractor"])
else
if os.host() == 'windows' then
extractor = extractor .. '.exe'
end
if not extractor or not os.isfile(extractor) then
error('extractor is missing from third-party dir. extractor: ' .. extractor)
end
end
@ -241,11 +262,14 @@ local function cmake_build(dep_folder, is_32, extra_cmd_defs, c_flags_init, cxx_
table.insert(all_cxxflags_init, '/MT')
table.insert(all_cxxflags_init, '/D_MT')
if is_32 then
cmd_gen = cmd_gen .. ' -A Win32'
else
cmd_gen = cmd_gen .. ' -A x64'
local cmake_generator = os.getenv("CMAKE_GENERATOR") or ""
if cmake_generator == "" and os.host() == 'windows' or cmake_generator:find("Visual Studio") then
if is_32 then
cmd_gen = cmd_gen .. ' -A Win32'
else
cmd_gen = cmd_gen .. ' -A x64'
end
end
else
error("unsupported action for cmake build: " .. _ACTION)
@ -283,6 +307,9 @@ local function cmake_build(dep_folder, is_32, extra_cmd_defs, c_flags_init, cxx_
-- write toolchain file
local toolchain_file_content = ''
if _OPTIONS["cmake-toolchain"] then
toolchain_file_content='include(' .. _OPTIONS["cmake-toolchain"] .. ')\n\n'
end
if #cflags_init_str > 0 then
toolchain_file_content = toolchain_file_content .. 'set(CMAKE_C_FLAGS_INIT "' .. cflags_init_str .. '" )\n'
end
@ -361,10 +388,12 @@ end
-- chmod tools
if os.host() == "linux" then
local ok_chmod, err_chmod = os.chmod(extractor, "777")
if not ok_chmod then
error("cannot chmod: " .. err_chmod)
return
if not _OPTIONS["custom-extractor"] then
local ok_chmod, err_chmod = os.chmod(extractor, "777")
if not ok_chmod then
error("cannot chmod: " .. err_chmod)
return
end
end
if not _OPTIONS["custom-cmake"] then

View File

@ -99,7 +99,7 @@ local function genproto()
local out_dir = 'proto_gen/' .. os_iden
if os.host() == "windows" then
if os.target() == "windows" then
protoc_exe = protoc_exe .. '.exe'
end
@ -114,8 +114,8 @@ local function genproto()
error("Error: " .. err_mk)
return
end
if os.host() == "linux" then
if os.target() == "linux" then
local ok_chmod, err_chmod = os.chmod(protoc_exe, "777")
if not ok_chmod then
error("Error: " .. err_chmod)
@ -123,6 +123,10 @@ local function genproto()
end
end
if (os.host() == "linux" and os.target() == "windows") then
protoc_exe = 'wine ' .. protoc_exe
end
return os.execute(protoc_exe .. ' dll/net.proto -I./dll/ --cpp_out=' .. out_dir)
end
@ -406,7 +410,9 @@ local overlay_link = {
---------
local x32_ssq_libdir = path.join(deps_dir, "libssq/build32")
local x64_ssq_libdir = path.join(deps_dir, "libssq/build64")
if _ACTION and string.match(_ACTION, 'vs.+') then
local cmake_generator = os.getenv("CMAKE_GENERATOR") or ""
if cmake_generator == "" and os.host() == 'windows' or cmake_generator:find("Visual Studio") then
x32_ssq_libdir = x32_ssq_libdir .. "/Release"
x64_ssq_libdir = x64_ssq_libdir .. "/Release"
end