Merge branch 'refs/heads/t/makefile_conventions'
authorAndre Noll <maan@tuebingen.mpg.de>
Wed, 19 Apr 2017 17:13:20 +0000 (19:13 +0200)
committerAndre Noll <maan@tuebingen.mpg.de>
Wed, 19 Apr 2017 17:16:25 +0000 (19:16 +0200)
A bunch of changes which strive to make the paraslash build system
more standard.

Cooking for three months.

* refs/heads/t/makefile_conventions:
  build: Add target "check" as a synonym for "test".
  build: Rename target "tarball" to "dist".
  build: Do not strip installed executables by default.
  build: Support $(DESTDIR).
  build: Rename clean targets.

1  2 
Makefile.in
Makefile.real
NEWS.md
configure.ac

diff --combined Makefile.in
@@@ -8,7 -8,6 +8,6 @@@ datarootdir := @datarootdir
  PACKAGE_TARNAME := @PACKAGE_TARNAME@
  PACKAGE_VERSION := @PACKAGE_VERSION@
  
- INSTALL := @INSTALL@
  M4 := @M4@
  GENGETOPT := @GENGETOPT@
  HELP2MAN := @HELP2MAN@
@@@ -52,6 -51,7 +51,6 @@@ alsa_cppflags := @alsa_cppflags
  oss_cppflags := @oss_cppflags@
  mp4v2_cppflags := @mp4v2_cppflags@
  
 -clock_gettime_ldflags := @clock_gettime_ldflags@
  id3tag_ldflags := @id3tag_ldflags@
  ogg_ldflags := @ogg_ldflags@
  vorbis_ldflags := @vorbis_ldflags@
@@@ -68,6 -68,7 +67,6 @@@ readline_ldflags := @readline_ldflags
  samplerate_ldflags := @samplerate_ldflags@
  osl_ldflags := @osl_ldflags@
  curses_ldflags := @curses_ldflags@
 -core_audio_ldflags := @core_audio_ldflags@
  crypto_ldflags := @crypto_ldflags@
  iconv_ldflags := @iconv_ldflags@
  mp4v2_ldflags := @mp4v2_ldflags@
diff --combined Makefile.real
@@@ -9,7 -9,6 +9,6 @@@ endi
  
  vardir := /var/paraslash
  mandir := $(datarootdir)/man/man1
- STRIP := $(CROSS_COMPILE)strip
  MKDIR_P := mkdir -p
  prefixed_executables := $(addprefix para_, $(executables))
  
@@@ -63,10 -62,11 +62,11 @@@ tarball_pfx := $(PACKAGE_TARNAME)-$(GIT
  tarball_delete := $(addprefix $(tarball_pfx)/, web .gitignore)
  tarball := $(tarball_pfx).tar.bz2
  
- .PHONY: all clean clean2 distclean maintainer-clean install man tarball
  all: $(prefixed_executables) $(man_pages)
+ .PHONY: all mostlyclean clean distclean maintainer-clean install \
+       install-strip man dist tarball
  man: $(man_pages)
- tarball: $(tarball)
  
  include $(m4_ggo_dir)/makefile
  include $(test_dir)/makefile.test
@@@ -113,6 -113,8 +113,6 @@@ STRICT_CFLAGS += -Wformat -Wformat-secu
  STRICT_CFLAGS += -Wmissing-format-attribute
  STRICT_CFLAGS += -Wdeclaration-after-statement
  
 -LDFLAGS += $(clock_gettime_ldflags)
 -
  ifeq ($(uname_s),Linux)
        # these cause warnings on *BSD
        CPPFLAGS += -Wunused-macros
@@@ -280,7 -282,7 +280,7 @@@ $(dep_dir)/%.d: %.c | $(dep_dir
  
  para_recv para_afh para_play para_server: LDFLAGS += $(id3tag_ldflags)
  para_write para_play para_audiod \
 -: LDFLAGS += $(ao_ldflags) $(pthread_ldflags) $(core_audio_ldflags)
 +: LDFLAGS += $(ao_ldflags) $(pthread_ldflags)
  para_client para_audioc para_play : LDFLAGS += $(readline_ldflags)
  para_server: LDFLAGS += $(osl_ldflags)
  para_gui: LDFLAGS += $(curses_ldflags)
@@@ -335,31 -337,36 +335,36 @@@ $(prefixed_executables)
        @[ -z "$(Q)" ] || echo 'LD $@'
        $(Q) $(CC) $^ -o $@ $(LDFLAGS)
  
- clean:
-       @[ -z "$(Q)" ] || echo 'CLEAN'
mostlyclean:
+       @[ -z "$(Q)" ] || echo 'MOSTLYCLEAN'
        $(Q) rm -f para_*
        $(Q) rm -rf $(object_dir)
- clean2: clean
-       @[ -z "$(Q)" ] || echo 'CLEAN2'
+ clean: mostlyclean
+       @[ -z "$(Q)" ] || echo 'CLEAN'
        $(Q) rm -rf $(build_dir)
- distclean: clean2 test-clean
+ distclean: clean
        @[ -z "$(Q)" ] || echo 'DISTCLEAN'
        $(Q) rm -f Makefile autoscan.log config.status config.log
-       $(Q) rm -f GPATH GRTAGS GSYMS GTAGS
+       $(Q) rm -f config.h configure config.h.in
  maintainer-clean: distclean
        @[ -z "$(Q)" ] || echo 'MAINTAINER-CLEAN'
-       $(Q) rm -f *.tar.bz2 config.h configure config.h.in
+       $(Q) rm -f *.tar.bz2
+       $(Q) rm -f GPATH GRTAGS GSYMS GTAGS
+ INSTALL ?= install
+ INSTALL_PROGRAM ?= $(INSTALL)
+ INSTALL_DATA ?= $(INSTALL) -m 644
+ ifneq ($(findstring strip, $(MAKECMDGOALS)),)
+       strip_option := -s
+ endif
  
- install: all man
-       $(MKDIR_P) $(bindir) $(mandir)
-       $(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
+ install install-strip: all man
+       $(MKDIR_P) $(DESTDIR)$(bindir) $(DESTDIR)$(mandir)
+       $(INSTALL) $(strip_option) $(prefixed_executables) $(DESTDIR)$(bindir)
+       $(INSTALL_DATA) $(man_pages) $(DESTDIR)$(mandir)
+       $(MKDIR_P) $(DESTDIR)$(vardir) >/dev/null 2>&1 || true # not fatal, so don't complain
  
- $(tarball):
+ $(tarball) dist tarball:
        $(Q) rm -rf $(tarball) $(tarball_pfx)
        $(Q) git archive --format=tar --prefix=$(tarball_pfx)/ HEAD \
                | tar --delete $(tarball_delete) > $(tarball_pfx).tar
diff --combined NEWS.md
+++ b/NEWS.md
@@@ -1,34 -1,9 +1,42 @@@
  NEWS
  ====
  
 +------------------------------------
 +0.6.0 (to be announced) "fuzzy flux"
 +------------------------------------
 +- Support for Mac OS X has been removed.
 +- On Linux systems, glibc-2.17 or newer is required to build the
 +  source tree.
 +- Support for RSA public keys in ASN format (as generated by openssl
 +  genrsa) has been removed. These keys have been deprecated since
 +  2011, so users should have long switched to keys generated with
 +  ssh-keygen(1).
 +- If libgcrypt is used as the crypto library, we now require version
 +  1.5.0 (released in 2011) or later.
 +- The insecure RC4 stream cipher has been removed. It was superseded
 +  by aes_ctr128 three years ago but the RC4 code had been kept for
 +  backwards compatibility.
 +- On Linux, abstract unix domain sockets are used unconditionally.
++- The "install" target no longer strips executables, the new
++  install-strip target can be used to get the old behaviour.
++- The clean targets have been renamed: clean2 is gone, and the new
++  mostlyclean removes only the executables and object files.
++- New target: check (identical to test).
++- The DESTDIR make variable is honored to prepend a path to the
++  installation directory. This feature is orthogonal to the --prefix
++  option to configure.
 +
 +Downloads:
 +[tarball](./releases/paraslash-git.tar.bz2),
 +
  -------------------------------------
  0.5.7 (2016-12-31) "semantic density"
  -------------------------------------
 +
 +Mostly a bug fix release, and a bunch of internal improvements.
 +The only user-visible changes are the sanity checks for the touch
 +command and the new options to the ls command.
 +
  - Speedup of the base64 decoder.
  - One of the two source browsers has been removed from the web pages.
    The doxygen API reference still contains an HTML version of each
diff --combined configure.ac
@@@ -63,14 -63,23 +63,10 @@@ AC_PATH_PROG([HELP2MAN], [help2man]
  test -z "$HELP2MAN" && AC_MSG_ERROR(
        [help2man is required to build this package])
  
- AC_PATH_PROG([INSTALL], [install])
- test -z "$INSTALL" && AC_MSG_ERROR(
-       [The install program is required to build this package])
  AC_PROG_CC
  AC_PROG_CPP
  
  executables="recv filter audioc write afh play"
 -################################################################## clock_gettime
 -clock_gettime_lib=
 -AC_CHECK_LIB([c], [clock_gettime], [clock_gettime_lib=c], [
 -      AC_CHECK_LIB([rt], [clock_gettime], [clock_gettime_lib=rt], [], [])
 -])
 -if test -n "$clock_gettime_lib"; then
 -      AC_DEFINE(HAVE_CLOCK_GETTIME, 1, [
 -              define to 1 if clock_gettime() is supported])
 -fi
 -if test "$clock_gettime_lib" = "rt"; then
 -      AC_SUBST(clock_gettime_ldflags, -lrt)
 -fi
 -
  ########################################################################### osl
  STASH_FLAGS
  LIB_ARG_WITH([osl], [-losl])
@@@ -200,6 -209,24 +196,6 @@@ AC_MSG_RESULT($have_ip_mreqn
  if test ${have_ip_mreqn} = yes; then
        AC_DEFINE(HAVE_IP_MREQN, 1, define to 1 you have struct ip_mreqn)
  fi
 -########################################################################### osx
 -
 -AC_MSG_CHECKING(for CoreAudio (MacOs))
 -AC_LINK_IFELSE([AC_LANG_PROGRAM([[
 -      #include <CoreAudio/CoreAudio.h>
 -]], [[
 -      AudioDeviceID id;
 -]])],[have_core_audio=yes],[have_core_audio=no])
 -AC_MSG_RESULT($have_core_audio)
 -if test ${have_core_audio} = yes; then
 -      f1="-framework CoreAudio"
 -      f2="-framework AudioToolbox"
 -      f3="-framework AudioUnit"
 -      f4="-framework CoreServices"
 -      core_audio_ldflags="$f1 $f2 $f3 $f4"
 -      AC_SUBST(core_audio_ldflags)
 -      AC_DEFINE(HAVE_CORE_AUDIO, 1, define to 1 on Mac Os X)
 -fi
  ########################################################################### ogg
  STASH_FLAGS
  LIB_ARG_WITH([ogg], [-logg])
@@@ -513,6 -540,10 +509,6 @@@ if test -n "$CRYPTOLIB"; the
        else
                audiod_errlist_objs="$audiod_errlist_objs gcrypt"
        fi
 -      if test "$have_core_audio" = "yes"; then
 -              audiod_errlist_objs="$audiod_errlist_objs osx_write ipc"
 -              audiod_cmdline_objs="$audiod_cmdline_objs osx_write"
 -      fi
        NEED_VORBIS_OBJECTS && {
                audiod_errlist_objs="$audiod_errlist_objs oggdec_filter"
                audiod_audio_formats="$audiod_audio_formats ogg"
@@@ -845,6 -876,10 +841,6 @@@ play_cmdline_objs=
        play
        sync_filter
  "
 -if test "$have_core_audio" = "yes"; then
 -      play_errlist_objs="$play_errlist_objs osx_write ipc"
 -      play_cmdline_objs="$play_cmdline_objs osx_write"
 -fi
  NEED_OGG_OBJECTS && play_errlist_objs="$play_errlist_objs ogg_afh_common"
  NEED_VORBIS_OBJECTS && {
        play_errlist_objs="$play_errlist_objs oggdec_filter ogg_afh"
@@@ -918,6 -953,12 +914,6 @@@ write_errlist_objs=
  writers="file"
  default_writer="FILE_WRITE"
  
 -if test "$have_core_audio" = "yes"; then
 -      write_errlist_objs="$write_errlist_objs osx_write ipc"
 -      write_cmdline_objs="$write_cmdline_objs osx_write"
 -      writers="$writers osx"
 -      default_writer="OSX_WRITE"
 -fi
  NEED_AO_OBJECTS && {
        write_errlist_objs="$write_errlist_objs ao_write"
        write_cmdline_objs="$write_cmdline_objs ao_write"