Re: Альтернативы autotools?
>> Количество систем? Мне не известна система, где не работает nbmake.
> Интересует не система, на которой можно собрать и поставит nbmake, а
> потом долго и тщательно писать аналог bsd.prog.mk, а система у которой в
> поставке идет соответствующий make и библиотека mk-файлов. Таких систем
> примерно три - NetBSD, FreeBSD и OpenBSD.
Нет. Все уже сделано. И этих систем гораздо больше.
AIX
Darwin
HPUX
Interix
IRIX
Linux
NetBSD
OpenBSD
OSF1
SunOS
UnixWare
Для начала, думаю, достаточно. Нужный тебе mingw (к примеру), ты в
состоянии дописать - это банальная инициализация переменных.
А дальше - пульнуть в апстрим.
> Если в систему из коробки не положили соответствующих mk-файлов,
> то, увы, этот подход бесполезен.
Положили.
> Собственно, ведь подход этих двух систем в корне противоположенен
> подходу autotools (чем и хорош) - не гадать поддерживает ли система ту
> или иную возможность, а честно посмотреть в соответствующем справочнике,
> предоставленом дистрибьютором системы.
Всё правильно. Я говорю об этом же подходе.
Но конкретно с imake - тонны проблем.
> А ежели дистрибьютор системы справочника не положил, что я, как автор
> прикладного софта должен делать?
А если GNU make или GNU cc не портирован на систему XXX? ;-)
Расслабиться и дышать глубже. Пусть работу делают те, кто заинтересован
в вашем продукте на системе XXX.
>> > предусмотреть все альтернативы, которые могут понадобиться при сборке
>> > конкретного приложения.
>> Что конкретно имеется ввиду?
> А все подряд. Вот у меня в программе, к примеру, есть необходимость
> установить TLS-соединение. Я могу это сделать с помощью OpenSSL, с
> помощью GNU TLS и с помощью мозилловской libnss. Мне, автору приложения
> ,вообще говоря пофигу. Чем юзеру удобнее, тем и установлю. Опции
> компиляции у меня подо все три предусмотрены.
Вообще говоря, тебе не нужно заботиться об опциях компилиции в этом
случае. Пусть это делает тот, кто собирает твой софт у себя на системе
- в наше время пакетировщик. В протиыном случае в случае, если ты ошибешься,
пакерировщик (условно я) будет отключать именно твой сверх интеллект ;-)
Пример (dlopen в libc, напрмиер в *BSD)
env CPPFLAGS=-I/path/to/ssl/include \
LDFLAGS=-L/path/to/ssl/lib \
LDADD=-lcompat \
bmake mytool SSL_LIB=-lanother_ssl DL_LIB= REGEXP_LIB=-luxre
Полный makefile (умолчания, скажем, для Линукса)
SSL_LIB= -lopenssl
DL_LIB= -ldl
M_LIB= -lm
REGEXP_LIB= # regexp from libc
LDADD+= ${SSL_LIB} ${DL_LIB} ${REGEXP_LIB} ${M_LIB}
PROG= mytool
SRCS= main.c addons.c wrappers.c
.include <bsd.prog.mk>
Всё. Больше автору mytool ничего делать не нужно.
Для пакетировщика - ну просто идеальный Makefile.
> Как я узнаю, какая именно установлена и если устанвлены несколько -
> с какой будет юзеру удобнее?
Ох. Это именно тот сверхинтеллект, который пакетировщики
матерясь отключают.
> То же самое касается XML-парсеров, и многих-многих других вещей.
Угу.
--
Best regards, Aleksey Cheusov.
Reply to: