#
# This file and its contents are supplied under the terms of the
# Common Development and Distribution License ("CDDL"), version 1.0.
# You may only use this file in accordance with the terms of version
# 1.0 of the CDDL.
#
# A full copy of the text of the CDDL should have accompanied this
# source.  A copy of the CDDL is also available via the Internet at
# http://www.illumos.org/license/CDDL.
#

#
# Copyright 2015 Aurelien Larcher
# Copyright 2022-2023 Niklas Poslovski
#

USE_DEFAULT_TEST_TRANSFORMS= yes
include ../../../make-rules/shared-macros.mk

COMPONENT_NAME= vlc
COMPONENT_VERSION= 3.0.21
COMPONENT_SUMMARY= Cross-platform media player and streaming server
COMPONENT_SRC= $(COMPONENT_NAME)-$(COMPONENT_VERSION)
COMPONENT_ARCHIVE= $(COMPONENT_SRC).tar.xz
COMPONENT_ARCHIVE_HASH=	sha256:24dbbe1d7dfaeea0994d5def0bbde200177347136dbfe573f5b6a4cee25afbb0
COMPONENT_ARCHIVE_URL=	https://download.videolan.org/pub/videolan/vlc/$(COMPONENT_VERSION)/$(COMPONENT_ARCHIVE)
COMPONENT_PROJECT_URL=	https://www.videolan.org/vlc
COMPONENT_FMRI= media/vlc
COMPONENT_CLASSIFICATION= Applications/Sound and Video
COMPONENT_LICENSE= GPLv2.0,LGPLv2.1

# We need to force compilation with ffmpeg 6
# https://code.videolan.org/videolan/vlc/-/issues/28605
FFMPEG_VERSION = 6

include $(WS_MAKE_RULES)/encumbered.mk
include $(WS_MAKE_RULES)/common.mk

PATH= $(PATH.gnu)

# Required for POSIX recvmsg/sendmsg
LDFLAGS += -lnsl -lsocket

# Required for stack protector
LDFLAGS += -lssp

# Required OpenGL extensions
CFLAGS += -I/usr/include/mesa -DGLEXT_PROTOTYPES

# Define to ensure consistency
CFLAGS += -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
CXXFLAGS += -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64

# Use Qt5
PKG_CONFIG_PATH +=:$(QT5_PKG_CONFIG_PATH)

COMPONENT_PREP_ACTION = ( cd $(@D); autoreconf )

CONFIGURE_ENV += LUAC=$(USRBINDIR64)/luac

CONFIGURE_OPTIONS += --enable-shared
CONFIGURE_OPTIONS += --disable-static

# Input
CONFIGURE_OPTIONS += --enable-sout
CONFIGURE_OPTIONS += --enable-lua
CONFIGURE_OPTIONS += --enable-vlm
CONFIGURE_OPTIONS += --enable-addonmanagermodules
CONFIGURE_OPTIONS += --disable-live555
CONFIGURE_OPTIONS += --disable-dc1394
CONFIGURE_OPTIONS += --disable-dv1394
CONFIGURE_OPTIONS += --disable-linsys
CONFIGURE_OPTIONS += --enable-dvdread
CONFIGURE_OPTIONS += --enable-dvdnav
CONFIGURE_OPTIONS += --enable-bluray
CONFIGURE_OPTIONS += --disable-opencv
CONFIGURE_OPTIONS += --disable-smbclient
CONFIGURE_OPTIONS += --enable-sftp
CONFIGURE_OPTIONS += --disable-v4l2
CONFIGURE_OPTIONS += --disable-decklink
CONFIGURE_OPTIONS += --disable-vcd
CONFIGURE_OPTIONS += --enable-libcddb
CONFIGURE_OPTIONS += --enable-screen
CONFIGURE_OPTIONS += --disable-vnc
CONFIGURE_OPTIONS += --disable-freerdp
CONFIGURE_OPTIONS += --disable-realrtsp

# Mux/Demux
CONFIGURE_OPTIONS += --enable-dvbpsi
CONFIGURE_OPTIONS += --disable-gme
CONFIGURE_OPTIONS += --disable-sid
CONFIGURE_OPTIONS += --enable-ogg
CONFIGURE_OPTIONS += --disable-shout
CONFIGURE_OPTIONS += --enable-matroska
CONFIGURE_OPTIONS += --disable-mod
CONFIGURE_OPTIONS += --enable-mpc

# Codec
CONFIGURE_OPTIONS += --disable-wma-fixed
CONFIGURE_OPTIONS += --disable-shine
CONFIGURE_OPTIONS += --disable-mmal
CONFIGURE_OPTIONS += --disable-crystalhd
CONFIGURE_OPTIONS += --enable-mad
CONFIGURE_OPTIONS += --disable-merge-ffmpeg
CONFIGURE_OPTIONS += --disable-gst-decode
CONFIGURE_OPTIONS += --enable-avcodec
CONFIGURE_OPTIONS += --disable-libva
CONFIGURE_OPTIONS += --disable-dxva2
CONFIGURE_OPTIONS += --enable-avformat
CONFIGURE_OPTIONS += --enable-swscale
CONFIGURE_OPTIONS += --disable-postproc
CONFIGURE_OPTIONS += --enable-faad
CONFIGURE_OPTIONS += --enable-dxva2
CONFIGURE_OPTIONS += --enable-twolame
CONFIGURE_OPTIONS += --enable-dxva2
CONFIGURE_OPTIONS += --enable-dca
CONFIGURE_OPTIONS += --enable-flac
CONFIGURE_OPTIONS += --enable-libmpeg2
CONFIGURE_OPTIONS += --enable-vorbis
CONFIGURE_OPTIONS += --enable-speex
CONFIGURE_OPTIONS += --enable-opus
CONFIGURE_OPTIONS += --enable-theora
CONFIGURE_OPTIONS += --enable-schroedinger
CONFIGURE_OPTIONS += --enable-png
CONFIGURE_OPTIONS += --enable-jpeg
CONFIGURE_OPTIONS += --disable-x262
CONFIGURE_OPTIONS += --enable-x264
CONFIGURE_OPTIONS += --enable-x265
CONFIGURE_OPTIONS += --disable-mfx
CONFIGURE_OPTIONS += --disable-fluidsynth
CONFIGURE_OPTIONS += --disable-zvbi
CONFIGURE_OPTIONS += --enable-telx
CONFIGURE_OPTIONS += --enable-libass
CONFIGURE_OPTIONS += --disable-kate
CONFIGURE_OPTIONS += --disable-tiger

# Video
CONFIGURE_OPTIONS += --with-x
CONFIGURE_OPTIONS += --enable-xcb
CONFIGURE_OPTIONS += --enable-xvideo
CONFIGURE_OPTIONS += --enable-vdpau
CONFIGURE_OPTIONS += --enable-sdl-image
CONFIGURE_OPTIONS += --enable-freetype
CONFIGURE_OPTIONS += --enable-fribidi
CONFIGURE_OPTIONS += --enable-fontconfig
CONFIGURE_OPTIONS += --enable-svg
CONFIGURE_OPTIONS += --enable-svgdec
CONFIGURE_OPTIONS += --enable-dav1d
CONFIGURE_OPTIONS += --disable-caca
CONFIGURE_OPTIONS += --disable-kva

# Audio
CONFIGURE_OPTIONS += --enable-pulse
CONFIGURE_OPTIONS += --disable-jack
CONFIGURE_OPTIONS += --enable-samplerate
CONFIGURE_OPTIONS += --disable-kai
CONFIGURE_OPTIONS += --disable-chromaprint
CONFIGURE_OPTIONS += --disable-spatialaudio

# Interface
CONFIGURE_OPTIONS += --enable-qt
CONFIGURE_OPTIONS += --enable-skins2
CONFIGURE_OPTIONS += --disable-libtar
CONFIGURE_OPTIONS += --disable-ncurses
CONFIGURE_OPTIONS += --disable-lirc

# Filters
CONFIGURE_OPTIONS += --disable-goom
CONFIGURE_OPTIONS += --disable-projectm
CONFIGURE_OPTIONS += --disable-vsxu

# Services
CONFIGURE_OPTIONS += --disable-microdns
CONFIGURE_OPTIONS += --disable-udev
CONFIGURE_OPTIONS += --enable-mtp
CONFIGURE_OPTIONS += --enable-upnp

# Misc
CONFIGURE_OPTIONS += --enable-libxml2
CONFIGURE_OPTIONS += --enable-libgcrypt
CONFIGURE_OPTIONS += --enable-gnutls
CONFIGURE_OPTIONS += --enable-taglib
CONFIGURE_OPTIONS += --enable-notify


QT5_ROOT = $(QT5_BASEDIR)
QT5_RPATH = $(GCC_LIBDIR):$(QT5_LIBDIR)
QT5_PLUGIN = /usr/lib/$(MACH64)/vlc/plugins/gui/libqt_plugin.so

COMPONENT_POST_INSTALL_ACTION = \
	/usr/bin/elfedit -e 'dyn:value -s RUNPATH "$(QT5_RPATH)"' $(PROTO_DIR)$(QT5_PLUGIN) &&\
        /usr/bin/elfedit -e 'dyn:value -s RPATH   "$(QT5_RPATH)"' $(PROTO_DIR)$(QT5_PLUGIN)

# Auto-generated dependencies
REQUIRED_PACKAGES += $(GCC_RUNTIME_PKG)
REQUIRED_PACKAGES += $(GXX_RUNTIME_PKG)
REQUIRED_PACKAGES += $(JPEG_IMPLEM_PKG)
REQUIRED_PACKAGES += SUNWcs
REQUIRED_PACKAGES += audio/faad2
REQUIRED_PACKAGES += audio/mpg123
REQUIRED_PACKAGES += audio/twolame
REQUIRED_PACKAGES += codec/dav1d
REQUIRED_PACKAGES += codec/flac
REQUIRED_PACKAGES += codec/libtheora
REQUIRED_PACKAGES += codec/speex
REQUIRED_PACKAGES += developer/ffmpeg-6
REQUIRED_PACKAGES += image/library/libpng16
REQUIRED_PACKAGES += image/library/librsvg
REQUIRED_PACKAGES += image/library/sdl-image
REQUIRED_PACKAGES += library/audio/liba52
REQUIRED_PACKAGES += library/audio/libdca
REQUIRED_PACKAGES += library/audio/libmad
REQUIRED_PACKAGES += library/audio/libmpcdec
REQUIRED_PACKAGES += library/audio/pulseaudio
REQUIRED_PACKAGES += library/audio/soxr
REQUIRED_PACKAGES += library/audio/taglib
REQUIRED_PACKAGES += library/c++/abseil-cpp
REQUIRED_PACKAGES += library/c++/harfbuzz
REQUIRED_PACKAGES += library/c++/protobuf
REQUIRED_PACKAGES += library/desktop/cairo
REQUIRED_PACKAGES += library/desktop/gdk-pixbuf
REQUIRED_PACKAGES += library/desktop/gtk3
REQUIRED_PACKAGES += library/ffmpeg-6
REQUIRED_PACKAGES += library/fribidi
REQUIRED_PACKAGES += library/glib2
REQUIRED_PACKAGES += library/gnutls-3
REQUIRED_PACKAGES += library/libarchive
REQUIRED_PACKAGES += library/libebml
REQUIRED_PACKAGES += library/libidn
REQUIRED_PACKAGES += library/libmtp
REQUIRED_PACKAGES += library/libnotify
REQUIRED_PACKAGES += library/libogg
REQUIRED_PACKAGES += library/libsamplerate
REQUIRED_PACKAGES += library/libsecret
REQUIRED_PACKAGES += library/libssh2
REQUIRED_PACKAGES += library/libvorbis
REQUIRED_PACKAGES += library/libxml2
REQUIRED_PACKAGES += library/opus
REQUIRED_PACKAGES += library/qt5
REQUIRED_PACKAGES += library/sdl
REQUIRED_PACKAGES += library/security/libgpg-error
REQUIRED_PACKAGES += library/speexdsp
REQUIRED_PACKAGES += library/video/libass
REQUIRED_PACKAGES += library/video/libbluray
REQUIRED_PACKAGES += library/video/libdvbpsi
REQUIRED_PACKAGES += library/video/libdvdnav
REQUIRED_PACKAGES += library/video/libdvdread
REQUIRED_PACKAGES += library/video/libmatroska
REQUIRED_PACKAGES += library/video/libmpeg2
REQUIRED_PACKAGES += library/video/libschroedinger
REQUIRED_PACKAGES += library/video/libvpx
REQUIRED_PACKAGES += library/video/x264
REQUIRED_PACKAGES += library/video/x265
REQUIRED_PACKAGES += library/zlib
REQUIRED_PACKAGES += runtime/lua
REQUIRED_PACKAGES += shell/ksh93
REQUIRED_PACKAGES += system/library
REQUIRED_PACKAGES += system/library/fontconfig
REQUIRED_PACKAGES += system/library/freetype-2
REQUIRED_PACKAGES += system/library/libdbus
REQUIRED_PACKAGES += system/library/libupnp
REQUIRED_PACKAGES += system/library/math
REQUIRED_PACKAGES += system/library/security/libgcrypt
REQUIRED_PACKAGES += system/network/avahi
REQUIRED_PACKAGES += x11/library/libx11
REQUIRED_PACKAGES += x11/library/libxcb
REQUIRED_PACKAGES += x11/library/libxext
REQUIRED_PACKAGES += x11/library/libxinerama
REQUIRED_PACKAGES += x11/library/libxpm
REQUIRED_PACKAGES += x11/library/xcb-util-keysyms