GNUstep
Материал из ALT Linux Wiki
Real (обсуждение | вклад) (libgnustep-objc2 vs. gcc-objc) |
|||
(10 промежуточных версий не показаны.) | |||
Строка 1: | Строка 1: | ||
Несколько шаблонов, которые могут пригодиться при сборке софта под GNUstep. | Несколько шаблонов, которые могут пригодиться при сборке софта под GNUstep. | ||
- | + | ---- | |
- | + | ||
- | + | ||
- | + | ||
- | + | В начале спека необходимо вставить: | |
- | + | %set_verify_elf_method unresolved=strict | |
- | + | Без этой строчки недолинковки могут остаться вне внимания, а недолинковок быть на должно. | |
- | + | ---- | |
- | + | ||
- | + | ||
+ | Нужно заметить, что пакеты GNUstep должны собираться с Objective-C не от gcc, а от GNUstep. Сам компилятор используется от clang. Таким образом, в BuildPreReq должны попасть как минимум вот такие пакеты: | ||
+ | clang-devel | ||
+ | libgnustep-objc2-devel | ||
+ | gnustep-make-devel | ||
+ | /proc | ||
- | + | ---- | |
Конфигуратору (configure) или сборочному файлу (GNUmakefile) может потребоваться переменная | Конфигуратору (configure) или сборочному файлу (GNUmakefile) может потребоваться переменная | ||
GNUSTEP_MAKEFILES=%_datadir/GNUstep/Makefiles . | GNUSTEP_MAKEFILES=%_datadir/GNUstep/Makefiles . | ||
+ | |||
+ | Или нужно перед сборкой и установкой выполнить команду, что предпочтительней: | ||
+ | |||
+ | . %_datadir/GNUstep/Makefiles/GNUstep.sh | ||
+ | |||
+ | ---- | ||
Если проект содержит файл configure.(ac|in), необходимо использовать %autoreconf . | Если проект содержит файл configure.(ac|in), необходимо использовать %autoreconf . | ||
+ | |||
+ | ---- | ||
Минимальный шаблон вызова конфигуратора: | Минимальный шаблон вызова конфигуратора: | ||
Строка 28: | Строка 36: | ||
--libexecdir=%_libdir \ | --libexecdir=%_libdir \ | ||
--with-installation-domain=SYSTEM | --with-installation-domain=SYSTEM | ||
+ | |||
+ | ---- | ||
Минимальный шаблон запуска сборки: | Минимальный шаблон запуска сборки: | ||
Строка 36: | Строка 46: | ||
strip=no \ | strip=no \ | ||
shared=yes | shared=yes | ||
+ | |||
+ | ---- | ||
Если необходимо добавить какие-либо специфические флаги компилятора, используется AUXILIARY_CPPFLAGS как параметр для %make_build . | Если необходимо добавить какие-либо специфические флаги компилятора, используется AUXILIARY_CPPFLAGS как параметр для %make_build . | ||
- | Если необходимо добавить какие-либо библиотеки для линковки, используется CONFIG_SYSTEM_LIBS как параметр для %make_build . | + | Предопределённые флаги, которые указывать не надо: |
+ | %optflags -fobjc-runtime=gnustep-1.7 -fobjc-nonfragile-abi -DGNUSTEP -DGNU_RUNTIME | ||
+ | |||
+ | ---- | ||
+ | |||
+ | Если необходимо добавить какие-либо библиотеки для линковки, используется CONFIG_SYSTEM_LIBS как параметр для %make_build . Этот способ не рекомендуется, если есть возможность в GNUmakefile указать флаг ADDITIONAL_LDFLAGS с нужными библиотеками. | ||
Например, нужно добавить оптимизицию и долинковать собираемый модуль математической библиотекой, вызов может быть таким: | Например, нужно добавить оптимизицию и долинковать собираемый модуль математической библиотекой, вызов может быть таким: | ||
Строка 48: | Строка 65: | ||
strip=no \ | strip=no \ | ||
shared=yes \ | shared=yes \ | ||
- | AUXILIARY_CPPFLAGS='- | + | AUXILIARY_CPPFLAGS='-O3' \ |
CONFIG_SYSTEM_LIBS='-lm' | CONFIG_SYSTEM_LIBS='-lm' | ||
+ | |||
+ | ---- | ||
+ | |||
+ | Бывает, что софт не хочет собираться. Как правило, это старые проекты. Для решения проблемы нужно дополнительно указать параметры для %make_build: | ||
+ | |||
+ | OBJCFLAGS='%optflags -DGNUSTEP' \ | ||
+ | USE_NONFRAGILE_ABI=no \ | ||
+ | |||
+ | ---- | ||
После сборки стандартным вариантом установки является: | После сборки стандартным вариантом установки является: | ||
Строка 55: | Строка 81: | ||
%makeinstall_std GNUSTEP_INSTALLATION_DOMAIN=SYSTEM | %makeinstall_std GNUSTEP_INSTALLATION_DOMAIN=SYSTEM | ||
+ | ---- | ||
Отдельно надо рассмотреть документацию. Необходимым (и зачастую достаточным) является такой код: | Отдельно надо рассмотреть документацию. Необходимым (и зачастую достаточным) является такой код: | ||
%make_build -C Documentation \ | %make_build -C Documentation \ | ||
- | messages=yes | + | messages=yes |
- | + | ||
Установка будет такой: | Установка будет такой: | ||
%makeinstall_std -C Documentation \ | %makeinstall_std -C Documentation \ | ||
- | GNUSTEP_INSTALLATION_DOMAIN=SYSTEM | + | GNUSTEP_INSTALLATION_DOMAIN=SYSTEM |
- | + | ||
После всех установок основные файлы GNUstep помещаются внутри %_libdir/GNUstep . Другие места, где могут появиться новые файлы: %_bindir , %_includedir , %_libdir (как правило, это разделяемые библиотеки). | После всех установок основные файлы GNUstep помещаются внутри %_libdir/GNUstep . Другие места, где могут появиться новые файлы: %_bindir , %_includedir , %_libdir (как правило, это разделяемые библиотеки). | ||
Строка 72: | Строка 97: | ||
Файлы документации устанавливаются в %_docdir/GNUstep . | Файлы документации устанавливаются в %_docdir/GNUstep . | ||
+ | ==См. также== | ||
+ | *[[GNUstep/Applications|Приложения GNUstep]] | ||
+ | |||
+ | [[Категория:GNUstep]] | ||
[[Категория:Packaging]] | [[Категория:Packaging]] |
Текущая версия на 15:33, 18 декабря 2015
Несколько шаблонов, которые могут пригодиться при сборке софта под GNUstep.
В начале спека необходимо вставить:
%set_verify_elf_method unresolved=strict
Без этой строчки недолинковки могут остаться вне внимания, а недолинковок быть на должно.
Нужно заметить, что пакеты GNUstep должны собираться с Objective-C не от gcc, а от GNUstep. Сам компилятор используется от clang. Таким образом, в BuildPreReq должны попасть как минимум вот такие пакеты:
clang-devel libgnustep-objc2-devel gnustep-make-devel /proc
Конфигуратору (configure) или сборочному файлу (GNUmakefile) может потребоваться переменная GNUSTEP_MAKEFILES=%_datadir/GNUstep/Makefiles .
Или нужно перед сборкой и установкой выполнить команду, что предпочтительней:
. %_datadir/GNUstep/Makefiles/GNUstep.sh
Если проект содержит файл 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 .
Предопределённые флаги, которые указывать не надо: %optflags -fobjc-runtime=gnustep-1.7 -fobjc-nonfragile-abi -DGNUSTEP -DGNU_RUNTIME
Если необходимо добавить какие-либо библиотеки для линковки, используется CONFIG_SYSTEM_LIBS как параметр для %make_build . Этот способ не рекомендуется, если есть возможность в GNUmakefile указать флаг ADDITIONAL_LDFLAGS с нужными библиотеками.
Например, нужно добавить оптимизицию и долинковать собираемый модуль математической библиотекой, вызов может быть таким:
%make_build \ messages=yes \ debug=yes \ strip=no \ shared=yes \ AUXILIARY_CPPFLAGS='-O3' \ CONFIG_SYSTEM_LIBS='-lm'
Бывает, что софт не хочет собираться. Как правило, это старые проекты. Для решения проблемы нужно дополнительно указать параметры для %make_build:
OBJCFLAGS='%optflags -DGNUSTEP' \ USE_NONFRAGILE_ABI=no \
После сборки стандартным вариантом установки является:
%makeinstall_std GNUSTEP_INSTALLATION_DOMAIN=SYSTEM
Отдельно надо рассмотреть документацию. Необходимым (и зачастую достаточным) является такой код:
%make_build -C Documentation \ messages=yes
Установка будет такой:
%makeinstall_std -C Documentation \ GNUSTEP_INSTALLATION_DOMAIN=SYSTEM
После всех установок основные файлы GNUstep помещаются внутри %_libdir/GNUstep . Другие места, где могут появиться новые файлы: %_bindir , %_includedir , %_libdir (как правило, это разделяемые библиотеки).
Файлы документации устанавливаются в %_docdir/GNUstep .