summaryrefslogtreecommitdiffstatshomepage
path: root/scripts/src/main.lua
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/src/main.lua')
-rw-r--r--scripts/src/main.lua292
1 files changed, 158 insertions, 134 deletions
diff --git a/scripts/src/main.lua b/scripts/src/main.lua
index 04cccabc0c0..0192d849676 100644
--- a/scripts/src/main.lua
+++ b/scripts/src/main.lua
@@ -10,20 +10,18 @@
---------------------------------------------------------------------------
function mainProject(_target, _subtarget)
-if (_OPTIONS["SOURCES"] == nil) then
+local projname
+if (_OPTIONS["SOURCES"] == nil) and (_OPTIONS["SOURCEFILTER"] == nil) then
if (_target == _subtarget) then
- project (_target)
+ projname = _target
else
- if (_subtarget=="mess") then
- project (_subtarget)
- else
- project (_target .. _subtarget)
- end
+ projname = _target .. _subtarget
end
else
- project (_subtarget)
+ projname = _subtarget
end
- uuid (os.uuid(_target .."_" .. _subtarget))
+ project (projname)
+ uuid (os.uuid(_target .. "_" .. _subtarget))
kind "ConsoleApp"
configuration { "android*" }
@@ -73,86 +71,35 @@ end
targetextension ".exe"
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 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','__ZNK19netlist_mame_device19base_validity_checkER16validity_checker']\""
- .. " -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"
- .. " -s USE_WEBGL2=1"
- .. " -s LEGACY_GL_EMULATION=1"
- .. " -s GL_UNSAFE_OPTS=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/bgfx@artwork/bgfx"
- .. " --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"]
- else
- emccopts = emccopts
- .. " -s WASM=1"
- end
-
- if _OPTIONS["WEBASSEMBLY"]~=nil and _OPTIONS["WEBASSEMBLY"]=="0" then
- -- define a fixed memory size because allowing memory growth disables asm.js optimizations
- emccopts = emccopts
- .. " -s ALLOW_MEMORY_GROWTH=0"
- .. " -s TOTAL_MEMORY=268435456"
- else
- emccopts = emccopts
- .. " -s ALLOW_MEMORY_GROWTH=1"
- 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",
- os.getenv("EMSCRIPTEN") .. "/emcc " .. emccopts .. " $(TARGET) -o " .. _MAKE.esc(MAME_DIR) .. _OPTIONS["target"] .. _OPTIONS["subtarget"] .. ".html",
- }
- end
+ targetextension ".html"
configuration { }
if _OPTIONS["targetos"]=="android" then
- includedirs {
- MAME_DIR .. "3rdparty/SDL2/include",
- }
-
files {
- MAME_DIR .. "3rdparty/SDL2/src/main/android/SDL_android_main.c",
+ MAME_DIR .. "src/osd/sdl/android_main.cpp",
}
targetsuffix ""
if _OPTIONS["SEPARATE_BIN"]~="1" then
if _OPTIONS["PLATFORM"]=="arm" then
targetdir(MAME_DIR .. "android-project/app/src/main/libs/armeabi-v7a")
+ os.copyfile(_OPTIONS["SDL_INSTALL_ROOT"] .. "/lib/libSDL2.so", MAME_DIR .. "android-project/app/src/main/libs/armeabi-v7a/libSDL2.so")
+ os.copyfile(androidToolchainRoot() .. "/sysroot/usr/lib/arm-linux-androideabi/libc++_shared.so", MAME_DIR .. "android-project/app/src/main/libs/armeabi-v7a/libc++_shared.so")
end
if _OPTIONS["PLATFORM"]=="arm64" then
targetdir(MAME_DIR .. "android-project/app/src/main/libs/arm64-v8a")
+ os.copyfile(_OPTIONS["SDL_INSTALL_ROOT"] .. "/lib/libSDL2.so", MAME_DIR .. "android-project/app/src/main/libs/arm64-v8a/libSDL2.so")
+ os.copyfile(androidToolchainRoot() .. "/sysroot/usr/lib/aarch64-linux-android/libc++_shared.so", MAME_DIR .. "android-project/app/src/main/libs/arm64-v8a/libc++_shared.so")
end
if _OPTIONS["PLATFORM"]=="x86" then
targetdir(MAME_DIR .. "android-project/app/src/main/libs/x86")
+ os.copyfile(_OPTIONS["SDL_INSTALL_ROOT"] .. "/lib/libSDL2.so", MAME_DIR .. "android-project/app/src/main/libs/x86/libSDL2.so")
+ os.copyfile(androidToolchainRoot() .. "/sysroot/usr/lib/i686-linux-android/libc++_shared.so", MAME_DIR .. "android-project/app/src/main/libs/x86/libc++_shared.so")
end
if _OPTIONS["PLATFORM"]=="x64" then
targetdir(MAME_DIR .. "android-project/app/src/main/libs/x86_64")
+ os.copyfile(_OPTIONS["SDL_INSTALL_ROOT"] .. "/lib/libSDL2.so", MAME_DIR .. "android-project/app/src/main/libs/x86_64/libSDL2.so")
+ os.copyfile(androidToolchainRoot() .. "/sysroot/usr/lib/x86_64-linux-android/libc++_shared.so", MAME_DIR .. "android-project/app/src/main/libs/x86_64/libc++_shared.so")
end
end
else
@@ -164,12 +111,6 @@ 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",
@@ -179,6 +120,12 @@ end
"optional",
"emu",
}
+ links {
+ "osd_" .. _OPTIONS["osd"],
+ }
+ links {
+ "qtdbg_" .. _OPTIONS["osd"],
+ }
--if (STANDALONE~=true) then
links {
"formats",
@@ -218,6 +165,7 @@ if (STANDALONE~=true) then
end
links {
ext_lib("zlib"),
+ ext_lib("zstd"),
ext_lib("flac"),
ext_lib("utf8proc"),
}
@@ -251,7 +199,8 @@ end
override_resources = false;
- maintargetosdoptions(_target,_subtarget)
+ maintargetosdoptions(_target, _subtarget)
+ local exename = projname -- FIXME: should include the OSD prefix if any
includedirs {
MAME_DIR .. "src/osd",
@@ -262,11 +211,23 @@ end
MAME_DIR .. "src/lib/util",
MAME_DIR .. "3rdparty",
GEN_DIR .. _target .. "/layout",
- GEN_DIR .. "resource",
ext_includedir("zlib"),
ext_includedir("flac"),
}
+ resincludedirs {
+ MAME_DIR .. "scripts/resources/windows/" .. _target,
+ GEN_DIR .. "resource",
+ }
+
+ configuration { "vs20*"}
+ -- See https://github.com/bkaradzic/GENie/issues/544
+ includedirs {
+ MAME_DIR .. "scripts/resources/windows/" .. _target,
+ GEN_DIR .. "resource",
+ }
+ configuration { }
+
if (STANDALONE==true) then
standalone();
@@ -274,96 +235,159 @@ end
if (STANDALONE~=true) then
if _OPTIONS["targetos"]=="macosx" and (not override_resources) then
+ local plistname = _target .. "_" .. _subtarget .. "-Info.plist"
linkoptions {
- "-sectcreate __TEXT __info_plist " .. _MAKE.esc(GEN_DIR) .. "resource/" .. _subtarget .. "-Info.plist"
+ "-sectcreate __TEXT __info_plist " .. _MAKE.esc(GEN_DIR) .. "resource/" .. plistname
}
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 .. " $(<) > $(@)" }},
+ {
+ GEN_DIR .. "version.cpp",
+ GEN_DIR .. "resource/" .. plistname,
+ { MAME_DIR .. "scripts/build/verinfo.py" },
+ {
+ "@echo Emitting " .. plistname .. "...",
+ PYTHON .. " $(1) -f plist -t " .. _target .. " -s " .. _subtarget .. " -e " .. exename .. " -o $(@) $(<)"
+ }
+ },
}
dependency {
- { "$(TARGET)" , GEN_DIR .. "resource/" .. _subtarget .. "-Info.plist", true },
+ { "$(TARGET)" , GEN_DIR .. "resource/" .. plistname, true },
}
end
- local rctarget = _subtarget
+ local rcversfile = GEN_DIR .. "resource/" .. _target .. "_" .. _subtarget .. "_vers.rc"
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 },
+ files {
+ rcversfile
+ }
+ end
+
+ local rcincfile = MAME_DIR .. "scripts/resources/windows/" .. _target .. "/" .. _subtarget ..".rc"
+ if not os.isfile(rcincfile) then
+ rcincfile = MAME_DIR .. "scripts/resources/windows/mame/mame.rc"
+ resincludedirs {
+ MAME_DIR .. "scripts/resources/windows/mame",
+ }
+ configuration { "vs20*"}
+ -- See https://github.com/bkaradzic/GENie/issues/544
+ includedirs {
+ MAME_DIR .. "scripts/resources/windows/mame",
}
- end
+ configuration { }
end
- local mainfile = MAME_DIR .. "src/".._target .."/" .. _subtarget ..".cpp"
+ local mainfile = MAME_DIR .. "src/" .. _target .. "/" .. _subtarget .. ".cpp"
if not os.isfile(mainfile) then
- mainfile = MAME_DIR .. "src/".._target .."/" .. _target ..".cpp"
+ mainfile = MAME_DIR .. "src/" .. _target .. "/" .. _target .. ".cpp"
end
files {
mainfile,
GEN_DIR .. "version.cpp",
- GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.cpp",
+ GEN_DIR .. _target .. "/" .. _subtarget .. "/drivlist.cpp",
}
- if (_OPTIONS["SOURCES"] == nil) then
-
- if os.isfile(MAME_DIR .. "src/".._target .."/" .. _subtarget ..".flt") then
- dependency {
+ local driverlist = MAME_DIR .. "src/" .. _target .. "/" .. _target .. ".lst"
+ local driverssrc = GEN_DIR .. _target .. "/" .. _subtarget .. "/drivlist.cpp"
+ if _OPTIONS["SOURCES"] ~= nil then
+ dependency {
+ { driverssrc, driverlist, true },
+ }
+ custombuildtask {
{
- 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/makedep.py", MAME_DIR .. "src/".._target .."/" .. _target ..".lst" }, {"@echo Building driver list...", PYTHON .. " $(1) driverlist $(2) -f $(<) > $(@)" }},
- }
- 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/makedep.py" }, {"@echo Building driver list...", PYTHON .. " $(1) driverlist $(<) > $(@)" }},
+ GEN_DIR .. _target .."/" .. _subtarget .. ".flt" ,
+ driverssrc,
+ { MAME_DIR .. "scripts/build/makedep.py", driverlist },
+ {
+ "@echo Building driver list...",
+ PYTHON .. " $(1) -r " .. MAME_DIR .. " driverlist $(2) -f $(<) > $(@)"
}
- else
- dependency {
+ },
+ }
+ elseif _OPTIONS["SOURCEFILTER"] ~= nil then
+ dependency {
+ { driverssrc, driverlist, true },
+ }
+ custombuildtask {
+ {
+ MAME_DIR .. _OPTIONS["SOURCEFILTER"],
+ driverssrc,
+ { MAME_DIR .. "scripts/build/makedep.py", driverlist },
{
- GEN_DIR .. _target .. "/" .. _target .."/drivlist.cpp", MAME_DIR .. "src/".._target .."/" .. _target ..".lst", true },
+ "@echo Building driver list...",
+ PYTHON .. " $(1) -r " .. MAME_DIR .. " driverlist $(2) -f $(<) > $(@)"
}
- custombuildtask {
- { MAME_DIR .. "src/".._target .."/" .. _target ..".lst" , GEN_DIR .. _target .. "/" .. _target .."/drivlist.cpp", { MAME_DIR .. "scripts/build/makedep.py" }, {"@echo Building driver list...", PYTHON .. " $(1) driverlist $(<) > $(@)" }},
+ },
+ }
+ elseif os.isfile(MAME_DIR .. "src/" .. _target .."/" .. _subtarget ..".flt") then
+ dependency {
+ { driverssrc, driverlist, true },
+ }
+ custombuildtask {
+ {
+ MAME_DIR .. "src/" .. _target .. "/" .. _subtarget .. ".flt",
+ driverssrc,
+ { MAME_DIR .. "scripts/build/makedep.py", driverlist },
+ {
+ "@echo Building driver list...",
+ PYTHON .. " $(1) -r " .. MAME_DIR .. " driverlist $(2) -f $(<) > $(@)"
}
- end
- end
- end
-
- if (_OPTIONS["SOURCES"] ~= nil) then
- dependency {
+ },
+ }
+ elseif os.isfile(MAME_DIR .. "src/" .._target .. "/" .. _subtarget ..".lst") then
+ custombuildtask {
{
- 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/makedep.py", MAME_DIR .. "src/".._target .."/" .. _target ..".lst" }, {"@echo Building driver list...", PYTHON .. " $(1) driverlist $(2) -f $(<) > $(@)" }},
- }
+ MAME_DIR .. "src/" .. _target .. "/" .. _subtarget .. ".lst",
+ driverssrc,
+ { MAME_DIR .. "scripts/build/makedep.py" },
+ {
+ "@echo Building driver list...",
+ PYTHON .. " $(1) -r " .. MAME_DIR .. " driverlist $(<) > $(@)"
+ }
+ },
+ }
+ else
+ dependency {
+ { driverssrc, driverlist, true },
+ }
+ custombuildtask {
+ {
+ driverlist,
+ driverssrc,
+ { MAME_DIR .. "scripts/build/makedep.py" },
+ {
+ "@echo Building driver list...",
+ PYTHON .. " $(1) -r " .. MAME_DIR .. " driverlist $(<) > $(@)"
+ }
+ },
+ }
end
configuration { "mingw*" }
+ dependency {
+ { "$(OBJDIR)/" .. _target .. "_" .. _subtarget .. "_vers.res", rcincfile, true },
+ }
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 .. " $(<) > $(@)" }},
+ {
+ GEN_DIR .. "version.cpp" ,
+ rcversfile,
+ { MAME_DIR .. "scripts/build/verinfo.py" },
+ {
+ "@echo Emitting " .. _target .. "_" .. _subtarget .. "_vers.rc" .. "...",
+ PYTHON .. " $(1) -f rc -t " .. _target .. " -s " .. _subtarget .. " -e " .. exename .. " -r " .. path.getname(rcincfile) .. " -o $(@) $(<)"
+ }
+ },
}
configuration { "vs20*" }
+ dependency {
+ { "$(OBJDIR)/" .. _target .. "_" .. _subtarget .. "_vers.res", rcincfile, true },
+ }
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", "\\") .. "\"" ,
+ "mkdir \"" .. path.translate(GEN_DIR .. "resource/", "\\") .. "\" 2>NUL",
+ "mkdir \"" .. path.translate(GEN_DIR .. _target .. "/" .. _subtarget .. "/", "\\") .. "\" 2>NUL",
+ "@echo Emitting " .. _target .. "_" .. _subtarget .. "_vers.rc" .. "...",
+ PYTHON .. " \"" .. path.translate(MAME_DIR .. "scripts/build/verinfo.py", "\\") .. "\" -f rc -t " .. _target .. " -s " .. _subtarget .. " -e " .. exename .. " -o \"" .. path.translate(rcversfile) .. "\" -r \"" .. path.getname(rcincfile) .. "\" \"" .. path.translate(GEN_DIR .. "version.cpp", "\\") .. "\"",
}
end