From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on sa.int.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAYES_00, RCVD_IN_BL_SPAMCOP_NET, RCVD_IN_SORBS_WEB, SPF_PASS autolearn=no version=3.2.5 X-Authenticated: #3271302 X-Provags-ID: V01U2FsdGVkX1/QiA0QwULQoNFQRl10jY9HgEvwt7HZo0dmRbMuLi MfD6C5LYRJ04cm To: ALT Linux Sisyphus discussions References: <4A59D212.8040809@altlinux.ru> <4A59F895.10003@altlinux.ru> From: Aleksey Cheusov Date: Sun, 12 Jul 2009 18:15:15 +0300 In-Reply-To: <4A59F895.10003@altlinux.ru> (Alexey Gladkov's message of "Sun, 12 Jul 2009 18:52:05 +0400") Message-ID: User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.3 (berkeley-unix) MIME-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Transfer-Encoding: 8bit X-Y-GMX-Trusted: 0 X-FuHaFi: 0.54 Subject: Re: [sisyphus] mk-configure -- lightweight replacement for GNU autotools X-BeenThere: sisyphus@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Sisyphus discussions List-Id: ALT Linux Sisyphus discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jul 2009 15:18:01 -0000 Archived-At: List-Archive: List-Post: >>> Вопрос: зачем ? >> Об этом достаточно подробно написано по ссылкам. > Читал. Многое спорно, но спорить не буду. Все на свете субъективно. Критика autobloat естественно тоже. >> Гораздо более простую и легкую в использовании систему. > Run bmake for configuring and building your project and pass to it > building parameters, e.g. > env CC=pcc CFLAGS='-O0 -g' PREFIX=/home/you/software-dir \ > bmake all install > Перспектива указания всех опций руками через окружение представляется > мне сомнительным удовольствием. Разверни "всех опций руками". Каким конкретно опций? > Переменные окружения это конечно хорошо, но считать это альтернативой > механизму указания опций сборки, мне кажется, нельзя. Как раз наоборот. bmake PREFIX=/usr/pkg MANDIR=/some/where/man по сути своей ничем не отличется от ./configure --prefix=/usr/pkg --mandir=/some/where/man Не вижу необходимости плодить сущности без необходимости. Опции не нужны. На самом деле хватает указания значений переменных make-а. Опции же типа ./configure --lalala-includedir=yyy --lalala-libdir=yyy я считаю, эм... скажем так, весьма сомнительным дизайнерским решением. > Я не имею ввиду опции компилятора, я имею ввиду опциональность > поддержки библиотек и фичей проекта. Опциальность внешних библиотек и фич проекта делает также через указания значений переменных make-а. bmake USE_EXTERNAL_LIBX=1 USE_LOCALLIBY=1 Не вижу никаких принципиальных отличий от опций ./configure. Построение же приложения с или без каких-то библиотек в зависимости от их наличия -- натуральное зло, об этом знает каждый пакетировщик. > You need not remember about configure script, their options and many > other things. > В случае configure, присутствует уровень абстракции ключей, > определяющих ту или иную особенность сборки, от конечных -DFOO=1 и -lbar. На мой взгляд этот уровень не нужен, как не нужен сам ./configure. > Как в mk-configure можно описать ситуацию, когда проект в зависимости > от пользовательского параметра собирается либо с внешней библиотекой, > либо с внутренней версией этой библиотеки ? Пример1 Makefile: ... .if USE_FEATURE_X CFLAGS+= -DUSE_FEATURE_X LDFLAGS+= -lX .endif ... Полный пример Makefile (смотри строки, помеченные `!'): PROG= hello_world SRCS= main.c MAN= hello_world.1 INFILES= hello_world.1 INSCRIPTS= hello_world2 INTEXTS_SED+= -e 's,@HELLO_VERSION@,${VERSION},' SCRIPTS= ${INSCRIPTS} ! .if USE_LIBHELLO1 ! .include "../libhello1/linkme.mk" ! DPLIBS+= -lhello1 ! CFLAGS+= -DUSE_LIBHELLO1 ! .endif .include "../libhello2/linkme.mk" DPLIBS+= -lhello2 .include "../Makefile.version" .include .include -- Best regards, Aleksey Cheusov.