La plus simple et la plus rapide à mettre en oeuvre consiste à rajouter la variable MAKE_JOBS_NUMBER dans /etc/make.conf, afin de profiter de la parallélisation de make sur les processeurs multi-coeurs pour la compilation des ports qui sont capable de le faire:

echo 'MAKE_JOBS_NUMBER=6' >> /etc/make.conf

Il est à noter que l'ajout de cette ligne n'est pas obligatoire pour profiter de cette fonctionnalité, puisque le niveau de parallélisation est défini par défaut au nombre de cœurs dont dispose votre micro-processeur.

Si vous êtes téméraire, vous pouvez forcer l'utilisation de la parallélisation pour tous les ports, indépendament du fait qu'il l'a supporte :

echo 'DISABLE_MAKE_JOBS=yes' >> /etc/make.conf

Il est également possible de la désactiver, même si cela n'a strictement aucun intêret :

echo 'DISABLE_MAKE_JOBS=yes' >> /etc/make.conf

La mise en œuvre de l'utilitaire ccache est une autre méthode, parfaitement compatible avec la première, pour accélérer la compilation.

Le principe de cet utilitaire est simple puisqu'il met tout simplement en cache le résultat de chaque compilation pour le réutiliser lors des prochaines compilations, s'il y a lieu.

Son installation est simple :

cd /usr/ports/deve/ccache && make install clean

Il suffit ensuite de rajouter les directives adéquates dans le fichier /etc/make.conf à l'aide de votre éditeur favori :

.if !defined(NO_CACHE)
CC= /usr/local/libexec/ccache/world-cc
CCX= /usr/local/libexec/ccache/world-c++
.endif

.if ${.CURDIR:M*/ports/devel/ccache}
NO_CCACHE= yes
.endif

Il faut également ajouter les lignes suivantes dans votre fichier ~/.bashrc, si vous utilsez bash et sudo :

export PATH=/usr/local/libexec/ccache:$PATH
export CCACHE_PATH=/usr/bin:/usr/local/bin
export CCACHE_DIR=/var/tmp/ccache
export CCACHE_LOGFILE=/var/log/ccache.log

if [[ -x /usr/local/bin/ccache ]];
then
/usr/local/bin/ccache -M 4GB > /dev/null
fi

Une fois votre fichier ~/.bashrc rechargé, vous disposerez d'un cache de compilation de 4GB dans /var/tmp/ccache.

Vous pourrez consulter l'état de votre cache avec la commande suivante :

ccache -s

Vous pourrez également connaître l'activité de votre cache et notamment son contenu avec la commande suivante :

tail -f /var/log/ccache.log

Enfin, vous pouvez utilisez le script buildflags des bsdadminscripts pour rendre vos compilations plus conviviales en définissant un certain nombre de directives de compilation une fois pour toute.

Encore une fois, l'installation se fait de la façon la plus traditionnelle qui soit :

cd /usr/ports/sysutils/bsdadminscripts && make install clean

Une fois l'installation terminée, il faut rajouter les lignes suivantes dans votre fichier /etc/make.conf :

BUILDFLAGS=/usr/local/share/bsdadminscripts/buildflags.mk
.if exists(${BUILDFLAGS})
.include "${BUILDFLAGS}"
.endif

Il ne vous reste plus qu'à renommer le fichier /usr/local/etc/buildflags.conf.sample en /usr/local/etc/buildflags.conf et à en modifier le contenu en fonction de vos besoins, comme par exemple définir la directive FORCE_MAKE_JOBS en fonction du ports que vous voulez compiler, ou bien pour définir des arguments de compilation une bonne fois pour toute.

Si par hasard vous avez des difficultés à comprendre le format du fichier, la commande man buildflags.conf est votre amie.

Enfin, pour encore accélérer la compilation, il est possible d'utiliser distcc mais sa mise en oeuvre fera l'objet d'un autre billet.