Makefile.am: no recursive makefiles

Recursive Makefiles are inefficient and error prone (no proper way to
declare dependencies).  Since there's no disadvantage in having one
single Makefile, let's do it.
This commit is contained in:
Max Kellermann 2009-02-23 10:04:51 +01:00
parent a4dfab2aee
commit 3b1a9aeca0
5 changed files with 484 additions and 486 deletions

View File

@ -1,15 +1,449 @@
ACLOCAL_AMFLAGS = -I m4
AUTOMAKE_OPTIONS = foreign 1.9 dist-bzip2
SUBDIRS = src doc
doc_DATA = AUTHORS COPYING NEWS README TODO UPGRADING
EXTRA_DIST = $(doc_DATA) autogen.sh \
$(wildcard scripts/*.sh) scripts/mpd.spec \
.gitignore
AM_CFLAGS = -I$(srcdir)/src $(GLIB_CFLAGS)
AM_LDFLAGS = $(GLIB_LIBS)
bin_PROGRAMS = src/mpd
src_mpd_CFLAGS = $(MPD_CFLAGS)
src_mpd_CPPFLAGS = -I$(srcdir)/src \
$(SQLITE_CFLAGS) \
$(CURL_CFLAGS) \
$(MMS_CFLAGS) \
$(AO_CFLAGS) $(ALSA_CFLAGS) \
$(SHOUT_CFLAGS) \
$(OGGVORBIS_CFLAGS) $(VORBISENC_CFLAGS) \
$(patsubst -I%/FLAC,-I%,$(FLAC_CFLAGS)) \
$(AUDIOFILE_CFLAGS) $(LIBMIKMOD_CFLAGS) \
$(MODPLUG_CFLAGS) \
$(SIDPLAY_CFLAGS) \
$(FLUIDSYNTH_CFLAGS) \
$(WILDMIDI_CFLAGS) \
$(ID3TAG_CFLAGS) \
$(MAD_CFLAGS) \
$(FFMPEG_CFLAGS) \
$(GLIB_CFLAGS)
src_mpd_LDADD = $(MPD_LIBS) \
$(SQLITE_LIBS) \
$(CURL_LIBS) \
$(MMS_LIBS) \
$(AO_LIBS) $(ALSA_LIBS) \
$(SHOUT_LIBS) \
$(OGGVORBIS_LIBS) $(VORBISENC_LIBS) $(FLAC_LIBS) \
$(AUDIOFILE_LIBS) $(LIBMIKMOD_LIBS) \
$(MODPLUG_LIBS) \
$(SIDPLAY_LIBS) \
$(FLUIDSYNTH_LIBS) \
$(WILDMIDI_LIBS) \
$(ID3TAG_LIBS) \
$(MAD_LIBS) \
$(MP4FF_LIBS) \
$(FFMPEG_LIBS) \
$(GLIB_LIBS)
mpd_headers = \
src/notify.h \
src/ack.h \
src/audio.h \
src/audio_format.h \
src/audio_parser.h \
src/audioOutput.h \
src/output_internal.h \
src/output_api.h \
src/output_plugin.h \
src/output_list.h \
src/output_all.h \
src/output_thread.h \
src/output_control.h \
src/output_state.h \
src/output_print.h \
src/output_command.h \
src/buffer2array.h \
src/command.h \
src/idle.h \
src/cmdline.h \
src/conf.h \
src/crossfade.h \
src/dbUtils.h \
src/decoder_thread.h \
src/decoder_control.h \
src/decoder_plugin.h \
src/decoder_command.h \
src/decoder_buffer.h \
src/decoder_api.h \
src/decoder_plugin.h \
src/decoder_internal.h \
src/directory.h \
src/directory_save.h \
src/directory_print.h \
src/database.h \
src/encoder_plugin.h \
src/encoder_list.h \
src/encoder_api.h \
src/update.h \
src/dirvec.h \
src/gcc.h \
src/decoder_list.h \
src/decoder/_flac_common.h \
src/decoder/_ogg_common.h \
src/input_stream.h \
src/input_file.h \
src/input_curl.h \
src/input_mms.h \
src/icy_metadata.h \
src/client.h \
src/listen.h \
src/log.h \
src/ls.h \
src/main.h \
src/mixer_api.h \
src/event_pipe.h \
src/daemon.h \
src/normalize.h \
src/compress.h \
src/pipe.h \
src/path.h \
src/mapper.h \
src/pcm_buffer.h \
src/pcm_utils.h \
src/pcm_convert.h \
src/pcm_volume.h \
src/pcm_mix.h \
src/pcm_channels.h \
src/pcm_format.h \
src/pcm_resample.h \
src/pcm_dither.h \
src/pcm_prng.h \
src/permission.h \
src/player_thread.h \
src/player_control.h \
src/playlist.h \
src/playlist_internal.h \
src/playlist_print.h \
src/playlist_save.h \
src/playlist_state.h \
src/queue.h \
src/queue_print.h \
src/queue_save.h \
src/replay_gain.h \
src/sig_handlers.h \
src/song.h \
src/song_print.h \
src/song_save.h \
src/song_sticker.h \
src/songvec.h \
src/state_file.h \
src/stats.h \
src/sticker.h \
src/tag.h \
src/tag_internal.h \
src/tag_pool.h \
src/tag_id3.h \
src/tag_print.h \
src/tag_save.h \
src/strset.h \
src/utils.h \
src/volume.h \
src/zeroconf.h src/zeroconf-internal.h \
src/locate.h \
src/stored_playlist.h \
src/timer.h \
src/archive_api.h \
src/archive_internal.h \
src/archive_list.h \
src/input_archive.h
src_mpd_SOURCES = \
$(mpd_headers) \
src/notify.c \
src/audio.c \
src/audio_parser.c \
src/audioOutput.c \
src/output_api.c \
src/output_list.c \
src/output_all.c \
src/output_thread.c \
src/output_control.c \
src/output_state.c \
src/output_print.c \
src/output_command.c \
src/output_init.c \
src/output/null_plugin.c \
src/buffer2array.c \
src/command.c \
src/idle.c \
src/cmdline.c \
src/conf.c \
src/crossfade.c \
src/dbUtils.c \
src/decoder_thread.c \
src/decoder_control.c \
src/decoder_buffer.c \
src/decoder_api.c \
src/directory.c \
src/directory_save.c \
src/directory_print.c \
src/database.c \
src/dirvec.c \
src/update.c \
src/decoder_list.c \
src/input_stream.c \
src/input_file.c \
src/client.c \
src/listen.c \
src/log.c \
src/ls.c \
src/main.c \
src/event_pipe.c \
src/daemon.c \
src/mixer_api.c \
src/normalize.c \
src/compress.c \
src/pipe.c \
src/path.c \
src/mapper.c \
src/pcm_convert.c \
src/pcm_volume.c \
src/pcm_mix.c \
src/pcm_channels.c \
src/pcm_format.c \
src/pcm_resample.c \
src/pcm_dither.c \
src/permission.c \
src/player_thread.c \
src/player_control.c \
src/playlist.c \
src/playlist_global.c \
src/playlist_control.c \
src/playlist_edit.c \
src/playlist_print.c \
src/playlist_save.c \
src/playlist_state.c \
src/queue.c \
src/queue_print.c \
src/queue_save.c \
src/replay_gain.c \
src/sig_handlers.c \
src/song.c \
src/song_print.c \
src/song_save.c \
src/songvec.c \
src/state_file.c \
src/stats.c \
src/tag.c \
src/tag_pool.c \
src/tag_print.c \
src/tag_save.c \
src/strset.c \
src/utils.c \
src/volume.c \
src/locate.c \
src/stored_playlist.c \
src/timer.c
if ENABLE_SQLITE
src_mpd_SOURCES += src/sticker.c src/song_sticker.c
endif
if HAVE_LIBSAMPLERATE
src_mpd_SOURCES += src/pcm_resample_libsamplerate.c
else
src_mpd_SOURCES += src/pcm_resample_fallback.c
endif
if HAVE_ID3TAG
src_mpd_SOURCES += src/tag_id3.c
endif
# archive plugins
if HAVE_BZ2
src_mpd_SOURCES += src/archive/bz2_plugin.c
endif
if HAVE_ZIP
src_mpd_SOURCES += src/archive/zip_plugin.c
endif
if HAVE_ISO
src_mpd_SOURCES += src/archive/iso_plugin.c
endif
if ENABLE_ARCHIVE
src_mpd_SOURCES += \
src/archive_api.c \
src/archive_list.c \
src/input_archive.c
endif
# decoder plugins
if HAVE_MAD
src_mpd_SOURCES += src/decoder/mad_plugin.c
endif
if HAVE_MPCDEC
src_mpd_SOURCES += src/decoder/mpcdec_plugin.c
endif
if HAVE_WAVPACK
src_mpd_SOURCES += src/decoder/wavpack_plugin.c
endif
if HAVE_FAAD
src_mpd_SOURCES += src/decoder/faad_plugin.c
endif
if HAVE_MP4
src_mpd_SOURCES += src/decoder/mp4ff_plugin.c
endif
if HAVE_OGG_COMMON
src_mpd_SOURCES += src/decoder/_ogg_common.c
endif
if HAVE_FLAC_COMMON
src_mpd_SOURCES += src/decoder/_flac_common.c
endif
if HAVE_OGGVORBIS
src_mpd_SOURCES += src/decoder/vorbis_plugin.c
endif
if HAVE_FLAC
src_mpd_SOURCES += src/decoder/flac_plugin.c
endif
if HAVE_OGGFLAC
src_mpd_SOURCES += src/decoder/oggflac_plugin.c
endif
if HAVE_AUDIOFILE
src_mpd_SOURCES += src/decoder/audiofile_plugin.c
endif
if HAVE_MIKMOD
src_mpd_SOURCES += src/decoder/mikmod_plugin.c
endif
if HAVE_MODPLUG
src_mpd_SOURCES += src/decoder/modplug_plugin.c
endif
if ENABLE_SIDPLAY
src_mpd_SOURCES += src/decoder/sidplay_plugin.cxx
endif
if ENABLE_FLUIDSYNTH
src_mpd_SOURCES += src/decoder/fluidsynth_plugin.c
endif
if ENABLE_WILDMIDI
src_mpd_SOURCES += src/decoder/wildmidi_plugin.c
endif
if HAVE_FFMPEG
src_mpd_SOURCES += src/decoder/ffmpeg_plugin.c
endif
# encoder plugins
if ENABLE_ENCODER
src_mpd_SOURCES += src/encoder_list.c
if ENABLE_VORBIS_ENCODER
src_mpd_SOURCES += src/encoder/vorbis_encoder.c
endif
if ENABLE_LAME_ENCODER
src_mpd_SOURCES += src/encoder/lame_encoder.c
endif
endif
if HAVE_ZEROCONF
src_mpd_SOURCES += src/zeroconf.c
if HAVE_AVAHI
src_mpd_SOURCES += src/zeroconf-avahi.c
endif
if HAVE_BONJOUR
src_mpd_SOURCES += src/zeroconf-bonjour.c
endif
endif
if HAVE_CURL
src_mpd_SOURCES += src/input_curl.c src/icy_metadata.c
endif
if ENABLE_MMS
src_mpd_SOURCES += src/input_mms.c
endif
if HAVE_ALSA
src_mpd_SOURCES += src/output/alsa_plugin.c
src_mpd_SOURCES += src/mixer/alsa_mixer.c
endif
if HAVE_AO
src_mpd_SOURCES += src/output/ao_plugin.c
endif
if HAVE_FIFO
src_mpd_SOURCES += src/output/fifo_plugin.c
endif
if HAVE_JACK
src_mpd_SOURCES += src/output/jack_plugin.c
endif
if HAVE_MVP
src_mpd_SOURCES += src/output/mvp_plugin.c
endif
if HAVE_OSS
src_mpd_SOURCES += src/output/oss_plugin.c
src_mpd_SOURCES += src/mixer/oss_mixer.c
endif
if HAVE_OSX
src_mpd_SOURCES += src/output/osx_plugin.c
endif
if HAVE_PULSE
src_mpd_SOURCES += src/output/pulse_plugin.c
endif
if HAVE_SHOUT
src_mpd_SOURCES += src/output/shout_plugin.c
endif
#
# Sparse code analysis
#
# sparse is a semantic parser
# URL: git://www.kernel.org/pub/scm/devel/sparse/sparse.git
#
SPARSE = sparse
SPARSE_FLAGS =
SPARSE_CPPFLAGS = $(DEFAULT_INCLUDES) \
-I$(shell $(CC) -print-file-name=include) \
-I$(shell $(CC) -print-file-name=include-fixed)
sparse-check:
for i in $(src_mpd_SOURCES); \
do \
$(SPARSE) -I. $(src_mpd_CFLAGS) $(src_mpd_CPPFLAGS) $(SPARSE_FLAGS) $(SPARSE_CPPFLAGS) $(srcdir)/$$i || exit; \
done
.PHONY: sparse-check
#
# Test programs
@ -22,11 +456,49 @@ noinst_PROGRAMS = test/software_volume
test_software_volume_SOURCES = test/software_volume.c \
src/audio_parser.c \
src/pcm_volume.c
endif
#
# Documentation
#
DOCBOOK_FILES = doc/protocol.xml
DOCBOOK_HTML = $(patsubst %.xml,%/index.html,$(DOCBOOK_FILES))
man_MANS = doc/mpd.1 doc/mpd.conf.5
doc_DATA = AUTHORS COPYING NEWS README TODO UPGRADING doc/mpdconf.example
if ENABLE_DOCUMENTATION
protocoldir = $(docdir)/protocol
protocol_DATA = $(wildcard doc/protocol/*.html)
$(DOCBOOK_HTML): %/index.html: %.xml
$(XMLTO) -o protocol --stringparam chunker.output.encoding=utf-8 html $<
doc/api/html/index.html: doc/doxygen.conf
$(DOXYGEN) $<
all-local: $(DOCBOOK_HTML) doc/api/html/index.html
clean-local:
rm -rf $(patsubst %.xml,%,$(DOCBOOK_FILES))
rm -rf doc/api
install-data-local: doc/api/html/index.html
$(mkinstalldirs) $(DESTDIR)$(docdir)/api/html
$(INSTALL_DATA) -c -m 644 doc/api/html/*.html doc/api/html/*.css \
doc/api/html/*.png doc/api/html/*.gif \
$(DESTDIR)$(docdir)/api/html
endif
sparse-check test:
$(MAKE) -C src $@
#
# Distribution
#
.PHONY: sparse-check test
EXTRA_DIST = $(doc_DATA) autogen.sh \
$(wildcard scripts/*.sh) scripts/mpd.spec \
.gitignore \
$(man_MANS) $(DOCBOOK_FILES) doc/mpdconf.example

View File

@ -1461,7 +1461,7 @@ dnl
dnl generate files
dnl
AC_OUTPUT(doc/Makefile src/Makefile Makefile)
AC_OUTPUT(Makefile)
echo ""

View File

@ -1,28 +0,0 @@
DOCBOOK_FILES = protocol.xml
DOCBOOK_HTML = $(patsubst %.xml,%/index.html,$(DOCBOOK_FILES))
man_MANS = mpd.1 mpd.conf.5
doc_DATA = mpdconf.example
EXTRA_DIST = $(man_MANS) $(DOCBOOK_FILES) mpdconf.example
if ENABLE_DOCUMENTATION
protocoldir = $(docdir)/protocol
protocol_DATA = $(wildcard protocol/*.html)
$(DOCBOOK_HTML): %/index.html: %.xml
$(XMLTO) -o protocol --stringparam chunker.output.encoding=utf-8 html $<
api/html/index.html: doxygen.conf
$(DOXYGEN) $<
all-local: $(DOCBOOK_HTML) api/html/index.html
clean-local:
rm -rf $(patsubst %.xml,%,$(DOCBOOK_FILES))
rm -rf api
install-data-local: api/html/index.html
$(mkinstalldirs) $(DESTDIR)$(docdir)/api/html
$(INSTALL_DATA) -c -m 644 api/html/*.html api/html/*.css api/html/*.png api/html/*.gif $(DESTDIR)$(docdir)/api/html
endif

View File

@ -38,7 +38,7 @@ PROJECT_NUMBER =
# If a relative path is entered, it will be relative to the location
# where doxygen was started. If left blank the current directory will be used.
OUTPUT_DIRECTORY = api
OUTPUT_DIRECTORY = doc/api
# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
# 4096 sub-directories (in 2 levels) under the output directory of each output
@ -534,7 +534,7 @@ WARN_LOGFILE =
# directories like "/usr/src/myproject". Separate the files or directories
# with spaces.
INPUT = ../src
INPUT = src
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is

View File

@ -1,446 +0,0 @@
bin_PROGRAMS = mpd
mpd_CFLAGS = $(MPD_CFLAGS)
mpd_CPPFLAGS = \
$(SQLITE_CFLAGS) \
$(CURL_CFLAGS) \
$(MMS_CFLAGS) \
$(AO_CFLAGS) $(ALSA_CFLAGS) \
$(SHOUT_CFLAGS) \
$(OGGVORBIS_CFLAGS) $(VORBISENC_CFLAGS) \
$(patsubst -I%/FLAC,-I%,$(FLAC_CFLAGS)) \
$(AUDIOFILE_CFLAGS) $(LIBMIKMOD_CFLAGS) \
$(MODPLUG_CFLAGS) \
$(SIDPLAY_CFLAGS) \
$(FLUIDSYNTH_CFLAGS) \
$(WILDMIDI_CFLAGS) \
$(ID3TAG_CFLAGS) \
$(MAD_CFLAGS) \
$(FFMPEG_CFLAGS) \
$(GLIB_CFLAGS)
mpd_LDADD = $(MPD_LIBS) \
$(SQLITE_LIBS) \
$(CURL_LIBS) \
$(MMS_LIBS) \
$(AO_LIBS) $(ALSA_LIBS) \
$(SHOUT_LIBS) \
$(OGGVORBIS_LIBS) $(VORBISENC_LIBS) $(FLAC_LIBS) \
$(AUDIOFILE_LIBS) $(LIBMIKMOD_LIBS) \
$(MODPLUG_LIBS) \
$(SIDPLAY_LIBS) \
$(FLUIDSYNTH_LIBS) \
$(WILDMIDI_LIBS) \
$(ID3TAG_LIBS) \
$(MAD_LIBS) \
$(MP4FF_LIBS) \
$(FFMPEG_LIBS) \
$(GLIB_LIBS)
mpd_headers = \
notify.h \
ack.h \
audio.h \
audio_format.h \
audio_parser.h \
audioOutput.h \
output_internal.h \
output_api.h \
output_plugin.h \
output_list.h \
output_all.h \
output_thread.h \
output_control.h \
output_state.h \
output_print.h \
output_command.h \
buffer2array.h \
command.h \
idle.h \
cmdline.h \
conf.h \
crossfade.h \
dbUtils.h \
decoder_thread.h \
decoder_control.h \
decoder_plugin.h \
decoder_command.h \
decoder_buffer.h \
decoder_api.h \
decoder_plugin.h \
decoder_internal.h \
directory.h \
directory_save.h \
directory_print.h \
database.h \
encoder_plugin.h \
encoder_list.h \
encoder_api.h \
update.h \
dirvec.h \
gcc.h \
decoder_list.h \
decoder/_flac_common.h \
decoder/_ogg_common.h \
input_stream.h \
input_file.h \
input_curl.h \
input_mms.h \
icy_metadata.h \
client.h \
listen.h \
log.h \
ls.h \
main.h \
mixer_api.h \
event_pipe.h \
daemon.h \
normalize.h \
compress.h \
pipe.h \
path.h \
mapper.h \
pcm_buffer.h \
pcm_utils.h \
pcm_convert.h \
pcm_volume.h \
pcm_mix.h \
pcm_channels.h \
pcm_format.h \
pcm_resample.h \
pcm_dither.h \
pcm_prng.h \
permission.h \
player_thread.h \
player_control.h \
playlist.h \
playlist_internal.h \
playlist_print.h \
playlist_save.h \
playlist_state.h \
queue.h \
queue_print.h \
queue_save.h \
replay_gain.h \
sig_handlers.h \
song.h \
song_print.h \
song_save.h \
song_sticker.h \
songvec.h \
state_file.h \
stats.h \
sticker.h \
tag.h \
tag_internal.h \
tag_pool.h \
tag_id3.h \
tag_print.h \
tag_save.h \
strset.h \
utils.h \
volume.h \
zeroconf.h zeroconf-internal.h \
locate.h \
stored_playlist.h \
timer.h \
archive_api.h \
archive_internal.h \
archive_list.h \
input_archive.h
mpd_SOURCES = \
$(mpd_headers) \
notify.c \
audio.c \
audio_parser.c \
audioOutput.c \
output_api.c \
output_list.c \
output_all.c \
output_thread.c \
output_control.c \
output_state.c \
output_print.c \
output_command.c \
output_init.c \
output/null_plugin.c \
buffer2array.c \
command.c \
idle.c \
cmdline.c \
conf.c \
crossfade.c \
dbUtils.c \
decoder_thread.c \
decoder_control.c \
decoder_buffer.c \
decoder_api.c \
directory.c \
directory_save.c \
directory_print.c \
database.c \
dirvec.c \
update.c \
decoder_list.c \
input_stream.c \
input_file.c \
client.c \
listen.c \
log.c \
ls.c \
main.c \
event_pipe.c \
daemon.c \
mixer_api.c \
normalize.c \
compress.c \
pipe.c \
path.c \
mapper.c \
pcm_convert.c \
pcm_volume.c \
pcm_mix.c \
pcm_channels.c \
pcm_format.c \
pcm_resample.c \
pcm_dither.c \
permission.c \
player_thread.c \
player_control.c \
playlist.c \
playlist_global.c \
playlist_control.c \
playlist_edit.c \
playlist_print.c \
playlist_save.c \
playlist_state.c \
queue.c \
queue_print.c \
queue_save.c \
replay_gain.c \
sig_handlers.c \
song.c \
song_print.c \
song_save.c \
songvec.c \
state_file.c \
stats.c \
tag.c \
tag_pool.c \
tag_print.c \
tag_save.c \
strset.c \
utils.c \
volume.c \
locate.c \
stored_playlist.c \
timer.c
if ENABLE_SQLITE
mpd_SOURCES += sticker.c song_sticker.c
endif
if HAVE_LIBSAMPLERATE
mpd_SOURCES += pcm_resample_libsamplerate.c
else
mpd_SOURCES += pcm_resample_fallback.c
endif
if HAVE_ID3TAG
mpd_SOURCES += tag_id3.c
endif
# archive plugins
if HAVE_BZ2
mpd_SOURCES += archive/bz2_plugin.c
endif
if HAVE_ZIP
mpd_SOURCES += archive/zip_plugin.c
endif
if HAVE_ISO
mpd_SOURCES += archive/iso_plugin.c
endif
if ENABLE_ARCHIVE
mpd_SOURCES += \
archive_api.c \
archive_list.c \
input_archive.c
endif
# decoder plugins
if HAVE_MAD
mpd_SOURCES += decoder/mad_plugin.c
endif
if HAVE_MPCDEC
mpd_SOURCES += decoder/mpcdec_plugin.c
endif
if HAVE_WAVPACK
mpd_SOURCES += decoder/wavpack_plugin.c
endif
if HAVE_FAAD
mpd_SOURCES += decoder/faad_plugin.c
endif
if HAVE_MP4
mpd_SOURCES += decoder/mp4ff_plugin.c
endif
if HAVE_OGG_COMMON
mpd_SOURCES += decoder/_ogg_common.c
endif
if HAVE_FLAC_COMMON
mpd_SOURCES += decoder/_flac_common.c
endif
if HAVE_OGGVORBIS
mpd_SOURCES += decoder/vorbis_plugin.c
endif
if HAVE_FLAC
mpd_SOURCES += decoder/flac_plugin.c
endif
if HAVE_OGGFLAC
mpd_SOURCES += decoder/oggflac_plugin.c
endif
if HAVE_AUDIOFILE
mpd_SOURCES += decoder/audiofile_plugin.c
endif
if HAVE_MIKMOD
mpd_SOURCES += decoder/mikmod_plugin.c
endif
if HAVE_MODPLUG
mpd_SOURCES += decoder/modplug_plugin.c
endif
if ENABLE_SIDPLAY
mpd_SOURCES += decoder/sidplay_plugin.cxx
endif
if ENABLE_FLUIDSYNTH
mpd_SOURCES += decoder/fluidsynth_plugin.c
endif
if ENABLE_WILDMIDI
mpd_SOURCES += decoder/wildmidi_plugin.c
endif
if HAVE_FFMPEG
mpd_SOURCES += decoder/ffmpeg_plugin.c
endif
# encoder plugins
if ENABLE_ENCODER
mpd_SOURCES += encoder_list.c
if ENABLE_VORBIS_ENCODER
mpd_SOURCES += encoder/vorbis_encoder.c
endif
if ENABLE_LAME_ENCODER
mpd_SOURCES += encoder/lame_encoder.c
endif
endif
if HAVE_ZEROCONF
mpd_SOURCES += zeroconf.c
if HAVE_AVAHI
mpd_SOURCES += zeroconf-avahi.c
endif
if HAVE_BONJOUR
mpd_SOURCES += zeroconf-bonjour.c
endif
endif
if HAVE_CURL
mpd_SOURCES += input_curl.c icy_metadata.c
endif
if ENABLE_MMS
mpd_SOURCES += input_mms.c
endif
if HAVE_ALSA
mpd_SOURCES += output/alsa_plugin.c
mpd_SOURCES += mixer/alsa_mixer.c
endif
if HAVE_AO
mpd_SOURCES += output/ao_plugin.c
endif
if HAVE_FIFO
mpd_SOURCES += output/fifo_plugin.c
endif
if HAVE_JACK
mpd_SOURCES += output/jack_plugin.c
endif
if HAVE_MVP
mpd_SOURCES += output/mvp_plugin.c
endif
if HAVE_OSS
mpd_SOURCES += output/oss_plugin.c
mpd_SOURCES += mixer/oss_mixer.c
endif
if HAVE_OSX
mpd_SOURCES += output/osx_plugin.c
endif
if HAVE_PULSE
mpd_SOURCES += output/pulse_plugin.c
endif
if HAVE_SHOUT
mpd_SOURCES += output/shout_plugin.c
endif
# sparse is a semantic parser
# URL: git://www.kernel.org/pub/scm/devel/sparse/sparse.git
SPARSE = sparse
SPARSE_FLAGS =
SPARSE_CPPFLAGS = $(DEFAULT_INCLUDES) \
-I$(shell $(CC) -print-file-name=include) \
-I$(shell $(CC) -print-file-name=include-fixed)
sparse-check:
for i in $(mpd_SOURCES); \
do \
$(SPARSE) -I. $(mpd_CFLAGS) $(mpd_CPPFLAGS) $(SPARSE_FLAGS) $(SPARSE_CPPFLAGS) $(srcdir)/$$i || exit; \
done
TEST_CFLAGS = -DUNIT_TEST
TEST_FILES := $(shell grep UNIT_TEST \
$(addprefix $(srcdir)/, $(mpd_SOURCES)) | \
awk -F: '{print $$1}' | uniq)
test: $(addprefix test-, $(subst .c,,$(TEST_FILES)))
test-%: %.c
$(CC) $(CFLAGS) $(TEST_CFLAGS) -o $@ $<
@./$@
@echo $@: OK
.PHONY: sparse-check test