vlc | branch: master | Thomas Guillem <[email protected]> | Mon Nov 13 15:16:16 2017 +0100| [421b81db864a3026cdbd7b62fefcde11339f7fd2] | committer: Thomas Guillem
contribs: use libplacebo on Windows > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=421b81db864a3026cdbd7b62fefcde11339f7fd2 --- .../src/libplacebo/0001-build-use-a-Makefile.patch | 6 +- .../libplacebo/0002-build-fix-win32-build.patch | 161 +++++++++++++++++++++ contrib/src/libplacebo/rules.mak | 11 +- 3 files changed, 172 insertions(+), 6 deletions(-) diff --git a/contrib/src/libplacebo/0001-build-use-a-Makefile.patch b/contrib/src/libplacebo/0001-build-use-a-Makefile.patch index be48d72a5c..42b08c8c7a 100644 --- a/contrib/src/libplacebo/0001-build-use-a-Makefile.patch +++ b/contrib/src/libplacebo/0001-build-use-a-Makefile.patch @@ -1,7 +1,7 @@ -From 185f0ee9dc6ca6b46a43c669d98b5b63020a04e5 Mon Sep 17 00:00:00 2001 +From 2f3ec424ca2dcfdd1abe5f1774c35aea1c9b0088 Mon Sep 17 00:00:00 2001 From: Thomas Guillem <[email protected]> Date: Mon, 30 Oct 2017 14:32:03 +0100 -Subject: [PATCH] build: use a Makefile +Subject: [PATCH 1/2] build: use a Makefile Only needed for VLC 3.0 --- @@ -13,7 +13,7 @@ Only needed for VLC 3.0 diff --git a/Makefile b/Makefile new file mode 100644 -index 0000000..36e7f26 +index 0000000..13f661b --- /dev/null +++ b/Makefile @@ -0,0 +1,38 @@ diff --git a/contrib/src/libplacebo/0002-build-fix-win32-build.patch b/contrib/src/libplacebo/0002-build-fix-win32-build.patch new file mode 100644 index 0000000000..b05111202b --- /dev/null +++ b/contrib/src/libplacebo/0002-build-fix-win32-build.patch @@ -0,0 +1,161 @@ +From 5fa4c39b3d5d93e7a5eaf16a813d8af80f59f254 Mon Sep 17 00:00:00 2001 +From: Thomas Guillem <[email protected]> +Date: Mon, 13 Nov 2017 15:00:04 +0100 +Subject: [PATCH 2/2] build: fix win32 build + + - Remove pthread (disable TA_MEMORY_DEBUGGING and always init/deinit). + + - Remove msvcr100.dll dependency. This dell is not avaible on old Windows + versions. Don't set locale on Windows, this doesn't seem to have any + consequences with VLC on windows (tested with US/FR locales). +--- + Makefile | 9 ++++++++- + src/context.c | 12 ++++++++++++ + src/osdep/printf_useloc_win.c | 18 ++++++------------ + src/ta/ta.c | 4 ++++ + 4 files changed, 30 insertions(+), 13 deletions(-) + +diff --git a/Makefile b/Makefile +index 13f661b..0d29744 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,6 +1,13 @@ + SRCS := colorspace.c common.c context.c dispatch.c filters.c ra.c shaders.c \ + shaders/colorspace.c shaders/sampling.c spirv.c bstr/bstr.c siphash.c \ +- ta/ta.c ta/ta_utils.c ta/talloc.c osdep/printf_useloc_posix.c ++ ta/ta.c ta/ta_utils.c ta/talloc.c ++ ++ifdef HAVE_WIN32 ++SRCS += osdep/printf_useloc_win.c ++else ++SRCS += osdep/printf_useloc_posix.c ++lpthread_libs = $(shell $(LD) -lpthread && echo "-lpthread" || echo "") ++endif + + OBJS = $(patsubst %.c, $(OBJDIR)src/%.o, $(SRCS)) + +diff --git a/src/context.c b/src/context.c +index a325fb8..caaed3f 100644 +--- a/src/context.c ++++ b/src/context.c +@@ -17,13 +17,17 @@ + + #include <stdio.h> + #include <locale.h> ++#ifdef _WIN32 + #include <pthread.h> ++#endif + + #include "common.h" + #include "context.h" + ++#ifndef _WIN32 + static pthread_mutex_t pl_ctx_mutex = PTHREAD_MUTEX_INITIALIZER; + static int pl_ctx_refcount; ++#endif + + static void global_init(void) + { +@@ -59,11 +63,15 @@ struct pl_context *pl_context_create(int api_ver, + abort(); + } + ++#ifdef _WIN32 ++ global_init(); ++#else + // Do global initialization only when refcount is 0 + pthread_mutex_lock(&pl_ctx_mutex); + if (pl_ctx_refcount++ == 0) + global_init(); + pthread_mutex_unlock(&pl_ctx_mutex); ++#endif + + struct pl_context *ctx = talloc_zero(NULL, struct pl_context); + ctx->params = *PL_DEF(params, &pl_context_default_params); +@@ -77,10 +85,14 @@ void pl_context_destroy(struct pl_context **ctx) + TA_FREEP(ctx); + + // Do global uninitialization only when refcount reaches 0 ++#ifdef _WIN32 ++ global_uninit(); ++#else + pthread_mutex_lock(&pl_ctx_mutex); + if (--pl_ctx_refcount == 0) + global_uninit(); + pthread_mutex_unlock(&pl_ctx_mutex); ++#endif + } + + static FILE *default_stream(void *stream, enum pl_log_level level) +diff --git a/src/osdep/printf_useloc_win.c b/src/osdep/printf_useloc_win.c +index 0c4c3be..fc56f90 100644 +--- a/src/osdep/printf_useloc_win.c ++++ b/src/osdep/printf_useloc_win.c +@@ -16,43 +16,37 @@ + */ + + #include <stdlib.h> +-#include <locale.h> + + #include "osdep/printf.h" +- +-static _locale_t cloc; ++#include <locale.h> ++#include <windows.h> + + void printf_c_init() + { +- cloc = _create_locale(LC_ALL, "C"); +- if (!cloc) +- abort(); + } + + void printf_c_uninit() + { +- _free_locale(cloc); +- cloc = (_locale_t) 0; + } + + int vprintf_c(const char *format, va_list ap) + { +- return _vprintf_l(format, cloc, ap); ++ return vprintf(format, ap); + } + + int vfprintf_c(FILE *stream, const char *format, va_list ap) + { +- return _vfprintf_l(stream, format, cloc, ap); ++ return vfprintf(stream, format, ap); + } + + int vsprintf_c(char *str, const char *format, va_list ap) + { +- return _vsprintf_l(str, format, cloc, ap); ++ return vsprintf(str, format, ap); + } + + int vsnprintf_c(char *str, size_t size, const char *format, va_list ap) + { +- return _vsnprintf_l(str, size, format, cloc, ap); ++ return vsnprintf(str, size, format, ap); + } + + #define WRAP(fn, ...) \ +diff --git a/src/ta/ta.c b/src/ta/ta.c +index c6f8116..dec9cb7 100644 +--- a/src/ta/ta.c ++++ b/src/ta/ta.c +@@ -29,6 +29,10 @@ + #define TA_MEMORY_DEBUGGING + #endif + ++#ifdef _WIN32 ++#undef TA_MEMORY_DEBUGGING ++#endif ++ + struct ta_header { + size_t size; // size of the user allocation + struct ta_header *prev; // ring list containing siblings +-- +2.11.0 + diff --git a/contrib/src/libplacebo/rules.mak b/contrib/src/libplacebo/rules.mak index 3f36f283c0..89fe4728fd 100644 --- a/contrib/src/libplacebo/rules.mak +++ b/contrib/src/libplacebo/rules.mak @@ -4,12 +4,14 @@ PLACEBO_VERSION := 0.1.2 PLACEBO_URL := https://github.com/haasn/libplacebo/archive/v$(PLACEBO_VERSION).tar.gz PLACEBO_ARCHIVE = libplacebo-$(PLACEBO_VERSION).tar.gz -ifndef HAVE_WIN32 +ifdef HAVE_WIN32 +LIBPLACEBO_WIN32 = HAVE_WIN32=1 +endif + PKGS += libplacebo ifeq ($(call need_pkg,"libplacebo"),) PKGS_FOUND += libplacebo endif -endif PLACEBOCONF := --prefix="$(PREFIX)" \ --libdir lib \ @@ -23,6 +25,9 @@ $(TARBALLS)/$(PLACEBO_ARCHIVE): libplacebo: $(PLACEBO_ARCHIVE) .sum-libplacebo $(UNPACK) $(APPLY) $(SRC)/libplacebo/0001-build-use-a-Makefile.patch +ifdef HAVE_WIN32 + $(APPLY) $(SRC)/libplacebo/0002-build-fix-win32-build.patch +endif $(MOVE) .libplacebo: libplacebo @@ -30,5 +35,5 @@ libplacebo: $(PLACEBO_ARCHIVE) .sum-libplacebo # we don't want to depend on meson/ninja for VLC 3.0 #cd $< && $(HOSTVARS) meson $(PLACEBOCONF) build #cd $< && cd build && ninja install - cd $< && $(HOSTVARS_PIC) PREFIX=$(PREFIX) make install + cd $< && $(HOSTVARS_PIC) PREFIX=$(PREFIX) $(LIBPLACEBO_WIN32) make install touch $@ _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
