mirror of
https://github.com/holub/mame
synced 2025-06-07 13:23:50 +03:00

differently with different OSDs Switch back to building for all OSDs in common directory Move more OSD-specific stuff into OSD scripts It still isn't completely safe to be building all OSD into same directory Common OSD "module" files, e.g. debuggers and renderers, build with different options for each OSD. It works at the moment, but you will end up with slightly different executables depending on the order you build OSDs.
918 lines
16 KiB
Lua
918 lines
16 KiB
Lua
premake.check_paths = true
|
|
premake.make.override = { "TARGET" }
|
|
MAME_DIR = (path.getabsolute("..") .. "/")
|
|
local MAME_BUILD_DIR = (MAME_DIR .. "build/")
|
|
local naclToolchain = ""
|
|
|
|
|
|
function str_to_version (str)
|
|
local val = 0
|
|
if (str == nil or str == '') then
|
|
return val
|
|
end
|
|
local cnt = 10000
|
|
for word in string.gmatch(str, '([^.]+)') do
|
|
val = val + tonumber(word) * cnt
|
|
cnt = cnt / 100
|
|
end
|
|
return val
|
|
end
|
|
|
|
function findfunction(x)
|
|
assert(type(x) == "string")
|
|
local f=_G
|
|
for v in x:gmatch("[^%.]+") do
|
|
if type(f) ~= "table" then
|
|
return nil, "looking for '"..v.."' expected table, not "..type(f)
|
|
end
|
|
f=f[v]
|
|
end
|
|
if type(f) == "function" then
|
|
return f
|
|
else
|
|
return nil, "expected function, not "..type(f)
|
|
end
|
|
end
|
|
|
|
function includeosd()
|
|
includedirs {
|
|
MAME_DIR .. "src/osd",
|
|
}
|
|
end
|
|
|
|
|
|
CPUS = {}
|
|
SOUNDS = {}
|
|
MACHINES = {}
|
|
VIDEOS = {}
|
|
BUSES = {}
|
|
|
|
newoption {
|
|
trigger = "with-tools",
|
|
description = "Enable building tools.",
|
|
}
|
|
|
|
newoption {
|
|
trigger = "osd",
|
|
description = "Choose target OSD",
|
|
}
|
|
|
|
newoption {
|
|
trigger = "targetos",
|
|
description = "Choose target OS",
|
|
allowed = {
|
|
{ "android", "Android" },
|
|
{ "asmjs", "Emscripten/asm.js" },
|
|
{ "freebsd", "FreeBSD" },
|
|
{ "linux", "Linux" },
|
|
{ "ios", "iOS" },
|
|
{ "nacl", "Native Client" },
|
|
{ "macosx", "OSX" },
|
|
{ "windows", "Windows" },
|
|
},
|
|
}
|
|
|
|
newoption {
|
|
trigger = "distro",
|
|
description = "Choose distribution",
|
|
allowed = {
|
|
{ "generic", "generic" },
|
|
{ "debian-stable", "debian-stable" },
|
|
{ "ubuntu-intrepid", "ubuntu-intrepid" },
|
|
{ "gcc44-generic", "gcc44-generic" },
|
|
{ "gcc45-generic", "gcc45-generic" },
|
|
{ "gcc46-generic", "gcc46-generic" },
|
|
{ "gcc47-generic", "gcc47-generic" },
|
|
},
|
|
}
|
|
|
|
newoption {
|
|
trigger = "target",
|
|
description = "Building target",
|
|
}
|
|
|
|
newoption {
|
|
trigger = "subtarget",
|
|
description = "Building subtarget",
|
|
}
|
|
|
|
newoption {
|
|
trigger = "gcc_version",
|
|
description = "GCC compiler version",
|
|
}
|
|
|
|
newoption {
|
|
trigger = "os_version",
|
|
description = "OS version",
|
|
value = "",
|
|
}
|
|
|
|
newoption {
|
|
trigger = "CC",
|
|
description = "CC replacement",
|
|
}
|
|
|
|
newoption {
|
|
trigger = "CXX",
|
|
description = "CXX replacement",
|
|
}
|
|
|
|
newoption {
|
|
trigger = "LD",
|
|
description = "LD replacement",
|
|
}
|
|
|
|
newoption {
|
|
trigger = "PROFILE",
|
|
description = "Enable profiling.",
|
|
}
|
|
|
|
newoption {
|
|
trigger = "SYMBOLS",
|
|
description = "Enable symbols.",
|
|
}
|
|
|
|
newoption {
|
|
trigger = "SYMLEVEL",
|
|
description = "Symbols level.",
|
|
}
|
|
|
|
newoption {
|
|
trigger = "PROFILER",
|
|
description = "Include the internal profiler.",
|
|
}
|
|
|
|
newoption {
|
|
trigger = "OPTIMIZE",
|
|
description = "Optimization level.",
|
|
}
|
|
|
|
newoption {
|
|
trigger = "ARCHOPTS",
|
|
description = "ARCHOPTS.",
|
|
}
|
|
|
|
newoption {
|
|
trigger = "MAP",
|
|
description = "Generate a link map.",
|
|
}
|
|
|
|
newoption {
|
|
trigger = "FORCE_DRC_C_BACKEND",
|
|
description = "Force DRC C backend.",
|
|
}
|
|
|
|
newoption {
|
|
trigger = "NOWERROR",
|
|
description = "NOWERROR",
|
|
}
|
|
|
|
newoption {
|
|
trigger = "USE_BGFX",
|
|
description = "Use of BGFX.",
|
|
allowed = {
|
|
{ "0", "Disabled" },
|
|
{ "1", "Enabled" },
|
|
}
|
|
}
|
|
|
|
|
|
local os_version = str_to_version(_OPTIONS["os_version"])
|
|
|
|
USE_BGFX = 1
|
|
if (_OPTIONS["targetos"]=="macosx" and os_version < 100700) then
|
|
USE_BGFX = 0
|
|
end
|
|
if(_OPTIONS["USE_BGFX"]~=nil) then
|
|
USE_BGFX = tonumber(_OPTIONS["USE_BGFX"])
|
|
end
|
|
|
|
GEN_DIR = MAME_BUILD_DIR .. "generated/"
|
|
|
|
if (_OPTIONS["target"] == nil) then return false end
|
|
if (_OPTIONS["subtarget"] == nil) then return false end
|
|
|
|
if (_OPTIONS["target"] == _OPTIONS["subtarget"]) then
|
|
solution (_OPTIONS["target"])
|
|
else
|
|
solution (_OPTIONS["target"] .. _OPTIONS["subtarget"])
|
|
end
|
|
configurations {
|
|
"Debug",
|
|
"Release",
|
|
}
|
|
|
|
platforms {
|
|
"x32",
|
|
"x64",
|
|
"Native", -- for targets where bitness is not specified
|
|
}
|
|
|
|
language "C++"
|
|
|
|
flags {
|
|
"StaticRuntime",
|
|
"Unicode",
|
|
"NoPCH",
|
|
}
|
|
|
|
configuration { "vs*" }
|
|
flags {
|
|
"ExtraWarnings",
|
|
}
|
|
if _OPTIONS["NOWERROR"]==nil then
|
|
flags{
|
|
"FatalWarnings",
|
|
}
|
|
end
|
|
|
|
|
|
configuration { "Debug", "vs*" }
|
|
flags {
|
|
"Symbols",
|
|
}
|
|
configuration {}
|
|
|
|
--aftercompilefile ("\t$(SILENT) gawk -f ../../../../../scripts/depfilter.awk $(@:%.o=%.d) > $(@:%.o=%.dep)\n\t$(SILENT) mv $(@:%.o=%.dep) $(@:%.o=%.d)")
|
|
|
|
|
|
msgcompile ("Compiling $(subst ../,,$<)...")
|
|
|
|
msgcompile_objc ("Objective-C compiling $(subst ../,,$<)...")
|
|
|
|
msgresource ("Compiling resources $(subst ../,,$<)...")
|
|
|
|
msglinking ("Linking $(notdir $@)...")
|
|
|
|
msgarchiving ("Archiving $(notdir $@)...")
|
|
|
|
messageskip { "SkipCreatingMessage", "SkipBuildingMessage", "SkipCleaningMessage" }
|
|
|
|
if (not os.isfile(path.join("target", _OPTIONS["target"],_OPTIONS["subtarget"] .. ".lua"))) then
|
|
error("File definition for TARGET=" .. _OPTIONS["target"] .. " SUBTARGET=" .. _OPTIONS["subtarget"] .. " does not exist")
|
|
end
|
|
dofile (path.join("target", _OPTIONS["target"],_OPTIONS["subtarget"] .. ".lua"))
|
|
|
|
configuration { "gmake" }
|
|
flags {
|
|
"SingleOutputDir",
|
|
}
|
|
|
|
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 { }
|
|
|
|
dofile ("toolchain.lua")
|
|
|
|
|
|
if _OPTIONS["targetos"]=="windows" then
|
|
configuration { "x64" }
|
|
defines {
|
|
"X64_WINDOWS_ABI",
|
|
}
|
|
configuration { }
|
|
end
|
|
|
|
-- Avoid error when invoking genie --help.
|
|
if (_ACTION == nil) then return false end
|
|
|
|
-- define PTR64 if we are a 64-bit target
|
|
configuration { "x64" }
|
|
defines { "PTR64=1" }
|
|
|
|
-- map the INLINE to something digestible by GCC
|
|
configuration { "gmake" }
|
|
buildoptions_cpp {
|
|
"-DINLINE=\"static inline\"",
|
|
}
|
|
buildoptions_objc {
|
|
"-DINLINE=\"static inline\"",
|
|
}
|
|
configuration { "vs*" }
|
|
defines {
|
|
"INLINE=static inline",
|
|
}
|
|
|
|
-- define MAME_DEBUG if we are a debugging build
|
|
configuration { "Debug" }
|
|
defines {
|
|
"MAME_DEBUG",
|
|
}
|
|
if _OPTIONS["PROFILER"] then
|
|
defines{
|
|
"MAME_PROFILER", -- define MAME_PROFILER if we are a profiling build
|
|
}
|
|
end
|
|
|
|
configuration { "Release" }
|
|
defines {
|
|
"NDEBUG",
|
|
}
|
|
|
|
configuration { }
|
|
-- CR/LF setup: use both on win32/os2, CR only on everything else
|
|
if _OPTIONS["targetos"]=="windows" or _OPTIONS["targetos"]=="os2" then
|
|
defines {
|
|
"CRLF=3",
|
|
}
|
|
else
|
|
defines {
|
|
"CRLF=2",
|
|
}
|
|
end
|
|
|
|
|
|
-- define LSB_FIRST if we are a little-endian target
|
|
defines {
|
|
"LSB_FIRST",
|
|
}
|
|
|
|
-- define USE_NETWORK if networking is enabled (not OS/2 and hasn't been disabled)
|
|
if not _OPTIONS["targetos"]=="os2" then
|
|
defines {
|
|
"USE_NETWORK",
|
|
}
|
|
end
|
|
-- need to ensure FLAC functions are statically linked
|
|
defines {
|
|
"FLAC__NO_DLL",
|
|
}
|
|
|
|
-- fixme -- need to make this work for other target architectures (PPC)
|
|
if _OPTIONS["FORCE_DRC_C_BACKEND"]==nil then
|
|
configuration { "x64" }
|
|
defines {
|
|
"NATIVE_DRC=drcbe_x64",
|
|
}
|
|
configuration { "x32" }
|
|
defines {
|
|
"NATIVE_DRC=drcbe_x86",
|
|
}
|
|
configuration { }
|
|
end
|
|
|
|
-- define USE_SYSTEM_JPEGLIB if library shipped with MAME is not used
|
|
--ifneq ($(BUILD_JPEGLIB),1)
|
|
--DEFS += -DUSE_SYSTEM_JPEGLIB
|
|
--endif
|
|
|
|
--ifdef FASTDEBUG
|
|
--DEFS += -DMAME_DEBUG_FAST
|
|
--endif
|
|
|
|
--To support casting in Lua 5.3
|
|
defines {
|
|
"LUA_COMPAT_APIINTCASTS",
|
|
}
|
|
|
|
if _ACTION == "gmake" then
|
|
|
|
--we compile C-only to C89 standard with GNU extensions
|
|
buildoptions_c {
|
|
"-std=gnu89",
|
|
|
|
}
|
|
--we compile C++ code to C++98 standard with GNU extensions
|
|
buildoptions_cpp {
|
|
"-x c++",
|
|
"-std=gnu++98",
|
|
}
|
|
|
|
buildoptions_objc {
|
|
"-x objective-c++",
|
|
}
|
|
--ifdef CPP11
|
|
--CPPONLYFLAGS += -x c++ -std=gnu++11
|
|
--else
|
|
|
|
-- this speeds it up a bit by piping between the preprocessor/compiler/assembler
|
|
if not ("pnacl" == _OPTIONS["gcc"]) then
|
|
buildoptions {
|
|
"--pipe",
|
|
}
|
|
end
|
|
-- add -g if we need symbols, and ensure we have frame pointers
|
|
if _OPTIONS["SYMBOLS"]~=nil then
|
|
buildoptions {
|
|
"-g" .. _OPTIONS["SYMLEVEL"],
|
|
"-fno-omit-frame-pointer",
|
|
"-fno-optimize-sibling-calls",
|
|
}
|
|
end
|
|
|
|
--# we need to disable some additional implicit optimizations for profiling
|
|
if _OPTIONS["PROFILE"] then
|
|
buildoptions {
|
|
"-mno-omit-leaf-frame-pointer",
|
|
}
|
|
end
|
|
-- add -v if we need verbose build information
|
|
if _OPTIONS["VERBOSE"] then
|
|
buildoptions {
|
|
"-v",
|
|
}
|
|
end
|
|
|
|
-- only show deprecation warnings when enabled
|
|
--ifndef DEPRECATED
|
|
buildoptions {
|
|
"-Wno-deprecated-declarations"
|
|
}
|
|
--endif
|
|
|
|
-- add profiling information for the compiler
|
|
if _OPTIONS["PROFILE"] then
|
|
buildoptions {
|
|
"-pg",
|
|
}
|
|
linkoptions {
|
|
"-pg",
|
|
}
|
|
end
|
|
|
|
if _OPTIONS["SYMBOLS"]~=nil then
|
|
flags {
|
|
"Symbols",
|
|
}
|
|
end
|
|
|
|
--# add the optimization flag
|
|
buildoptions {
|
|
"-O".. _OPTIONS["OPTIMIZE"],
|
|
"-fno-strict-aliasing"
|
|
}
|
|
|
|
-- add the error warning flag
|
|
if _OPTIONS["NOWERROR"]==nil then
|
|
buildoptions {
|
|
"-Werror",
|
|
}
|
|
end
|
|
|
|
-- if we are optimizing, include optimization options
|
|
--ifneq ($(),0)
|
|
if _OPTIONS["OPTIMIZE"] then
|
|
buildoptions {
|
|
"-fno-strict-aliasing"
|
|
}
|
|
if _OPTIONS["ARCHOPTS"] then
|
|
buildoptions {
|
|
_OPTIONS["ARCHOPTS"]
|
|
}
|
|
end
|
|
--ifdef LTO
|
|
--CCOMFLAGS += -flto
|
|
--endif
|
|
end
|
|
|
|
--ifdef SSE2
|
|
--CCOMFLAGS += -msse2
|
|
--endif
|
|
|
|
--ifdef OPENMP
|
|
--CCOMFLAGS += -fopenmp
|
|
--else
|
|
--CCOMFLAGS += -Wno-unknown-pragmas
|
|
--endif
|
|
|
|
if _OPTIONS["MAP"] then
|
|
if (_OPTIONS["target"] == _OPTIONS["subtarget"]) then
|
|
linkoptions {
|
|
"-Wl,-Map," .. "../../../../" .. _OPTIONS["target"] .. ".map"
|
|
}
|
|
else
|
|
linkoptions {
|
|
"-Wl,-Map," .. "../../../../" .. _OPTIONS["target"] .. _OPTIONS["subtarget"] .. ".map"
|
|
}
|
|
|
|
end
|
|
end
|
|
buildoptions {
|
|
"-Wno-unknown-pragmas",
|
|
}
|
|
-- add a basic set of warnings
|
|
buildoptions {
|
|
"-Wall",
|
|
"-Wcast-align",
|
|
"-Wundef",
|
|
"-Wformat-security",
|
|
"-Wwrite-strings",
|
|
"-Wno-sign-compare",
|
|
"-Wno-conversion",
|
|
}
|
|
-- warnings only applicable to C compiles
|
|
buildoptions_c {
|
|
"-Wpointer-arith",
|
|
"-Wbad-function-cast",
|
|
"-Wstrict-prototypes",
|
|
}
|
|
|
|
-- warnings only applicable to OBJ-C compiles
|
|
buildoptions_objc {
|
|
"-Wpointer-arith",
|
|
}
|
|
|
|
-- warnings only applicable to C++ compiles
|
|
buildoptions_cpp {
|
|
"-Woverloaded-virtual",
|
|
}
|
|
|
|
--ifdef SANITIZE
|
|
--CCOMFLAGS += -fsanitize=$(SANITIZE)
|
|
|
|
--ifneq (,$(findstring thread,$(SANITIZE)))
|
|
--CCOMFLAGS += -fPIE
|
|
--endif
|
|
--endif
|
|
|
|
|
|
|
|
local version = str_to_version(_OPTIONS["gcc_version"])
|
|
if string.find(_OPTIONS["gcc"], "clang") then
|
|
buildoptions {
|
|
"-Wno-cast-align",
|
|
"-Wno-tautological-compare",
|
|
"-Wno-dynamic-class-memaccess",
|
|
"-Wno-self-assign-field",
|
|
}
|
|
if (version >= 30200) then
|
|
buildoptions {
|
|
"-Wno-unused-value",
|
|
}
|
|
end
|
|
if (version >= 30400) then
|
|
buildoptions {
|
|
"-Wno-inline-new-delete",
|
|
"-Wno-constant-logical-operand",
|
|
}
|
|
end
|
|
if (version >= 30500) then
|
|
buildoptions {
|
|
"-Wno-absolute-value",
|
|
"-Wno-unknown-warning-option",
|
|
"-Wno-extern-c-compat",
|
|
}
|
|
end
|
|
else
|
|
if (version == 40201) then
|
|
buildoptions {
|
|
"-Wno-cast-align"
|
|
}
|
|
end
|
|
if (version >= 40400) then
|
|
buildoptions {
|
|
"-Wno-unused-result",
|
|
}
|
|
end
|
|
|
|
if (version >= 40700) then
|
|
buildoptions {
|
|
"-Wno-narrowing",
|
|
"-Wno-attributes"
|
|
}
|
|
end
|
|
if (version >= 40800) then
|
|
-- array bounds checking seems to be buggy in 4.8.1 (try it on video/stvvdp1.c and video/model1.c without -Wno-array-bounds)
|
|
buildoptions {
|
|
"-Wno-unused-variable",
|
|
"-Wno-array-bounds"
|
|
}
|
|
end
|
|
end
|
|
end
|
|
--ifeq ($(findstring arm,$(UNAME)),arm)
|
|
-- CCOMFLAGS += -Wno-cast-align
|
|
--endif
|
|
|
|
local subdir
|
|
if (_OPTIONS["target"] == _OPTIONS["subtarget"]) then
|
|
subdir = _OPTIONS["osd"] .. "/" .. _OPTIONS["target"]
|
|
else
|
|
subdir = _OPTIONS["osd"] .. "/" .. _OPTIONS["target"] .. _OPTIONS["subtarget"]
|
|
end
|
|
|
|
if not toolchain(MAME_BUILD_DIR, subdir) then
|
|
return -- no action specified
|
|
end
|
|
|
|
configuration { "asmjs" }
|
|
buildoptions {
|
|
"-std=gnu89",
|
|
"-Wno-implicit-function-declaration",
|
|
}
|
|
buildoptions_cpp {
|
|
"-x c++",
|
|
"-std=gnu++98",
|
|
}
|
|
archivesplit_size "20"
|
|
|
|
configuration { "android*" }
|
|
buildoptions_cpp {
|
|
"-x c++",
|
|
"-std=gnu++98",
|
|
}
|
|
archivesplit_size "20"
|
|
|
|
configuration { "pnacl" }
|
|
buildoptions {
|
|
"-std=gnu89",
|
|
"-Wno-inline-new-delete",
|
|
}
|
|
buildoptions_cpp {
|
|
"-x c++",
|
|
"-std=gnu++98",
|
|
}
|
|
archivesplit_size "20"
|
|
|
|
configuration { "nacl*" }
|
|
buildoptions_cpp {
|
|
"-x c++",
|
|
"-std=gnu++98",
|
|
}
|
|
archivesplit_size "20"
|
|
|
|
configuration { "linux-*" }
|
|
linkoptions {
|
|
"`sdl2-config --libs`",
|
|
}
|
|
links {
|
|
"pthread",
|
|
"SDL2",
|
|
"SDL2_ttf",
|
|
"asound",
|
|
"dl",
|
|
"fontconfig",
|
|
"freetype",
|
|
"GL",
|
|
"m",
|
|
"util",
|
|
"X11",
|
|
"Xinerama",
|
|
}
|
|
defines
|
|
{
|
|
"DISTRO=" .. _OPTIONS["distro"] ,
|
|
}
|
|
if _OPTIONS["distro"]=="debian-stable" then
|
|
defines
|
|
{
|
|
"NO_AFFINITY_NP",
|
|
}
|
|
end
|
|
|
|
|
|
configuration { "osx*" }
|
|
links {
|
|
"Cocoa.framework",
|
|
"OpenGL.framework",
|
|
"CoreAudio.framework",
|
|
"CoreMIDI.framework",
|
|
"SDL2.framework",
|
|
"pthread",
|
|
}
|
|
|
|
|
|
configuration { "mingw*" }
|
|
defines {
|
|
"main=utf8_main",
|
|
}
|
|
linkoptions {
|
|
"-static-libgcc",
|
|
"-static-libstdc++",
|
|
"-municode",
|
|
}
|
|
if _OPTIONS["osd"]=="sdl" then
|
|
links {
|
|
"opengl32",
|
|
"SDL2",
|
|
"Imm32",
|
|
"version",
|
|
"ole32",
|
|
"oleaut32",
|
|
}
|
|
end
|
|
links {
|
|
"user32",
|
|
"gdi32",
|
|
"dsound",
|
|
"dxguid",
|
|
"winmm",
|
|
"advapi32",
|
|
"comctl32",
|
|
"shlwapi",
|
|
"wsock32",
|
|
"dinput8",
|
|
"comdlg32",
|
|
}
|
|
|
|
configuration { "vs*" }
|
|
defines {
|
|
"main=utf8_main",
|
|
}
|
|
defines {
|
|
"XML_STATIC",
|
|
"WIN32",
|
|
"_WIN32",
|
|
"_CRT_NONSTDC_NO_DEPRECATE",
|
|
"_CRT_SECURE_NO_DEPRECATE",
|
|
}
|
|
links {
|
|
"user32",
|
|
"gdi32",
|
|
"dsound",
|
|
"dxguid",
|
|
"winmm",
|
|
"advapi32",
|
|
"comctl32",
|
|
"shlwapi",
|
|
"wsock32",
|
|
"dinput8",
|
|
"comdlg32",
|
|
}
|
|
|
|
buildoptions {
|
|
"/wd4025",
|
|
"/wd4003",
|
|
"/wd4018",
|
|
"/wd4061",
|
|
"/wd4100",
|
|
"/wd4127",
|
|
"/wd4131",
|
|
"/wd4141",
|
|
"/wd4146",
|
|
"/wd4150",
|
|
"/wd4189",
|
|
"/wd4191",
|
|
"/wd4201",
|
|
"/wd4232",
|
|
"/wd4242",
|
|
"/wd4244",
|
|
"/wd4250",
|
|
"/wd4255",
|
|
"/wd4296",
|
|
"/wd4306",
|
|
"/wd4310",
|
|
"/wd4312",
|
|
"/wd4324",
|
|
"/wd4347",
|
|
"/wd4435",
|
|
"/wd4510",
|
|
"/wd4512",
|
|
"/wd4514",
|
|
"/wd4571",
|
|
"/wd4610",
|
|
"/wd4611",
|
|
"/wd4619",
|
|
"/wd4625",
|
|
"/wd4626",
|
|
"/wd4640",
|
|
"/wd4668",
|
|
"/wd4702",
|
|
"/wd4706",
|
|
"/wd4710",
|
|
"/wd4711",
|
|
"/wd4805",
|
|
"/wd4820",
|
|
"/wd4826",
|
|
"/wd4365",
|
|
"/wd4389",
|
|
"/wd4245",
|
|
"/wd4388",
|
|
"/wd4267",
|
|
"/wd4005",
|
|
"/wd4350",
|
|
"/wd4996",
|
|
"/wd4191",
|
|
"/wd4060",
|
|
"/wd4065",
|
|
"/wd4640",
|
|
"/wd4290",
|
|
"/wd4355",
|
|
"/wd4800",
|
|
"/wd4371",
|
|
"/wd4548",
|
|
}
|
|
if _OPTIONS["vs"]=="intel-15" then
|
|
buildoptions {
|
|
"/Qwd9",
|
|
"/Qwd82",
|
|
"/Qwd111",
|
|
"/Qwd128",
|
|
"/Qwd177",
|
|
"/Qwd181",
|
|
"/Qwd185",
|
|
"/Qwd280",
|
|
"/Qwd344",
|
|
"/Qwd411",
|
|
"/Qwd869",
|
|
"/Qwd2545",
|
|
"/Qwd2553",
|
|
"/Qwd2557",
|
|
"/Qwd3280",
|
|
|
|
"/Qwd170",
|
|
"/Qwd188",
|
|
|
|
"/Qwd63",
|
|
"/Qwd177",
|
|
"/Qwd186",
|
|
"/Qwd488",
|
|
"/Qwd1478",
|
|
"/Qwd1879",
|
|
"/Qwd3291",
|
|
"/Qwd1195",
|
|
"/Qwd1786",
|
|
"/Qwd592", -- For lua, false positive?
|
|
}
|
|
end
|
|
|
|
linkoptions {
|
|
"/ignore:4221", -- LNK4221: This object file does not define any previously undefined public symbols, so it will not be used by any link operation that consumes this library
|
|
}
|
|
includedirs {
|
|
MAME_DIR .. "3rdparty/dxsdk/Include"
|
|
}
|
|
|
|
configuration { "x32", "vs*" }
|
|
libdirs {
|
|
MAME_DIR .. "3rdparty/dxsdk/lib/x86",
|
|
}
|
|
|
|
configuration { "x64", "vs*" }
|
|
libdirs {
|
|
MAME_DIR .. "3rdparty/dxsdk/lib/x64",
|
|
}
|
|
|
|
configuration { }
|
|
|
|
|
|
group "libs"
|
|
|
|
if (not os.isfile(path.join("src", "osd", _OPTIONS["osd"] .. ".lua"))) then
|
|
error("Unsupported value '" .. _OPTIONS["osd"] .. "' for OSD")
|
|
end
|
|
dofile(path.join("src", "osd", _OPTIONS["osd"] .. ".lua"))
|
|
|
|
dofile(path.join("src", "3rdparty.lua"))
|
|
dofile(path.join("src", "lib.lua"))
|
|
|
|
group "core"
|
|
|
|
dofile(path.join("src", "emu.lua"))
|
|
emuProject(_OPTIONS["target"],_OPTIONS["subtarget"])
|
|
|
|
group "drivers"
|
|
findfunction("createProjects_" .. _OPTIONS["target"] .. "_" .. _OPTIONS["subtarget"])(_OPTIONS["target"], _OPTIONS["subtarget"])
|
|
|
|
group "emulator"
|
|
dofile(path.join("src", "main.lua"))
|
|
if (_OPTIONS["target"] == _OPTIONS["subtarget"]) then
|
|
startproject (_OPTIONS["target"])
|
|
else
|
|
startproject (_OPTIONS["target"] .. _OPTIONS["subtarget"])
|
|
end
|
|
mainProject(_OPTIONS["target"],_OPTIONS["subtarget"])
|
|
|
|
if _OPTIONS["with-tools"] then
|
|
group "tools"
|
|
dofile(path.join("src", "tools.lua"))
|
|
end
|
|
|
|
if (_ACTION == "gmake" and _OPTIONS["gcc"]=='asmjs') then
|
|
strip()
|
|
end
|