[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: