Add one copy of the function into each of the libraries, similarly
to what we do for log2_tab. When using static libs, only one
copy of the file_open.o object file gets included, while when
using shared libraries, each of them get a copy of its own.
This fixes DLL builds with a statically linked C runtime, where
each DLL effectively has got its own instance of the C runtime,
where file descriptors can't be shared across runtimes.
On systems not using msvcrt, the function is not duplicated.
Signed-off-by: Martin Storsjö <martin@martin.st>
raw.o \
utils.o \
+OBJS-$(HAVE_MSVCRT) += file_open.o
+
# parts needed for many different codecs
OBJS-$(CONFIG_AANDCTTABLES) += aandcttab.o
OBJS-$(CONFIG_AC3DSP) += ac3dsp.o
--- /dev/null
+#include "libavutil/file_open.c"
OBJS = alldevices.o \
avdevice.o \
+OBJS-$(HAVE_MSVCRT) += file_open.o
+
# input/output devices
OBJS-$(CONFIG_ALSA_INDEV) += alsa-audio-common.o \
alsa-audio-dec.o
--- /dev/null
+#include "libavutil/file_open.c"
url.o \
utils.o \
+OBJS-$(HAVE_MSVCRT) += file_open.o
+
OBJS-$(CONFIG_NETWORK) += network.o
OBJS-$(CONFIG_RIFFDEC) += riffdec.o
OBJS-$(CONFIG_RIFFENC) += riffenc.o
--- /dev/null
+#include "libavutil/file_open.c"
void avpriv_request_sample(void *avc,
const char *msg, ...) av_printf_format(2, 3);
+#if HAVE_MSVCRT
+#define avpriv_open ff_open
+#endif
+
/**
* A wrapper for open() setting O_CLOEXEC.
*/