GNUstep: различия между версиями
Real (обсуждение | вклад) (BuildPreReq: /proc) |
Real (обсуждение | вклад) (libgnustep-objc2 vs. gcc-objc) |
||
Строка 1: | Строка 1: | ||
Несколько шаблонов, которые могут пригодиться при сборке софта под GNUstep. | Несколько шаблонов, которые могут пригодиться при сборке софта под GNUstep. | ||
Нужно заметить, что пакеты GNUstep должны собираться с Objective-C не от gcc, а от GNUstep. Сам компилятор, впрочем, используется от gcc. Таким образом, в BuildPreReq должны попасть как минимум вот такие пакеты: | |||
gcc-objc | |||
libgnustep-objc2-devel | |||
gnustep-make-devel | |||
Учитывая, что заголовочные файлы Objective-C от gcc располагаются в подкатологе objc, во избежание конфликтов заголовочные файлы от GNUstep помещаются в подкатологе objc2. Апстримы об этом не знают (ибо это ALT-специфика), поэтому там обычно встречаются конструкции вида | |||
#include <objc/objc.h> | |||
Чтобы пакеты GNUstep собирались с Objective-C от GNUstep, в секции %pre спек-файлов после %setup рекомендуется использовать следующий код: | |||
for i in $(find ./ -type f); do | |||
sed -i 's|objc/|objc2/|g' $i | |||
done | |||
Для каждого пакета в спеке в секции BuildPreReq должен быть указан /proc . | Для каждого пакета в спеке в секции BuildPreReq должен быть указан /proc . |
Версия от 05:40, 13 декабря 2012
Несколько шаблонов, которые могут пригодиться при сборке софта под GNUstep.
Нужно заметить, что пакеты GNUstep должны собираться с Objective-C не от gcc, а от GNUstep. Сам компилятор, впрочем, используется от gcc. Таким образом, в BuildPreReq должны попасть как минимум вот такие пакеты:
gcc-objc libgnustep-objc2-devel gnustep-make-devel
Учитывая, что заголовочные файлы Objective-C от gcc располагаются в подкатологе objc, во избежание конфликтов заголовочные файлы от GNUstep помещаются в подкатологе objc2. Апстримы об этом не знают (ибо это ALT-специфика), поэтому там обычно встречаются конструкции вида
#include <objc/objc.h>
Чтобы пакеты GNUstep собирались с Objective-C от GNUstep, в секции %pre спек-файлов после %setup рекомендуется использовать следующий код:
for i in $(find ./ -type f); do sed -i 's|objc/|objc2/|g' $i done
Для каждого пакета в спеке в секции BuildPreReq должен быть указан /proc .
Конфигуратору (configure) или сборочному файлу (GNUmakefile) может потребоваться переменная GNUSTEP_MAKEFILES=%_datadir/GNUstep/Makefiles .
Если проект содержит файл configure.(ac|in), необходимо использовать %autoreconf .
Минимальный шаблон вызова конфигуратора:
%configure \ --libexecdir=%_libdir \ --with-installation-domain=SYSTEM
Минимальный шаблон запуска сборки:
%make_build \ messages=yes \ debug=yes \ strip=no \ shared=yes
Если необходимо добавить какие-либо специфические флаги компилятора, используется AUXILIARY_CPPFLAGS как параметр для %make_build .
Если необходимо добавить какие-либо библиотеки для линковки, используется CONFIG_SYSTEM_LIBS как параметр для %make_build .
Например, нужно добавить оптимизицию и долинковать собираемый модуль математической библиотекой, вызов может быть таким:
%make_build \ messages=yes \ debug=yes \ strip=no \ shared=yes \ AUXILIARY_CPPFLAGS='-O2' \ CONFIG_SYSTEM_LIBS='-lm'
После сборки стандартным вариантом установки является:
%makeinstall_std GNUSTEP_INSTALLATION_DOMAIN=SYSTEM
Отдельно надо рассмотреть документацию. Необходимым (и зачастую достаточным) является такой код:
%make_build -C Documentation \ messages=yes \ GNUSTEP_MAKEFILES=%_datadir/GNUstep/Makefiles
Установка будет такой:
%makeinstall_std -C Documentation \ GNUSTEP_INSTALLATION_DOMAIN=SYSTEM \ GNUSTEP_MAKEFILES=%_datadir/GNUstep/Makefiles
После всех установок основные файлы GNUstep помещаются внутри %_libdir/GNUstep . Другие места, где могут появиться новые файлы: %_bindir , %_includedir , %_libdir (как правило, это разделяемые библиотеки).
Файлы документации устанавливаются в %_docdir/GNUstep .