Официальная страничка проекта: caca.zoy.org/wiki/toilet.
Страничка на GitHub: https://github.com/cacalabs/toilet.
git clone https://github.com/cacalabs/toilet.git
cd toilet
Здесь, в отличие от figlet, нет файла Makefile. Зато есть Makefile.am. Это файл для GNU Automake. am = AutoMake. Его нельзя использовать напрямую командой make. Он служит шаблоном, из которого автоматически генерируется обычный Makefile.
figlet – старый, простой проект. Содержит один ручной Makefile.
toilet – более "правильный" GNU-style проект. Использует autotools:
Здесь сборка происходит в несколько этапов.
bootstrap – это авторский скрипт проекта. Он запускает autoreconf -i. Иногда – libtoolize. Гарантирует, что сборка будет в том виде, как задумали разработчики. Поэтому если bootstrap есть – используем его.
./bootstrap
После этого у меня появилось 4 файла: aclocal.m4, config.h.in, configure, Makefile.in. Всё это генерация инфраструктуры сборки.
aclocal.m4:
Это «библиотека инструкций» для configure-скрипта.
config.h.in – Шаблон заголовочного файла. После ./configure из него будет создан config.h.
configure – главный конфигурационный скрипт. Проверяет: компилятор, библиотеки, заголовки, поддержку UTF-8, local и т.п. Создаёт Makefile, config.h. Это мост между системой и исходниками.
Makefile.in – Шаблон Makefile. После ./configure будет превращён в Makefile.
Создаём реальный Makefile:
./configure
Создались: Makefile, config.h, stamp-h1, config-status, config.log
#include "config.h"). Позволяет писать переносимый код../config.status../configure падает – смотрим сюда.Собираем бинарник:
make
Бинарник toilet появился в папке ./src. Его можно сразу запустить, но необходимо передать путь к шрифтам:
# Укажем путь к папке со шрифтами:
./src/toilet -d fonts Привет
# Или укажем путь к конкретному шрифту:
./src/toilet -f fonts/ascii9.tlf Привет
# шрифт ascii9.tlf выбирается по умолчанию.
Шрифты, которые поддерживают кириллицу:
Устанавливаем программу в систему:
sudo make install
Теперь система видит программу и мы можем запускать её вот так:
toilet Привет!
# Или с указанием шрифта:
toilet -f smmono9 Привет!
То есть, sudo make install делает следующее:
В figlet можно было легко понять, куда make install ставит файлы, просто прочитав Makefile. Но у нас Makefile сгенерирован с помощью autotools и вся информация в нём размазана и абстрагирована.
Чтобы понять, куда ставятся данные и что вообще устанавливается, можно запустить:
make install -n
# или:
make install --dry-run
# куда ставятся man-странички:
man -w toilet
# где бинарник:
which toilet
В autotools-проектах цель uninstall обычно генерируется автоматически, если в Makefile.am описана установка.
Проверить, есть ли цель "uninstall" можно так:
make -n uninstall
# или:
make uninstall -n
# флаг -n означает "ничего не далать – просто показать"
Можно посмотреть в Makefile, есть ли вообще uninstall:
grep uninstall Makefile
Удаляем toilet с помощью uninstall:
sudo make uninstall
И всё! Все файлики удалились. И бинарник, и шрифты, и man-страничка.
Важно! sudo make uninstall нужно запускать из каталога с исходниками – оттуда, откуда изначально происходила установка.
Повторим всё в одном блоке:
# Скачиваем исходники:
git clone https://github.com/cacalabs/toilet.git
cd toilet
# Собираем бинарник
./bootstrap
./configure
make
# Копируем программу в систему:
sudo make install
# удаляем программу из системы:
sudo make uninstall
make ищет файлы с именами: Makefile, makefile, GNUmakefile. А про Makefile.am она не знает.
aclocal – служебная программа из набора GNU Autotools (Autoconf / Automake). Создаёт файл aclocal.m4. Используется перед запуском autoconf или automake. aclocal собирает m4-макросы, которые нужны autoconf.