mirror of
https://github.com/holub/mame
synced 2025-04-27 10:43:07 +03:00

* Removed SDL2 source. * Updated gradle. * Updated SDL2 Java support glue code. * Increased minimum supported Android API version to 24. * Updated required asset files for Android app. * Added proper tag for Android logging. * Added SDL2 hint to make BGFX work on Android.
407 lines
10 KiB
Lua
407 lines
10 KiB
Lua
-- license:BSD-3-Clause
|
|
-- copyright-holders:MAMEdev Team
|
|
|
|
---------------------------------------------------------------------------
|
|
--
|
|
-- main.lua
|
|
--
|
|
-- Rules for building main binary
|
|
--
|
|
---------------------------------------------------------------------------
|
|
|
|
function mainProject(_target, _subtarget)
|
|
local projname
|
|
if (_OPTIONS["SOURCES"] == nil) and (_OPTIONS["SOURCEFILTER"] == nil) then
|
|
if (_target == _subtarget) then
|
|
projname = _target
|
|
else
|
|
projname = _target .. _subtarget
|
|
end
|
|
else
|
|
projname = _subtarget
|
|
end
|
|
project (projname)
|
|
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 { }
|
|
|
|
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 { "Release" }
|
|
targetsuffix ""
|
|
if _OPTIONS["PROFILE"] then
|
|
targetsuffix "p"
|
|
end
|
|
|
|
configuration { "Debug" }
|
|
targetsuffix "d"
|
|
if _OPTIONS["PROFILE"] then
|
|
targetsuffix "dp"
|
|
end
|
|
|
|
configuration { "mingw*" or "vs20*" }
|
|
targetextension ".exe"
|
|
|
|
configuration { "asmjs" }
|
|
targetextension ".html"
|
|
|
|
configuration { }
|
|
|
|
if _OPTIONS["targetos"]=="android" then
|
|
files {
|
|
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
|
|
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
|
|
if (STANDALONE~=true) then
|
|
links {
|
|
"frontend",
|
|
}
|
|
end
|
|
links {
|
|
"optional",
|
|
"emu",
|
|
}
|
|
links {
|
|
"osd_" .. _OPTIONS["osd"],
|
|
}
|
|
links {
|
|
"qtdbg_" .. _OPTIONS["osd"],
|
|
}
|
|
--if (STANDALONE~=true) then
|
|
links {
|
|
"formats",
|
|
}
|
|
--end
|
|
if #disasm_files > 0 then
|
|
links {
|
|
"dasm",
|
|
}
|
|
end
|
|
if (MACHINES["NETLIST"]~=null) then
|
|
links {
|
|
"netlist",
|
|
}
|
|
end
|
|
links {
|
|
"utils",
|
|
ext_lib("expat"),
|
|
"softfloat",
|
|
"softfloat3",
|
|
"wdlfft",
|
|
"ymfm",
|
|
ext_lib("jpeg"),
|
|
"7z",
|
|
}
|
|
if not _OPTIONS["FORCE_DRC_C_BACKEND"] then
|
|
links {
|
|
"asmjit",
|
|
}
|
|
end
|
|
if (STANDALONE~=true) then
|
|
links {
|
|
ext_lib("lua"),
|
|
"lualibs",
|
|
"linenoise",
|
|
}
|
|
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)
|
|
local exename = projname -- FIXME: should include the OSD prefix if any
|
|
|
|
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",
|
|
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();
|
|
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/" .. plistname
|
|
}
|
|
custombuildtask {
|
|
{
|
|
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/" .. plistname, true },
|
|
}
|
|
|
|
end
|
|
|
|
local rcversfile = GEN_DIR .. "resource/" .. _target .. "_" .. _subtarget .. "_vers.rc"
|
|
if _OPTIONS["targetos"]=="windows" and (not override_resources) then
|
|
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",
|
|
}
|
|
configuration { }
|
|
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",
|
|
}
|
|
|
|
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 .. ".flt" ,
|
|
driverssrc,
|
|
{ MAME_DIR .. "scripts/build/makedep.py", driverlist },
|
|
{
|
|
"@echo Building driver list...",
|
|
PYTHON .. " $(1) -r " .. MAME_DIR .. " driverlist $(2) -f $(<) > $(@)"
|
|
}
|
|
},
|
|
}
|
|
elseif _OPTIONS["SOURCEFILTER"] ~= nil then
|
|
dependency {
|
|
{ driverssrc, driverlist, true },
|
|
}
|
|
custombuildtask {
|
|
{
|
|
MAME_DIR .. _OPTIONS["SOURCEFILTER"],
|
|
driverssrc,
|
|
{ MAME_DIR .. "scripts/build/makedep.py", driverlist },
|
|
{
|
|
"@echo Building driver list...",
|
|
PYTHON .. " $(1) -r " .. MAME_DIR .. " driverlist $(2) -f $(<) > $(@)"
|
|
}
|
|
},
|
|
}
|
|
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 $(<) > $(@)"
|
|
}
|
|
},
|
|
}
|
|
elseif os.isfile(MAME_DIR .. "src/" .._target .. "/" .. _subtarget ..".lst") then
|
|
custombuildtask {
|
|
{
|
|
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" ,
|
|
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",
|
|
"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
|
|
|
|
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
|