mirror of
https://github.com/Detanup01/gbe_fork.git
synced 2024-11-30 14:25:36 +08:00
1578 lines
47 KiB
Lua
1578 lines
47 KiB
Lua
require("premake", ">=5.0.0-beta2")
|
|
|
|
|
|
-- add "-Wl,--whole-archive -Wl,-Bstatic -lmylib -Wl,-Bdynamic -Wl,--no-whole-archive"
|
|
-- via: links { 'mylib:static_whole' }
|
|
-- https://premake.github.io/docs/Overrides-and-Call-Arrays/#introducing-overrides
|
|
premake.override(premake.tools.gcc, "getlinks", function(originalFn, cfg, systemonly, nogroups)
|
|
-- source:
|
|
-- premake.tools.gcc.getlinks(cfg, systemonly, nogroups)
|
|
-- https://github.com/premake/premake-core/blob/d842e671c7bc7e09f2eeaafd199fd01e48b87ee7/src/tools/gcc.lua#L568C15-L568C22
|
|
|
|
local result = originalFn(cfg, systemonly, nogroups)
|
|
local whole_syslibs = {"-Wl,--whole-archive"}
|
|
local static_whole_syslibs = {"-Wl,--whole-archive -Wl,-Bstatic"}
|
|
|
|
local endswith = function(s, ptrn)
|
|
return ptrn == string.sub(s, -string.len(ptrn))
|
|
end
|
|
|
|
local idx_to_remove = {}
|
|
for idx, name in ipairs(result) do
|
|
if endswith(name, ":static_whole") then
|
|
name = string.sub(name, 0, -14)
|
|
table.insert(static_whole_syslibs, name) -- it already includes '-l'
|
|
table.insert(idx_to_remove, idx)
|
|
elseif endswith(name, ":whole_archive") then
|
|
name = string.sub(name, 0, -15)
|
|
table.insert(whole_syslibs, name) -- it already includes '-l'
|
|
table.insert(idx_to_remove, idx)
|
|
end
|
|
end
|
|
|
|
-- remove from the end to avoid trouble with table indexes shifting
|
|
for iii = #idx_to_remove, 1, -1 do
|
|
table.remove(result, idx_to_remove[iii])
|
|
end
|
|
|
|
local move = function(a1, a2)
|
|
local t = #a2
|
|
for i = 1, #a1 do a2[t + i] = a1[i] end
|
|
end
|
|
|
|
local new_result = {}
|
|
if #whole_syslibs > 1 then
|
|
table.insert(whole_syslibs, "-Wl,--no-whole-archive")
|
|
move(whole_syslibs, new_result)
|
|
end
|
|
if #static_whole_syslibs > 1 then
|
|
table.insert(static_whole_syslibs, "-Wl,-Bdynamic -Wl,--no-whole-archive")
|
|
move(static_whole_syslibs, new_result)
|
|
end
|
|
|
|
-- https://stackoverflow.com/a/71719579
|
|
-- because of the dumb way linux handles linking, the order becomes important
|
|
-- I've encountered a problem with linking and it was failing with error "undefined reference to `__imp_WSACloseEvent'"
|
|
-- despite 'Ws2_32' being added to the list of libraries, turns out some symbols from 'Ws2_32' were being stripped,
|
|
-- because no library before it (on the command line) mentioned any of its symbols, the static libs were being appended afterwards on the command line,
|
|
-- and they were mentioning some of the now-stripped symbols
|
|
move(result, new_result)
|
|
return new_result
|
|
end)
|
|
|
|
local function table_append(table_dest, table_src)
|
|
local dest_start = #table_dest
|
|
for idx = 1, #table_src do
|
|
table_dest[dest_start + idx] = table_src[idx]
|
|
end
|
|
end
|
|
|
|
local function table_postfix_items(table, postfix)
|
|
local ret = {}
|
|
for idx = 1, #table do
|
|
ret[idx] = table[idx] .. postfix
|
|
end
|
|
return ret
|
|
end
|
|
|
|
-- pre-define stuff
|
|
|
|
local os_iden = '' -- identifier
|
|
if os.target() == "windows" then
|
|
os_iden = 'win'
|
|
elseif os.target() == "linux" then
|
|
os_iden = 'linux'
|
|
else
|
|
error('Unsupported os target: "' .. os.target() .. '"')
|
|
end
|
|
|
|
local deps_dir = path.getabsolute(path.join('build', 'deps', os_iden, _ACTION), _MAIN_SCRIPT_DIR)
|
|
|
|
local function genproto()
|
|
local deps_install_prefix = ''
|
|
if os.is64bit() then
|
|
deps_install_prefix = 'install64'
|
|
else
|
|
deps_install_prefix = 'install32'
|
|
end
|
|
local protoc_exe = path.join(deps_dir, 'protobuf', deps_install_prefix, 'bin', 'protoc')
|
|
|
|
local out_dir = 'proto_gen/' .. os_iden
|
|
|
|
if os.target() == "windows" then
|
|
protoc_exe = protoc_exe .. '.exe'
|
|
end
|
|
|
|
if not os.isfile(protoc_exe) then
|
|
error("protoc not found! " .. protoc_exe)
|
|
return
|
|
end
|
|
|
|
print("Generating from .proto file!")
|
|
local ok_mk, err_mk = os.mkdir(out_dir)
|
|
if not ok_mk then
|
|
error("Error: " .. err_mk)
|
|
return
|
|
end
|
|
|
|
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
|
|
|
|
newoption {
|
|
category = 'protobuf files',
|
|
trigger = "genproto",
|
|
description = "Generate .cc/.h files from .proto file",
|
|
}
|
|
|
|
newoption {
|
|
category = 'build',
|
|
trigger = "emubuild",
|
|
description = "Set the EMU_BUILD_STRING",
|
|
value = "your_string",
|
|
default = os.date("%Y_%m_%d-%H_%M_%S"),
|
|
}
|
|
|
|
newoption {
|
|
category = 'visual-includes',
|
|
trigger = "incexamples",
|
|
description = "Add all example files in the projects (no impact on build)",
|
|
}
|
|
newoption {
|
|
category = 'visual-includes',
|
|
trigger = "incdeps",
|
|
description = "Add all header files from the third-party dependencies in the projects (no impact on build)",
|
|
}
|
|
|
|
-- windows options
|
|
if os.target() == 'windows' then
|
|
|
|
newoption {
|
|
category = "build",
|
|
trigger = "dosstub",
|
|
description = "Change the DOS stub of the Windows builds",
|
|
}
|
|
|
|
newoption {
|
|
category = "build",
|
|
trigger = "winsign",
|
|
description = "Sign Windows builds with a fake certificate",
|
|
}
|
|
|
|
newoption {
|
|
category = "build",
|
|
trigger = "winrsrc",
|
|
description = "Add resources to Windows builds",
|
|
}
|
|
|
|
end
|
|
-- End windows options
|
|
|
|
|
|
-- common defines
|
|
---------
|
|
local common_emu_defines = { -- added to all filters, later defines will be appended
|
|
"UTF_CPP_CPLUSPLUS=201703L", "CURL_STATICLIB", "CONTROLLER_SUPPORT", "EMU_BUILD_STRING=" .. _OPTIONS["emubuild"],
|
|
}
|
|
|
|
-- include dirs
|
|
---------
|
|
local common_include = {
|
|
'dll',
|
|
'proto_gen/' .. os_iden,
|
|
'libs',
|
|
'libs/utfcpp',
|
|
'helpers',
|
|
'crash_printer',
|
|
'sdk',
|
|
"overlay_experimental",
|
|
}
|
|
|
|
local x32_deps_include = {
|
|
path.join(deps_dir, "libssq/include"),
|
|
path.join(deps_dir, "curl/install32/include"),
|
|
path.join(deps_dir, "protobuf/install32/include"),
|
|
path.join(deps_dir, "zlib/install32/include"),
|
|
path.join(deps_dir, "mbedtls/install32/include"),
|
|
}
|
|
|
|
local x32_deps_overlay_include = {
|
|
path.join(deps_dir, "ingame_overlay/install32/include"),
|
|
path.join(deps_dir, "ingame_overlay/deps/System/install32/include"),
|
|
path.join(deps_dir, "ingame_overlay/deps/mini_detour/install32/include"),
|
|
}
|
|
|
|
local x64_deps_include = {
|
|
path.join(deps_dir, "libssq/include"),
|
|
path.join(deps_dir, "curl/install64/include"),
|
|
path.join(deps_dir, "protobuf/install64/include"),
|
|
path.join(deps_dir, "zlib/install64/include"),
|
|
path.join(deps_dir, "mbedtls/install64/include"),
|
|
}
|
|
|
|
local x64_deps_overlay_include = {
|
|
path.join(deps_dir, "ingame_overlay/install64/include"),
|
|
path.join(deps_dir, "ingame_overlay/deps/System/install64/include"),
|
|
path.join(deps_dir, "ingame_overlay/deps/mini_detour/install64/include"),
|
|
}
|
|
|
|
|
|
-- source & header files
|
|
---------
|
|
local common_files = {
|
|
-- dll/
|
|
"dll/**",
|
|
-- proto_gen/
|
|
'proto_gen/' .. os_iden .. '/**',
|
|
-- libs
|
|
"libs/**",
|
|
-- crash_printer/
|
|
'crash_printer/' .. os_iden .. '.cpp', 'crash_printer/crash_printer/' .. os_iden .. '.hpp',
|
|
-- helpers/common_helpers
|
|
"helpers/common_helpers.cpp", "helpers/common_helpers/**",
|
|
-- helpers/dbg_log
|
|
"helpers/dbg_log.cpp", "helpers/dbg_log/**",
|
|
}
|
|
|
|
local overlay_files = {
|
|
"overlay_experimental/**",
|
|
}
|
|
|
|
local detours_files = {
|
|
"libs/detours/**",
|
|
}
|
|
|
|
|
|
-- libs to link
|
|
---------
|
|
local lib_prefix = 'lib'
|
|
local static_postfix = ''
|
|
-- GCC/Clang add this prefix by default and linking ex: '-lssq' will look for 'libssq'
|
|
-- so we have to ommit this prefix since it's automatically added
|
|
if _ACTION and string.match(_ACTION, 'gmake.*') then
|
|
lib_prefix = ''
|
|
if os.target() ~= 'windows' then -- for MinGw we compile everything with -static, and this conflicts with it
|
|
static_postfix = ':static'
|
|
end
|
|
end
|
|
|
|
local zlib_archive_name = 'z'
|
|
if os.target() == 'windows' then
|
|
zlib_archive_name = 'zlibstatic' -- even on MinGw we need this name
|
|
end
|
|
|
|
local deps_link = {
|
|
"ssq" .. static_postfix,
|
|
zlib_archive_name .. static_postfix,
|
|
lib_prefix .. "curl" .. static_postfix,
|
|
"mbedcrypto" .. static_postfix,
|
|
"mbedtls" .. static_postfix,
|
|
"mbedx509" .. static_postfix,
|
|
}
|
|
-- add protobuf libs
|
|
table_append(deps_link, {
|
|
lib_prefix .. "protobuf-lite" .. static_postfix,
|
|
"absl_bad_any_cast_impl" .. static_postfix,
|
|
"absl_bad_optional_access" .. static_postfix,
|
|
"absl_bad_variant_access" .. static_postfix,
|
|
"absl_base" .. static_postfix,
|
|
"absl_city" .. static_postfix,
|
|
"absl_civil_time" .. static_postfix,
|
|
"absl_cord" .. static_postfix,
|
|
"absl_cordz_functions" .. static_postfix,
|
|
"absl_cordz_handle" .. static_postfix,
|
|
"absl_cordz_info" .. static_postfix,
|
|
"absl_cordz_sample_token" .. static_postfix,
|
|
"absl_cord_internal" .. static_postfix,
|
|
"absl_crc32c" .. static_postfix,
|
|
"absl_crc_cord_state" .. static_postfix,
|
|
"absl_crc_cpu_detect" .. static_postfix,
|
|
"absl_crc_internal" .. static_postfix,
|
|
"absl_debugging_internal" .. static_postfix,
|
|
"absl_demangle_internal" .. static_postfix,
|
|
"absl_die_if_null" .. static_postfix,
|
|
"absl_examine_stack" .. static_postfix,
|
|
"absl_exponential_biased" .. static_postfix,
|
|
"absl_failure_signal_handler" .. static_postfix,
|
|
"absl_flags_commandlineflag" .. static_postfix,
|
|
"absl_flags_commandlineflag_internal" .. static_postfix,
|
|
"absl_flags_config" .. static_postfix,
|
|
"absl_flags_internal" .. static_postfix,
|
|
"absl_flags_marshalling" .. static_postfix,
|
|
"absl_flags_parse" .. static_postfix,
|
|
"absl_flags_private_handle_accessor" .. static_postfix,
|
|
"absl_flags_program_name" .. static_postfix,
|
|
"absl_flags_reflection" .. static_postfix,
|
|
"absl_flags_usage" .. static_postfix,
|
|
"absl_flags_usage_internal" .. static_postfix,
|
|
"absl_graphcycles_internal" .. static_postfix,
|
|
"absl_hash" .. static_postfix,
|
|
"absl_hashtablez_sampler" .. static_postfix,
|
|
"absl_int128" .. static_postfix,
|
|
"absl_kernel_timeout_internal" .. static_postfix,
|
|
"absl_leak_check" .. static_postfix,
|
|
"absl_log_entry" .. static_postfix,
|
|
"absl_log_flags" .. static_postfix,
|
|
"absl_log_globals" .. static_postfix,
|
|
"absl_log_initialize" .. static_postfix,
|
|
"absl_log_internal_check_op" .. static_postfix,
|
|
"absl_log_internal_conditions" .. static_postfix,
|
|
"absl_log_internal_fnmatch" .. static_postfix,
|
|
"absl_log_internal_format" .. static_postfix,
|
|
"absl_log_internal_globals" .. static_postfix,
|
|
"absl_log_internal_log_sink_set" .. static_postfix,
|
|
"absl_log_internal_message" .. static_postfix,
|
|
"absl_log_internal_nullguard" .. static_postfix,
|
|
"absl_log_internal_proto" .. static_postfix,
|
|
"absl_log_severity" .. static_postfix,
|
|
"absl_log_sink" .. static_postfix,
|
|
"absl_low_level_hash" .. static_postfix,
|
|
"absl_malloc_internal" .. static_postfix,
|
|
"absl_periodic_sampler" .. static_postfix,
|
|
"absl_random_distributions" .. static_postfix,
|
|
"absl_random_internal_distribution_test_util" .. static_postfix,
|
|
"absl_random_internal_platform" .. static_postfix,
|
|
"absl_random_internal_pool_urbg" .. static_postfix,
|
|
"absl_random_internal_randen" .. static_postfix,
|
|
"absl_random_internal_randen_hwaes" .. static_postfix,
|
|
"absl_random_internal_randen_hwaes_impl" .. static_postfix,
|
|
"absl_random_internal_randen_slow" .. static_postfix,
|
|
"absl_random_internal_seed_material" .. static_postfix,
|
|
"absl_random_seed_gen_exception" .. static_postfix,
|
|
"absl_random_seed_sequences" .. static_postfix,
|
|
"absl_raw_hash_set" .. static_postfix,
|
|
"absl_raw_logging_internal" .. static_postfix,
|
|
"absl_scoped_set_env" .. static_postfix,
|
|
"absl_spinlock_wait" .. static_postfix,
|
|
"absl_stacktrace" .. static_postfix,
|
|
"absl_status" .. static_postfix,
|
|
"absl_statusor" .. static_postfix,
|
|
"absl_strerror" .. static_postfix,
|
|
"absl_strings" .. static_postfix,
|
|
"absl_strings_internal" .. static_postfix,
|
|
"absl_string_view" .. static_postfix,
|
|
"absl_str_format_internal" .. static_postfix,
|
|
"absl_symbolize" .. static_postfix,
|
|
"absl_synchronization" .. static_postfix,
|
|
"absl_throw_delegate" .. static_postfix,
|
|
"absl_time" .. static_postfix,
|
|
"absl_time_zone" .. static_postfix,
|
|
"absl_vlog_config_internal" .. static_postfix,
|
|
"utf8_range" .. static_postfix,
|
|
"utf8_validity" .. static_postfix,
|
|
})
|
|
|
|
local common_link_win = {
|
|
-- os specific
|
|
"Ws2_32" .. static_postfix,
|
|
"Iphlpapi" .. static_postfix,
|
|
"Wldap32" .. static_postfix,
|
|
"Winmm" .. static_postfix,
|
|
"Bcrypt" .. static_postfix,
|
|
"Dbghelp" .. static_postfix,
|
|
-- gamepad
|
|
"Xinput" .. static_postfix,
|
|
-- imgui / overlay
|
|
"Gdi32" .. static_postfix,
|
|
"Dwmapi" .. static_postfix,
|
|
}
|
|
-- add deps to win
|
|
table_append(common_link_win, deps_link)
|
|
|
|
local common_link_linux = {
|
|
-- os specific
|
|
"pthread", "dl",
|
|
}
|
|
-- add deps to linux
|
|
table_append(common_link_linux, deps_link)
|
|
|
|
-- overlay libs
|
|
local overlay_link = {
|
|
"ingame_overlay",
|
|
"system", -- ingame_overlay dependency
|
|
"mini_detour", -- ingame_overlay dependency
|
|
}
|
|
-- we add them later when needed
|
|
|
|
|
|
-- dirs to custom libs
|
|
---------
|
|
local x32_ssq_libdir = path.join(deps_dir, "libssq/build32")
|
|
local x64_ssq_libdir = path.join(deps_dir, "libssq/build64")
|
|
|
|
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
|
|
|
|
local x32_deps_libdir = {
|
|
x32_ssq_libdir,
|
|
path.join(deps_dir, "curl/install32/lib"),
|
|
path.join(deps_dir, "protobuf/install32/lib"),
|
|
path.join(deps_dir, "zlib/install32/lib"),
|
|
path.join(deps_dir, "mbedtls/install32/lib"),
|
|
}
|
|
|
|
local x32_deps_overlay_libdir = {
|
|
path.join(deps_dir, "ingame_overlay/install32/lib"),
|
|
path.join(deps_dir, "ingame_overlay/deps/System/install32/lib"),
|
|
path.join(deps_dir, "ingame_overlay/deps/mini_detour/install32/lib"),
|
|
}
|
|
|
|
local x64_deps_libdir = {
|
|
x64_ssq_libdir,
|
|
path.join(deps_dir, "curl/install64/lib"),
|
|
path.join(deps_dir, "protobuf/install64/lib"),
|
|
path.join(deps_dir, "zlib/install64/lib"),
|
|
path.join(deps_dir, "mbedtls/install64/lib"),
|
|
path.join(deps_dir, "ingame_overlay/install64/lib"),
|
|
}
|
|
|
|
local x64_deps_overlay_libdir = {
|
|
path.join(deps_dir, "ingame_overlay/install64/lib"),
|
|
path.join(deps_dir, "ingame_overlay/deps/System/install64/lib"),
|
|
path.join(deps_dir, "ingame_overlay/deps/mini_detour/install64/lib"),
|
|
}
|
|
|
|
-- generate proto
|
|
if _OPTIONS["genproto"] then
|
|
if genproto() then
|
|
print("Success!")
|
|
else
|
|
error("protoc error")
|
|
end
|
|
end
|
|
-- End generate proto
|
|
|
|
|
|
|
|
-- tokenization
|
|
-- https://premake.github.io/docs/Tokens/
|
|
-- this means expand the global var 'abc' --> %{abc}
|
|
-- this means expand the global var 'abc' and resolve its full path --> %{!abc}
|
|
-- this means expand the global var 'abc' as a filepath agnostic to the shell (bash/cmd) --> %[%{abc}]
|
|
|
|
-- string concat and functions calls
|
|
-- https://premake.github.io/docs/Your-First-Script#functions-and-arguments
|
|
-- "asd" .. "zxc" --> "asdzxc"
|
|
-- when doing string concat, call premake functions/actions with regular brackets
|
|
-- this will work: targetdir("build/" .. os_iden)
|
|
-- this will fail: targetdir "build/" .. os_iden
|
|
-- both are function calls actually, ex: filter({ 'a', 'b' }) is similar to filter { 'a', 'b' }
|
|
|
|
-- stuff defined globally will affect all workspaces & projects
|
|
-- https://premake.github.io/docs/Scopes-and-Inheritance/
|
|
|
|
filter {} -- reset the filter and remove all active keywords
|
|
configurations { "debug", "release", }
|
|
platforms { "x64", "x32", }
|
|
language "C++"
|
|
cppdialect "C++17"
|
|
cdialect "C17"
|
|
filter { "system:not windows", "action:gmake*" , }
|
|
cdialect("gnu17") -- gamepad.c relies on some linux-specific functions like strdup() and MAX_PATH
|
|
filter {} -- reset the filter and remove all active keywords
|
|
characterset "Unicode"
|
|
staticruntime "on" -- /MT or /MTd
|
|
runtime "Release" -- ensure we never link with /MTd, otherwise deps linking will fail
|
|
flags {
|
|
"NoPCH", -- no precompiled header on Windows
|
|
"MultiProcessorCompile", -- /MP "Enable Visual Studio to use multiple compiler processes when building"
|
|
"RelativeLinks",
|
|
}
|
|
targetprefix "" -- prevent adding the prefix libxxx on linux
|
|
visibility "Hidden" -- hide all symbols by default on GCC (unless they are marked visible)
|
|
linkgroups "On" -- turn off the awful order dependent linking on gcc/clang, causes the linker to go back and forth to find missing symbols
|
|
exceptionhandling "On" -- "Enable exception handling. ... although it does not affect execution."
|
|
stringpooling "On" -- cache similar strings
|
|
vpaths { -- just for visual niceness, see: https://premake.github.io/docs/vpaths/
|
|
["headers/*"] = {
|
|
"**.h", "**.hxx", "**.hpp",
|
|
},
|
|
["src/*"] = {
|
|
"**.c", "**.cxx", "**.cpp", "**.cc",
|
|
},
|
|
["proto/*"] = {
|
|
"**.proto",
|
|
},
|
|
["docs/*"] = {
|
|
-- post build
|
|
"post_build/**",
|
|
-- licence files
|
|
"**/LICENSE", "**/LICENCE",
|
|
"**.LICENSE", "**.LICENCE",
|
|
"**.mit",
|
|
-- anything else
|
|
"**.txt", "**.md",
|
|
},
|
|
}
|
|
|
|
|
|
-- arch
|
|
---------
|
|
filter { "platforms:x32", }
|
|
architecture "x86"
|
|
filter { "platforms:x64", }
|
|
architecture "x86_64"
|
|
|
|
|
|
-- debug/optimization flags
|
|
---------
|
|
filter {} -- reset the filter and remove all active keywords
|
|
intrinsics "On"
|
|
filter { "configurations:*debug", }
|
|
symbols "On"
|
|
optimize "Off"
|
|
filter { "configurations:*release", }
|
|
symbols "Off"
|
|
optimize "On"
|
|
|
|
|
|
--- common compiler/linker options
|
|
---------
|
|
-- Visual Studio common compiler/linker options
|
|
filter { "action:vs*", }
|
|
buildoptions {
|
|
"/permissive-", "/DYNAMICBASE", "/bigobj",
|
|
"/utf-8", "/Zc:char8_t-", "/EHsc", "/GL-"
|
|
}
|
|
linkoptions {
|
|
-- source of emittoolversioninfo: https://developercommunity.visualstudio.com/t/add-linker-option-to-strip-rich-stamp-from-exe-hea/740443
|
|
"/NOLOGO", "/emittoolversioninfo:no"
|
|
}
|
|
-- GNU make common compiler/linker options
|
|
filter { "action:gmake*", }
|
|
buildoptions {
|
|
-- https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html
|
|
"-fno-jump-tables" , "-Wno-switch",
|
|
}
|
|
linkoptions {
|
|
"-Wl,--exclude-libs,ALL",
|
|
}
|
|
-- this is made separate because GCC complains but not CLANG
|
|
filter { "action:gmake*" , "files:*.cpp or *.cxx or *.cc or *.hpp or *.hxx", }
|
|
buildoptions {
|
|
"-fno-char8_t", -- GCC gives a warning when a .c file is compiled with this
|
|
}
|
|
filter {} -- reset the filter and remove all active keywords
|
|
|
|
|
|
-- defines
|
|
---------
|
|
filter {} -- reset the filter and remove all active keywords
|
|
defines { -- added to all filters, later defines will be appended
|
|
common_emu_defines,
|
|
}
|
|
-- release mode defines
|
|
filter { "configurations:*release" }
|
|
defines {
|
|
"NDEBUG", "EMU_RELEASE_BUILD"
|
|
}
|
|
-- debug mode defines
|
|
filter { "configurations:*debug" }
|
|
defines {
|
|
"DEBUG",
|
|
}
|
|
-- Windows defines
|
|
filter { "system:windows", }
|
|
defines {
|
|
"_CRT_SECURE_NO_WARNINGS",
|
|
}
|
|
-- Linux defines
|
|
filter { "system:not windows" }
|
|
defines {
|
|
"GNUC",
|
|
}
|
|
|
|
|
|
-- MinGw on Windows
|
|
-- common compiler/linker options: source: https://gcc.gnu.org/onlinedocs/gcc/Cygwin-and-MinGW-Options.html
|
|
---------
|
|
filter { "system:windows", "action:gmake*", }
|
|
-- MinGw on Windows common defines
|
|
-- MinGw on Windows doesn't have a definition for '_S_IFDIR' which is microsoft specific: https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/stat-functions
|
|
-- this is used in 'base.cpp' -> if ( buffer.st_mode & _S_IFDIR)
|
|
-- instead microsoft has an alternative but only enabled when _CRT_DECLARE_NONSTDC_NAMES is defined
|
|
-- https://learn.microsoft.com/en-us/cpp/c-runtime-library/compatibility
|
|
defines {
|
|
-- '_CRT_NONSTDC_NO_WARNINGS',
|
|
'_CRT_DECLARE_NONSTDC_NAMES',
|
|
}
|
|
linkoptions {
|
|
-- I don't know why but if libgcc/libstdc++ as well as pthreads are not statically linked
|
|
-- none of the output binary .dlls will reach their DllMain() in x64dbg
|
|
-- even when they're force-loaded in any process they immediately unload
|
|
-- '-static-libgcc' ,'-static-libstdc++',
|
|
'-static',
|
|
}
|
|
-- MinGw on Windows cannot compile 'creatwth.cpp' from Detours lib (error: 'DWordMult' was not declared in this scope)
|
|
-- because intsafe.h isn't included by default
|
|
filter { "system:windows", "action:gmake*", "files:**/detours/creatwth.cpp" }
|
|
buildoptions {
|
|
"-include intsafe.h",
|
|
}
|
|
|
|
|
|
-- add extra files for clearance
|
|
filter {} -- reset the filter and remove all active keywords
|
|
-- post build docs
|
|
filter { 'options:incexamples', }
|
|
files {
|
|
'post_build/**',
|
|
}
|
|
filter { 'options:incexamples', 'system:not windows', }
|
|
removefiles {
|
|
'post_build/win/**'
|
|
}
|
|
|
|
-- deps
|
|
filter { 'options:incdeps', "platforms:x32", }
|
|
files {
|
|
table_postfix_items(x32_deps_include, '/**.h'),
|
|
table_postfix_items(x32_deps_include, '/**.hxx'),
|
|
table_postfix_items(x32_deps_include, '/**.hpp'),
|
|
}
|
|
filter { 'options:incdeps', "platforms:x64", }
|
|
files {
|
|
table_postfix_items(x64_deps_include, '/**.h'),
|
|
table_postfix_items(x64_deps_include, '/**.hxx'),
|
|
table_postfix_items(x64_deps_include, '/**.hpp'),
|
|
}
|
|
filter {} -- reset the filter and remove all active keywords
|
|
|
|
|
|
-- include dirs
|
|
---------
|
|
-- common include dir
|
|
filter {} -- reset the filter and remove all active keywords
|
|
includedirs {
|
|
common_include,
|
|
}
|
|
|
|
|
|
-- disable warnings for external libraries/deps
|
|
filter { 'files:proto_gen/** or libs/** or build/deps/**' }
|
|
warnings 'Off'
|
|
filter {} -- reset the filter and remove all active keywords
|
|
|
|
|
|
|
|
-- post build change DOS stub + sign
|
|
---------
|
|
if os.target() == "windows" then
|
|
|
|
-- token expansion like '%{cfg.platform}' happens later during project build
|
|
local dos_stub_exe = path.translate(path.getabsolute('resources/win/file_dos_stub/file_dos_stub_%{cfg.platform}.exe', _MAIN_SCRIPT_DIR), '\\')
|
|
local signer_tool = path.translate(path.getabsolute('third-party/build/win/cert/sign_helper.bat', _MAIN_SCRIPT_DIR), '\\')
|
|
-- change dos stub
|
|
filter { "system:windows", "options:dosstub", }
|
|
postbuildcommands {
|
|
'"' .. dos_stub_exe .. '" %[%{!cfg.buildtarget.abspath}]',
|
|
}
|
|
-- sign
|
|
filter { "system:windows", "options:winsign", }
|
|
postbuildcommands {
|
|
'"' .. signer_tool .. '" %[%{!cfg.buildtarget.abspath}]',
|
|
}
|
|
filter {} -- reset the filter and remove all active keywords
|
|
end
|
|
|
|
|
|
|
|
workspace "gbe"
|
|
location("build/project/%{_ACTION}/" .. os_iden)
|
|
|
|
|
|
-- Project api_regular
|
|
---------
|
|
project "api_regular"
|
|
kind "SharedLib"
|
|
location "%{wks.location}/%{prj.name}"
|
|
targetdir("build/" .. os_iden .. "/%{_ACTION}/%{cfg.buildcfg}/regular/%{cfg.platform}")
|
|
|
|
|
|
-- name
|
|
---------
|
|
filter { "system:windows", "platforms:x32", }
|
|
targetname "steam_api"
|
|
filter { "system:windows", "platforms:x64", }
|
|
targetname "steam_api64"
|
|
filter { "system:not windows", }
|
|
targetname "libsteam_api"
|
|
|
|
|
|
-- x32 include dir
|
|
filter { "platforms:x32", }
|
|
includedirs {
|
|
x32_deps_include,
|
|
}
|
|
|
|
-- x64 include dir
|
|
filter { "platforms:x64", }
|
|
includedirs {
|
|
x64_deps_include,
|
|
}
|
|
|
|
|
|
-- common source & header files
|
|
---------
|
|
filter {} -- reset the filter and remove all active keywords
|
|
files { -- added to all filters, later defines will be appended
|
|
common_files,
|
|
}
|
|
removefiles {
|
|
detours_files,
|
|
}
|
|
-- Windows common source files
|
|
filter { "system:windows", }
|
|
removefiles {
|
|
"dll/wrap.cpp"
|
|
}
|
|
-- Windows x32 common source files
|
|
filter { "system:windows", "platforms:x32", "options:winrsrc", }
|
|
files {
|
|
"resources/win/api/32/resources.rc"
|
|
}
|
|
-- Windows x64 common source files
|
|
filter { "system:windows", "platforms:x64", "options:winrsrc", }
|
|
files {
|
|
"resources/win/api/64/resources.rc"
|
|
}
|
|
|
|
|
|
-- libs to link
|
|
---------
|
|
-- Windows libs to link
|
|
filter { "system:windows", }
|
|
links {
|
|
common_link_win,
|
|
}
|
|
|
|
-- Linux libs to link
|
|
filter { "system:not windows", }
|
|
links {
|
|
common_link_linux,
|
|
}
|
|
|
|
|
|
-- libs search dir
|
|
---------
|
|
-- x32 libs search dir
|
|
filter { "platforms:x32", }
|
|
libdirs {
|
|
x32_deps_libdir,
|
|
}
|
|
-- x64 libs search dir
|
|
filter { "platforms:x64", }
|
|
libdirs {
|
|
x64_deps_libdir,
|
|
}
|
|
-- End api_regular
|
|
|
|
|
|
-- Project api_experimental
|
|
---------
|
|
project "api_experimental"
|
|
kind "SharedLib"
|
|
location "%{wks.location}/%{prj.name}"
|
|
targetdir("build/" .. os_iden .. "/%{_ACTION}/%{cfg.buildcfg}/experimental/%{cfg.platform}")
|
|
|
|
|
|
-- name
|
|
---------
|
|
filter { "system:windows", "platforms:x32", }
|
|
targetname "steam_api"
|
|
filter { "system:windows", "platforms:x64", }
|
|
targetname "steam_api64"
|
|
filter { "system:not windows", }
|
|
targetname "libsteam_api"
|
|
|
|
|
|
-- defines
|
|
---------
|
|
filter {} -- reset the filter and remove all active keywords
|
|
defines { -- added to all filters, later defines will be appended
|
|
"EMU_OVERLAY", "ImTextureID=ImU64",
|
|
}
|
|
-- Windows defines
|
|
filter { "system:windows" }
|
|
defines {
|
|
"EMU_EXPERIMENTAL_BUILD",
|
|
}
|
|
|
|
|
|
-- include dir
|
|
---------
|
|
-- x32 include dir
|
|
filter { "platforms:x32", }
|
|
includedirs {
|
|
x32_deps_include,
|
|
x32_deps_overlay_include,
|
|
}
|
|
-- x64 include dir
|
|
filter { "platforms:x64", }
|
|
includedirs {
|
|
x64_deps_include,
|
|
x64_deps_overlay_include,
|
|
}
|
|
|
|
|
|
-- common source & header files
|
|
---------
|
|
filter {} -- reset the filter and remove all active keywords
|
|
files { -- added to all filters, later defines will be appended
|
|
common_files,
|
|
overlay_files,
|
|
}
|
|
removefiles {
|
|
'libs/detours/uimports.cc',
|
|
}
|
|
-- deps
|
|
filter { 'options:incdeps', "platforms:x32", }
|
|
files {
|
|
table_postfix_items(x32_deps_overlay_include, '/**.h'),
|
|
table_postfix_items(x32_deps_overlay_include, '/**.hxx'),
|
|
table_postfix_items(x32_deps_overlay_include, '/**.hpp'),
|
|
}
|
|
filter { 'options:incdeps', "platforms:x64", }
|
|
files {
|
|
table_postfix_items(x64_deps_overlay_include, '/**.h'),
|
|
table_postfix_items(x64_deps_overlay_include, '/**.hxx'),
|
|
table_postfix_items(x64_deps_overlay_include, '/**.hpp'),
|
|
}
|
|
-- Windows common source files
|
|
filter { "system:windows", }
|
|
removefiles {
|
|
"dll/wrap.cpp"
|
|
}
|
|
-- Windows x32 common source files
|
|
filter { "system:windows", "platforms:x32", "options:winrsrc", }
|
|
files {
|
|
"resources/win/api/32/resources.rc"
|
|
}
|
|
-- Windows x64 common source files
|
|
filter { "system:windows", "platforms:x64", "options:winrsrc", }
|
|
files {
|
|
"resources/win/api/64/resources.rc"
|
|
}
|
|
-- Linux common source files
|
|
filter { "system:not windows", }
|
|
removefiles {
|
|
detours_files,
|
|
}
|
|
|
|
|
|
-- libs to link
|
|
---------
|
|
filter {} -- reset the filter and remove all active keywords
|
|
links {
|
|
overlay_link,
|
|
}
|
|
-- Windows libs to link
|
|
filter { "system:windows", }
|
|
links {
|
|
common_link_win,
|
|
}
|
|
|
|
-- Linux libs to link
|
|
filter { "system:not windows", }
|
|
links {
|
|
common_link_linux,
|
|
"X11"
|
|
}
|
|
|
|
|
|
-- libs search dir
|
|
---------
|
|
-- x32 libs search dir
|
|
filter { "platforms:x32", }
|
|
libdirs {
|
|
x32_deps_libdir,
|
|
x32_deps_overlay_libdir,
|
|
}
|
|
-- x64 libs search dir
|
|
filter { "platforms:x64", }
|
|
libdirs {
|
|
x64_deps_libdir,
|
|
x64_deps_overlay_libdir,
|
|
}
|
|
-- End api_experimental
|
|
|
|
|
|
-- Project steamclient_experimental
|
|
---------
|
|
project "steamclient_experimental"
|
|
kind "SharedLib"
|
|
location "%{wks.location}/%{prj.name}"
|
|
|
|
-- targetdir
|
|
---------
|
|
filter { "system:windows", }
|
|
targetdir("build/" .. os_iden .. "/%{_ACTION}/%{cfg.buildcfg}/steamclient_experimental")
|
|
filter { "system:not windows", }
|
|
targetdir("build/" .. os_iden .. "/%{_ACTION}/%{cfg.buildcfg}/experimental/%{cfg.platform}")
|
|
|
|
|
|
-- name
|
|
---------
|
|
filter { "system:windows", "platforms:x32", }
|
|
targetname "steamclient"
|
|
filter { "system:windows", "platforms:x64", }
|
|
targetname "steamclient64"
|
|
filter { "system:not windows", }
|
|
targetname "steamclient"
|
|
|
|
|
|
-- defines
|
|
---------
|
|
filter {} -- reset the filter and remove all active keywords
|
|
defines { -- added to all filters, later defines will be appended
|
|
"STEAMCLIENT_DLL", "EMU_OVERLAY", "ImTextureID=ImU64",
|
|
}
|
|
-- Windows defines
|
|
filter { "system:windows" }
|
|
defines {
|
|
"EMU_EXPERIMENTAL_BUILD",
|
|
}
|
|
|
|
|
|
-- include dir
|
|
---------
|
|
-- x32 include dir
|
|
filter { "platforms:x32", }
|
|
includedirs {
|
|
x32_deps_include,
|
|
x32_deps_overlay_include,
|
|
}
|
|
|
|
-- x64 include dir
|
|
filter { "platforms:x64", }
|
|
includedirs {
|
|
x64_deps_include,
|
|
x64_deps_overlay_include,
|
|
}
|
|
|
|
|
|
-- common source & header files
|
|
---------
|
|
filter {} -- reset the filter and remove all active keywords
|
|
files { -- added to all filters, later defines will be appended
|
|
common_files,
|
|
overlay_files,
|
|
}
|
|
removefiles {
|
|
'libs/detours/uimports.cc',
|
|
}
|
|
-- deps
|
|
filter { 'options:incdeps', "platforms:x32", }
|
|
files {
|
|
table_postfix_items(x32_deps_overlay_include, '/**.h'),
|
|
table_postfix_items(x32_deps_overlay_include, '/**.hxx'),
|
|
table_postfix_items(x32_deps_overlay_include, '/**.hpp'),
|
|
}
|
|
filter { 'options:incdeps', "platforms:x64", }
|
|
files {
|
|
table_postfix_items(x64_deps_overlay_include, '/**.h'),
|
|
table_postfix_items(x64_deps_overlay_include, '/**.hxx'),
|
|
table_postfix_items(x64_deps_overlay_include, '/**.hpp'),
|
|
}
|
|
-- Windows common source files
|
|
filter { "system:windows", }
|
|
removefiles {
|
|
"dll/wrap.cpp"
|
|
}
|
|
-- Windows x32 common source files
|
|
filter { "system:windows", "platforms:x32", "options:winrsrc", }
|
|
files {
|
|
"resources/win/client/32/resources.rc"
|
|
}
|
|
-- Windows x64 common source files
|
|
filter { "system:windows", "platforms:x64", "options:winrsrc", }
|
|
files {
|
|
"resources/win/client/64/resources.rc"
|
|
}
|
|
-- Linux common source files
|
|
filter { "system:not windows", }
|
|
removefiles {
|
|
detours_files,
|
|
}
|
|
|
|
|
|
-- libs to link
|
|
---------
|
|
filter {} -- reset the filter and remove all active keywords
|
|
links {
|
|
overlay_link,
|
|
}
|
|
-- Windows libs to link
|
|
filter { "system:windows", }
|
|
links {
|
|
common_link_win,
|
|
}
|
|
|
|
-- Linux libs to link
|
|
filter { "system:not windows", }
|
|
links {
|
|
common_link_linux,
|
|
}
|
|
|
|
|
|
-- libs search dir
|
|
---------
|
|
-- x32 libs search dir
|
|
filter { "platforms:x32", }
|
|
libdirs {
|
|
x32_deps_libdir,
|
|
x32_deps_overlay_libdir,
|
|
}
|
|
-- x64 libs search dir
|
|
filter { "platforms:x64", }
|
|
libdirs {
|
|
x64_deps_libdir,
|
|
x64_deps_overlay_libdir,
|
|
}
|
|
-- End steamclient_experimental
|
|
|
|
|
|
-- Project tool_lobby_connect
|
|
---------
|
|
project "tool_lobby_connect"
|
|
kind "ConsoleApp"
|
|
location "%{wks.location}/%{prj.name}"
|
|
targetdir("build/" .. os_iden .. "/%{_ACTION}/%{cfg.buildcfg}/tools/lobby_connect")
|
|
targetname "lobby_connect_%{cfg.platform}"
|
|
|
|
|
|
-- defines
|
|
---------
|
|
filter {} -- reset the filter and remove all active keywords
|
|
defines { -- added to all filters, later defines will be appended
|
|
"NO_DISK_WRITES", "LOBBY_CONNECT",
|
|
}
|
|
removedefines {
|
|
"CONTROLLER_SUPPORT",
|
|
}
|
|
|
|
|
|
-- include dir
|
|
---------
|
|
-- common include dir
|
|
-- x32 include dir
|
|
filter { "platforms:x32", }
|
|
includedirs {
|
|
x32_deps_include,
|
|
}
|
|
|
|
-- x64 include dir
|
|
filter { "platforms:x64", }
|
|
includedirs {
|
|
x64_deps_include,
|
|
}
|
|
|
|
|
|
-- common source & header files
|
|
---------
|
|
filter {} -- reset the filter and remove all active keywords
|
|
files { -- added to all filters, later defines will be appended
|
|
common_files,
|
|
'tools/lobby_connect/lobby_connect.cpp'
|
|
}
|
|
removefiles {
|
|
"libs/gamepad/**",
|
|
detours_files,
|
|
}
|
|
-- Windows x32 common source files
|
|
filter { "system:windows", "platforms:x32", "options:winrsrc", }
|
|
files {
|
|
"resources/win/launcher/32/resources.rc"
|
|
}
|
|
-- Windows x64 common source files
|
|
filter { "system:windows", "platforms:x64", "options:winrsrc", }
|
|
files {
|
|
"resources/win/launcher/64/resources.rc"
|
|
}
|
|
|
|
|
|
-- libs to link
|
|
---------
|
|
-- Windows libs to link
|
|
filter { "system:windows", }
|
|
links {
|
|
common_link_win,
|
|
'Comdlg32',
|
|
}
|
|
|
|
-- Linux libs to link
|
|
filter { "system:not windows", }
|
|
links {
|
|
common_link_linux,
|
|
}
|
|
|
|
|
|
-- libs search dir
|
|
---------
|
|
-- x32 libs search dir
|
|
filter { "platforms:x32", }
|
|
libdirs {
|
|
x32_deps_libdir,
|
|
}
|
|
-- x64 libs search dir
|
|
filter { "platforms:x64", }
|
|
libdirs {
|
|
x64_deps_libdir,
|
|
}
|
|
-- End tool_lobby_connect
|
|
|
|
|
|
-- Project tool_generate_interfaces
|
|
project "tool_generate_interfaces"
|
|
kind "ConsoleApp"
|
|
location "%{wks.location}/%{prj.name}"
|
|
targetdir("build/" .. os_iden .. "/%{_ACTION}/%{cfg.buildcfg}/tools/generate_interfaces")
|
|
targetname "generate_interfaces_%{cfg.platform}"
|
|
|
|
|
|
-- common source & header files
|
|
---------
|
|
files {
|
|
"tools/generate_interfaces/generate_interfaces.cpp"
|
|
}
|
|
-- End tool_generate_interfaces
|
|
|
|
|
|
-- Project lib_steamnetworkingsockets START
|
|
project "lib_steamnetworkingsockets"
|
|
kind "SharedLib"
|
|
location "%{wks.location}/%{prj.name}"
|
|
targetdir("build/" .. os_iden .. "/%{_ACTION}/%{cfg.buildcfg}/steamnetworkingsockets/%{cfg.platform}")
|
|
targetname "steamnetworkingsockets"
|
|
|
|
|
|
-- common source & header files
|
|
---------
|
|
files {
|
|
"networking_sockets_lib/**",
|
|
"helpers/dbg_log.cpp", "helpers/dbg_log/**",
|
|
'helpers/common_helpers.cpp', 'helpers/common_helpers/**',
|
|
}
|
|
|
|
|
|
-- End lib_steamnetworkingsockets
|
|
|
|
|
|
-- Project lib_game_overlay_renderer
|
|
project "lib_game_overlay_renderer"
|
|
kind "SharedLib"
|
|
location "%{wks.location}/%{prj.name}"
|
|
|
|
|
|
-- targetdir
|
|
---------
|
|
filter { "system:windows", }
|
|
targetdir("build/" .. os_iden .. "/%{_ACTION}/%{cfg.buildcfg}/steamclient_experimental")
|
|
filter { "system:not windows", }
|
|
targetdir("build/" .. os_iden .. "/%{_ACTION}/%{cfg.buildcfg}/gameoverlayrenderer/%{cfg.platform}")
|
|
|
|
|
|
-- name
|
|
---------
|
|
filter { "system:windows", "platforms:x32", }
|
|
targetname "GameOverlayRenderer"
|
|
filter { "system:windows", "platforms:x64", }
|
|
targetname "GameOverlayRenderer64"
|
|
filter { "system:not windows", }
|
|
targetname "gameoverlayrenderer"
|
|
|
|
|
|
-- include dir
|
|
---------
|
|
-- x32 include dir
|
|
filter { "platforms:x32", }
|
|
includedirs {
|
|
x32_deps_include,
|
|
}
|
|
|
|
-- x64 include dir
|
|
filter { "platforms:x64", }
|
|
includedirs {
|
|
x64_deps_include,
|
|
}
|
|
|
|
|
|
-- common source & header files
|
|
---------
|
|
filter {} -- reset the filter and remove all active keywords
|
|
files {
|
|
"game_overlay_renderer_lib/**"
|
|
}
|
|
-- x32 common source files
|
|
filter { "system:windows", "platforms:x32", "options:winrsrc", }
|
|
files {
|
|
"resources/win/game_overlay_renderer/32/resources.rc"
|
|
}
|
|
-- x64 common source files
|
|
filter { "system:windows", "platforms:x64", "options:winrsrc", }
|
|
files {
|
|
"resources/win/game_overlay_renderer/64/resources.rc"
|
|
}
|
|
-- End lib_game_overlay_renderer
|
|
|
|
|
|
|
|
-- WINDOWS ONLY TARGETS START
|
|
if os.target() == "windows" then
|
|
|
|
|
|
-- Project steamclient_experimental_stub
|
|
---------
|
|
project "steamclient_experimental_stub"
|
|
-- https://stackoverflow.com/a/63228027
|
|
kind "SharedLib"
|
|
location "%{wks.location}/%{prj.name}"
|
|
targetdir("build/" .. os_iden .. "/%{_ACTION}/%{cfg.buildcfg}/experimental/%{cfg.platform}")
|
|
|
|
|
|
-- name
|
|
---------
|
|
filter { "platforms:x32", }
|
|
targetname "steamclient"
|
|
filter { "platforms:x64", }
|
|
targetname "steamclient64"
|
|
|
|
|
|
-- common source & header files
|
|
---------
|
|
filter {} -- reset the filter and remove all active keywords
|
|
files { -- added to all filters, later defines will be appended
|
|
"steamclient/steamclient.cpp",
|
|
}
|
|
-- x32 common source files
|
|
filter { "platforms:x32", "options:winrsrc", }
|
|
files {
|
|
"resources/win/client/32/resources.rc"
|
|
}
|
|
-- x64 common source files
|
|
filter { "platforms:x64", "options:winrsrc", }
|
|
files {
|
|
"resources/win/client/64/resources.rc"
|
|
}
|
|
-- End steamclient_experimental_stub
|
|
|
|
|
|
-- Project steamclient_experimental_extra
|
|
project "steamclient_experimental_extra"
|
|
kind "SharedLib"
|
|
location "%{wks.location}/%{prj.name}"
|
|
targetdir("build/" .. os_iden .. "/%{_ACTION}/%{cfg.buildcfg}/steamclient_experimental/extra_dlls")
|
|
targetname "steamclient_extra_%{cfg.platform}"
|
|
|
|
|
|
-- include dir
|
|
---------
|
|
-- x32 include dir
|
|
filter { "platforms:x32", }
|
|
includedirs {
|
|
x32_deps_include,
|
|
}
|
|
-- x64 include dir
|
|
filter { "platforms:x64", }
|
|
includedirs {
|
|
x64_deps_include,
|
|
}
|
|
|
|
|
|
-- common source & header files
|
|
---------
|
|
filter {} -- reset the filter and remove all active keywords
|
|
files {
|
|
"tools/steamclient_loader/win/extra_protection/**",
|
|
"helpers/pe_helpers.cpp", "helpers/pe_helpers/**",
|
|
"helpers/common_helpers.cpp", "helpers/common_helpers/**",
|
|
-- detours
|
|
detours_files,
|
|
}
|
|
removefiles {
|
|
'libs/detours/uimports.cc',
|
|
}
|
|
-- x32 common source files
|
|
filter { "platforms:x32", "options:winrsrc", }
|
|
files {
|
|
"resources/win/client/32/resources.rc"
|
|
}
|
|
-- x64 common source files
|
|
filter { "platforms:x64", "options:winrsrc", }
|
|
files {
|
|
"resources/win/client/64/resources.rc"
|
|
}
|
|
-- End steamclient_experimental_extra
|
|
|
|
|
|
-- Project steamclient_experimental_loader
|
|
project "steamclient_experimental_loader"
|
|
kind "WindowedApp"
|
|
location "%{wks.location}/%{prj.name}"
|
|
targetdir("build/" .. os_iden .. "/%{_ACTION}/%{cfg.buildcfg}/steamclient_experimental")
|
|
targetname "steamclient_loader_%{cfg.platform}"
|
|
|
|
|
|
--- common compiler/linker options
|
|
---------
|
|
-- MinGW on Windows
|
|
filter { "action:gmake*", }
|
|
-- source: https://gcc.gnu.org/onlinedocs/gcc/Cygwin-and-MinGW-Options.html
|
|
linkoptions {
|
|
-- MinGW on Windows cannot link wWinMain by default
|
|
"-municode",
|
|
}
|
|
|
|
|
|
-- common source & header files
|
|
---------
|
|
filter {} -- reset the filter and remove all active keywords
|
|
files {
|
|
"tools/steamclient_loader/win/*", -- we want the .ini too
|
|
"helpers/pe_helpers.cpp", "helpers/pe_helpers/**",
|
|
"helpers/common_helpers.cpp", "helpers/common_helpers/**",
|
|
"helpers/dbg_log.cpp", "helpers/dbg_log/**",
|
|
"libs/simpleini/**",
|
|
}
|
|
-- x32 common source files
|
|
filter { "platforms:x32", "options:winrsrc", }
|
|
files {
|
|
"resources/win/launcher/32/resources.rc"
|
|
}
|
|
-- x64 common source files
|
|
filter { "platforms:x64", "options:winrsrc", }
|
|
files {
|
|
"resources/win/launcher/64/resources.rc"
|
|
}
|
|
|
|
|
|
-- libs to link
|
|
---------
|
|
filter {} -- reset the filter and remove all active keywords
|
|
links {
|
|
-- common_link_win,
|
|
'user32',
|
|
}
|
|
-- End steamclient_experimental_loader
|
|
|
|
|
|
-- Project tool_file_dos_stub_changer
|
|
project "tool_file_dos_stub_changer"
|
|
kind "ConsoleApp"
|
|
location "%{wks.location}/%{prj.name}"
|
|
targetdir("build/" .. os_iden .. "/%{_ACTION}/%{cfg.buildcfg}/file_dos_stub_changer")
|
|
targetname "file_dos_stub_%{cfg.platform}"
|
|
|
|
|
|
-- common source & header files
|
|
---------
|
|
filter {} -- reset the filter and remove all active keywords
|
|
files {
|
|
"resources/win/file_dos_stub/file_dos_stub.cpp",
|
|
"helpers/pe_helpers.cpp", "helpers/pe_helpers/**",
|
|
"helpers/common_helpers.cpp", "helpers/common_helpers/**",
|
|
}
|
|
-- End tool_file_dos_stub_changer
|
|
|
|
|
|
-- Project test_crash_printer
|
|
---------
|
|
project "test_crash_printer"
|
|
kind "ConsoleApp"
|
|
location "%{wks.location}/%{prj.name}"
|
|
targetdir("build/" .. os_iden .. "/%{_ACTION}/%{cfg.buildcfg}/tests/crash_printer")
|
|
targetname "test_crash_printer_%{cfg.platform}"
|
|
|
|
|
|
-- common source & header files
|
|
---------
|
|
filter {} -- reset the filter and remove all active keywords
|
|
files { -- added to all filters, later defines will be appended
|
|
'crash_printer/' .. os_iden .. '.cpp', 'crash_printer/crash_printer/' .. os_iden .. '.hpp',
|
|
-- helpers
|
|
'helpers/common_helpers.cpp', 'helpers/common_helpers/**',
|
|
-- test files
|
|
'crash_printer/tests/test_win.cpp',
|
|
}
|
|
removefiles {
|
|
'post_build/**',
|
|
'build/deps/**',
|
|
}
|
|
|
|
|
|
-- libs to link
|
|
---------
|
|
filter {} -- reset the filter and remove all active keywords
|
|
-- Windows libs
|
|
links {
|
|
'Dbghelp',
|
|
}
|
|
|
|
|
|
-- post build
|
|
---------
|
|
filter {} -- reset the filter and remove all active keywords
|
|
postbuildcommands {
|
|
'%[%{!cfg.buildtarget.abspath}]',
|
|
}
|
|
-- End test_crash_printer
|
|
|
|
end
|
|
-- End WINDOWS ONLY TARGETS
|
|
|
|
|
|
|
|
-- LINUX ONLY TARGETS START
|
|
if os.target() == "linux" then
|
|
|
|
-- Project steamclient_regular
|
|
---------
|
|
project "steamclient_regular"
|
|
kind "SharedLib"
|
|
location "%{wks.location}/%{prj.name}"
|
|
targetdir("build/" .. os_iden .. "/%{_ACTION}/%{cfg.buildcfg}/regular/%{cfg.platform}")
|
|
targetname "steamclient"
|
|
|
|
|
|
-- defines
|
|
---------
|
|
filter {} -- reset the filter and remove all active keywords
|
|
defines { -- added to all filters, later defines will be appended
|
|
"STEAMCLIENT_DLL",
|
|
}
|
|
|
|
|
|
-- include dir
|
|
---------
|
|
-- x32 include dir
|
|
filter { "platforms:x32", }
|
|
includedirs {
|
|
x32_deps_include,
|
|
}
|
|
-- x64 include dir
|
|
filter { "platforms:x64", }
|
|
includedirs {
|
|
x64_deps_include,
|
|
}
|
|
|
|
|
|
-- common source & header files
|
|
---------
|
|
filter {} -- reset the filter and remove all active keywords
|
|
files { -- added to all filters, later defines will be appended
|
|
common_files,
|
|
}
|
|
removefiles {
|
|
detours_files,
|
|
}
|
|
|
|
|
|
-- libs to link
|
|
---------
|
|
filter {} -- reset the filter and remove all active keywords
|
|
links { -- added to all filters, later defines will be appended
|
|
common_link_linux,
|
|
}
|
|
|
|
-- libs search dir
|
|
---------
|
|
-- x32 libs search dir
|
|
filter { "platforms:x32", }
|
|
libdirs {
|
|
x32_deps_libdir,
|
|
}
|
|
-- x64 libs search dir
|
|
filter { "platforms:x64", }
|
|
libdirs {
|
|
x64_deps_libdir,
|
|
}
|
|
-- End steamclient_regular
|
|
|
|
|
|
-- Project test_crash_printer_sa_handler
|
|
---------
|
|
project "test_crash_printer_sa_handler"
|
|
kind "ConsoleApp"
|
|
location "%{wks.location}/%{prj.name}"
|
|
targetdir("build/" .. os_iden .. "/%{_ACTION}/%{cfg.buildcfg}/tests/crash_printer")
|
|
targetname "test_crash_printer_sa_handler_%{cfg.platform}"
|
|
|
|
|
|
-- common source & header files
|
|
---------
|
|
filter {} -- reset the filter and remove all active keywords
|
|
files { -- added to all filters, later defines will be appended
|
|
'crash_printer/' .. os_iden .. '.cpp', 'crash_printer/crash_printer/' .. os_iden .. '.hpp',
|
|
-- helpers
|
|
'helpers/common_helpers.cpp', 'helpers/common_helpers/**',
|
|
-- test files
|
|
'crash_printer/tests/test_linux_sa_handler.cpp',
|
|
}
|
|
removefiles {
|
|
'post_build/**',
|
|
'build/deps/**',
|
|
}
|
|
|
|
|
|
-- post build
|
|
---------
|
|
filter {} -- reset the filter and remove all active keywords
|
|
postbuildcommands {
|
|
'%[%{!cfg.buildtarget.abspath}]',
|
|
}
|
|
|
|
-- End test_crash_printer_sa_handler
|
|
|
|
|
|
-- Project test_crash_printer_sa_sigaction
|
|
---------
|
|
project "test_crash_printer_sa_sigaction"
|
|
kind "ConsoleApp"
|
|
location "%{wks.location}/%{prj.name}"
|
|
targetdir("build/" .. os_iden .. "/%{_ACTION}/%{cfg.buildcfg}/tests/crash_printer")
|
|
targetname "test_crash_printer_sa_sigaction_%{cfg.platform}"
|
|
|
|
|
|
-- common source & header files
|
|
---------
|
|
filter {} -- reset the filter and remove all active keywords
|
|
files { -- added to all filters, later defines will be appended
|
|
'crash_printer/' .. os_iden .. '.cpp', 'crash_printer/crash_printer/' .. os_iden .. '.hpp',
|
|
-- helpers
|
|
'helpers/common_helpers.cpp', 'helpers/common_helpers/**',
|
|
-- test files
|
|
'crash_printer/tests/test_linux_sa_sigaction.cpp',
|
|
}
|
|
removefiles {
|
|
'post_build/**',
|
|
'build/deps/**',
|
|
}
|
|
|
|
|
|
-- post build
|
|
---------
|
|
filter {} -- reset the filter and remove all active keywords
|
|
postbuildcommands {
|
|
'%[%{!cfg.buildtarget.abspath}]',
|
|
}
|
|
-- End test_crash_printer_sa_sigaction
|
|
|
|
end
|
|
-- End LINUX ONLY TARGETS
|
|
|
|
-- End Workspace
|