From 3b1a9aeca019c05f2e8492d535b4c51043ff30eb Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 23 Feb 2009 10:04:51 +0100 Subject: 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. --- Makefile.am | 490 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 481 insertions(+), 9 deletions(-) (limited to 'Makefile.am') diff --git a/Makefile.am b/Makefile.am index 22bb8014..68943177 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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 -- cgit v1.2.3