/!\ Warning:
This GnomeGoal has been superseded by https://wiki.gnome.org/Initiatives/GnomeGoals/ModernAutotools

GNOME Goal: Nicer Builds

Summary

Make building GNOME clearer by using automake1.11 AM_SILENT_RULES.

Dolt was suggested to faster compilation, but seems that libtool 2.2 is fast enough (see this thread or this bug report)

This new automake rule turns the usual messy output of autotools into a pretty Kbuild-like one. For example:

$ make
Making all in foo
Making all in internal
  CC    internal-file0.o
  LINK  libinternal.la
  CC    lib-file0.o
  CC    lib-file1.o
  LINK  libfoo.la

If you need to see the details, just run make V=1.

Guidelines

Only add

m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])

to your configure.{in,ac} and you get a pretty Kbuild-like output if you have automake1.11 installed. The macro is compatible with earlier automake versions too.

/!\ Note: The yes parameter must be passed to AM_SILENT_RULES or it will not have the desired effect.

Also, you can use $(AM_V_GEN) to make custom commands silent (instead $(QUIET_GEN)) . See an example in this evince bug or in this gnome-panel commit

Read this for details: http://www.flameeyes.eu/autotools-mythbuster/automake/silent.html

Comments before approval

Shave (a external tool to make clearer compilations) is used by GStreamer and others. Clutter and libunique use shave as fallback if AM_SILENT_RULES is not available. Dolt is used by webkit (combined with AM_SILENT_RULES). Switching to AM_SILENT_RULES/libtool 2.2 is encouraged.

VincentUntz: let's do it the right way and use gnome-common for this. See bug #580062 and bug #582955

JavierJardon: As pointed in bug #580062, automake1.11 has a feature that do the same as shave do.

JavierJardon: There already are automake1.11 packages for Debian and Ubuntu

ThomasAndersen: gnome-doc-utils bug #589278 and gtk-doc bug #590927 needs to be fixed before modules using them will become silent with AM_SILENT_RULES.

DamienLespiau: shave users, please, migrate to automake's silent rules, deep magic and relying on private autoconf variables can't be the way forward, shave is really deprecated.

Status of this goal

/!\ Note: Updated automatical stats can be found at http://www.gnome.org/~fpeters/reports/silent-rules.html

{i} Tip: If you choose to work on a module, create the bug report on the GNOME bugzilla. This way people will know someone already works on it, and won't duplicate the work you're doing.

State

Markup

todo

<: #ff8080> todo

patch

<: #ffc849> [[GnomeBug:xxxxx|patch]]

done

<: #80ff80> [[GnomeBug:xxxxx|done]]

not needed

<: #80ff80> not needed

Above are the states and corresponding markup to update the modules state table below.

Tarball

Shave or AM_SILENT_RULES

Desktop

alacarte

done for AM_SILENT_RULES

brasero

AM_SILENT_RULES

bug-buddy

to do

cheese

AM_SILENT_RULES

dasher

to do

deskbar-applet

AM_SILENT_RULES

ekiga

done

empathy

done for AM_SILENT_RULES

eog

AM_SILENT_RULES

epiphany

AM_SILENT_RULES/libtool2.2

evince

AM_SILENT_RULES

evolution-data-server

AM_SILENT_RULES/libtool2.2

evolution

AM_SILENT_RULES/libtool2.2

evolution-exchange

AM_SILENT_RULES

evolution-mapi

AM_SILENT_RULES

evolution-webcal

to do

file-roller

AM_SILENT_RULES

gcalctool

AM_SILENT_RULES

gconf-editor

AM_SILENT_RULES

gdm

AM_SILENT_RULES

gedit

AM_SILENT_RULES and AM_V_GEN

gnome-applets

done for AM_SILENT_RULES

gnome-backgrounds

AM_SILENT_RULES

gnome-control-center

AM_SILENT_RULES

gnome-desktop

AM_SILENT_RULES

gnome-desktop-sharp

to do

gnome-doc-utils

done

gnome-games

AM_SILENT_RULES

gnome-icon-theme

to do

gnome-keyring

AM_SILENT_RULES

gnome-netstatus

to do

gnome-nettool

to do

gnome-mag

to do

gnome-media

AM_SILENT_RULES

gnome-menus

AM_SILENT_RULES

gnome-panel

AM_SILENT_RULES

gnome-power-manager

AM_SILENT_RULES

gnome-python-desktop

to do

gnome-screensaver

AM_SILENT_RULES

gnome-session

AM_SILENT_RULES

gnome-settings-daemon

to do

gnome-sharp

AM_SILENT_RULES

gnome-speech

to do

gnome-system-monitor

AM_SILENT_RULES

gnome-system-tools

AM_SILENT_RULES

gnome-terminal

AM_SILENT_RULES

gnome-themes

AM_SILENT_RULES

gnome-user-docs

to do

gnome-user-share

AM_SILENT_RULES

gnome-utils

AM_SILENT_RULES

gok

AM_SILENT_RULES

gstreamer

shave

gst-plugins-base

shave

gst-plugins-good

shave

gtk-engines

AM_SILENT_RULES

gtkhtml

AM_SILENT_RULES

gtksourceview

AM_SILENT_RULES

gucharmap

AM_SILENT_RULES

gvfs

AM_SILENT_RULES

hamster-applet

AM_SILENT_RULES

libgail-gnome

to do

libgnomekbd

AM_SILENT_RULES

libgtop

to do

libgweather

AM_SILENT_RULES

liboobs

AM_SILENT_RULES

librsvg

AM_SILENT_RULES

libsoup

AM_SILENT_RULES

libwnck

AM_SILENT_RULES

metacity

done for AM_SILENT_RULES

mousetweaks

AM_SILENT_RULES

nautilus

AM_SILENT_RULES

orca

to do

pygtksourceview

to do

seahorse

AM_SILENT_RULES

sound-juicer

AM_SILENT_RULES

swfdec-gnome

to do

tomboy

to do

totem

AM_SILENT_RULES

totem-pl-parser

to do

vinagre

AM_SILENT_RULES

vino

AM_SILENT_RULES

vte

AM_SILENT_RULES

yelp

AM_SILENT_RULES

zenity

AM_SILENT_RULES

Platform

GConf

to do

at-spi

to do

atk

AM_SILENT_RULES

glib

AM_SILENT_RULES

gtk+

AM_SILENT_RULES

gtk-doc

AM_SILENT_RULES

pango

AM_SILENT_RULES

Admin

pessulus

AM_SILENT_RULES

sabayon

to do

Development Tools

accerciser

to do

anjuta

to do

devhelp

AM_SILENT_RULES

gdl

to do

glade3

AM_SILENT_RULES

gnome-devel-docs

to do

Bindings (C++)

glibmm

AM_SILENT_RULES

pangomm

AM_SILENT_RULES

gtkmm

AM_SILENT_RULES

libglademm

to do

gconfmm

to do

libgnomecanvasmm

to do

libgnome-vfsmm

to do

libgnomemm

to do

libgnomeuimm

to do

libxml++

to do

Bindings (java)

glib-java (jg-common)

to do

libgtk-java

to do

libgnome-java

to do

libgconf-java

to do

libglade-java

to do

Bindings (mono)

gtk-sharp

AM_SILENT_RULES

Bindings (perl)

Glib

not needed

Uses own mechanism

Gtk2

not needed

Gtk2-GladeXML

not needed

Gnome2-GConf

not needed

Gnome2-Canvas

not needed

Gnome2-VFS

not needed

Gnome2

not needed

Bindings (python)

pygobject

to do

pygtk

to do

pyorbit

to do

GnomePython

to do

Mobile

GConf (dbus-based)

to do

evolution-data-server (dbus-based)

to do

clutter-gst

AM_SILENT_RULES

External Dependencies

avahi

to do

cairo

to do

cairomm

to do

clutter

AM_SILENT_RULES (Shave as fallback)

clutter-cairo

to do

clutter-gtk

to do

conduit

to do

dbus

to do

dbus-glib

to do

dbus-python

to do

desktop-file-utils

to do

Devicekit-power

to do

enchant

to do

expat

to do

farsight2

to do

fontconfig

to do

gamin

to do

gnutls

to do

gpgme

to do

gtk-vnc

to do

hal

to do

hicolor-icon-theme

to do

icon-naming-utils

to do

intltool

to do

iso-codes

to do

libcanberra

to do

libcolorblind

to do

libcroco

to do

libgda

AM_SILENT_RULES

libgdata

AM_SILENT_RULES

libggz, ggz-client-libs

to do

libgpg-error

to do

libgcrypt

to do

libical

to do

libmapi

to do

libmusicbrainz

to do

libnotify

to do

liboil

to do

libproxy

to do

libtasn1

to do

libtelepathy

to do

libxklavier

to do

libxml2

to do

libxslt

to do

Mono.Addins

to do

mozilla (firefox)

to do

ndesk-dbus

to do

ndesk-dbus-glib

to do

opal

to do

pkg-config

to do

PolicyKit

to do

PolicyKit-gnome

to do

pulseaudio

AM_SILENT_RULES

poppler

to do

pycairo

to do

ptlib

to do

Python

to do

rarian

to do

shared-mime-info

to do

sqlite

to do

startup-notification

to do

swfdec

to do

system-tools-backends

to do

telepathy-glib

AM_SILENT_RULES

telepathy-mission-control

to do

unique

AM_SILENT_RULES (Shave as fallback)

webkit

AM_SILENT_RULES

Other

abiword

shave

anjal

AM_SILENT_RULES

atomix

AM_SILENT_RULES

balsa

AM_SILENT_RULES

banshee

to do

banter

to do

beagle

to do

contact-lookup-applet

to do

dia

to do

eggcups

to do

f-spot

to do

giggle

AM_SILENT_RULES

gimp

AM_SILENT_RULES

gitg

AM_SILENT_RULES

gnome-blog

to do

gnome-bluetooth

AM_SILENT_RULES

gnome-cups-manager

to do

gnome-main-menu

to do

gnome-mud

to do

GParted

to do

GNOME Phone Manager

AM_SILENT_RULES

Gnumeric

AM_SILENT_RULES

gossip

to do

gtetrinet

to do

gthumb

AM_SILENT_RULES

gtranslator

AM_SILENT_RULES

libbtctl

to do

libchamplain

AM_SILENT_RULES

libgnomekbd

to do

libgoffice

AM_SILENT_RULES

libgsf

AM_SILENT_RULES

liferea

AM_SILENT_RULES

modest

AM_SILENT_RULES

mutter

AM_SILENT_RULES

nautilus-sendto

AM_SILENT_RULES

nautilus-vcs

to do

nemiver

AM_SILENT_RULES

NetworkManager

AM_SILENT_RULES

OnTV

AM_SILENT_RULES

Planner

AM_SILENT_RULES

rhythmbox

AM_SILENT_RULES

tinymail

AM_SILENT_RULES

xchat-gnome

AM_SILENT_RULES

Initiatives/GnomeGoals/NicerBuilds (last edited 2017-08-28 18:10:28 by JavierJardon)