aboutsummaryrefslogblamecommitdiff
path: root/audio/musicpd/Makefile
blob: 6ee3705d5eb2a7aa989ae1f3a5630eb9217ff47e (plain) (tree)
1
2
3
4
5
6
7
8
9
                       
                      
                 
                     
                                                                      

                                  
                                 
                                                
 

                                 
 


                                                        
                                                                       
                                   
 
                           





                                          
                                  
                              
 
                                      

                           
 


                                                           
                                      
 

                                  
                                           
 

                                               
                                         
                                 

                                                                      
                                                      
                                               
 
                               
 
                                                                      
                                                 
 
                                                   
                                       
 
                              
                                            
                                                    
                                                  
                                                       
                                               
                                                        
                                                
                                                           
                                                                    
                                                     
                                                                    

                                     
                                             


                                         
                                                            
                                                          
 


                                                                                     
                 
                              
                                                    
                                 
                                                          
                            
                                             
                              


                                                          
                            
                                             
                                          
                                                         
                           
                                              
                           
                                              
                              
                                                    
                               
                                                      
                              
                                                 
                              
                                                   


                                            

                                               
                             
                                                   


                                                               
                               
                                                      
                              
                                                    
                               
                                                   
                                


                                                     
                              
                                         
                                                       
                            
                                                
                               


                                                   
                                             
                                                            
                            


                                                
                          
                                            
                            
                                             
                                     
                              
                              
                                     
                                                    
                             

                                                  
                             


                                               
                                             
                                                                     
                            
                                           
                           
                                            
                                 


                                 
                            
                                                
                               
                                                      

                  
                              
                                                       
                                    
                                                          

             
                              


                                                    
                            

                            
                             

                                                       
                                          
                                 
                             

                                 
                      



                                                              
                            
                                             
 

                   



                   










                                                                          
     
                   

      
           


                                                                    

                                                                  
                                                              
                                             
                                                         


                                                           
                                                                               
                                                                           

                                                           
                                    












                                                                      

           
                                                 
                                                    
                             



                                                                
      

                                                                          
                                                       
                                                                
 
                           
PORTNAME=	musicpd
PORTVERSION=	0.22.6
PORTREVISION=	1
CATEGORIES=	audio
MASTER_SITES=	https://www.musicpd.org/download/mpd/${PORTVERSION:R}/
DISTNAME=	mpd-${PORTVERSION}

MAINTAINER=	riggs@FreeBSD.org
COMMENT=	Remote-controllable music daemon

LICENSE=	GPLv2+
LICENSE_FILE=	${WRKSRC}/COPYING

LIB_DEPENDS=	libboost_iostreams.so:devel/boost-libs \
		libicudata.so:devel/icu

USES=		compiler:c++17-lang localbase:ldflags meson pkgconfig \
		python:build tar:xz

USE_RC_SUBR=	${PORTNAME}
MESON_ARGS=	-Dauto_features=disabled \
		-Dbzip2=enabled \
		-Dhttpd=true \
		-Dicu=enabled \
		-Doss=enabled \
		-Dpipe=true \
		-Dsyslog=enabled \
		-Dzlib=enabled

PORTDOCS=	AUTHORS README.md NEWS

SUB_FILES=	pkg-message

OPTIONS_SUB=	yes

OPTIONS_DEFINE=	DOCS ID3TAG IPV6 ISO9660 MANPAGES SQLITE3 \
		PROXYDB VORBISENC ZZIP

OPTIONS_RADIO=	RESAMPLER ZEROCONF

OPTIONS_RADIO_ZEROCONF=	AVAHI MDNSRESPONDER

OPTIONS_RADIO_RESAMPLER=	SAMPLERATE SOXR

OPTIONS_MULTI=	DOCUMENTATION FILE_FORMAT
OPTIONS_MULTI_FILE_FORMAT=	\
			ADPLUG AUDIOFILE FAAD FFMPEG FLAC FLUIDSYNTH \
			GME MAD MIKMOD MODPLUG MPG123 MUSEPACK \
			OPUS SIDPLAY SNDFILE TWOLAME \
			VORBIS WAVPACK WILDMIDI

OPTIONS_GROUP=	ACCESS PLAYBACK

OPTIONS_GROUP_ACCESS=	CDPARANOIA CURL LAME MMS NFS PLAYLISTS QOBUZ \
			SMB SOUNDCLOUD TIDAL YAJL

OPTIONS_GROUP_PLAYBACK=	AO JACK OPENAL PULSEAUDIO \
			SHOUTCAST SNDIO

ADPLUG_DESC=	AdPlug support
FAAD_DESC=	AAC/MP4 decoding via libfaad
GME_DESC=	GME support (video game music files)
ISO9660_DESC=	Direct support for ISO 9660 images
PROXYDB_DESC=	Proxy database support via libmpdclient
LAME_DESC=	Support for MP3 Icecast Streams
PLAYLISTS_DESC=	Enable extra playlist support (wma, RSS)
QOBUZ_DESC=	Streaming service support: Qobuz
SIDPLAY_DESC=	Sidplay support (C64 mono and stereo files)
SMB_DESC=	SMB network support (currently strongly discouraged)
SOUNDCLOUD_DESC=Streaming service support: SoundCloud
TIDAL_DESC=	Streaming service support: TIDAL (currently defunct)
TWOLAME_DESC=	TwoLAME support (mp2)
VORBISENC_DESC=	Ogg Vorbis encoder
WILDMIDI_DESC=	WildMIDI support (MIDI files)
YAJL_DESC=	JSON support via libyajl
ZZIP_DESC=	Support for zzip archives

OPTIONS_DEFAULT=CURL FFMPEG FLAC ID3TAG LAME MANPAGES OPUS \
		PLAYLISTS PROXYDB SNDFILE VORBIS VORBISENC

MANPAGES_MESON_ENABLED=	documentation
MANPAGES_BUILD_DEPENDS=	${LOCALBASE}/bin/sphinx-build:textproc/py-sphinx@${PY_FLAVOR}

# Decoder plugins
ADPLUG_MESON_ENABLED=	adplug
ADPLUG_LIB_DEPENDS=	libadplug.so:audio/libadplug
AUDIOFILE_MESON_ENABLED=audiofile
AUDIOFILE_LIB_DEPENDS=	libaudiofile.so:audio/libaudiofile
FAAD_MESON_ENABLED=	faad
FAAD_LIB_DEPENDS=	libfaad.so:audio/faad
FFMPEG_MESON_ENABLED=	ffmpeg
FFMPEG_LIB_DEPENDS=	libavcodec.so:multimedia/ffmpeg \
			libavformat.so:multimedia/ffmpeg \
			libavutil.so:multimedia/ffmpeg
FLAC_MESON_ENABLED=	flac
FLAC_LIB_DEPENDS=	libFLAC.so:audio/flac
FLUIDSYNTH_MESON_ENABLED=	fluidsynth
FLUIDSYNTH_LIB_DEPENDS=	libfluidsynth.so:audio/fluidsynth
GME_MESON_ENABLED=	gme
GME_LIB_DEPENDS=	libgme.so:audio/libgme
MAD_MESON_ENABLED=	mad
MAD_LIB_DEPENDS=	libmad.so:audio/libmad
MIKMOD_MESON_ENABLED=	mikmod
MIKMOD_LIB_DEPENDS=	libmikmod.so:audio/libmikmod
MODPLUG_MESON_ENABLED=	modplug
MODPLUG_LIB_DEPENDS=	libmodplug.so:audio/libmodplug
MPG123_MESON_ENABLED=	mpg123
MPG123_LIB_DEPENDS=	libmpg123.so:audio/mpg123
MUSEPACK_MESON_ENABLED=	mpcdec
MUSEPACK_LIB_DEPENDS=	libmpcdec.so:audio/musepack
NFS_MESON_ENABLED=	nfs
NFS_LIB_DEPENDS=	libnfs.so:net/libnfs
OPUS_MESON_ENABLED=	opus
OPUS_LIB_DEPENDS=	libopus.so:audio/opus \
			libogg.so:audio/libogg
PLAYLISTS_MESON_ENABLED=expat
PLAYLISTS_LIB_DEPENDS=	libexpat.so:textproc/expat2
SIDPLAY_MESON_ENABLED=	sidplay
SIDPLAY_LIB_DEPENDS=	libsidplayfp.so:audio/libsidplayfp
SIDPLAY_CXXFLAGS=	-D_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR
SNDFILE_MESON_ENABLED=	sndfile
SNDFILE_LIB_DEPENDS=	libsndfile.so:audio/libsndfile
VORBIS_MESON_ENABLED=	vorbis
VORBIS_LIB_DEPENDS=	libvorbis.so:audio/libvorbis
WAVPACK_MESON_ENABLED=	wavpack
WAVPACK_LIB_DEPENDS=	libwavpack.so:audio/wavpack
WILDMIDI_MESON_ENABLED=	wildmidi
WILDMIDI_LIB_DEPENDS=	libWildMidi.so:audio/wildmidi

# Encoder plugins
VORBISENC_IMPLIES=	VORBIS
VORBISENC_MESON_ENABLED=	vorbisenc
VORBISENC_LIB_DEPENDS=	libvorbisenc.so:audio/libvorbis
LAME_MESON_ENABLED=	lame
LAME_LIB_DEPENDS=	libmp3lame.so:audio/lame
TWOLAME_MESON_ENABLED=	twolame
TWOLAME_LIB_DEPENDS=	libtwolame.so:audio/twolame

# Filter plugins
SAMPLERATE_MESON_ENABLED=	libsamplerate
SAMPLERATE_LIB_DEPENDS=	libsamplerate.so:audio/libsamplerate
SOXR_MESON_ENABLED=	soxr
SOXR_LIB_DEPENDS=	libsoxr.so:audio/libsoxr

# Output plugins
AO_MESON_ENABLED=	ao
AO_LIB_DEPENDS=		libao.so:audio/libao
JACK_MESON_ENABLED=	jack
JACK_LIB_DEPENDS=	libjack.so:audio/jack
JACK_CXXFLAGS=		-Wno-register
OPENAL_MESON_ENABLED=	openal
OPENAL_USES=		openal
PULSEAUDIO_MESON_ENABLED=	pulse
PULSEAUDIO_LIB_DEPENDS=	libpulse.so:audio/pulseaudio
SHOUTCAST_MESON_ENABLED=shout
SHOUTCAST_LIB_DEPENDS=	libshout.so:audio/libshout
SHOUTCAST_IMPLIES=	VORBIS
SNDIO_MESON_ENABLED=	sndio
SNDIO_LIB_DEPENDS=	libsndio.so:audio/sndio

# Input plugins
CDPARANOIA_MESON_ENABLED=	cdio_paranoia
CDPARANOIA_LIB_DEPENDS=	libcdio_paranoia.so:sysutils/libcdio-paranoia
CURL_MESON_ENABLED=	curl
CURL_LIB_DEPENDS=	libcurl.so:ftp/curl
MMS_MESON_ENABLED=	mms
MMS_LIB_DEPENDS=	libmms.so:net/libmms
SMB_MESON_ENABLED=	smbclient
SMB_USES=		samba:lib

# Archive plugins
ZZIP_MESON_ENABLED=	zzip
ZZIP_LIB_DEPENDS=	libzzip.so:devel/zziplib
ISO9660_MESON_ENABLED=	iso9660
ISO9660_LIB_DEPENDS=	libiso9660.so:sysutils/libcdio

# Database plugins
SQLITE3_MESON_ENABLED=	sqlite
SQLITE3_LIB_DEPENDS=	libsqlite3.so:databases/sqlite3
PROXYDB_MESON_ENABLED=	libmpdclient
PROXYDB_LIB_DEPENDS=	libmpdclient.so:audio/libmpdclient

# Tag plugins
ID3TAG_MESON_ENABLED=	id3tag
ID3TAG_LIB_DEPENDS=	libid3tag.so:audio/libid3tag

# Network support
IPV6_MESON_ENABLED=	ipv6

# Commercial service support
QOBUZ_MESON_ENABLED=	qobuz
QOBUZ_LIB_DEPENDS=	libgcrypt.so:security/libgcrypt
QOBUZ_IMPLIES=		CURL YAJL
SOUNDCLOUD_MESON_ENABLED=	soundcloud
SOUNDCLOUD_IMPLIES=	CURL YAJL
TIDAL_MESON_ENABLED=	tidal
TIDAL_IMPLIES=		CURL YAJL

# Misc library support
AVAHI_MESON_ON=		-Dzeroconf=avahi
AVAHI_LIB_DEPENDS=	libavahi-client.so:net/avahi-app
MDNSRESPONDER_MESON_ON=		-Dzeroconf=bonjour
MDNSRESPONDER_LIB_DEPENDS=	libdns_sd.so:net/mDNSResponder
YAJL_MESON_ENABLED=	yajl
YAJL_LIB_DEPENDS=	libyajl.so:devel/yajl

MPDUSER?=	mpd
MPDGROUP?=	mpd

USERS=	${MPDUSER}
GROUPS=	${MPDGROUP}

.include <bsd.port.pre.mk>

# Note that since the build system switch to meson, mpd fails to link with
# GNU ld 2.17 in base. Also, meson does not allow to set the linker via
# environment variables yet.
# For gcc-based platforms, gcc and ld from ports are used due to the c++14
# requirement. For clang, we set the linker explicitly in meson.build.
.if ${ARCH} == armv6
#lld may use movt/movw, doesn't work on armv6
BUILD_DEPENDS+=	${LOCALBASE}/bin/ld:devel/binutils
MPD_CLANG_LD=	${LOCALBASE}/bin/ld
.else
MPD_CLANG_LD=	lld
.endif

post-patch:
# Insert selected linker for clang
	@${REINPLACE_CMD} -e 's|%%MPD_CLANG_LD%%|${MPD_CLANG_LD}|' \
		${WRKSRC}/meson.build
# Replace ~/ with /var/mpd/ and make musicpd run as mpd by default
	@${REINPLACE_CMD} -e 's,^#\([^"]*"\)~/,\1/var/mpd/,g' \
		-e 's,^#\(user[^"]*"\)nobody,\1${MPDUSER},g' \
		${WRKSRC}/doc/mpdconf.example
# Uncomment OSS audio output part from mpd.conf; dragons!
	start=$$(expr $$(${SED} -n '/^#	type	*"oss"/=' \
		${WRKSRC}/doc/mpdconf.example) - 1); \
	 finish=$$(for n in $$(${JOT} 10 $$start); do \
		     [ "$$(${SED} -n $${n}p ${WRKSRC}/doc/mpdconf.example)" = \
				"#}" ] && ${ECHO_CMD} $$n || true; done); \
	 ${REINPLACE_CMD} -e "$${start},$${finish}s,^#,," \
		${WRKSRC}/doc/mpdconf.example
# Fix man pages for executable names
	@${REINPLACE_CMD} \
		-e 's#^``mpd#``${PORTNAME}#' \
		-e 's#:: mpd#:: ${PORTNAME}#' \
		-e 's#mpd(1)#${PORTNAME}(1)#' \
		-e 's#/etc/mpd.conf#${PREFIX}/etc/${PORTNAME}.conf#' \
		-e 's#mpd.conf#${PORTNAME}.conf#' \
		-e 's#mpd.conf(5)#${PORTNAME}.conf(5)#' \
		${WRKSRC}/doc/mpd.1.rst ${WRKSRC}/doc/mpd.conf.5.rst
	@${REINPLACE_CMD} \
		-e "s#'mpd'#'${PORTNAME}'#" \
		-e "s#'mpd.conf'#'${PORTNAME}.conf'#" \
		-e "s#'mpd.conf doc#'${PORTNAME}.conf doc#" \
		${WRKSRC}/doc/conf.py

do-install:
	${INSTALL_PROGRAM} ${WRKSRC}/_build/mpd \
		${STAGEDIR}${PREFIX}/bin/${PORTNAME}
.if ${PORT_OPTIONS:MMANPAGES}
	${INSTALL_MAN} ${WRKSRC}/_build/doc/${PORTNAME}.1 \
		${STAGEDIR}${PREFIX}/man/man1
	${INSTALL_MAN} ${WRKSRC}/_build/doc/${PORTNAME}.conf.5 \
		${STAGEDIR}${PREFIX}/man/man5
.endif
	${MKDIR} ${STAGEDIR}${DOCSDIR}
	${INSTALL_DATA} ${PORTDOCS:S,^,${WRKSRC}/,} ${STAGEDIR}${DOCSDIR}/
	${INSTALL_DATA} ${WRKSRC}/doc/mpdconf.example \
		${STAGEDIR}${PREFIX}/etc/${PORTNAME}.conf.sample

.include <bsd.port.post.mk>