diff options
Diffstat (limited to 'scripts/src/main.lua')
-rw-r--r-- | scripts/src/main.lua | 368 |
1 files changed, 158 insertions, 210 deletions
diff --git a/scripts/src/main.lua b/scripts/src/main.lua index ad0e1a1d08c..7b1971d0da1 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*" } @@ -40,17 +38,6 @@ end "GLESv2", "SDL2", } - configuration { "pnacl" } - kind "ConsoleApp" - targetextension ".pexe" - links { - "ppapi", - "ppapi_gles2", - "pthread", - } - - configuration { "winstore*" } - kind "WindowedApp" configuration { } @@ -68,67 +55,13 @@ end } 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" } + configuration { "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" } + configuration { "Debug" } targetsuffix "d" if _OPTIONS["PROFILE"] then targetsuffix "dp" @@ -137,80 +70,36 @@ 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 + 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") - 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") + 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 @@ -222,26 +111,21 @@ 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", } + links { + "osd_" .. _OPTIONS["osd"], + } + links { + "qtdbg_" .. _OPTIONS["osd"], + } --if (STANDALONE~=true) then links { "formats", @@ -252,27 +136,36 @@ if #disasm_files > 0 then "dasm", } end +if (MACHINES["NETLIST"]~=null) then + links { + "netlist", + } +end links { "utils", ext_lib("expat"), "softfloat", "softfloat3", + "wdlfft", + "ymfm", ext_lib("jpeg"), "7z", } +if CPU_INCLUDE_DRC_NATIVE then + links { + "asmjit", + } +end if (STANDALONE~=true) then links { ext_lib("lua"), "lualibs", - } -if (_OPTIONS["osd"] ~= "uwp") then - links { "linenoise", } end -end links { ext_lib("zlib"), + ext_lib("zstd"), ext_lib("flac"), ext_lib("utf8proc"), } @@ -306,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", @@ -317,11 +211,15 @@ 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", + } + if (STANDALONE==true) then standalone(); @@ -329,103 +227,153 @@ 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 }, - } - end + 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", + } 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/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) $(<) > $(@)" }}, + 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/makelist.py" }, {"@echo Building driver list...", PYTHON .. " $(1) $(<) > $(@)" }}, + }, + } + 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/makelist.py", MAME_DIR .. "src/".._target .."/" .. _target ..".lst" }, {"@echo Building driver list...", PYTHON .. " $(1) $(2) $(<) > $(@)" }}, - } + 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*" } - 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", "\\") .. "\"" , + dependency { + { "$(OBJDIR)/" .. _target .. "_" .. _subtarget .. "_vers.res", rcincfile, true }, } - - 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", "\\") .. "\"" , + "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 |