mame/scripts/src/main.lua
Vas Crabb 97b6717027 (nw) Clean up the mess on master
This effectively reverts b380514764 and
c24473ddff, restoring the state at
598cd52272.

Before pushing, please check that what you're about to push is sane.
Check your local commit log and ensure there isn't anything out-of-place
before pushing to mainline.  When things like this happen, it wastes
everyone's time.  I really don't need this in a week when real work™ is
busting my balls and I'm behind where I want to be with preparing for
MAME release.
2019-03-26 11:13:37 +11:00

446 lines
13 KiB
Lua

-- license:BSD-3-Clause
-- copyright-holders:MAMEdev Team
---------------------------------------------------------------------------
--
-- main.lua
--
-- Rules for building main binary
--
---------------------------------------------------------------------------
function mainProject(_target, _subtarget)
if (_OPTIONS["SOURCES"] == nil) then
if (_target == _subtarget) then
project (_target)
else
if (_subtarget=="mess") then
project (_subtarget)
else
project (_target .. _subtarget)
end
end
else
project (_subtarget)
end
uuid (os.uuid(_target .."_" .. _subtarget))
kind "ConsoleApp"
configuration { "android*" }
targetprefix "lib"
targetname "main"
targetextension ".so"
linkoptions {
"-shared",
"-Wl,-soname,libmain.so"
}
links {
"EGL",
"GLESv1_CM",
"GLESv2",
"SDL2",
}
configuration { "pnacl" }
kind "ConsoleApp"
targetextension ".pexe"
links {
"ppapi",
"ppapi_gles2",
"pthread",
}
configuration { "winstore*" }
kind "WindowedApp"
configuration { }
addprojectflags()
flags {
"NoManifest",
"Symbols", -- always include minimum symbols for executables
}
if _OPTIONS["SYMBOLS"] then
configuration { "mingw*" }
postbuildcommands {
"$(SILENT) echo Dumping symbols.",
"$(SILENT) objdump --section=.text --line-numbers --syms --demangle $(TARGET) >$(subst .exe,.sym,$(TARGET))"
}
end
configuration { "winstore*" }
-- Windows Required Files
files {
-- Manifest file
MAME_DIR .. "scripts/resources/uwp/Package.appxmanifest",
}
configuration { "winstore*" }
files {
MAME_DIR .. "scripts/resources/uwp/assets/*.png"
}
configuration "**/scripts/resources/uwp/assets/*.png"
flags { "DeploymentContent" }
-- Effects and Shaders
configuration { "winstore*" }
files {
MAME_DIR .. "artwork/*",
MAME_DIR .. "artwork/**/*",
MAME_DIR .. "bgfx/*",
MAME_DIR .. "bgfx/**/*",
MAME_DIR .. "hash/*",
MAME_DIR .. "language/*",
MAME_DIR .. "language/**/*",
MAME_DIR .. "plugins/*",
MAME_DIR .. "plugins/**/*",
}
configuration "**/*"
flags { "DeploymentContent" }
configuration { "x64", "Release" }
targetsuffix "64"
if _OPTIONS["PROFILE"] then
targetsuffix "64p"
end
configuration { "x64", "Debug" }
targetsuffix "64d"
if _OPTIONS["PROFILE"] then
targetsuffix "64dp"
end
configuration { "x32", "Release" }
targetsuffix ""
if _OPTIONS["PROFILE"] then
targetsuffix "p"
end
configuration { "x32", "Debug" }
targetsuffix "d"
if _OPTIONS["PROFILE"] then
targetsuffix "dp"
end
configuration { "Native", "Release" }
targetsuffix ""
if _OPTIONS["PROFILE"] then
targetsuffix "p"
end
configuration { "Native", "Debug" }
targetsuffix "d"
if _OPTIONS["PROFILE"] then
targetsuffix "dp"
end
configuration { "mingw*" or "vs20*" }
targetextension ".exe"
configuration { "rpi" }
targetextension ""
configuration { "asmjs" }
targetextension ".bc"
if os.getenv("EMSCRIPTEN") then
local emccopts = ""
.. " -O" .. _OPTIONS["OPTIMIZE"]
.. " -s USE_SDL=2"
.. " -s USE_SDL_TTF=2"
.. " --memory-init-file 0"
.. " -s ALLOW_MEMORY_GROWTH=0"
.. " -s TOTAL_MEMORY=268435456"
.. " -s DISABLE_EXCEPTION_CATCHING=2"
.. " -s EXCEPTION_CATCHING_WHITELIST=\"['__ZN15running_machine17start_all_devicesEv','__ZN12cli_frontend7executeEiPPc','__ZN8chd_file11open_commonEb','__ZN8chd_file13read_metadataEjjRNSt3__212basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE','__ZN8chd_file13read_metadataEjjRNSt3__26vectorIhNS0_9allocatorIhEEEE']\""
.. " -s EXPORTED_FUNCTIONS=\"['_main', '_malloc', '__ZN15running_machine30emscripten_get_running_machineEv', '__ZN15running_machine17emscripten_get_uiEv', '__ZN15running_machine20emscripten_get_soundEv', '__ZN15mame_ui_manager12set_show_fpsEb', '__ZNK15mame_ui_manager8show_fpsEv', '__ZN13sound_manager4muteEbh', '_SDL_PauseAudio', '_SDL_SendKeyboardKey', '__ZN15running_machine15emscripten_saveEPKc', '__ZN15running_machine15emscripten_loadEPKc', '__ZN15running_machine21emscripten_hard_resetEv', '__ZN15running_machine21emscripten_soft_resetEv', '__ZN15running_machine15emscripten_exitEv']\""
.. " -s EXTRA_EXPORTED_RUNTIME_METHODS=\"['cwrap']\""
.. " -s ERROR_ON_UNDEFINED_SYMBOLS=0"
.. " --pre-js " .. _MAKE.esc(MAME_DIR) .. "src/osd/modules/sound/js_sound.js"
.. " --post-js " .. _MAKE.esc(MAME_DIR) .. "scripts/resources/emscripten/emscripten_post.js"
.. " --embed-file " .. _MAKE.esc(MAME_DIR) .. "bgfx/chains@bgfx/chains"
.. " --embed-file " .. _MAKE.esc(MAME_DIR) .. "bgfx/effects@bgfx/effects"
.. " --embed-file " .. _MAKE.esc(MAME_DIR) .. "bgfx/shaders/essl@bgfx/shaders/essl"
.. " --embed-file " .. _MAKE.esc(MAME_DIR) .. "artwork/slot-mask.png@artwork/slot-mask.png"
if _OPTIONS["SYMBOLS"]~=nil and _OPTIONS["SYMBOLS"]~="0" then
emccopts = emccopts
.. " -g" .. _OPTIONS["SYMLEVEL"]
.. " -s DEMANGLE_SUPPORT=1"
end
if _OPTIONS["WEBASSEMBLY"] then
emccopts = emccopts
.. " -s WASM=" .. _OPTIONS["WEBASSEMBLY"]
end
if _OPTIONS["ARCHOPTS"] then
emccopts = emccopts .. " " .. _OPTIONS["ARCHOPTS"]
end
postbuildcommands {
os.getenv("EMSCRIPTEN") .. "/emcc " .. emccopts .. " $(TARGET) -o " .. _MAKE.esc(MAME_DIR) .. _OPTIONS["target"] .. _OPTIONS["subtarget"] .. ".js",
}
end
configuration { }
if _OPTIONS["targetos"]=="android" then
includedirs {
MAME_DIR .. "3rdparty/SDL2/include",
}
files {
MAME_DIR .. "3rdparty/SDL2/src/main/android/SDL_android_main.c",
}
targetsuffix ""
if _OPTIONS["SEPARATE_BIN"]~="1" then
if _OPTIONS["PLATFORM"]=="arm" then
targetdir(MAME_DIR .. "android-project/app/src/main/libs/armeabi-v7a")
end
if _OPTIONS["PLATFORM"]=="arm64" then
targetdir(MAME_DIR .. "android-project/app/src/main/libs/arm64-v8a")
end
if _OPTIONS["PLATFORM"]=="mips" then
targetdir(MAME_DIR .. "android-project/app/src/main/libs/mips")
end
if _OPTIONS["PLATFORM"]=="mips64" then
targetdir(MAME_DIR .. "android-project/app/src/main/libs/mips64")
end
if _OPTIONS["PLATFORM"]=="x86" then
targetdir(MAME_DIR .. "android-project/app/src/main/libs/x86")
end
if _OPTIONS["PLATFORM"]=="x64" then
targetdir(MAME_DIR .. "android-project/app/src/main/libs/x86_64")
end
end
else
if _OPTIONS["SEPARATE_BIN"]~="1" then
targetdir(MAME_DIR)
end
end
if (STANDALONE~=true) then
findfunction("linkProjects_" .. _OPTIONS["target"] .. "_" .. _OPTIONS["subtarget"])(_OPTIONS["target"], _OPTIONS["subtarget"])
end
links {
"osd_" .. _OPTIONS["osd"],
}
links {
"qtdbg_" .. _OPTIONS["osd"],
}
if (STANDALONE~=true) then
links {
"frontend",
}
end
if (MACHINES["NETLIST"]~=null) then
links {
"netlist",
}
end
links {
"optional",
"emu",
}
--if (STANDALONE~=true) then
links {
"formats",
}
--end
if #disasm_files > 0 then
links {
"dasm",
}
end
links {
"utils",
ext_lib("expat"),
"softfloat",
"softfloat3",
ext_lib("jpeg"),
"7z",
}
if (STANDALONE~=true) then
links {
ext_lib("lua"),
"lualibs",
}
if (_OPTIONS["osd"] ~= "uwp") then
links {
"linenoise",
}
end
end
links {
ext_lib("zlib"),
ext_lib("flac"),
ext_lib("utf8proc"),
}
if (STANDALONE~=true) then
links {
ext_lib("sqlite3"),
}
end
if _OPTIONS["NO_USE_PORTAUDIO"]~="1" then
links {
ext_lib("portaudio"),
}
if _OPTIONS["targetos"]=="windows" then
links {
"setupapi",
}
end
end
if _OPTIONS["NO_USE_MIDI"]~="1" then
links {
ext_lib("portmidi"),
}
end
links {
"bgfx",
"bimg",
"bx",
"ocore_" .. _OPTIONS["osd"],
}
override_resources = false;
maintargetosdoptions(_target,_subtarget)
includedirs {
MAME_DIR .. "src/osd",
MAME_DIR .. "src/emu",
MAME_DIR .. "src/devices",
MAME_DIR .. "src/" .. _target,
MAME_DIR .. "src/lib",
MAME_DIR .. "src/lib/util",
MAME_DIR .. "3rdparty",
GEN_DIR .. _target .. "/layout",
GEN_DIR .. "resource",
ext_includedir("zlib"),
ext_includedir("flac"),
}
if (STANDALONE==true) then
standalone();
end
if (STANDALONE~=true) then
if _OPTIONS["targetos"]=="macosx" and (not override_resources) then
linkoptions {
"-sectcreate __TEXT __info_plist " .. _MAKE.esc(GEN_DIR) .. "resource/" .. _subtarget .. "-Info.plist"
}
custombuildtask {
{ GEN_DIR .. "version.cpp" , GEN_DIR .. "resource/" .. _subtarget .. "-Info.plist", { MAME_DIR .. "scripts/build/verinfo.py" }, {"@echo Emitting " .. _subtarget .. "-Info.plist" .. "...", PYTHON .. " $(1) -p -b " .. _subtarget .. " $(<) > $(@)" }},
}
dependency {
{ "$(TARGET)" , GEN_DIR .. "resource/" .. _subtarget .. "-Info.plist", true },
}
end
local rctarget = _subtarget
if _OPTIONS["targetos"]=="windows" and (not override_resources) then
rcfile = MAME_DIR .. "scripts/resources/windows/" .. _subtarget .. "/" .. rctarget ..".rc"
if os.isfile(rcfile) then
files {
rcfile,
}
dependency {
{ "$(OBJDIR)/".._subtarget ..".res" , GEN_DIR .. "resource/" .. rctarget .. "vers.rc", true },
}
else
rctarget = "mame"
files {
MAME_DIR .. "scripts/resources/windows/mame/mame.rc",
}
dependency {
{ "$(OBJDIR)/mame.res" , GEN_DIR .. "resource/" .. rctarget .. "vers.rc", true },
}
end
end
local mainfile = MAME_DIR .. "src/".._target .."/" .. _subtarget ..".cpp"
if not os.isfile(mainfile) then
mainfile = MAME_DIR .. "src/".._target .."/" .. _target ..".cpp"
end
files {
mainfile,
GEN_DIR .. "version.cpp",
GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.cpp",
}
if (_OPTIONS["SOURCES"] == nil) then
if os.isfile(MAME_DIR .. "src/".._target .."/" .. _subtarget ..".flt") then
dependency {
{
GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.cpp", MAME_DIR .. "src/".._target .."/" .. _target ..".lst", true },
}
custombuildtask {
{ MAME_DIR .. "src/".._target .."/" .. _subtarget ..".flt" , GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.cpp", { MAME_DIR .. "scripts/build/makelist.py", MAME_DIR .. "src/".._target .."/" .. _target ..".lst" }, {"@echo Building driver list...", PYTHON .. " $(1) $(2) $(<) > $(@)" }},
}
else
if os.isfile(MAME_DIR .. "src/".._target .."/" .. _subtarget ..".lst") then
custombuildtask {
{ MAME_DIR .. "src/".._target .."/" .. _subtarget ..".lst" , GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.cpp", { MAME_DIR .. "scripts/build/makelist.py" }, {"@echo Building driver list...", PYTHON .. " $(1) $(<) > $(@)" }},
}
else
dependency {
{
GEN_DIR .. _target .. "/" .. _target .."/drivlist.cpp", MAME_DIR .. "src/".._target .."/" .. _target ..".lst", true },
}
custombuildtask {
{ MAME_DIR .. "src/".._target .."/" .. _target ..".lst" , GEN_DIR .. _target .. "/" .. _target .."/drivlist.cpp", { MAME_DIR .. "scripts/build/makelist.py" }, {"@echo Building driver list...", PYTHON .. " $(1) $(<) > $(@)" }},
}
end
end
end
if (_OPTIONS["SOURCES"] ~= nil) then
dependency {
{
GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.cpp", MAME_DIR .. "src/".._target .."/" .. _target ..".lst", true },
}
custombuildtask {
{ GEN_DIR .. _target .."/" .. _subtarget ..".flt" , GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.cpp", { MAME_DIR .. "scripts/build/makelist.py", MAME_DIR .. "src/".._target .."/" .. _target ..".lst" }, {"@echo Building driver list...", PYTHON .. " $(1) $(2) $(<) > $(@)" }},
}
end
configuration { "mingw*" }
custombuildtask {
{ GEN_DIR .. "version.cpp" , GEN_DIR .. "resource/" .. rctarget .. "vers.rc", { MAME_DIR .. "scripts/build/verinfo.py" }, {"@echo Emitting " .. rctarget .. "vers.rc" .. "...", PYTHON .. " $(1) -r -b " .. rctarget .. " $(<) > $(@)" }},
}
configuration { "vs20*" }
prebuildcommands {
"mkdir \"" .. path.translate(GEN_DIR .. "resource/","\\") .. "\" 2>NUL",
"@echo Emitting ".. rctarget .. "vers.rc...",
PYTHON .. " \"" .. path.translate(MAME_DIR .. "scripts/build/verinfo.py","\\") .. "\" -r -b " .. rctarget .. " \"" .. path.translate(GEN_DIR .. "version.cpp","\\") .. "\" > \"" .. path.translate(GEN_DIR .. "resource/" .. rctarget .. "vers.rc", "\\") .. "\"" ,
}
configuration { "vsllvm" }
prebuildcommands {
"mkdir \"" .. path.translate(GEN_DIR .. "resource/","\\") .. "\" 2>NUL",
"@echo Emitting ".. rctarget .. "vers.rc...",
PYTHON .. " \"" .. path.translate(MAME_DIR .. "scripts/build/verinfo.py","\\") .. "\" -r -b " .. rctarget .. " \"" .. path.translate(GEN_DIR .. "version.cpp","\\") .. "\" > \"" .. path.translate(GEN_DIR .. "resource/" .. rctarget .. "vers.rc", "\\") .. "\"" ,
}
end
configuration { }
if _OPTIONS["DEBUG_DIR"]~=nil then
debugdir(_OPTIONS["DEBUG_DIR"])
else
debugdir (MAME_DIR)
end
if _OPTIONS["DEBUG_ARGS"]~=nil then
debugargs (_OPTIONS["DEBUG_ARGS"])
else
debugargs ("-window")
end
end