build: Add Make variable for clock_gettime_ldflags.
[paraslash.git] / Makefile.in
index dae4976074585cd30f5a7306936a6a7e21a730ec..a976dc973e988bbbdc977206ada0a3787c98dbfc 100644 (file)
@@ -3,14 +3,13 @@ exec_prefix := @exec_prefix@
 
 BINDIR := @bindir@
 VARDIR := /var/paraslash
-PKGDATADIR := @datarootdir@/@PACKAGE_NAME@
 MANDIR := @datarootdir@/man/man1
+PACKAGE_TARNAME := @PACKAGE_TARNAME@
 PACKAGE_VERSION := @PACKAGE_VERSION@
-PACKAGE_STRING := @PACKAGE_STRING@
 INSTALL := @install@
 STRIP := $(CROSS_COMPILE)strip
 HOSTCC ?= cc
-executables := $(addprefix para_, @executables@)
+executables := @executables@
 ggo_descriptions_declared := @ggo_descriptions_declared@
 object_executable_matrix := @object_executable_matrix@
 
@@ -19,6 +18,54 @@ GENGETOPT := @gengetopt@
 HELP2MAN := @help2man@
 MKDIR_P := mkdir -p
 
+recv_objs := @recv_objs@
+filter_objs := @filter_objs@
+client_objs := @client_objs@
+gui_objs := @gui_objs@
+audiod_objs := @audiod_objs@
+audioc_objs := @audioc_objs@
+fade_objs := @fade_objs@
+server_objs := @server_objs@
+write_objs := @write_objs@
+afh_objs := @afh_objs@
+play_objs := @play_objs@
+
+speex_cppflags := @speex_cppflags@
+opus_cppflags := @opus_cppflags@
+arch_cppflags := @arch_cppflags@
+osl_cppflags := @osl_cppflags@
+id3tag_cppflags := @id3tag_cppflags@
+openssl_cppflags := @openssl_cppflags@
+ogg_cppflags := @ogg_cppflags@
+mad_cppflags := @mad_cppflags@
+faad_cppflags := @faad_cppflags@
+curses_cppflags := @curses_cppflags@
+ao_cppflags := @ao_cppflags@
+
+clock_gettime_ldflags := @clock_gettime_ldflags@
+id3tag_ldflags := @id3tag_ldflags@
+ogg_ldflags := @ogg_ldflags@
+vorbis_ldflags := @vorbis_ldflags@
+speex_ldflags := @speex_ldflags@
+opus_ldflags := @opus_ldflags@
+faad_ldflags := @faad_ldflags@
+mad_ldflags := @mad_ldflags@
+flac_ldflags := @flac_ldflags@
+oss_ldflags := @oss_ldflags@
+alsa_ldflags := @alsa_ldflags@
+ao_ldflags := @ao_ldflags@
+readline_ldflags := @readline_ldflags@
+samplerate_ldflags := @samplerate_ldflags@
+osl_ldflags := @osl_ldflags@
+openssl_ldflags := @openssl_ldflags@
+gcrypt_ldflags := @gcrypt_ldflags@
+socket_ldflags := @socket_ldflags@
+nsl_ldflags := @nsl_ldflags@
+curses_ldflags := @curses_ldflags@
+core_audio_ldflags := @core_audio_ldflags@
+
+prefixed_executables := $(addprefix para_, $(executables))
+
 build_date := $(shell date)
 uname_s := $(shell uname -s 2>/dev/null || echo "UNKNOWN_OS")
 uname_rs := $(shell uname -rs)
@@ -42,6 +89,27 @@ m4depdir := $(build_dir)/m4deps
 help2man_dir := $(build_dir)/help2man
 hostbin_dir := $(build_dir)/host/bin
 
+# sort removes duplicate words, which is all we need here
+all_objs := $(sort $(recv_objs) $(filter_objs) $(client_objs) $(gui_objs) \
+       $(audiod_objs) $(audioc_objs) $(fade_objs) $(server_objs) \
+       $(write_objs) $(afh_objs) $(play_objs))
+deps := $(addprefix $(dep_dir)/, $(all_objs:.o=.d))
+m4_deps := $(addprefix $(m4depdir)/, $(addsuffix .m4d, $(executables)))
+
+# now prefix all objects with object dir
+recv_objs := $(addprefix $(object_dir)/, $(recv_objs))
+filter_objs := $(addprefix $(object_dir)/, $(filter_objs))
+client_objs := $(addprefix $(object_dir)/, $(client_objs))
+gui_objs := $(addprefix $(object_dir)/, $(gui_objs))
+audiod_objs := $(addprefix $(object_dir)/, $(audiod_objs))
+audioc_objs := $(addprefix $(object_dir)/, $(audioc_objs))
+fade_objs := $(addprefix $(object_dir)/, $(fade_objs))
+server_objs := $(addprefix $(object_dir)/, $(server_objs))
+write_objs := $(addprefix $(object_dir)/, $(write_objs))
+afh_objs := $(addprefix $(object_dir)/, $(afh_objs))
+play_objs := $(addprefix $(object_dir)/, $(play_objs))
+
+
 DEBUG_CPPFLAGS += -g -Wunused -Wundef -W
 DEBUG_CPPFLAGS += -Wredundant-decls
 DEBUG_CPPFLAGS += -Wall -Wno-sign-compare -Wno-unknown-pragmas
@@ -68,20 +136,20 @@ CPPFLAGS += -Wmissing-noreturn
 CPPFLAGS += -Wbad-function-cast
 CPPFLAGS += -fno-strict-aliasing
 CPPFLAGS += -DMAIN_INPUT_FILE_IS_$(*F)
-CPPFLAGS += @arch_cppflags@
+CPPFLAGS += $(arch_cppflags)
 CPPFLAGS += -I/usr/local/include
 CPPFLAGS += -I$(cmdline_dir)
-CPPFLAGS += @osl_cppflags@
+CPPFLAGS += $(osl_cppflags)
 
-LDFLAGS += @clock_gettime_ldflags@
+LDFLAGS += $(clock_gettime_ldflags)
 
-man_pages := $(patsubst %, $(man_dir)/%.1, $(executables))
+man_pages := $(patsubst %, $(man_dir)/%.1, $(prefixed_executables))
 
 autocrap := config.h.in configure
-tarball_pfx := @PACKAGE_TARNAME@-$(PACKAGE_VERSION)
+tarball_pfx := $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)
 tarball_delete := $(addprefix $(tarball_pfx)/,\
        web .changelog_before_cvs .changelog_cvs .gitignore)
-tarball := @PACKAGE_TARNAME@-$(PACKAGE_VERSION).tar.bz2
+tarball := $(tarball_pfx).tar.bz2
 
 # To put more focus on warnings, be less verbose as default
 # Use 'make V=1' to see the full commands
@@ -92,7 +160,7 @@ else
 endif
 
 .PHONY: dep all clean distclean maintainer-clean install man tarball
-all: dep $(executables) $(man_pages)
+all: dep $(prefixed_executables) $(man_pages)
 dep: $(deps)
 man: $(man_pages)
 tarball: $(tarball)
@@ -151,63 +219,35 @@ $(hostbin_dir)/error2: error2.c | $(hostbin_dir)
 error2.h: $(hostbin_dir)/error2
        @[ -z "$(Q)" ] || echo 'ER2 $<'
        @echo "$(object_executable_matrix)" | $< > $@
-$(object_dir)/crypt.o: crypt.c | $(object_dir)
-       @[ -z "$(Q)" ] || echo 'CC $<'
-       $(Q) $(CC) -c -o $@ $(CPPFLAGS) $(DEBUG_CPPFLAGS) @openssl_cppflags@ $<
-$(object_dir)/spx_common.o: spx_common.c | $(object_dir)
-       @[ -z "$(Q)" ] || echo 'CC $<'
-       $(Q) $(CC) -c -o $@ $(CPPFLAGS) $(DEBUG_CPPFLAGS) @ogg_cppflags@ $<
-
-$(object_dir)/spxdec_filter.o: spxdec_filter.c | $(object_dir)
-       @[ -z "$(Q)" ] || echo 'CC $<'
-       $(Q) $(CC) -c -o $@ $(CPPFLAGS) $(DEBUG_CPPFLAGS) @ogg_cppflags@ $<
-
-$(object_dir)/spx_afh.o: spx_afh.c | $(object_dir)
-       @[ -z "$(Q)" ] || echo 'CC $<'
-       $(Q) $(CC) -c -o $@ $(CPPFLAGS) $(DEBUG_CPPFLAGS) @ogg_cppflags@ $<
-
-$(object_dir)/oggdec_filter.o: oggdec_filter.c | $(object_dir)
-       @[ -z "$(Q)" ] || echo 'CC $<'
-       $(Q) $(CC) -c -o $@ $(CPPFLAGS) $(DEBUG_CPPFLAGS) @ogg_cppflags@ $<
-
-$(object_dir)/ogg_afh.o: ogg_afh.c | $(object_dir)
-       @[ -z "$(Q)" ] || echo 'CC $<'
-       $(Q) $(CC) -c -o $@ $(CPPFLAGS) $(DEBUG_CPPFLAGS) @ogg_cppflags@ $<
 
-$(object_dir)/ogg_afh_common.o: ogg_afh_common.c | $(object_dir)
-       @[ -z "$(Q)" ] || echo 'CC $<'
-       $(Q) $(CC) -c -o $@ $(CPPFLAGS) $(DEBUG_CPPFLAGS) @ogg_cppflags@ $<
-
-$(object_dir)/mp3dec_filter.o: mp3dec_filter.c | $(object_dir)
-       @[ -z "$(Q)" ] || echo 'CC $<'
-       $(Q) $(CC) -c -o $@ $(CPPFLAGS) $(DEBUG_CPPFLAGS) @mad_cppflags@ $<
-
-$(object_dir)/compress_filter.o: compress_filter.c | $(object_dir)
-       @[ -z "$(Q)" ] || echo 'CC $<'
-       $(Q) $(CC) -c -o $@ $(CPPFLAGS) $(DEBUG_CPPFLAGS) -O3 $<
-
-$(object_dir)/aacdec_filter.o: aacdec_filter.c | $(object_dir)
-       @[ -z "$(Q)" ] || echo 'CC $<'
-       $(Q) $(CC) -c -o $@ $(CPPFLAGS) $(DEBUG_CPPFLAGS) @faad_cppflags@ $<
-
-$(object_dir)/aac_common.o: aac_common.c | $(object_dir)
-       @[ -z "$(Q)" ] || echo 'CC $<'
-       $(Q) $(CC) -c -o $@ $(CPPFLAGS) $(DEBUG_CPPFLAGS) @faad_cppflags@ $<
-
-$(object_dir)/aac_afh.o: aac_afh.c | $(object_dir)
-       @[ -z "$(Q)" ] || echo 'CC $<'
-       $(Q) $(CC) -c -o $@ $(CPPFLAGS) $(DEBUG_CPPFLAGS) @faad_cppflags@ $<
-
-$(object_dir)/mp3_afh.o: mp3_afh.c | $(object_dir)
-       @[ -z "$(Q)" ] || echo 'CC $<'
-       $(Q) $(CC) -c -o $@ $(CPPFLAGS) $(DEBUG_CPPFLAGS) @id3tag_cppflags@ $<
+$(object_dir)/%.o: %.c | $(object_dir)
+$(object_dir)/opus%.o: CPPFLAGS += $(opus_cppflags)
+$(object_dir)/gui%.o: CPPFLAGS += $(curses_cppflags)
+$(object_dir)/spx%.o: CPPFLAGS += $(speex_cppflags)
+$(object_dir)/%.cmdline.o: CPPFLAGS += -Wno-unused-function
+
+$(object_dir)/mp3_afh.o: CPPFLAGS += $(id3tag_cppflags)
+$(object_dir)/crypt.o: CPPFLAGS += $(openssl_cppflags)
+$(object_dir)/mp3dec_filter.o: CPPFLAGS += $(mad_cppflags)
+$(object_dir)/compress_filter.o: CPPFLAGS += -O3
+$(object_dir)/ao_write.o: CPPFLAGS += $(ao_cppflags)
+
+$(object_dir)/aacdec_filter.o \
+$(object_dir)/aac_common.o \
+$(object_dir)/aac_afh.o \
+: CPPFLAGS += $(faad_cppflags)
+
+$(object_dir)/spx_common.o \
+$(object_dir)/spxdec_filter.o \
+$(object_dir)/spx_afh.o \
+$(object_dir)/oggdec_filter.o \
+$(object_dir)/ogg_afh.o \
+$(object_dir)/ogg_afh_common.o \
+: CPPFLAGS += $(ogg_cppflags)
 
-$(object_dir)/gui%.o: gui%.c | $(object_dir)
-       @[ -z "$(Q)" ] || echo 'CC $<'
-       $(Q) $(CC) -c -o $@ $(CPPFLAGS) $(DEBUG_CPPFLAGS) @curses_cppflags@ $<
-$(object_dir)/ao_write.o: ao_write.c | $(object_dir)
+$(object_dir)/%.o: %.c | $(object_dir)
        @[ -z "$(Q)" ] || echo 'CC $<'
-       $(Q) $(CC) -c -o $@ $(CPPFLAGS) $(DEBUG_CPPFLAGS) @ao_cppflags@ $<
+       $(Q) $(CC) -c -o $@ $(CPPFLAGS) $(DEBUG_CPPFLAGS) $<
 
 $(object_dir)/%.cmdline.o: $(cmdline_dir)/%.cmdline.c $(cmdline_dir)/%.cmdline.h | $(object_dir)
        @[ -z "$(Q)" ] || echo 'CC $<'
@@ -227,76 +267,69 @@ $(dep_dir)/%.d: %.c | $(dep_dir)
        $(Q) ./depend.sh $(dep_dir) $(object_dir) $(cmdline_dir) \
                $(CPPFLAGS) $< > $@
 
-all_objs := @recv_objs@ @filter_objs@ @client_objs@ @gui_objs@ \
-       @audiod_objs@ @audioc_objs@ @fade_objs@ @server_objs@ \
-       @write_objs@ @afh_objs@ @play_objs@
-deps := $(addprefix $(dep_dir)/, $(all_objs:.o=.d))
-m4_deps := $(addprefix $(m4depdir)/, $(addsuffix .m4d, @executables@))
-
-recv_objs := $(addprefix $(object_dir)/, @recv_objs@)
-filter_objs := $(addprefix $(object_dir)/, @filter_objs@)
-client_objs := $(addprefix $(object_dir)/, @client_objs@)
-gui_objs := $(addprefix $(object_dir)/, @gui_objs@)
-audiod_objs := $(addprefix $(object_dir)/, @audiod_objs@)
-audioc_objs := $(addprefix $(object_dir)/, @audioc_objs@)
-fade_objs := $(addprefix $(object_dir)/, @fade_objs@)
-server_objs := $(addprefix $(object_dir)/, @server_objs@)
-write_objs := $(addprefix $(object_dir)/, @write_objs@)
-afh_objs := $(addprefix $(object_dir)/, @afh_objs@)
-play_objs := $(addprefix $(object_dir)/, @play_objs@)
-
 ifeq ($(findstring clean, $(MAKECMDGOALS)),)
 -include $(deps)
 -include $(m4_deps)
 endif
 
-para_recv: $(recv_objs)
-       @[ -z "$(Q)" ] || echo 'LD $@'
-       $(Q) $(CC) $(recv_objs) -o $@ @recv_ldflags@ $(LDFLAGS)
-
-para_filter: $(filter_objs)
-       @[ -z "$(Q)" ] || echo 'LD $@'
-       $(Q) $(CC) $(filter_objs) -o $@ @filter_ldflags@ $(LDFLAGS)
-
-para_client: $(client_objs)
-       @[ -z "$(Q)" ] || echo 'LD $@'
-       $(Q) $(CC) -o $@ $(client_objs) @client_ldflags@ $(LDFLAGS)
-
-para_gui: $(gui_objs)
-       @[ -z "$(Q)" ] || echo 'LD $@'
-       $(Q) $(CC) -o $@ $(gui_objs) @curses_ldflags@ $(LDFLAGS)
-
-para_audiod: $(audiod_objs)
-       @[ -z "$(Q)" ] || echo 'LD $@'
-       $(Q) $(CC) -o $@ $(audiod_objs) @audiod_ldflags@ $(LDFLAGS)
-
-para_audioc: $(audioc_objs)
-       @[ -z "$(Q)" ] || echo 'LD $@'
-       $(Q) $(CC) -o $@ $(audioc_objs) @audioc_ldflags@ $(LDFLAGS)
-
-para_fade: $(fade_objs)
-       @[ -z "$(Q)" ] || echo 'LD $@'
-       $(Q) $(CC) -o $@ $(fade_objs) @fade_ldflags@ $(LDFLAGS)
-
-para_server: $(server_objs)
-       @[ -z "$(Q)" ] || echo 'LD $@'
-       $(Q) $(CC) -o $@ $(server_objs) @server_ldflags@ $(LDFLAGS)
-
-para_write: $(write_objs)
-       @[ -z "$(Q)" ] || echo 'LD $@'
-       $(Q) $(CC) -o $@ $(write_objs) @write_ldflags@ $(LDFLAGS)
-
-para_afh: $(afh_objs)
-       @[ -z "$(Q)" ] || echo 'LD $@'
-       $(Q) $(CC) -o $@ $(afh_objs) @afh_ldflags@ $(LDFLAGS)
-
-para_play: $(play_objs)
+para_recv para_afh para_play para_server: LDFLAGS += $(id3tag_ldflags)
+para_write para_play para_audiod: LDFLAGS += $(ao_ldflags) $(core_audio_ldflags)
+para_client para_audioc para_play : LDFLAGS += $(readline_ldflags)
+para_server: LDFLAGS += $(osl_ldflags)
+para_gui: LDFLAGS += $(curses_ldflags)
+para_server \
+para_client \
+para_audiod \
+:LDFLAGS += \
+       $(openssl_ldflags) \
+       $(gcrypt_ldflags)
+
+para_audiod \
+para_filter \
+para_play \
+: LDFLAGS += \
+       $(mad_ldflags) \
+       $(samplerate_ldflags) \
+       -lm
+
+para_write \
+para_play \
+para_audiod \
+para_fade \
+: LDFLAGS += \
+       $(oss_ldflags) \
+       $(alsa_ldflags)
+
+para_server \
+para_filter \
+para_audiod \
+para_play \
+para_afh \
+para_recv \
+: LDFLAGS += \
+       $(ogg_ldflags) \
+       $(vorbis_ldflags) \
+       $(speex_ldflags) \
+       $(opus_ldflags) \
+       $(faad_ldflags) \
+       $(flac_ldflags)
+
+para_server \
+para_client \
+para_audioc \
+para_audiod \
+para_recv \
+: LDFLAGS += \
+       $(socket_ldflags) $(nsl_ldflags)
+
+$(foreach exe,$(executables),$(eval para_$(exe): $$($(exe)_objs)))
+$(prefixed_executables):
        @[ -z "$(Q)" ] || echo 'LD $@'
-       $(Q) $(CC) -o $@ $(play_objs) @play_ldflags@ $(LDFLAGS)
+       $(Q) $(CC) $^ -o $@ $(LDFLAGS)
 
 clean:
        @[ -z "$(Q)" ] || echo 'CLEAN'
-       $(Q) rm -f $(executables)
+       $(Q) rm -f $(prefixed_executables)
        $(Q) rm -rf $(object_dir)
 
 clean2: clean
@@ -315,7 +348,8 @@ maintainer-clean: distclean
 
 install: all man
        $(MKDIR_P) $(BINDIR) $(MANDIR)
-       $(INSTALL) -s --strip-program $(STRIP) -m 755 $(executables) $(BINDIR)
+       $(INSTALL) -s --strip-program $(STRIP) -m 755 \
+               $(prefixed_executables) $(BINDIR)
        $(INSTALL) -m 644 $(man_pages) $(MANDIR)
        $(MKDIR_P) $(VARDIR) >/dev/null 2>&1 || true # not fatal, so don't complain