summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--old-makefile2
-rw-r--r--player/core.h1
-rw-r--r--player/main.c11
-rw-r--r--player/main_fn.c15
-rw-r--r--wscript7
-rw-r--r--wscript_build.py19
6 files changed, 43 insertions, 12 deletions
diff --git a/old-makefile b/old-makefile
index 5ea5122f7e..0614829e6f 100644
--- a/old-makefile
+++ b/old-makefile
@@ -396,7 +396,7 @@ all: $(ALL_TARGETS)
%-rc.o: %.rc
$(WINDRES) -I. $< $@
-mpv$(EXESUF): $(OBJECTS)
+mpv$(EXESUF): $(OBJECTS) player/main_fn.o
mpv$(EXESUF):
$(CC) -o $@ $^ $(EXTRALIBS)
diff --git a/player/core.h b/player/core.h
index 10c2f1886d..b772f862f7 100644
--- a/player/core.h
+++ b/player/core.h
@@ -388,6 +388,7 @@ void mp_set_playlist_entry(struct MPContext *mpctx, struct playlist_entry *e);
void mp_play_files(struct MPContext *mpctx);
// main.c
+int mpv_main(int argc, char *argv[]);
int mp_initialize(struct MPContext *mpctx);
struct MPContext *mp_create(void);
void mp_destroy(struct MPContext *mpctx);
diff --git a/player/main.c b/player/main.c
index 4493d8aeb5..99ba0becd2 100644
--- a/player/main.c
+++ b/player/main.c
@@ -444,7 +444,7 @@ int mp_initialize(struct MPContext *mpctx)
return 0;
}
-static int mpv_main(int argc, char *argv[])
+int mpv_main(int argc, char *argv[])
{
osdep_preinit(&argc, &argv);
@@ -519,12 +519,3 @@ static int mpv_main(int argc, char *argv[])
return 1;
}
-
-int main(int argc, char *argv[])
-{
-#if HAVE_COCOA
- return cocoa_main(mpv_main, argc, argv);
-#else
- return mpv_main(argc, argv);
-#endif
-}
diff --git a/player/main_fn.c b/player/main_fn.c
new file mode 100644
index 0000000000..87e1681987
--- /dev/null
+++ b/player/main_fn.c
@@ -0,0 +1,15 @@
+#include "config.h"
+#include "core.h"
+
+#if HAVE_COCOA
+#include "osdep/macosx_application.h"
+#endif
+
+int main(int argc, char *argv[])
+{
+#if HAVE_COCOA
+ return cocoa_main(mpv_main, argc, argv);
+#else
+ return mpv_main(argc, argv);
+#endif
+}
diff --git a/wscript b/wscript
index 3c9373e295..5a1526656d 100644
--- a/wscript
+++ b/wscript
@@ -10,6 +10,11 @@ from waftools.checks.custom import *
build_options = [
{
+ 'name': '--shared',
+ 'desc': 'enable shared library',
+ 'default': 'disable',
+ 'func': check_true
+ }, {
'name': '--static-build',
'desc': 'static build',
'default': 'disable',
@@ -739,6 +744,8 @@ _INSTALL_DIRS_LIST = [
('libdir', '${PREFIX}/lib', 'library files'),
('confdir', '${PREFIX}/etc/mpv', 'configuration files'),
+ ('incdir', '${PREFIX}/include', 'include files'),
+
('datadir', '${PREFIX}/share', 'data files'),
('mandir', '${DATADIR}/man', 'man pages '),
('docdir', '${DATADIR}/doc/mpv', 'documentation files'),
diff --git a/wscript_build.py b/wscript_build.py
index 164fc553d6..83d1444a9c 100644
--- a/wscript_build.py
+++ b/wscript_build.py
@@ -426,7 +426,7 @@ def build(ctx):
ctx(
target = "mpv",
- source = ctx.filtered_sources(sources),
+ source = ctx.filtered_sources(sources) + ["player/main_fn.c"],
use = ctx.dependencies_use(),
includes = [ctx.bldnode.abspath(), ctx.srcnode.abspath()] + \
ctx.dependencies_includes(),
@@ -435,6 +435,23 @@ def build(ctx):
**cprog_kwargs
)
+ if ctx.dependency_satisfied('shared'):
+ ctx.load("syms")
+ ctx(
+ target = "mpv",
+ source = ctx.filtered_sources(sources),
+ use = ctx.dependencies_use(),
+ includes = [ctx.bldnode.abspath(), ctx.srcnode.abspath()] + \
+ ctx.dependencies_includes(),
+ features = "c cshlib syms",
+ export_symbols_regex = 'mpv_.*',
+ install_path = ctx.env.LIBDIR,
+ )
+
+ headers = ["client.h"]
+ for f in headers:
+ ctx.install_as(ctx.env.INCDIR + '/libmpv/' + f, 'libmpv/' + f)
+
if ctx.env.DEST_OS == 'win32':
wrapctx = ctx(
target = "mpv",