Skip to content

Commit

Permalink
fix building with wine wrapped MSVC
Browse files Browse the repository at this point in the history
  • Loading branch information
Edremon committed Aug 22, 2024
1 parent d440a0a commit 3bc0307
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 18 deletions.
57 changes: 43 additions & 14 deletions premake5-deps.lua
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -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


Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
14 changes: 10 additions & 4 deletions premake5.lua
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -114,15 +114,19 @@ 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)
return
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

Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 3bc0307

Please sign in to comment.