diff options
author | 2017-01-11 20:24:00 +0100 | |
---|---|---|
committer | 2017-01-11 20:24:00 +0100 | |
commit | cd03a642849d567e2f42355bf18ca99cb600b246 (patch) | |
tree | 1a64cd6c370ad980d6d03499baf45dc208fa2473 /scripts/src | |
parent | 37e8b161d80efea67d5bfc71d58d050628ba7820 (diff) |
Initial PortAudio backend with build script changes to support library version 20161030
Diffstat (limited to 'scripts/src')
-rw-r--r-- | scripts/src/3rdparty.lua | 304 | ||||
-rw-r--r-- | scripts/src/main.lua | 10 | ||||
-rw-r--r-- | scripts/src/osd/modules.lua | 25 |
3 files changed, 190 insertions, 149 deletions
diff --git a/scripts/src/3rdparty.lua b/scripts/src/3rdparty.lua index 211cd7c5fd8..081f8692f66 100644 --- a/scripts/src/3rdparty.lua +++ b/scripts/src/3rdparty.lua @@ -902,155 +902,161 @@ end -------------------------------------------------- -- PortAudio library objects -------------------------------------------------- --- ---if not _OPTIONS["with-system-portaudio"] then ---project "portaudio" --- uuid "0755c5f5-eccf-47f3-98a9-df67018a94d4" --- kind "StaticLib" --- --- configuration { "vs*" } --- buildoptions { --- "/wd4245", -- warning C4245: 'conversion' : conversion from 'type1' to 'type2', signed/unsigned mismatch --- "/wd4244", -- warning C4244: 'argument' : conversion from 'xxx' to 'xxx', possible loss of data --- "/wd4100", -- warning C4100: 'xxx' : unreferenced formal parameter --- "/wd4389", -- warning C4389: 'operator' : signed/unsigned mismatch --- "/wd4189", -- warning C4189: 'xxx' : local variable is initialized but not referenced --- "/wd4127", -- warning C4127: conditional expression is constant --- } ---if _OPTIONS["vs"]=="intel-15" then --- buildoptions { --- "/Qwd869", -- remark #869: parameter "xxx" was never referenced --- "/Qwd1478", -- warning #1478: function "xxx" (declared at line yyy of "zzz") was declared deprecated --- "/Qwd2544", -- message #2544: empty dependent statement in if-statement --- "/Qwd1879", -- warning #1879: unimplemented pragma ignored --- } ---end --- configuration { "vs201*" } --- buildoptions { --- "/wd4456", -- warning C4456: declaration of 'xxx' hides previous local declaration --- } --- --- configuration { "gmake or ninja" } --- buildoptions_c { --- "-Wno-strict-prototypes", --- "-Wno-bad-function-cast", --- "-Wno-undef", --- "-Wno-missing-braces", --- "-Wno-unused-variable", --- "-Wno-unused-value", --- "-Wno-unused-function", --- "-Wno-unknown-pragmas", --- } --- --- local version = str_to_version(_OPTIONS["gcc_version"]) --- if (_OPTIONS["gcc"]~=nil) then --- if string.find(_OPTIONS["gcc"], "clang") or string.find(_OPTIONS["gcc"], "android") then --- buildoptions_c { --- "-Wno-unknown-warning-option", --- "-Wno-absolute-value", --- "-Wno-unused-but-set-variable", --- "-Wno-maybe-uninitialized", --- "-Wno-sometimes-uninitialized", --- } --- else --- if (version >= 40600) then --- buildoptions_c { --- "-Wno-unused-but-set-variable", --- "-Wno-maybe-uninitialized", --- "-Wno-sometimes-uninitialized", --- } --- end --- end --- end --- configuration { "vs*" } --- buildoptions { --- "/wd4204", -- warning C4204: nonstandard extension used : non-constant aggregate initializer --- "/wd4701", -- warning C4701: potentially uninitialized local variable 'xxx' used --- } --- --- configuration { } --- --- includedirs { --- MAME_DIR .. "3rdparty/portaudio/include", --- MAME_DIR .. "3rdparty/portaudio/src/common", --- } --- --- files { --- MAME_DIR .. "3rdparty/portaudio/src/common/pa_allocation.c", --- MAME_DIR .. "3rdparty/portaudio/src/common/pa_converters.c", --- MAME_DIR .. "3rdparty/portaudio/src/common/pa_cpuload.c", --- MAME_DIR .. "3rdparty/portaudio/src/common/pa_dither.c", --- MAME_DIR .. "3rdparty/portaudio/src/common/pa_debugprint.c", --- MAME_DIR .. "3rdparty/portaudio/src/common/pa_front.c", --- MAME_DIR .. "3rdparty/portaudio/src/common/pa_process.c", --- MAME_DIR .. "3rdparty/portaudio/src/common/pa_stream.c", --- MAME_DIR .. "3rdparty/portaudio/src/common/pa_trace.c", --- MAME_DIR .. "3rdparty/portaudio/src/hostapi/skeleton/pa_hostapi_skeleton.c", --- } --- --- if _OPTIONS["targetos"]=="windows" then --- defines { --- "PA_USE_DS=1", --- "PA_USE_WDMKS=1", --- "PA_USE_WMME=1", --- } --- includedirs { --- MAME_DIR .. "3rdparty/portaudio/src/os/win", --- } --- --- configuration { } --- files { --- MAME_DIR .. "3rdparty/portaudio/src/os/win/pa_win_util.c", --- MAME_DIR .. "3rdparty/portaudio/src/os/win/pa_win_waveformat.c", --- MAME_DIR .. "3rdparty/portaudio/src/os/win/pa_win_hostapis.c", --- MAME_DIR .. "3rdparty/portaudio/src/os/win/pa_win_wdmks_utils.c", --- MAME_DIR .. "3rdparty/portaudio/src/os/win/pa_win_coinitialize.c", --- MAME_DIR .. "3rdparty/portaudio/src/hostapi/dsound/pa_win_ds.c", --- MAME_DIR .. "3rdparty/portaudio/src/hostapi/dsound/pa_win_ds_dynlink.c", --- MAME_DIR .. "3rdparty/portaudio/src/hostapi/wdmks/pa_win_wdmks.c", --- MAME_DIR .. "3rdparty/portaudio/src/common/pa_ringbuffer.c", --- MAME_DIR .. "3rdparty/portaudio/src/hostapi/wmme/pa_win_wmme.c", --- } --- --- end --- if _OPTIONS["targetos"]=="linux" then --- defines { --- "PA_USE_ALSA=1", --- "PA_USE_OSS=1", --- "HAVE_LINUX_SOUNDCARD_H", --- } --- includedirs { --- MAME_DIR .. "3rdparty/portaudio/src/os/unix", --- } --- files { --- MAME_DIR .. "3rdparty/portaudio/src/os/unix/pa_unix_hostapis.c", --- MAME_DIR .. "3rdparty/portaudio/src/os/unix/pa_unix_util.c", --- MAME_DIR .. "3rdparty/portaudio/src/hostapi/alsa/pa_linux_alsa.c", --- MAME_DIR .. "3rdparty/portaudio/src/hostapi/oss/pa_unix_oss.c", --- } --- end --- if _OPTIONS["targetos"]=="macosx" then --- defines { --- "PA_USE_COREAUDIO=1", --- } --- includedirs { --- MAME_DIR .. "3rdparty/portaudio/src/os/unix", --- } --- files { --- MAME_DIR .. "3rdparty/portaudio/src/os/unix/pa_unix_hostapis.c", --- MAME_DIR .. "3rdparty/portaudio/src/os/unix/pa_unix_util.c", --- MAME_DIR .. "3rdparty/portaudio/src/hostapi/coreaudio/pa_mac_core.c", --- MAME_DIR .. "3rdparty/portaudio/src/hostapi/coreaudio/pa_mac_core_utilities.c", --- MAME_DIR .. "3rdparty/portaudio/src/hostapi/coreaudio/pa_mac_core_blocking.c", --- MAME_DIR .. "3rdparty/portaudio/src/common/pa_ringbuffer.c", --- } --- end --- ---else ---links { --- ext_lib("portaudio"), ---} ---end +if _OPTIONS["NO_USE_PORTAUDIO"]~="1" then +if not _OPTIONS["with-system-portaudio"] then +project "portaudio" + uuid "0755c5f5-eccf-47f3-98a9-df67018a94d4" + kind "StaticLib" + + configuration { "vs*" } + buildoptions { + "/wd4245", -- warning C4245: 'conversion' : conversion from 'type1' to 'type2', signed/unsigned mismatch + "/wd4244", -- warning C4244: 'argument' : conversion from 'xxx' to 'xxx', possible loss of data + "/wd4100", -- warning C4100: 'xxx' : unreferenced formal parameter + "/wd4389", -- warning C4389: 'operator' : signed/unsigned mismatch + "/wd4189", -- warning C4189: 'xxx' : local variable is initialized but not referenced + "/wd4127", -- warning C4127: conditional expression is constant + } + if _OPTIONS["vs"]=="intel-15" then + buildoptions { + "/Qwd869", -- remark #869: parameter "xxx" was never referenced + "/Qwd1478", -- warning #1478: function "xxx" (declared at line yyy of "zzz") was declared deprecated + "/Qwd2544", -- message #2544: empty dependent statement in if-statement + "/Qwd1879", -- warning #1879: unimplemented pragma ignored + } + end + configuration { "vs2015*" } + buildoptions { + "/wd4456", -- warning C4456: declaration of 'xxx' hides previous local declaration + } + + configuration { "gmake or ninja" } + buildoptions_c { + "-Wno-strict-prototypes", + "-Wno-bad-function-cast", + "-Wno-undef", + "-Wno-missing-braces", + "-Wno-unused-variable", + "-Wno-unused-value", + "-Wno-unused-function", + "-Wno-unknown-pragmas", + } + + local version = str_to_version(_OPTIONS["gcc_version"]) + if (_OPTIONS["gcc"]~=nil) then + if string.find(_OPTIONS["gcc"], "clang") or string.find(_OPTIONS["gcc"], "android") then + buildoptions_c { + "-Wno-unknown-warning-option", + "-Wno-absolute-value", + "-Wno-unused-but-set-variable", + "-Wno-maybe-uninitialized", + "-Wno-sometimes-uninitialized", + } + else + if (version >= 40600) then + buildoptions_c { + "-Wno-unused-but-set-variable", + "-Wno-maybe-uninitialized", + "-Wno-sometimes-uninitialized", + "-w", + "-Wno-incompatible-pointer-types-discards-qualifiers", + } + end + end + end + configuration { "vs*" } + buildoptions { + "/wd4204", -- warning C4204: nonstandard extension used : non-constant aggregate initializer + "/wd4701", -- warning C4701: potentially uninitialized local variable 'xxx' used + } + + configuration { } + + includedirs { + MAME_DIR .. "3rdparty/portaudio/include", + MAME_DIR .. "3rdparty/portaudio/src/common", + } + + files { + MAME_DIR .. "3rdparty/portaudio/src/common/pa_allocation.c", + MAME_DIR .. "3rdparty/portaudio/src/common/pa_converters.c", + MAME_DIR .. "3rdparty/portaudio/src/common/pa_cpuload.c", + MAME_DIR .. "3rdparty/portaudio/src/common/pa_dither.c", + MAME_DIR .. "3rdparty/portaudio/src/common/pa_debugprint.c", + MAME_DIR .. "3rdparty/portaudio/src/common/pa_front.c", + MAME_DIR .. "3rdparty/portaudio/src/common/pa_process.c", + MAME_DIR .. "3rdparty/portaudio/src/common/pa_stream.c", + MAME_DIR .. "3rdparty/portaudio/src/common/pa_trace.c", + MAME_DIR .. "3rdparty/portaudio/src/hostapi/skeleton/pa_hostapi_skeleton.c", + } + + if _OPTIONS["targetos"]=="windows" then + defines { + "PA_USE_DS=1", + "PA_USE_WASAPI=1", + "PA_USE_WDMKS=1", + "PA_USE_WMME=1", + } + includedirs { + MAME_DIR .. "3rdparty/portaudio/src/os/win", + MAME_DIR .. "3rdparty/portaudio/src/hostapi/wasapi/mingw-include", + } + + configuration { } + files { + MAME_DIR .. "3rdparty/portaudio/src/os/win/pa_win_util.c", + MAME_DIR .. "3rdparty/portaudio/src/os/win/pa_win_waveformat.c", + MAME_DIR .. "3rdparty/portaudio/src/os/win/pa_win_hostapis.c", + MAME_DIR .. "3rdparty/portaudio/src/os/win/pa_win_coinitialize.c", + MAME_DIR .. "3rdparty/portaudio/src/hostapi/dsound/pa_win_ds.c", + MAME_DIR .. "3rdparty/portaudio/src/hostapi/dsound/pa_win_ds_dynlink.c", + MAME_DIR .. "3rdparty/portaudio/src/os/win/pa_win_hostapis.c", + MAME_DIR .. "3rdparty/portaudio/src/hostapi/wasapi/pa_win_wasapi.c", + MAME_DIR .. "3rdparty/portaudio/src/hostapi/wdmks/pa_win_wdmks.c", + MAME_DIR .. "3rdparty/portaudio/src/hostapi/wmme/pa_win_wmme.c", + MAME_DIR .. "3rdparty/portaudio/src/common/pa_ringbuffer.c", + } + + end + if _OPTIONS["targetos"]=="linux" then + defines { + "PA_USE_ALSA=1", + "PA_USE_OSS=1", + "HAVE_LINUX_SOUNDCARD_H", + } + includedirs { + MAME_DIR .. "3rdparty/portaudio/src/os/unix", + } + files { + MAME_DIR .. "3rdparty/portaudio/src/os/unix/pa_unix_hostapis.c", + MAME_DIR .. "3rdparty/portaudio/src/os/unix/pa_unix_util.c", + MAME_DIR .. "3rdparty/portaudio/src/hostapi/alsa/pa_linux_alsa.c", + MAME_DIR .. "3rdparty/portaudio/src/hostapi/oss/pa_unix_oss.c", + } + end + if _OPTIONS["targetos"]=="macosx" then + defines { + "PA_USE_COREAUDIO=1", + } + includedirs { + MAME_DIR .. "3rdparty/portaudio/src/os/unix", + } + files { + MAME_DIR .. "3rdparty/portaudio/src/os/unix/pa_unix_hostapis.c", + MAME_DIR .. "3rdparty/portaudio/src/os/unix/pa_unix_util.c", + MAME_DIR .. "3rdparty/portaudio/src/hostapi/coreaudio/pa_mac_core.c", + MAME_DIR .. "3rdparty/portaudio/src/hostapi/coreaudio/pa_mac_core_utilities.c", + MAME_DIR .. "3rdparty/portaudio/src/hostapi/coreaudio/pa_mac_core_blocking.c", + MAME_DIR .. "3rdparty/portaudio/src/common/pa_ringbuffer.c", + } + end + +else +links { + ext_lib("portaudio"), +} +end +end -------------------------------------------------- -- SDL2 library diff --git a/scripts/src/main.lua b/scripts/src/main.lua index 22bef465c18..0a92b1fed57 100644 --- a/scripts/src/main.lua +++ b/scripts/src/main.lua @@ -284,6 +284,16 @@ if (STANDALONE~=true) then } 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"), diff --git a/scripts/src/osd/modules.lua b/scripts/src/osd/modules.lua index a863cd360b9..ce9977d8dd6 100644 --- a/scripts/src/osd/modules.lua +++ b/scripts/src/osd/modules.lua @@ -80,6 +80,7 @@ function osdmodulesbuild() MAME_DIR .. "src/osd/modules/midi/none.cpp", MAME_DIR .. "src/osd/modules/sound/js_sound.cpp", MAME_DIR .. "src/osd/modules/sound/direct_sound.cpp", + MAME_DIR .. "src/osd/modules/sound/pa_sound.cpp", MAME_DIR .. "src/osd/modules/sound/coreaudio_sound.cpp", MAME_DIR .. "src/osd/modules/sound/sdl_sound.cpp", MAME_DIR .. "src/osd/modules/sound/xaudio2_sound.cpp", @@ -122,6 +123,7 @@ function osdmodulesbuild() includedirs { MAME_DIR .. "3rdparty/winpcap/Include", MAME_DIR .. "3rdparty/compat/mingw", + MAME_DIR .. "3rdparty/portaudio/include", } includedirs { @@ -215,6 +217,12 @@ function osdmodulesbuild() MAME_DIR .. "3rdparty/rapidjson/include", } + if _OPTIONS["NO_USE_PORTAUDIO"]=="1" then + defines { + "NO_USE_PORTAUDIO", + } + end + if _OPTIONS["NO_USE_MIDI"]=="1" then defines { "NO_USE_MIDI", @@ -494,6 +502,23 @@ if not _OPTIONS["NO_USE_MIDI"] then end newoption { + trigger = "NO_USE_PORTAUDIO", + description = "Disable PortAudio interface", + allowed = { + { "0", "Enable PortAudio" }, + { "1", "Disable PortAudio" }, + }, +} + +if not _OPTIONS["NO_USE_PORTAUDIO"] then + if _OPTIONS["targetos"]=="windows" or _OPTIONS["targetos"]=="linux" or _OPTIONS["targetos"]=="macosx" then + _OPTIONS["NO_USE_PORTAUDIO"] = "0" + else + _OPTIONS["NO_USE_PORTAUDIO"] = "1" + end +end + +newoption { trigger = "MODERN_WIN_API", description = "Use Modern Windows APIs", allowed = { |