From 8fcd914e7f6b59c2b252a592781af2271b00cc04 Mon Sep 17 00:00:00 2001 From: "Zeeshan Ali (Khattak)" Date: Sat, 21 Feb 2009 17:52:24 +0000 Subject: [PATCH] Use shave to get a linux kernel like build output. svn path=/trunk/; revision=638 --- acinclude.m4 | 40 +++++++++++++++++++++++ configure.ac | 4 +++ shave-libtool.in | 70 +++++++++++++++++++++++++++++++++++++++++ shave.in | 70 +++++++++++++++++++++++++++++++++++++++++ src/plugins/dvb/Makefile.am | 6 +++- src/plugins/test/Makefile.am | 6 +++- src/plugins/tracker/Makefile.am | 6 +++- src/rygel/Makefile.am | 8 +++-- 8 files changed, 205 insertions(+), 5 deletions(-) create mode 100644 acinclude.m4 create mode 100644 shave-libtool.in create mode 100644 shave.in diff --git a/acinclude.m4 b/acinclude.m4 new file mode 100644 index 0000000..5b1f675 --- /dev/null +++ b/acinclude.m4 @@ -0,0 +1,40 @@ +dnl Make automake/libtool output more friendly to humans +dnl +dnl SHAVE_INIT([shavedir]) +dnl +dnl shavedir: the directory where the shave script is, it defaults to +dnl $(top_builddir) +dnl +dnl * SHAVE_INIT should be called late in your configure.(ac|in) file (just +dnl before AC_CONFIG_FILE/AC_OUTPUT is perfect. This macro rewrite CC and +dnl LIBTOOL, you don't want the configure tests to have these variables +dnl re-defined. +dnl * This macro requires GNU make's -s option. + +AC_DEFUN([SHAVE_INIT], [ +dnl where can we find the shave scripts? +m4_if([$1],, + [shavedir='$(top_builddir)'], + [shavedir='$(top_builddir)'/$1]) +AC_SUBST(shavedir) +dnl make is now quiet +AC_SUBST([MAKEFLAGS], [-s]) +AC_SUBST([AM_MAKEFLAGS], ['`test -z $V && echo -s`']) +dnl we need sed +AC_CHECK_PROG(SED,sed,sed,false) +dnl substitute libtool +SHAVE_SAVED_LIBTOOL=$LIBTOOL +AC_SUBST(SHAVE_SAVED_LIBTOOL) +LIBTOOL="\$(SHELL) \$(shavedir)/shave-libtool '\$(SHAVE_SAVED_LIBTOOL)'" +AC_SUBST(LIBTOOL) +dnl substitute cc +SHAVE_SAVED_CC=$CC +SHAVE_SAVED_CXX=$CXX +AC_SUBST(SHAVE_SAVED_CC) +AC_SUBST(SHAVE_SAVED_CXX) +CC="\$(SHELL) \$(shavedir)/shave cc '\$(SHAVE_SAVED_CC)'" +CXX="\$(SHELL) \$(shavedir)/shave cxx '\$(SHAVE_SAVED_CXX)'" +AC_SUBST(CC) +AC_SUBST(CXX) +]) + diff --git a/configure.ac b/configure.ac index 3adb0b6..6e0c1c4 100644 --- a/configure.ac +++ b/configure.ac @@ -137,7 +137,11 @@ ALL_LINGUAS="" AM_GLIB_GNU_GETTEXT AM_GLIB_DEFINE_LOCALEDIR([LOCALEDIR]) +SHAVE_INIT + AC_OUTPUT([ +shave +shave-libtool Makefile src/Makefile src/rygel/Makefile diff --git a/shave-libtool.in b/shave-libtool.in new file mode 100644 index 0000000..02de5ad --- /dev/null +++ b/shave-libtool.in @@ -0,0 +1,70 @@ +#!/bin/sh + +# we need sed +SED=@SED@ +if test -z "$SED" ; then +SED=sed +fi +Xsed="$SED -e s/^X//" + +lt_unmangle () +{ + last_result=`echo -n X$1 | $Xsed -e 's#.libs/##' -e 's#[^0-9a-zA-Z_]\+_la##'` +} + +# the real libtool to use +LIBTOOL="$1" +shift + +# if 1, don't print anything, the underlaying wrapper will do it +pass_though=0 + +# scan the arguments, keep the right ones for libtool, and discover the mode +preserved_args= +while test "$#" -gt 0; do + opt="$1" + shift + + case $opt in + --mode=*) + mode=`echo "X$opt" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` + preserved_args="$preserved_args $opt" + ;; + -o) + lt_output="$1" + preserved_args="$preserved_args $opt" + ;; + *) + preserved_args="$preserved_args $opt" + ;; + esac +done + +case "$mode" in +compile) + # shave will be called and print the actual CC/CXX/LINK line + preserved_args="$preserved_args --shave-mode=$mode" + pass_though=1 + ;; +link) + preserved_args="$preserved_args --shave-mode=$mode" + Q=" LINK " + ;; +*) + # let's u + # echo "*** libtool: Unimplemented mode: $mode, fill a bug report" + ;; +esac + +lt_unmangle "$lt_output" +output=$last_result + +if test -z $V; then + if test $pass_though -eq 0; then + echo "$Q$output" + fi + $LIBTOOL --silent $preserved_args +else + echo $LIBTOOL $preserved_args + $LIBTOOL $preserved_args +fi diff --git a/shave.in b/shave.in new file mode 100644 index 0000000..487596e --- /dev/null +++ b/shave.in @@ -0,0 +1,70 @@ +#!/bin/sh + +# we need sed +SED=@SED@ +if test -z "$SED" ; then +SED=sed +fi +Xsed="$SED -e s/^X//" + +lt_unmangle () +{ + last_result=`echo -n X$1 | $Xsed -e 's#.libs/##' -e 's#[^0-9a-zA-Z_]\+_la##'` +} + +# the tool to wrap (cc, cxx, ar, ranlib, ..) +tool="$1" +shift + +# the reel tool (to call) +REEL_TOOL="$1" +shift + +pass_through=0 +preserved_args= +while test "$#" -gt 0; do + opt="$1" + shift + + case $opt in + --shave-mode=*) + mode=`echo "X$opt" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` + ;; + -o) + lt_output="$1" + preserved_args="$preserved_args $opt" + ;; + *) + preserved_args="$preserved_args $opt" + ;; + esac +done + +# mode=link is handled in the libtool wrapper +case "$mode,$tool" in +link,*) + pass_through=1 + ;; +compile,cxx) + Q=" CXX " + ;; +compile,cc|*,*) + # no "libtool" mode has been given, we are called by the Makefile: + # -> assume compilation + mode=compile + Q=" CC " + ;; +esac + +lt_unmangle "$lt_output" +output=$last_result + +if test -z $V; then + if test $pass_through -eq 0; then + echo "$Q$output" + fi + $REEL_TOOL $preserved_args +else + echo $REEL_TOOL $preserved_args + $REEL_TOOL $preserved_args +fi diff --git a/src/plugins/dvb/Makefile.am b/src/plugins/dvb/Makefile.am index d6395fa..f03f37d 100644 --- a/src/plugins/dvb/Makefile.am +++ b/src/plugins/dvb/Makefile.am @@ -1,3 +1,7 @@ +V = @ +Q = $(V:1=) +QUIET_GEN = $(Q:@=@echo ' GEN '$@;) + plugindir = $(libdir)/rygel-1.0 plugin_LTLIBRARIES = librygel-dvb.la @@ -38,7 +42,7 @@ librygel_dvb_la_SOURCES = rygel-dvb-content-dir.h \ rygel-dvb-plugin.vala rygel-dvb.stamp: $(filter %.vala,$(librygel_dvb_la_SOURCES)) - $(VALAC) -C --vapidir=$(top_srcdir)/src/rygel \ + $(QUIET_GEN) $(VALAC) -C --vapidir=$(top_srcdir)/src/rygel \ --pkg rygel-1.0 --pkg cstuff --pkg gupnp-1.0 --pkg gupnp-av-1.0 \ --pkg dbus-glib-1 --pkg gee-1.0 --pkg gstreamer-0.10 $^ touch $@ diff --git a/src/plugins/test/Makefile.am b/src/plugins/test/Makefile.am index 93375bf..08d099c 100644 --- a/src/plugins/test/Makefile.am +++ b/src/plugins/test/Makefile.am @@ -1,3 +1,7 @@ +V = @ +Q = $(V:1=) +QUIET_GEN = $(Q:@=@echo ' GEN '$@;) + plugindir = $(libdir)/rygel-1.0 plugin_LTLIBRARIES = librygel-test.la @@ -43,7 +47,7 @@ librygel_test_la_SOURCES = rygel-test-content-dir.h \ rygel-test-plugin.vala rygel-test.stamp: $(filter %.vala,$(librygel_test_la_SOURCES)) - $(VALAC) -C --vapidir=$(top_srcdir)/src/rygel \ + $(QUIET_GEN) $(VALAC) -C --vapidir=$(top_srcdir)/src/rygel \ --pkg rygel-1.0 --pkg cstuff \ --pkg gupnp-1.0 --pkg gupnp-av-1.0 \ --pkg dbus-glib-1 --pkg gee-1.0 --pkg gstreamer-0.10 $^ diff --git a/src/plugins/tracker/Makefile.am b/src/plugins/tracker/Makefile.am index 67f5e41..a7b105a 100644 --- a/src/plugins/tracker/Makefile.am +++ b/src/plugins/tracker/Makefile.am @@ -1,3 +1,7 @@ +V = @ +Q = $(V:1=) +QUIET_GEN = $(Q:@=@echo ' GEN '$@;) + plugindir = $(libdir)/rygel-1.0 plugin_LTLIBRARIES = librygel-media-tracker.la @@ -78,7 +82,7 @@ librygel_media_tracker_la_SOURCES = rygel-media-tracker.h \ rygel-tracker-plugin.vala rygel-media-tracker.stamp: $(filter %.vala,$(librygel_media_tracker_la_SOURCES)) - $(VALAC) -C --vapidir=$(top_srcdir)/src/rygel \ + $(QUIET_GEN) $(VALAC) -C --vapidir=$(top_srcdir)/src/rygel \ --pkg rygel-1.0 --pkg cstuff \ --pkg gupnp-1.0 --pkg gupnp-av-1.0 \ --pkg dbus-glib-1 --pkg gee-1.0 --pkg gstreamer-0.10 $^ diff --git a/src/rygel/Makefile.am b/src/rygel/Makefile.am index 691e2aa..d74c3cf 100644 --- a/src/rygel/Makefile.am +++ b/src/rygel/Makefile.am @@ -1,3 +1,7 @@ +V = @ +Q = $(V:1=) +QUIET_GEN = $(Q:@=@echo ' GEN '$@;) + if UNINSTALLED shareddir = $(abs_top_builddir)/data else @@ -122,7 +126,7 @@ rygel_SOURCES = $(VAPI_SOURCE_FILES) \ rygel-media-item.h rygel.stamp: $(filter %.vala,$(rygel_SOURCES)) - $(VALAC) -C --vapidir=$(srcdir) \ + $(QUIET_GEN) $(VALAC) -C --vapidir=$(srcdir) \ --pkg cstuff --pkg gupnp-1.0 --pkg gupnp-av-1.0 --pkg dbus-glib-1 \ --pkg gconf-2.0 --pkg gstreamer-0.10 --pkg gio-2.0 --pkg gee-1.0 $^ touch $@ @@ -158,7 +162,7 @@ VAPI_SOURCE_FILES = rygel-content-directory.vala \ rygel-didl-lite-writer.vala rygel-1.0.vapi: $(VAPI_SOURCE_FILES) - $(VALAC) -C --library=rygel-1.0 \ + $(QUIET_GEN) $(VALAC) -C --library=rygel-1.0 \ --pkg gupnp-1.0 --pkg gupnp-av-1.0 --pkg gee-1.0 --pkg gstreamer-0.10 \ $^ -- 2.7.4