build: change how some OS specific source files are selected

In a bunch of cases, we emulate highly platform specific APIs on a
higher level across all OSes, such as IPC, terminal, subprocess
handling, and more. We have source files for each OS, and they implement
all the same mpv internal API.

Selecting which source file to use on an OS can be tricky, because there
is partially overlapping and emulated APIs (consider Cygwin on Windows).
Add a pick_first_matching_dep() function to make this slightly easier
and more structured.

Also add dummy backends in some cases, to deal with APIs not being
available.

Clarify the Windows dependency identifiers, as these are the most
confusing.
This commit is contained in:
wm4
2017-06-27 13:47:46 +02:00
parent 70a70b9da3
commit 7eca787571
11 changed files with 129 additions and 47 deletions

View File

@@ -1392,7 +1392,7 @@ void mp_input_load_config(struct input_ctx *ictx)
talloc_free(tmp);
}
#if defined(__MINGW32__)
#if HAVE_WIN32_PIPES
if (ictx->global->opts->input_file && *ictx->global->opts->input_file)
mp_input_pipe_add(ictx, ictx->global->opts->input_file);
#endif

View File

@@ -259,6 +259,8 @@ void mp_input_pipe_add(struct input_ctx *ictx, const char *filename);
struct mp_ipc_ctx;
struct mp_client_api;
// Platform specific implementation, provided by ipc-*.c.
struct mp_ipc_ctx *mp_init_ipc(struct mp_client_api *client_api,
struct mpv_global *global);
void mp_uninit_ipc(struct mp_ipc_ctx *ctx);

13
input/ipc-dummy.c Normal file
View File

@@ -0,0 +1,13 @@
#include <stddef.h>
#include "input/input.h"
struct mp_ipc_ctx *mp_init_ipc(struct mp_client_api *client_api,
struct mpv_global *global)
{
return NULL;
}
void mp_uninit_ipc(struct mp_ipc_ctx *ctx)
{
}