2007-05-20 10:38:20 +02:00
|
|
|
###############################################################################
|
2006-02-19 14:11:21 +01:00
|
|
|
# Automake targets and declarations
|
|
|
|
###############################################################################
|
|
|
|
|
2006-03-10 18:21:33 +01:00
|
|
|
AUTOMAKE_OPTIONS = subdir-objects
|
|
|
|
|
2006-02-19 14:11:21 +01:00
|
|
|
NULL =
|
2011-07-07 15:55:57 +02:00
|
|
|
EXTRA_DIST = \
|
2008-03-27 17:09:56 +01:00
|
|
|
vlc-plugin.pc.in \
|
2010-08-21 18:20:45 +02:00
|
|
|
libvlccore.sym \
|
2011-08-30 22:40:14 +02:00
|
|
|
revision.txt
|
2006-02-19 14:11:21 +01:00
|
|
|
|
2011-08-30 22:40:14 +02:00
|
|
|
BUILT_SOURCES = $(nodist_pluginsinclude_HEADERS)
|
2008-02-08 17:13:58 +01:00
|
|
|
CLEANFILES = $(BUILT_SOURCES)
|
2006-02-19 14:11:21 +01:00
|
|
|
|
2010-01-31 11:53:39 +01:00
|
|
|
SUFFIXES = .pc.in .pc .rc.in .rc
|
2008-03-19 19:59:09 +01:00
|
|
|
|
2006-02-19 14:11:21 +01:00
|
|
|
###############################################################################
|
|
|
|
# Headers
|
|
|
|
###############################################################################
|
|
|
|
|
2008-05-01 22:00:05 +02:00
|
|
|
pluginsincludedir = $(pkgincludedir)/plugins
|
2006-02-19 14:11:21 +01:00
|
|
|
|
2008-05-01 22:00:05 +02:00
|
|
|
pluginsinclude_HEADERS = \
|
2008-05-26 20:01:00 +02:00
|
|
|
../include/vlc_access.h \
|
2017-08-03 15:10:35 +02:00
|
|
|
../include/vlc_actions.h \
|
2014-02-10 13:58:17 +01:00
|
|
|
../include/vlc_addons.h \
|
2021-12-20 17:27:56 +01:00
|
|
|
../include/vlc_ancillary.h \
|
2008-05-26 20:56:49 +02:00
|
|
|
../include/vlc_aout.h \
|
2012-07-17 21:47:59 +02:00
|
|
|
../include/vlc_aout_volume.h \
|
2008-05-01 22:00:05 +02:00
|
|
|
../include/vlc_arrays.h \
|
2010-06-28 01:13:33 +02:00
|
|
|
../include/vlc_atomic.h \
|
2009-03-12 16:27:37 +01:00
|
|
|
../include/vlc_avcodec.h \
|
2008-05-26 20:01:00 +02:00
|
|
|
../include/vlc_bits.h \
|
|
|
|
../include/vlc_block.h \
|
|
|
|
../include/vlc_block_helper.h \
|
2015-12-02 17:01:57 +01:00
|
|
|
../include/vlc_boxes.h \
|
2008-05-26 20:01:00 +02:00
|
|
|
../include/vlc_charset.h \
|
|
|
|
../include/vlc_codec.h \
|
2008-05-01 22:00:05 +02:00
|
|
|
../include/vlc_common.h \
|
|
|
|
../include/vlc_config.h \
|
2008-05-26 20:01:00 +02:00
|
|
|
../include/vlc_config_cat.h \
|
2008-05-01 22:00:05 +02:00
|
|
|
../include/vlc_configuration.h \
|
2009-09-22 17:20:20 +02:00
|
|
|
../include/vlc_cpu.h \
|
2018-07-12 15:19:06 +02:00
|
|
|
../include/vlc_cxx_helpers.hpp \
|
2023-01-30 18:15:41 +01:00
|
|
|
../include/vlc_clock.h \
|
2019-05-31 12:32:30 +02:00
|
|
|
../include/vlc_decoder.h \
|
2008-05-26 20:56:49 +02:00
|
|
|
../include/vlc_demux.h \
|
2019-03-27 19:47:34 +01:00
|
|
|
../include/vlc_dialog.h \
|
2022-02-16 14:15:42 +01:00
|
|
|
../include/vlc_diffutil.h \
|
2008-05-26 20:01:00 +02:00
|
|
|
../include/vlc_epg.h \
|
2008-05-26 20:56:49 +02:00
|
|
|
../include/vlc_es.h \
|
2008-05-26 20:01:00 +02:00
|
|
|
../include/vlc_es_out.h \
|
|
|
|
../include/vlc_events.h \
|
2020-09-01 18:09:09 +02:00
|
|
|
../include/vlc_executor.h \
|
2008-05-26 20:56:49 +02:00
|
|
|
../include/vlc_filter.h \
|
2019-03-27 19:47:34 +01:00
|
|
|
../include/vlc_fingerprinter.h \
|
2009-03-17 23:01:27 +01:00
|
|
|
../include/vlc_fourcc.h \
|
2021-12-15 16:25:35 +01:00
|
|
|
../include/vlc_frame.h \
|
2010-02-07 14:18:02 +01:00
|
|
|
../include/vlc_fs.h \
|
2008-05-26 20:01:00 +02:00
|
|
|
../include/vlc_gcrypt.h \
|
2020-04-01 15:20:09 +02:00
|
|
|
../include/vlc_hash.h \
|
2009-07-22 01:06:38 +02:00
|
|
|
../include/vlc_http.h \
|
2008-05-26 20:01:00 +02:00
|
|
|
../include/vlc_httpd.h \
|
2008-05-26 20:56:49 +02:00
|
|
|
../include/vlc_image.h \
|
2009-10-17 20:01:57 +02:00
|
|
|
../include/vlc_inhibit.h \
|
2008-05-26 20:56:49 +02:00
|
|
|
../include/vlc_input.h \
|
2009-01-17 17:59:40 +01:00
|
|
|
../include/vlc_input_item.h \
|
2015-03-02 21:44:36 +01:00
|
|
|
../include/vlc_interface.h \
|
2019-03-27 19:47:34 +01:00
|
|
|
../include/vlc_interrupt.h \
|
2015-11-23 14:47:10 +01:00
|
|
|
../include/vlc_keystore.h \
|
2018-06-10 19:36:06 +02:00
|
|
|
../include/vlc_list.h \
|
2019-03-27 19:47:34 +01:00
|
|
|
../include/vlc_media_library.h \
|
2018-05-17 11:37:56 +02:00
|
|
|
../include/vlc_media_source.h \
|
2019-03-27 19:47:34 +01:00
|
|
|
../include/vlc_memstream.h \
|
2008-05-01 22:00:05 +02:00
|
|
|
../include/vlc_messages.h \
|
2021-07-07 13:26:38 +02:00
|
|
|
../include/vlc_tracer.h \
|
2008-05-26 20:01:00 +02:00
|
|
|
../include/vlc_meta.h \
|
2014-05-13 16:36:31 +02:00
|
|
|
../include/vlc_meta_fetcher.h \
|
2012-08-28 18:07:06 +02:00
|
|
|
../include/vlc_mime.h \
|
2008-05-01 22:00:05 +02:00
|
|
|
../include/vlc_modules.h \
|
2009-08-29 20:08:30 +02:00
|
|
|
../include/vlc_mouse.h \
|
2011-11-03 19:47:58 +01:00
|
|
|
../include/vlc_network.h \
|
2008-05-01 22:00:05 +02:00
|
|
|
../include/vlc_objects.h \
|
2019-03-27 19:47:34 +01:00
|
|
|
../include/vlc_opengl.h \
|
2022-01-11 15:05:57 +01:00
|
|
|
../include/vlc_opengl_interop.h \
|
2022-02-22 17:07:53 +01:00
|
|
|
../include/vlc_opengl_filter.h \
|
2009-05-16 19:23:34 +02:00
|
|
|
../include/vlc_picture.h \
|
2009-05-31 21:55:37 +02:00
|
|
|
../include/vlc_picture_fifo.h \
|
|
|
|
../include/vlc_picture_pool.h \
|
2018-04-09 14:23:36 +02:00
|
|
|
../include/vlc_player.h \
|
2018-10-15 16:30:17 +02:00
|
|
|
../include/vlc_playlist.h \
|
2019-04-01 11:58:39 +02:00
|
|
|
../include/vlc_playlist_export.h \
|
2008-05-08 17:55:18 +02:00
|
|
|
../include/vlc_plugin.h \
|
2009-12-19 19:26:30 +01:00
|
|
|
../include/vlc_probe.h \
|
2023-03-30 15:48:46 +02:00
|
|
|
../include/vlc_preparser.h \
|
2020-04-11 19:50:03 +02:00
|
|
|
../include/vlc_queue.h \
|
2008-05-26 20:56:49 +02:00
|
|
|
../include/vlc_rand.h \
|
2016-04-19 17:39:11 +02:00
|
|
|
../include/vlc_renderer_discovery.h \
|
2019-03-27 19:47:34 +01:00
|
|
|
../include/vlc_services_discovery.h \
|
2019-01-21 16:41:54 +01:00
|
|
|
../include/vlc_sort.h \
|
2008-05-26 20:56:49 +02:00
|
|
|
../include/vlc_sout.h \
|
2020-09-19 11:32:21 +02:00
|
|
|
../include/vlc_spawn.h \
|
2010-05-04 21:16:16 +02:00
|
|
|
../include/vlc_spu.h \
|
2008-05-26 20:01:00 +02:00
|
|
|
../include/vlc_stream.h \
|
2016-11-28 02:58:29 +01:00
|
|
|
../include/vlc_stream_extractor.h \
|
2008-05-26 20:01:00 +02:00
|
|
|
../include/vlc_strings.h \
|
2009-05-16 19:23:34 +02:00
|
|
|
../include/vlc_subpicture.h \
|
2010-05-04 20:10:13 +02:00
|
|
|
../include/vlc_text_style.h \
|
2008-05-01 22:00:05 +02:00
|
|
|
../include/vlc_threads.h \
|
2019-03-27 19:47:34 +01:00
|
|
|
../include/vlc_thumbnailer.h \
|
2018-06-19 13:21:36 +02:00
|
|
|
../include/vlc_tick.h \
|
2017-11-24 17:38:18 +01:00
|
|
|
../include/vlc_timestamp_helper.h \
|
2011-11-03 19:47:58 +01:00
|
|
|
../include/vlc_tls.h \
|
2008-05-26 20:01:00 +02:00
|
|
|
../include/vlc_url.h \
|
2008-05-26 20:56:49 +02:00
|
|
|
../include/vlc_variables.h \
|
vlc_vector: add helpers for vectors
Add a new API for handling general-purpose vectors, intended to replace
ARRAY_*.
Like ARRAY_*, it provides macros to handle a dynamic array generic
over the type of its items.
Contrary to ARRAY_*:
- it does not abort on allocation failure (but reports the error);
- it uses size_t instead of int to store the capacity and the size;
- it checks for overflows on reallocation.
For illustration purpose, embedding a vector of input_item_t* in a
struct looks like:
struct playlist {
struct VLC_VECTOR(input_item_t *) items;
// ...
};
The main features (with names inspired by std::vector from C++ and
std::vec::Vec from Rust) are:
- void vlc_vector_init(pv)
init the vector (use VLC_VECTOR_INITIALIZER for static init)
- void vlc_vector_destroy(pv)
destroy the vector and release any associated resources
- void vlc_vector_clear(pv)
remove all items from the vector
- vec.size
read the size of the vector
- vec.data[i]
access the i_th item
- bool vlc_vector_push(pv, item)
push an item to the end of the vector
- bool vlc_vector_push_all(pv, items, count)
push serveral items to the end of the vector
- bool vlc_vector_insert(pv, index, item)
insert an item at index
- bool vlc_vector_insert_all(pv, index, items, count)
insert several items at index
- void vlc_vector_move(pv, index, target)
move an item to target
- void vlc_vector_move_all(pv, index, count, target)
move a slice of items to target
- void vlc_vector_remove(pv, index)
remove an item
- void vlc_vector_remove_slice(pv, index, count)
remove a slice of items
- void vlc_vector_swap_remove(pv, index)
remove an item in O(1) without preserving ordering
- bool vlc_vector_reserve(pv, mincap)
increase the capacity of the vector in advance
- void vlc_vector_shrink_to_fit(pv)
resize the vector to its actual size
- void vlc_vector_index_of(pv, index, pidx)
find the index of an item (returns the result in *pidx)
- vlc_vector_foreach(item, pv)
a for-each loop
It uses an exponential growth policy for both increasing and decreasing
the size. As a consequence, the amortized complexity of
vlc_vector_push() is O(1).
Signed-off-by: Thomas Guillem <thomas@gllm.fr>
2018-10-16 11:21:02 +02:00
|
|
|
../include/vlc_vector.h \
|
2019-03-27 19:47:34 +01:00
|
|
|
../include/vlc_video_splitter.h \
|
2017-07-24 15:10:49 +02:00
|
|
|
../include/vlc_viewpoint.h \
|
2008-05-26 20:56:49 +02:00
|
|
|
../include/vlc_vlm.h \
|
|
|
|
../include/vlc_vout.h \
|
2009-08-03 19:52:34 +02:00
|
|
|
../include/vlc_vout_display.h \
|
2010-05-04 21:26:12 +02:00
|
|
|
../include/vlc_vout_osd.h \
|
2022-05-15 10:35:09 +02:00
|
|
|
../include/vlc_window.h \
|
2010-06-03 22:55:27 +02:00
|
|
|
../include/vlc_xlib.h \
|
2019-03-27 19:47:34 +01:00
|
|
|
../include/vlc_xml.h \
|
2008-05-01 22:00:05 +02:00
|
|
|
$(NULL)
|
2010-08-21 18:19:47 +02:00
|
|
|
nodist_pluginsinclude_HEADERS = ../include/vlc_about.h
|
2006-02-19 14:11:21 +01:00
|
|
|
|
2008-05-01 22:00:05 +02:00
|
|
|
noinst_HEADERS = \
|
2007-08-17 18:33:59 +02:00
|
|
|
../include/vlc_codecs.h \
|
2010-01-25 18:39:07 +01:00
|
|
|
../include/vlc_extensions.h \
|
2008-01-27 18:05:30 +01:00
|
|
|
../include/vlc_fixups.h \
|
2006-08-29 11:14:34 +02:00
|
|
|
../include/vlc_intf_strings.h \
|
2008-05-26 20:18:54 +02:00
|
|
|
../include/vlc_iso_lang.h \
|
2008-01-24 18:34:52 +01:00
|
|
|
../include/vlc_pgpkey.h \
|
2006-02-19 14:11:21 +01:00
|
|
|
../include/vlc_update.h \
|
|
|
|
$(NULL)
|
|
|
|
|
2007-10-30 00:35:47 +01:00
|
|
|
../include/vlc_about.h: Makefile.am $(top_srcdir)/COPYING $(top_srcdir)/THANKS $(top_srcdir)/AUTHORS
|
2010-01-31 12:00:59 +01:00
|
|
|
$(AM_V_at)rm -f -- "$@.tmp"
|
|
|
|
$(AM_V_at)mkdir -p -- ../include
|
|
|
|
$(AM_V_GEN)(echo "/* Automatically generated file - DO NOT EDIT */" && \
|
|
|
|
echo "static const char psz_license[] =" && \
|
|
|
|
sed 's/"/\\"/g;s/^.*$$/\"&\\n\"/' "$(top_srcdir)/COPYING" && \
|
|
|
|
echo ";" && \
|
|
|
|
echo "static const char psz_thanks[] =" && \
|
2009-07-24 17:24:08 +02:00
|
|
|
sed '/\$$Id:/d;s/"/\\"/g;s/<.*.> //;s/^.*$$/\"&\\n\"/' \
|
2010-01-31 12:00:59 +01:00
|
|
|
"$(top_srcdir)/THANKS" && \
|
|
|
|
echo ";" && \
|
|
|
|
echo "static const char psz_authors[] =" && \
|
2010-07-25 21:37:25 +02:00
|
|
|
sed '/\$$Id:/d;s/"/\\"/g;s/<.*.> //;s/^.*$$/\"&\\n\"/' \
|
2010-01-31 12:00:59 +01:00
|
|
|
"$(top_srcdir)/AUTHORS" && \
|
|
|
|
echo ";") >> "$@.tmp"
|
|
|
|
$(AM_V_at)mv -f -- "$@.tmp" "$@"
|
2008-02-25 18:32:54 +01:00
|
|
|
|
2008-03-02 19:02:34 +01:00
|
|
|
###############################################################################
|
|
|
|
# pkg-config integration
|
|
|
|
###############################################################################
|
|
|
|
|
|
|
|
pkgconfigdir = $(libdir)/pkgconfig
|
2011-08-30 22:40:14 +02:00
|
|
|
pkgconfig_DATA = vlc-plugin.pc
|
2008-03-02 19:02:34 +01:00
|
|
|
CLEANFILES += $(pkgconfig_DATA)
|
|
|
|
|
2020-09-27 21:31:49 +02:00
|
|
|
vlc-plugin.pc: vlc-plugin.pc.in $(top_builddir)/config.status
|
2010-01-31 11:58:12 +01:00
|
|
|
$(AM_V_GEN)cd "$(top_builddir)" && \
|
2008-03-19 19:59:09 +01:00
|
|
|
$(SHELL) ./config.status --file="src/$@"
|
|
|
|
|
2010-01-31 11:53:39 +01:00
|
|
|
##############################################################################
|
|
|
|
# Windows resource files
|
|
|
|
##############################################################################
|
|
|
|
|
|
|
|
if HAVE_WIN32
|
2022-12-02 12:13:49 +01:00
|
|
|
noinst_DATA = libvlccore_win32_rc.rc
|
2010-01-31 11:53:39 +01:00
|
|
|
endif
|
2022-12-02 12:13:49 +01:00
|
|
|
EXTRA_DIST += libvlccore_win32_rc.rc.in
|
2010-01-31 11:53:39 +01:00
|
|
|
|
2022-12-02 12:13:49 +01:00
|
|
|
libvlccore_win32_rc.rc: libvlccore_win32_rc.rc.in $(top_builddir)/config.status
|
2020-09-27 21:34:29 +02:00
|
|
|
$(AM_V_GEN)cd "$(top_builddir)" && \
|
2010-01-31 11:53:39 +01:00
|
|
|
$(SHELL) ./config.status --file="src/$@"
|
|
|
|
|
2006-02-19 14:11:21 +01:00
|
|
|
###############################################################################
|
|
|
|
# Building libvlc
|
|
|
|
###############################################################################
|
|
|
|
|
2011-08-30 22:40:14 +02:00
|
|
|
lib_LTLIBRARIES = libvlccore.la
|
2006-02-19 14:11:21 +01:00
|
|
|
|
2012-08-20 22:24:08 +02:00
|
|
|
AM_CPPFLAGS = $(INCICONV) $(IDN_CFLAGS) \
|
2013-12-07 00:57:11 +01:00
|
|
|
-DMODULE_STRING=\"core\" \
|
2018-03-05 22:10:08 +01:00
|
|
|
-DSYSDATADIR=\"$(datadir)\" \
|
2018-03-05 21:41:52 +01:00
|
|
|
-DLIBDIR=\"$(libdir)\" \
|
2018-03-05 22:31:00 +01:00
|
|
|
-DLIBEXECDIR=\"$(libexecdir)\" \
|
2018-02-11 16:04:51 +01:00
|
|
|
-DLOCALEDIR=\"$(localedir)\" \
|
2018-03-05 22:17:05 +01:00
|
|
|
-DPKGDATADIR=\"$(pkgdatadir)\" \
|
2018-03-05 22:31:00 +01:00
|
|
|
-DPKGLIBDIR=\"$(pkglibdir)\" \
|
|
|
|
-DPKGLIBEXECDIR=\"$(pkglibexecdir)\"
|
2011-08-30 22:40:14 +02:00
|
|
|
AM_CFLAGS = $(CFLAGS_libvlccore)
|
2012-09-04 15:56:02 +02:00
|
|
|
if HAVE_DYNAMIC_PLUGINS
|
|
|
|
AM_CPPFLAGS += -DHAVE_DYNAMIC_PLUGINS
|
2023-01-06 07:45:47 +01:00
|
|
|
if HAVE_WIN32
|
|
|
|
AM_CPPFLAGS += -DVLC_DLL_EXPORT
|
|
|
|
endif
|
2012-09-04 15:56:02 +02:00
|
|
|
endif
|
2012-09-09 12:55:47 +02:00
|
|
|
if HAVE_DBUS
|
|
|
|
AM_CPPFLAGS += -DHAVE_DBUS
|
|
|
|
AM_CFLAGS += $(DBUS_CFLAGS)
|
|
|
|
endif
|
2011-08-30 22:40:14 +02:00
|
|
|
|
2016-09-20 17:41:39 +02:00
|
|
|
libvlccore_la_SOURCES = \
|
2006-02-19 14:11:21 +01:00
|
|
|
libvlc.c \
|
|
|
|
libvlc.h \
|
2006-12-01 21:13:46 +01:00
|
|
|
libvlc-module.c \
|
2008-10-22 19:24:07 +02:00
|
|
|
missing.c \
|
2011-08-17 20:59:56 +02:00
|
|
|
revision.c \
|
2008-05-31 20:36:40 +02:00
|
|
|
version.c \
|
2019-04-11 18:46:32 +02:00
|
|
|
config/ansi_term.h \
|
2016-09-20 17:41:39 +02:00
|
|
|
config/configuration.h \
|
|
|
|
config/core.c \
|
|
|
|
config/chain.c \
|
|
|
|
config/file.c \
|
|
|
|
config/help.c \
|
|
|
|
config/intf.c \
|
|
|
|
config/cmdline.c \
|
|
|
|
config/getopt.c \
|
|
|
|
config/vlc_getopt.h \
|
2019-04-10 08:03:52 +02:00
|
|
|
config/jaro_winkler.c \
|
|
|
|
config/vlc_jaro_winkler.h \
|
2016-09-20 17:41:39 +02:00
|
|
|
extras/libc.c \
|
2018-05-17 11:37:56 +02:00
|
|
|
media_source/media_source.c \
|
|
|
|
media_source/media_source.h \
|
|
|
|
media_source/media_tree.c \
|
2016-09-20 17:41:39 +02:00
|
|
|
modules/modules.h \
|
|
|
|
modules/modules.c \
|
|
|
|
modules/bank.c \
|
|
|
|
modules/cache.c \
|
|
|
|
modules/entry.c \
|
|
|
|
modules/textdomain.c \
|
2009-03-05 19:42:47 +01:00
|
|
|
interface/dialog.c \
|
2006-02-19 14:11:21 +01:00
|
|
|
interface/interface.c \
|
2018-10-15 16:30:17 +02:00
|
|
|
playlist/content.c \
|
|
|
|
playlist/content.h \
|
|
|
|
playlist/control.c \
|
|
|
|
playlist/control.h \
|
2019-04-01 11:58:39 +02:00
|
|
|
playlist/export.c \
|
2018-10-15 16:30:17 +02:00
|
|
|
playlist/item.c \
|
|
|
|
playlist/item.h \
|
|
|
|
playlist/notify.c \
|
|
|
|
playlist/notify.h \
|
|
|
|
playlist/player.c \
|
|
|
|
playlist/player.h \
|
|
|
|
playlist/playlist.c \
|
|
|
|
playlist/playlist.h \
|
|
|
|
playlist/preparse.c \
|
|
|
|
playlist/preparse.h \
|
2018-07-18 19:41:24 +02:00
|
|
|
playlist/randomizer.c \
|
|
|
|
playlist/randomizer.h \
|
2018-10-16 15:16:14 +02:00
|
|
|
playlist/request.c \
|
2018-10-16 15:37:41 +02:00
|
|
|
playlist/shuffle.c \
|
2018-10-16 15:51:02 +02:00
|
|
|
playlist/sort.c \
|
2018-06-25 17:45:25 +02:00
|
|
|
preparser/art.c \
|
|
|
|
preparser/art.h \
|
|
|
|
preparser/fetcher.c \
|
|
|
|
preparser/fetcher.h \
|
|
|
|
preparser/preparser.c \
|
2006-05-14 20:29:00 +02:00
|
|
|
input/item.c \
|
2006-02-19 14:11:21 +01:00
|
|
|
input/access.c \
|
2018-05-02 15:47:55 +02:00
|
|
|
clock/clock_internal.c \
|
2018-05-02 16:07:44 +02:00
|
|
|
clock/input_clock.c \
|
2018-05-02 18:19:25 +02:00
|
|
|
clock/clock.c \
|
2006-02-19 14:11:21 +01:00
|
|
|
input/decoder.c \
|
2022-04-25 14:16:41 +02:00
|
|
|
input/decoder_device.c \
|
2019-02-18 14:33:57 +01:00
|
|
|
input/decoder_helpers.c \
|
2006-02-19 14:11:21 +01:00
|
|
|
input/demux.c \
|
2016-06-30 20:10:22 +02:00
|
|
|
input/demux_chained.c \
|
2006-02-19 14:11:21 +01:00
|
|
|
input/es_out.c \
|
2020-02-11 09:56:28 +01:00
|
|
|
input/es_out_source.c \
|
2008-11-11 21:26:46 +01:00
|
|
|
input/es_out_timeshift.c \
|
2006-02-19 14:11:21 +01:00
|
|
|
input/input.c \
|
2010-02-24 23:03:20 +01:00
|
|
|
input/info.h \
|
2006-09-24 19:11:25 +02:00
|
|
|
input/meta.c \
|
2020-10-27 16:49:46 +01:00
|
|
|
input/attachment.c \
|
2019-08-13 17:52:49 +02:00
|
|
|
player/player.c \
|
|
|
|
player/player.h \
|
|
|
|
player/input.c \
|
2019-08-13 15:37:13 +02:00
|
|
|
player/timer.c \
|
2019-08-13 17:52:49 +02:00
|
|
|
player/track.c \
|
|
|
|
player/title.c \
|
|
|
|
player/aout.c \
|
|
|
|
player/vout.c \
|
|
|
|
player/osd.c \
|
2019-07-30 15:59:05 +02:00
|
|
|
player/medialib.c \
|
2020-08-13 15:56:04 +02:00
|
|
|
player/metadata.c \
|
2018-05-02 16:07:44 +02:00
|
|
|
clock/input_clock.h \
|
2018-05-02 18:19:25 +02:00
|
|
|
clock/clock.h \
|
2018-05-02 15:47:55 +02:00
|
|
|
clock/clock_internal.h \
|
2008-10-13 19:52:33 +02:00
|
|
|
input/decoder.h \
|
2008-10-13 19:57:51 +02:00
|
|
|
input/demux.h \
|
2008-10-13 19:52:33 +02:00
|
|
|
input/es_out.h \
|
2008-11-20 21:49:51 +01:00
|
|
|
input/event.h \
|
2008-12-02 19:16:17 +01:00
|
|
|
input/item.h \
|
2016-11-22 00:50:52 +01:00
|
|
|
input/mrl_helpers.h \
|
2008-10-13 20:20:54 +02:00
|
|
|
input/stream.h \
|
2006-02-19 14:11:21 +01:00
|
|
|
input/input_internal.h \
|
2008-11-22 11:37:58 +01:00
|
|
|
input/input_interface.h \
|
2007-03-11 20:40:05 +01:00
|
|
|
input/vlm_internal.h \
|
2009-03-08 20:25:52 +01:00
|
|
|
input/vlm_event.h \
|
2009-03-01 09:40:11 +01:00
|
|
|
input/resource.h \
|
|
|
|
input/resource.c \
|
2016-11-20 15:31:27 +01:00
|
|
|
input/services_discovery.c \
|
2011-11-29 21:08:07 +01:00
|
|
|
input/stats.c \
|
2006-02-19 14:11:21 +01:00
|
|
|
input/stream.c \
|
2016-06-30 19:05:55 +02:00
|
|
|
input/stream_fifo.c \
|
2016-11-28 02:58:29 +01:00
|
|
|
input/stream_extractor.c \
|
2008-12-08 22:34:33 +01:00
|
|
|
input/stream_filter.c \
|
2008-10-13 20:20:54 +02:00
|
|
|
input/stream_memory.c \
|
2006-02-19 14:11:21 +01:00
|
|
|
input/subtitles.c \
|
2018-10-04 17:10:16 +02:00
|
|
|
input/thumbnailer.c \
|
2006-02-19 14:11:21 +01:00
|
|
|
input/var.c \
|
2016-09-20 17:41:39 +02:00
|
|
|
audio_output/aout_internal.h \
|
|
|
|
audio_output/common.c \
|
|
|
|
audio_output/dec.c \
|
|
|
|
audio_output/filters.c \
|
2020-08-13 15:55:24 +02:00
|
|
|
audio_output/meter.c \
|
2016-09-20 17:41:39 +02:00
|
|
|
audio_output/output.c \
|
|
|
|
audio_output/volume.c \
|
2010-04-25 09:29:33 +02:00
|
|
|
video_output/chrono.h \
|
2010-04-25 19:18:02 +02:00
|
|
|
video_output/control.c \
|
|
|
|
video_output/control.h \
|
2009-08-03 19:52:34 +02:00
|
|
|
video_output/display.c \
|
|
|
|
video_output/display.h \
|
2009-10-17 20:01:57 +02:00
|
|
|
video_output/inhibit.c \
|
|
|
|
video_output/inhibit.h \
|
2010-04-25 16:34:57 +02:00
|
|
|
video_output/interlacing.c \
|
2009-08-01 00:06:41 +02:00
|
|
|
video_output/snapshot.c \
|
|
|
|
video_output/snapshot.h \
|
2009-08-01 00:32:54 +02:00
|
|
|
video_output/statistic.h \
|
2006-02-19 14:11:21 +01:00
|
|
|
video_output/video_output.c \
|
|
|
|
video_output/video_text.c \
|
2010-02-01 21:46:15 +01:00
|
|
|
video_output/video_epg.c \
|
2006-02-19 14:11:21 +01:00
|
|
|
video_output/video_widgets.c \
|
|
|
|
video_output/vout_subpictures.c \
|
2017-05-30 17:42:19 +02:00
|
|
|
video_output/vout_spuregion_helper.h \
|
2018-10-23 11:36:29 +02:00
|
|
|
video_output/vout_wrapper.h \
|
2021-12-18 21:19:09 +01:00
|
|
|
video_output/video_window.c \
|
|
|
|
video_output/video_window.h \
|
2009-07-31 21:15:33 +02:00
|
|
|
video_output/window.c \
|
2011-02-17 21:27:55 +01:00
|
|
|
video_output/opengl.c \
|
2006-02-19 14:11:21 +01:00
|
|
|
video_output/vout_intf.c \
|
2008-09-28 08:59:04 +02:00
|
|
|
video_output/vout_internal.h \
|
2020-07-16 10:07:39 +02:00
|
|
|
video_output/vout_private.h \
|
2010-04-15 22:47:11 +02:00
|
|
|
video_output/vout_wrapper.c \
|
2006-02-19 14:11:21 +01:00
|
|
|
network/getaddrinfo.c \
|
2016-02-02 21:42:53 +01:00
|
|
|
network/http_auth.c \
|
2017-07-23 18:53:58 +02:00
|
|
|
network/httpd.c \
|
2006-02-19 14:11:21 +01:00
|
|
|
network/io.c \
|
|
|
|
network/tcp.c \
|
|
|
|
network/udp.c \
|
2008-06-06 17:14:56 +02:00
|
|
|
network/rootbind.c \
|
2018-03-14 20:46:52 +01:00
|
|
|
network/stream.c \
|
2006-02-19 14:11:21 +01:00
|
|
|
network/tls.c \
|
2006-11-22 21:00:19 +01:00
|
|
|
text/charset.c \
|
2016-09-07 11:41:14 +02:00
|
|
|
text/memstream.c \
|
2006-11-22 21:00:19 +01:00
|
|
|
text/strings.c \
|
|
|
|
text/unicode.c \
|
2012-08-20 18:02:45 +02:00
|
|
|
text/url.c \
|
2008-10-23 17:07:13 +02:00
|
|
|
text/filesystem.c \
|
2006-11-22 21:00:19 +01:00
|
|
|
text/iso_lang.c \
|
|
|
|
text/iso-639_def.h \
|
2017-08-03 15:10:35 +02:00
|
|
|
misc/actions.c \
|
2021-12-20 17:27:56 +01:00
|
|
|
misc/ancillary.h \
|
|
|
|
misc/ancillary.c \
|
2020-09-01 18:09:09 +02:00
|
|
|
misc/executor.c \
|
2006-02-19 14:11:21 +01:00
|
|
|
misc/md5.c \
|
2009-12-19 19:26:30 +01:00
|
|
|
misc/probe.c \
|
2007-09-01 17:32:45 +02:00
|
|
|
misc/rand.c \
|
2006-02-19 14:11:21 +01:00
|
|
|
misc/mtime.c \
|
2021-10-08 14:53:55 +02:00
|
|
|
misc/frame.c \
|
2015-03-19 18:05:49 +01:00
|
|
|
misc/fifo.c \
|
2009-03-17 23:01:27 +01:00
|
|
|
misc/fourcc.c \
|
2015-06-11 18:54:00 +02:00
|
|
|
misc/fourcc_list.h \
|
2008-08-20 23:47:07 +02:00
|
|
|
misc/es_format.c \
|
2010-10-22 20:11:12 +02:00
|
|
|
misc/picture.c \
|
2015-06-25 22:30:37 +02:00
|
|
|
misc/picture.h \
|
2009-09-07 19:31:51 +02:00
|
|
|
misc/picture_fifo.c \
|
|
|
|
misc/picture_pool.c \
|
input: add per-thread sleep interruption framework
For the sake of simplicity and for historical reasons, access and demux
modules perform I/O in blocking mode. If no data is available (or more
generally no I/O events), the blocking I/O calls will sleep and hold
the whole input thread. This can lead to long time-outs or even
complete deadlocks, e.g. notably in case of network error.
Originally, a volatile flag (b_die) was checked at frequent interval to
ascertain whether to abort. This violated the threaded memory model,
and was incompatible with race-to-idle power management.
In 2007, the VLC object thread signaling functions were introduced
(vlc_object_wait, vlc_object_signal, ...) in an attempt to solve this.
They proved inflexible and were not compatible with poll/select-style
I/O events multiplexing. Those functions were ultimately removed a
little over a year later.
In the mean time, the "wait pipe" had been introduced. It was focused
on network/socket data reception. While it continues to be used, it
suffers several limitations:
- it affects other threads using the same VLC object,
and indistinctly disrupts all I/O after the "kill",
- it incorrectly assumes that the same VLC object is used everywhere
(leading to race conditions and live loops),
- the convenience wrappers around the wait pipe can only wait on one
single I/O event direction on a single file descriptor at a time,
- it is currently tied to the VLC input thread.
Also at about the same time, thread cancellation was reintroduced.
Thread cancellation has proven helpful for simple thread main loops.
But it ranges from impractical to unusable when sleeping deep within
layers of code, such as in access and stream modules.
Generally the problem of interrupting I/O is an intractable halting
problem. And in practice a given reading operations inside a demuxer
cannot be interrupted without breaking the state machine of the
demuxer - in many or most cases. This changes set is only an attempt
to complement thread cancellation, This does overcome most limitations
of the existing "wait pipe" system and of former VLC object signals:
- It is triggered by a function call specifying a target context.
The context is tied to the thread that needs to be woken up from
sleep. This works quite well because the problem essentially relates
to the call flow of the sleeping thread. On the trigger side, this is
similar to thread cancellation.
- It leaves some flexibility w.r.t. choice of sleeping primitives.
This initial change uses semaphores. Low-level file I/O will be
introduced later.
- The wake-up mechanism is edge-triggered and can be fired multiple
times. Thus it does not irreversibly prevent all I/O and sleeping
operations once fired. It only interrupts the ongoing or next sleep.
In principles non-fatal interruptions could be handled that way, for
instance input thread seek (rather than forceful stop) although that
is not part of the changes set.
- It is not tied to any specific event. The initial use case is
stopping the input thread and checking vlc_object_alive() but it can
be used for other purposes.
2015-06-30 22:52:51 +02:00
|
|
|
misc/interrupt.h \
|
|
|
|
misc/interrupt.c \
|
2015-11-23 14:47:10 +01:00
|
|
|
misc/keystore.c \
|
2021-11-28 16:38:12 +01:00
|
|
|
misc/rcu.h \
|
|
|
|
misc/rcu.c \
|
2016-04-19 17:39:11 +02:00
|
|
|
misc/renderer_discovery.c \
|
2006-02-19 14:11:21 +01:00
|
|
|
misc/threads.c \
|
|
|
|
misc/cpu.c \
|
2022-02-16 14:15:42 +01:00
|
|
|
misc/diffutil.c \
|
2009-09-22 21:19:42 +02:00
|
|
|
misc/epg.c \
|
2010-05-30 19:17:27 +02:00
|
|
|
misc/exit.c \
|
2007-08-13 21:08:15 +02:00
|
|
|
misc/events.c \
|
2006-02-19 14:11:21 +01:00
|
|
|
misc/image.c \
|
|
|
|
misc/messages.c \
|
2021-07-07 13:26:38 +02:00
|
|
|
misc/tracer.c \
|
2012-08-28 18:07:06 +02:00
|
|
|
misc/mime.c \
|
2006-02-19 14:11:21 +01:00
|
|
|
misc/objects.c \
|
2017-06-14 18:49:22 +02:00
|
|
|
misc/objres.c \
|
2020-04-11 19:50:03 +02:00
|
|
|
misc/queue.c \
|
2006-11-26 15:20:34 +01:00
|
|
|
misc/variables.h \
|
2006-02-19 14:11:21 +01:00
|
|
|
misc/variables.c \
|
|
|
|
misc/xml.c \
|
2014-02-07 23:06:20 +01:00
|
|
|
misc/addons.c \
|
2009-06-04 23:44:30 +02:00
|
|
|
misc/filter.c \
|
2008-06-03 22:44:06 +02:00
|
|
|
misc/filter_chain.c \
|
2014-09-16 20:24:40 +02:00
|
|
|
misc/httpcookies.c \
|
2012-11-19 19:34:24 +01:00
|
|
|
misc/fingerprinter.c \
|
2010-05-05 21:29:41 +02:00
|
|
|
misc/text_style.c \
|
2019-01-21 16:41:54 +01:00
|
|
|
misc/sort.c \
|
2010-05-31 20:28:55 +02:00
|
|
|
misc/subpicture.c \
|
2018-06-18 15:19:39 +02:00
|
|
|
misc/subpicture.h \
|
2019-03-08 10:35:39 +01:00
|
|
|
misc/medialibrary.c \
|
|
|
|
misc/viewpoint.c
|
2016-10-30 21:12:17 +01:00
|
|
|
libvlccore_la_LIBADD = $(LIBS_libvlccore) \
|
|
|
|
../compat/libcompat.la \
|
|
|
|
$(LTLIBINTL) $(LTLIBICONV) \
|
2022-02-02 18:29:54 +01:00
|
|
|
$(IDN_LIBS) $(SOCKET_LIBS) $(LIBRT) $(LIBDL) $(LIBM)
|
2016-09-20 17:58:24 +02:00
|
|
|
|
2021-12-06 18:22:02 +01:00
|
|
|
libvlccore_la_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_libvlccore)
|
|
|
|
|
2016-09-20 17:41:39 +02:00
|
|
|
if HAVE_WIN32
|
|
|
|
libvlccore_la_SOURCES += \
|
|
|
|
win32/error.c \
|
|
|
|
win32/filesystem.c \
|
|
|
|
win32/netconf.c \
|
|
|
|
win32/plugin.c \
|
2016-09-20 17:58:24 +02:00
|
|
|
win32/rand.c \
|
2016-09-20 17:41:39 +02:00
|
|
|
win32/specific.c \
|
2022-06-27 15:45:23 +02:00
|
|
|
win32/thread.c
|
2016-09-20 18:14:53 +02:00
|
|
|
if HAVE_WINSTORE
|
2020-04-06 11:26:42 +02:00
|
|
|
libvlccore_la_SOURCES += posix/timer.c win32/dirs-uap.c
|
2016-09-20 18:14:53 +02:00
|
|
|
else
|
2022-05-25 18:20:06 +02:00
|
|
|
libvlccore_la_SOURCES += win32/timer.c win32/dirs.c win32/spawn.c
|
2022-12-23 10:01:45 +01:00
|
|
|
libvlccore_la_LIBADD += -lwinmm -lole32 -luuid
|
2016-09-20 18:14:53 +02:00
|
|
|
endif
|
2021-10-13 12:14:40 +02:00
|
|
|
libvlccore_la_LIBADD += -lbcrypt
|
2020-02-16 14:14:03 +01:00
|
|
|
endif
|
|
|
|
|
2016-09-20 17:41:39 +02:00
|
|
|
if HAVE_OS2
|
|
|
|
libvlccore_la_SOURCES += \
|
|
|
|
os2/dirs.c \
|
|
|
|
darwin/error.c \
|
|
|
|
os2/filesystem.c \
|
2016-09-20 17:58:24 +02:00
|
|
|
os2/getaddrinfo.c \
|
2016-09-20 17:41:39 +02:00
|
|
|
os2/netconf.c \
|
|
|
|
os2/plugin.c \
|
|
|
|
os2/specific.c \
|
2016-09-20 17:58:24 +02:00
|
|
|
os2/rand.c \
|
|
|
|
os2/thread.c
|
2020-02-16 14:14:03 +01:00
|
|
|
endif
|
|
|
|
|
2021-04-27 15:33:10 +02:00
|
|
|
if HAVE_EMSCRIPTEN
|
|
|
|
libvlccore_la_SOURCES += \
|
|
|
|
posix/thread.c \
|
|
|
|
posix/getaddrinfo.c \
|
|
|
|
posix/error.c \
|
|
|
|
posix/dirs.c \
|
|
|
|
posix/filesystem.c \
|
|
|
|
posix/specific.c \
|
|
|
|
posix/timer.c \
|
|
|
|
emscripten/netconf.c \
|
|
|
|
emscripten/thread.c
|
|
|
|
endif
|
|
|
|
|
2016-09-20 17:58:24 +02:00
|
|
|
if HAVE_DARWIN
|
|
|
|
libvlccore_la_SOURCES += \
|
|
|
|
darwin/error.c \
|
2020-11-10 12:05:47 +01:00
|
|
|
darwin/specific.c \
|
|
|
|
darwin/thread.c
|
2018-09-11 16:24:14 +02:00
|
|
|
libvlccore_objc_la_SOURCES = \
|
2019-03-16 23:42:31 +01:00
|
|
|
darwin/dirs.m \
|
2018-09-11 16:24:14 +02:00
|
|
|
darwin/netconf.m
|
|
|
|
noinst_LTLIBRARIES = libvlccore_objc.la
|
2020-02-16 14:14:03 +01:00
|
|
|
endif
|
|
|
|
|
2020-02-08 18:34:33 +01:00
|
|
|
if HAVE_FREEBSD
|
|
|
|
libvlccore_la_SOURCES += \
|
2022-02-26 14:58:56 +01:00
|
|
|
freebsd/cpu.c \
|
2020-02-08 18:34:33 +01:00
|
|
|
freebsd/thread.c
|
|
|
|
endif
|
|
|
|
|
2016-09-20 17:58:24 +02:00
|
|
|
if HAVE_LINUX
|
|
|
|
libvlccore_la_SOURCES += \
|
|
|
|
linux/cpu.c \
|
|
|
|
linux/dirs.c \
|
|
|
|
linux/thread.c
|
2020-02-16 15:02:04 +01:00
|
|
|
if !HAVE_ANDROID
|
|
|
|
libvlccore_la_SOURCES += \
|
|
|
|
linux/filesystem.c
|
|
|
|
else
|
|
|
|
libvlccore_la_SOURCES += \
|
|
|
|
android/error.c \
|
|
|
|
android/specific.c \
|
|
|
|
android/thread.c
|
2017-12-20 13:21:02 +01:00
|
|
|
endif
|
2020-02-16 14:14:03 +01:00
|
|
|
endif
|
|
|
|
|
|
|
|
if !HAVE_WIN32
|
|
|
|
if !HAVE_OS2
|
|
|
|
libvlccore_la_SOURCES += \
|
|
|
|
posix/filesystem.c \
|
|
|
|
posix/plugin.c \
|
|
|
|
posix/rand.c \
|
|
|
|
posix/timer.c
|
2020-02-16 16:56:04 +01:00
|
|
|
if !HAVE_LINUX
|
2020-02-17 18:36:22 +01:00
|
|
|
libvlccore_la_SOURCES += posix/wait.c
|
2020-02-16 16:56:04 +01:00
|
|
|
endif
|
2020-02-16 14:14:03 +01:00
|
|
|
if !HAVE_ANDROID
|
2021-04-27 15:33:10 +02:00
|
|
|
if !HAVE_EMSCRIPTEN
|
|
|
|
libvlccore_la_SOURCES += posix/sort.c
|
|
|
|
endif
|
2020-03-15 01:23:50 +01:00
|
|
|
libvlccore_la_SOURCES += \
|
|
|
|
posix/thread.c
|
2022-01-31 18:17:16 +01:00
|
|
|
libvlccore_la_LIBADD += $(LIBEXECINFO)
|
2020-02-16 14:14:03 +01:00
|
|
|
if !HAVE_DARWIN
|
|
|
|
libvlccore_la_SOURCES += \
|
|
|
|
posix/dirs.c \
|
|
|
|
posix/error.c \
|
|
|
|
posix/netconf.c \
|
|
|
|
posix/picture.c \
|
2020-09-25 13:40:27 +02:00
|
|
|
posix/spawn.c \
|
2020-03-15 01:23:50 +01:00
|
|
|
posix/specific.c
|
2017-12-20 13:21:02 +01:00
|
|
|
if HAVE_LIBANL
|
|
|
|
libvlccore_la_SOURCES += \
|
|
|
|
linux/getaddrinfo.c
|
2016-10-30 21:12:17 +01:00
|
|
|
libvlccore_la_LIBADD += -lanl
|
|
|
|
else
|
|
|
|
libvlccore_la_SOURCES += \
|
|
|
|
posix/getaddrinfo.c
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
2016-09-20 17:41:39 +02:00
|
|
|
endif
|
2006-02-19 14:11:21 +01:00
|
|
|
|
2016-09-20 17:41:39 +02:00
|
|
|
libvlccore_la_SOURCES += \
|
2020-04-18 19:25:30 +02:00
|
|
|
stream_output/sap.c \
|
2016-09-20 17:41:39 +02:00
|
|
|
stream_output/stream_output.c stream_output/stream_output.h
|
|
|
|
if ENABLE_VLM
|
|
|
|
libvlccore_la_SOURCES += input/vlm.c input/vlm_event.c input/vlmshell.c
|
|
|
|
endif
|
2008-05-01 19:04:27 +02:00
|
|
|
|
2017-01-29 09:27:59 +01:00
|
|
|
if UPDATE_CHECK
|
|
|
|
libvlccore_la_SOURCES += \
|
|
|
|
misc/update.h misc/update.c \
|
|
|
|
misc/update_crypto.c
|
|
|
|
AM_CPPFLAGS += -DUPDATE_CHECK
|
|
|
|
AM_CFLAGS += $(GCRYPT_CFLAGS)
|
|
|
|
libvlccore_la_LIBADD += $(GCRYPT_LIBS)
|
|
|
|
endif
|
|
|
|
|
2016-09-20 17:41:39 +02:00
|
|
|
libvlccore_la_LDFLAGS = \
|
|
|
|
$(LDFLAGS_libvlccore) \
|
2017-10-05 19:12:32 +02:00
|
|
|
-no-undefined \
|
2016-09-20 17:41:39 +02:00
|
|
|
-export-symbols $(srcdir)/libvlccore.sym \
|
2017-11-18 13:26:31 +01:00
|
|
|
-version-info 9:0:0
|
2016-09-20 17:41:39 +02:00
|
|
|
libvlccore_la_DEPENDENCIES = libvlccore.sym
|
|
|
|
if HAVE_WIN32
|
2022-12-02 12:13:49 +01:00
|
|
|
libvlccore_la_DEPENDENCIES += libvlccore_win32_rc.$(OBJEXT)
|
|
|
|
libvlccore_la_LDFLAGS += -Wl,libvlccore_win32_rc.$(OBJEXT) -avoid-version -Wc,-static
|
2016-09-20 17:41:39 +02:00
|
|
|
endif
|
|
|
|
if HAVE_OS2
|
|
|
|
libvlccore_la_LDFLAGS += -avoid-version
|
|
|
|
endif
|
|
|
|
if HAVE_DBUS
|
|
|
|
libvlccore_la_LIBADD += $(DBUS_LIBS)
|
|
|
|
endif
|
2017-02-27 15:59:58 +01:00
|
|
|
if HAVE_DARWIN
|
2018-09-11 16:24:14 +02:00
|
|
|
$(libvlccore_la_OBJECTS): libvlccore_objc.la
|
|
|
|
libvlccore_objc_la_OBJCFLAGS = $(AM_OBJCFLAGS) -fobjc-arc
|
|
|
|
libvlccore_objc_la_LDFLAGS = -static
|
|
|
|
libvlccore_la_LIBADD += libvlccore_objc.la
|
2021-05-28 11:29:23 +02:00
|
|
|
libvlccore_la_LDFLAGS += -Wl,-framework,Foundation -Xlinker -install_name -Xlinker @rpath/libvlccore.dylib
|
2017-02-27 15:59:58 +01:00
|
|
|
endif
|
2008-07-02 18:16:17 +02:00
|
|
|
|
2020-07-16 14:30:20 +02:00
|
|
|
# iOS and tvOS applications cannot install global shared libraries and
|
2021-12-15 15:25:39 +01:00
|
|
|
# dylibs must be in frameworks so there's no need for libtool versioning.
|
2020-07-16 14:30:20 +02:00
|
|
|
if HAVE_IOS
|
|
|
|
libvlccore_la_LDFLAGS += -avoid-version
|
|
|
|
endif
|
|
|
|
if HAVE_TVOS
|
|
|
|
libvlccore_la_LDFLAGS += -avoid-version
|
|
|
|
endif
|
|
|
|
|
2022-12-02 12:13:49 +01:00
|
|
|
libvlccore_win32_rc.$(OBJEXT): libvlccore_win32_rc.rc $(top_srcdir)/extras/package/win32/libvlccore.dll.manifest
|
2016-09-20 17:41:39 +02:00
|
|
|
$(WINDRES) --include-dir $(top_srcdir)/share --include-dir $(top_srcdir)/extras/package/win32 -i $< -o $@
|
2006-02-19 14:11:21 +01:00
|
|
|
|
2015-06-11 19:49:59 +02:00
|
|
|
# FourCC tables
|
|
|
|
BUILT_SOURCES += fourcc_tables.h
|
|
|
|
EXTRA_DIST += misc/fourcc_gen.c
|
2015-07-08 08:56:04 +02:00
|
|
|
MOSTLYCLEANFILES = fourcc_gen$(BUILDEXEEXT)
|
2015-06-11 19:49:59 +02:00
|
|
|
|
2015-07-08 08:56:04 +02:00
|
|
|
fourcc_gen$(BUILDEXEEXT): misc/fourcc_gen.c misc/fourcc_list.h ../include/vlc_fourcc.h
|
2015-06-11 19:49:59 +02:00
|
|
|
$(AM_V_at)rm -f -- $@
|
|
|
|
$(AM_V_CC)$(BUILDCC) -I$(srcdir) -o $@ $<
|
|
|
|
|
2015-07-08 08:56:04 +02:00
|
|
|
fourcc_tables.h: fourcc_gen$(BUILDEXEEXT)
|
2015-06-11 19:49:59 +02:00
|
|
|
$(AM_V_at)rm -f -- $@.tmp
|
2017-07-04 17:50:57 +02:00
|
|
|
$(AM_V_GEN)$(builddir)/fourcc_gen$(BUILDEXEEXT) > $@.tmp
|
2015-06-11 19:49:59 +02:00
|
|
|
$(AM_V_at)mv -f -- $@.tmp $@
|
|
|
|
|
2012-09-04 10:47:32 +02:00
|
|
|
# Unit/regression tests
|
|
|
|
#
|
|
|
|
check_PROGRAMS = \
|
|
|
|
test_block \
|
|
|
|
test_dictionary \
|
2020-09-07 15:12:11 +02:00
|
|
|
test_executor \
|
2012-09-04 10:47:32 +02:00
|
|
|
test_i18n_atof \
|
2015-06-30 22:52:51 +02:00
|
|
|
test_interrupt \
|
2019-04-10 08:03:52 +02:00
|
|
|
test_jaro_winkler \
|
2018-06-10 21:32:09 +02:00
|
|
|
test_list \
|
2012-09-04 10:47:32 +02:00
|
|
|
test_md5 \
|
2014-10-27 21:30:55 +01:00
|
|
|
test_picture_pool \
|
2017-07-23 11:13:46 +02:00
|
|
|
test_sort \
|
2012-09-04 10:47:32 +02:00
|
|
|
test_timer \
|
|
|
|
test_url \
|
|
|
|
test_utf8 \
|
|
|
|
test_xmlent \
|
2016-12-06 15:55:21 +01:00
|
|
|
test_headers \
|
2018-07-18 15:51:55 +02:00
|
|
|
test_mrl_helpers \
|
vlc_vector: add helpers for vectors
Add a new API for handling general-purpose vectors, intended to replace
ARRAY_*.
Like ARRAY_*, it provides macros to handle a dynamic array generic
over the type of its items.
Contrary to ARRAY_*:
- it does not abort on allocation failure (but reports the error);
- it uses size_t instead of int to store the capacity and the size;
- it checks for overflows on reallocation.
For illustration purpose, embedding a vector of input_item_t* in a
struct looks like:
struct playlist {
struct VLC_VECTOR(input_item_t *) items;
// ...
};
The main features (with names inspired by std::vector from C++ and
std::vec::Vec from Rust) are:
- void vlc_vector_init(pv)
init the vector (use VLC_VECTOR_INITIALIZER for static init)
- void vlc_vector_destroy(pv)
destroy the vector and release any associated resources
- void vlc_vector_clear(pv)
remove all items from the vector
- vec.size
read the size of the vector
- vec.data[i]
access the i_th item
- bool vlc_vector_push(pv, item)
push an item to the end of the vector
- bool vlc_vector_push_all(pv, items, count)
push serveral items to the end of the vector
- bool vlc_vector_insert(pv, index, item)
insert an item at index
- bool vlc_vector_insert_all(pv, index, items, count)
insert several items at index
- void vlc_vector_move(pv, index, target)
move an item to target
- void vlc_vector_move_all(pv, index, count, target)
move a slice of items to target
- void vlc_vector_remove(pv, index)
remove an item
- void vlc_vector_remove_slice(pv, index, count)
remove a slice of items
- void vlc_vector_swap_remove(pv, index)
remove an item in O(1) without preserving ordering
- bool vlc_vector_reserve(pv, mincap)
increase the capacity of the vector in advance
- void vlc_vector_shrink_to_fit(pv)
resize the vector to its actual size
- void vlc_vector_index_of(pv, index, pidx)
find the index of an item (returns the result in *pidx)
- vlc_vector_foreach(item, pv)
a for-each loop
It uses an exponential growth policy for both increasing and decreasing
the size. As a consequence, the amortized complexity of
vlc_vector_push() is O(1).
Signed-off-by: Thomas Guillem <thomas@gllm.fr>
2018-10-16 11:21:02 +02:00
|
|
|
test_arrays \
|
2018-09-11 12:48:29 +02:00
|
|
|
test_vector \
|
2018-10-15 16:30:17 +02:00
|
|
|
test_shared_data_ptr \
|
2018-07-18 19:41:24 +02:00
|
|
|
test_playlist \
|
2018-05-17 11:37:56 +02:00
|
|
|
test_randomizer \
|
2019-07-02 15:29:16 +02:00
|
|
|
test_media_source \
|
2020-03-19 15:00:22 +01:00
|
|
|
test_extensions \
|
2022-02-16 14:15:42 +01:00
|
|
|
test_thread \
|
|
|
|
test_diffutil
|
2012-09-04 10:47:32 +02:00
|
|
|
|
2015-11-29 11:11:57 +01:00
|
|
|
TESTS = $(check_PROGRAMS) check_symbols
|
2012-09-04 10:47:32 +02:00
|
|
|
|
|
|
|
test_block_SOURCES = test/block_test.c
|
|
|
|
test_block_LDADD = $(LDADD) $(LIBS_libvlccore)
|
|
|
|
test_block_DEPENDENCIES =
|
|
|
|
|
|
|
|
test_dictionary_SOURCES = test/dictionary.c
|
2020-09-07 15:12:11 +02:00
|
|
|
test_executor_SOURCES = test/executor.c
|
2012-09-04 10:47:32 +02:00
|
|
|
test_i18n_atof_SOURCES = test/i18n_atof.c
|
2015-06-30 22:52:51 +02:00
|
|
|
test_interrupt_SOURCES = test/interrupt.c
|
2018-06-17 11:22:08 +02:00
|
|
|
test_interrupt_LDADD = $(LDADD) $(LIBS_libvlccore)
|
2019-04-10 08:03:52 +02:00
|
|
|
test_jaro_winkler_SOURCES = test/jaro_winkler.c config/jaro_winkler.c
|
2018-06-10 21:32:09 +02:00
|
|
|
test_list_SOURCES = test/list.c
|
2012-09-04 10:47:32 +02:00
|
|
|
test_md5_SOURCES = test/md5.c
|
2014-10-27 21:30:55 +01:00
|
|
|
test_picture_pool_SOURCES = test/picture_pool.c
|
2017-07-23 11:13:46 +02:00
|
|
|
test_sort_SOURCES = test/sort.c
|
2012-09-04 10:47:32 +02:00
|
|
|
test_timer_SOURCES = test/timer.c
|
|
|
|
test_url_SOURCES = test/url.c
|
|
|
|
test_utf8_SOURCES = test/utf8.c
|
|
|
|
test_xmlent_SOURCES = test/xmlent.c
|
|
|
|
test_headers_SOURCES = test/headers.c
|
2016-12-06 15:55:21 +01:00
|
|
|
test_mrl_helpers_SOURCES = test/mrl_helpers.c
|
2018-07-18 15:51:55 +02:00
|
|
|
test_arrays_SOURCES = test/arrays.c
|
vlc_vector: add helpers for vectors
Add a new API for handling general-purpose vectors, intended to replace
ARRAY_*.
Like ARRAY_*, it provides macros to handle a dynamic array generic
over the type of its items.
Contrary to ARRAY_*:
- it does not abort on allocation failure (but reports the error);
- it uses size_t instead of int to store the capacity and the size;
- it checks for overflows on reallocation.
For illustration purpose, embedding a vector of input_item_t* in a
struct looks like:
struct playlist {
struct VLC_VECTOR(input_item_t *) items;
// ...
};
The main features (with names inspired by std::vector from C++ and
std::vec::Vec from Rust) are:
- void vlc_vector_init(pv)
init the vector (use VLC_VECTOR_INITIALIZER for static init)
- void vlc_vector_destroy(pv)
destroy the vector and release any associated resources
- void vlc_vector_clear(pv)
remove all items from the vector
- vec.size
read the size of the vector
- vec.data[i]
access the i_th item
- bool vlc_vector_push(pv, item)
push an item to the end of the vector
- bool vlc_vector_push_all(pv, items, count)
push serveral items to the end of the vector
- bool vlc_vector_insert(pv, index, item)
insert an item at index
- bool vlc_vector_insert_all(pv, index, items, count)
insert several items at index
- void vlc_vector_move(pv, index, target)
move an item to target
- void vlc_vector_move_all(pv, index, count, target)
move a slice of items to target
- void vlc_vector_remove(pv, index)
remove an item
- void vlc_vector_remove_slice(pv, index, count)
remove a slice of items
- void vlc_vector_swap_remove(pv, index)
remove an item in O(1) without preserving ordering
- bool vlc_vector_reserve(pv, mincap)
increase the capacity of the vector in advance
- void vlc_vector_shrink_to_fit(pv)
resize the vector to its actual size
- void vlc_vector_index_of(pv, index, pidx)
find the index of an item (returns the result in *pidx)
- vlc_vector_foreach(item, pv)
a for-each loop
It uses an exponential growth policy for both increasing and decreasing
the size. As a consequence, the amortized complexity of
vlc_vector_push() is O(1).
Signed-off-by: Thomas Guillem <thomas@gllm.fr>
2018-10-16 11:21:02 +02:00
|
|
|
test_vector_SOURCES = test/vector.c
|
2018-09-11 12:48:29 +02:00
|
|
|
test_shared_data_ptr_SOURCES = test/shared_data_ptr.cpp
|
2020-04-06 11:26:42 +02:00
|
|
|
test_extensions_SOURCES = test/extensions.c
|
2022-02-16 14:15:42 +01:00
|
|
|
test_diffutil_SOURCES = test/diffutil.c
|
2018-10-15 16:30:17 +02:00
|
|
|
test_playlist_SOURCES = playlist/test.c \
|
|
|
|
playlist/content.c \
|
|
|
|
playlist/control.c \
|
|
|
|
playlist/item.c \
|
|
|
|
playlist/notify.c \
|
|
|
|
playlist/player.c \
|
|
|
|
playlist/playlist.c \
|
2018-10-16 15:16:14 +02:00
|
|
|
playlist/preparse.c \
|
2018-10-16 15:27:35 +02:00
|
|
|
playlist/randomizer.c \
|
2018-10-16 15:37:41 +02:00
|
|
|
playlist/request.c \
|
2018-10-16 15:51:02 +02:00
|
|
|
playlist/shuffle.c \
|
|
|
|
playlist/sort.c
|
2018-10-15 16:30:17 +02:00
|
|
|
test_playlist_CFLAGS = -DTEST_PLAYLIST
|
2018-07-18 19:41:24 +02:00
|
|
|
test_randomizer_SOURCES = playlist/randomizer.c
|
|
|
|
test_randomizer_CFLAGS = -DTEST_RANDOMIZER
|
2018-05-17 11:37:56 +02:00
|
|
|
test_media_source_LDADD = $(LDADD) $(LIBS_libvlccore)
|
|
|
|
test_media_source_CFLAGS = -DTEST_MEDIA_SOURCE
|
|
|
|
test_media_source_SOURCES = media_source/test.c \
|
|
|
|
media_source/media_source.c \
|
|
|
|
media_source/media_tree.c
|
2020-03-19 15:00:22 +01:00
|
|
|
test_thread_SOURCES = test/thread.c
|
2012-09-04 10:47:32 +02:00
|
|
|
|
|
|
|
AM_LDFLAGS = -no-install
|
|
|
|
LDADD = libvlccore.la \
|
|
|
|
../compat/libcompat.la
|
|
|
|
|
2009-02-23 18:11:03 +01:00
|
|
|
###############################################################################
|
|
|
|
# GIT revision
|
|
|
|
###############################################################################
|
|
|
|
|
|
|
|
BUILT_SOURCES += stamp-revision
|
2011-11-04 18:02:07 +01:00
|
|
|
MAINTAINERCLEANFILES = $(srcdir)/revision.txt $(srcdir)/revision.c
|
2009-02-23 18:11:03 +01:00
|
|
|
|
2011-08-17 20:59:56 +02:00
|
|
|
$(srcdir)/revision.c: $(srcdir)/revision.txt
|
|
|
|
$(AM_V_at)rm -f -- $@
|
|
|
|
$(AM_V_GEN)echo "const char psz_vlc_changeset[] = \"$$(cat $<)\";" \
|
|
|
|
> $@
|
2009-02-23 18:11:03 +01:00
|
|
|
|
2011-08-17 20:59:56 +02:00
|
|
|
$(srcdir)/revision.txt:
|
2010-01-31 11:56:20 +01:00
|
|
|
$(AM_V_at)$(MAKE) stamp-revision
|
2011-08-17 20:59:56 +02:00
|
|
|
$(AM_V_GEN)touch $@
|
2009-02-23 18:11:03 +01:00
|
|
|
|
|
|
|
stamp-revision:
|
2010-01-31 11:56:20 +01:00
|
|
|
$(AM_V_at)rm -f -- revision.tmp
|
2011-08-17 20:59:56 +02:00
|
|
|
$(AM_V_GEN)if ! git \
|
2019-05-29 11:29:43 +02:00
|
|
|
-C "$(top_srcdir)" describe \
|
2011-08-17 20:59:56 +02:00
|
|
|
--tags --long --match '?.*.*' --always; then \
|
|
|
|
cat $(srcdir)/revision.txt ; \
|
|
|
|
fi > revision.tmp
|
|
|
|
$(AM_V_at)if diff revision.tmp $(srcdir)/revision.txt >/dev/null 2>&1; then \
|
2009-08-30 09:51:35 +02:00
|
|
|
rm -f -- revision.tmp; \
|
|
|
|
else \
|
2011-08-17 20:59:56 +02:00
|
|
|
mv -f -- revision.tmp $(srcdir)/revision.txt; \
|
|
|
|
fi
|
|
|
|
#2>&1
|
2009-02-23 18:11:03 +01:00
|
|
|
|
2006-03-08 12:32:34 +01:00
|
|
|
###############################################################################
|
|
|
|
# Unit/regression test
|
|
|
|
###############################################################################
|
2008-01-24 18:53:34 +01:00
|
|
|
|
2015-11-29 11:11:57 +01:00
|
|
|
dist_check_SCRIPTS = check_headers check_symbols
|
2009-07-06 22:25:53 +02:00
|
|
|
|
2008-01-24 18:53:34 +01:00
|
|
|
check-local:
|
2008-05-01 22:00:46 +02:00
|
|
|
for h in `echo $(pkginclude_HEADERS) | sed -e s,\.\./include/,,g`; \
|
2008-01-24 18:53:34 +01:00
|
|
|
do \
|
|
|
|
echo grep - "#include <$$h>" $(srcdir)/test/headers.c ; \
|
|
|
|
if ! grep -- "#include <$$h>" $(srcdir)/test/headers.c ; \
|
|
|
|
then \
|
|
|
|
echo "Header $$h not included in test/headers.c!"; \
|
|
|
|
exit 1; \
|
|
|
|
fi ; \
|
|
|
|
done
|
2012-03-01 00:55:49 +01:00
|
|
|
$(SHELL) $(srcdir)/check_headers $(pluginsinclude_HEADERS)
|
2008-01-24 18:53:34 +01:00
|
|
|
|
2006-07-13 17:25:56 +02:00
|
|
|
FORCE:
|
2007-05-20 10:38:20 +02:00
|
|
|
@echo "Generated source cannot be phony. Go away." >&2
|
|
|
|
@exit 1
|
|
|
|
|
|
|
|
.PHONY: FORCE
|