Dev → [DREAMDEV] Сборка тулчейна
Статьи в разделе Dev будут посвящены программированию под консоль Sega Dreamcast. И в первой вступительной главе я опишу некоторые используемые инструменты, а также расскажу как подготовить и собрать набор инструментов разработчика (тулчейн)
Статьи будут расчитаны на подготовленного пользователя, который чувствует себя достаточно уверенно при программировании на C/C++, умеет пользоваться командной строкой linux и не боится Makefile'ов :). Все описанные действия я буду проводить в MacOS 10.10, но в теории все также должно работать в linux и в windows под cygwin.
На момент, когда дримка еще была «жива» и под нее создавались игры, разработчикам было доступно два инструмента для написания игр: Katana SDK и Windows CE SDK. Первый инструмент был официальным инструментом от Sega и был более мощным и эффективным, когда второй был, скорее, маркетинговым ходом, говорящим, что Dreamcast поддерживает Windows CE, так что вы, разработчики, можете с легкостью портировать свои игры! Было много споров на тему качества игр, сделанных на Windows CE, но все таки на нем выходили разные: и хорошие и плохие. Для разработки оба этих наборов SDK требовали рабочую станцию
На текущий момент эти два набора являются морально устаревшими, а наличие рабочей станции не является обязательным условием, т.к. запуск и отладку теперь можно производить в эмуляторах или даже на реальной консоли. Наиболее популярным «пакетом» разработчика сейчас является Kallisti OS. Она представляет из себя нечто вроде мини операционной системы, с необходимым набором АПИ для работы с железом. На основе нее даже было создано коммерческие игры
Итак, нам понадобится стянуть себе на систему Kallisti OS (KOS) и дополнительные библиотеки для нее. Рекомендую, для удобства, разместить их сразу в каталог /usr/local/dc и также создадим каталог для компиляторов в /opt и назначим права RW для этого каталога.
cd /opt/
sudo mkdir toolchains
chmod -R 777 toolchains
mkdir dc
cd /usr/local/ && mkdir dc
cd dc
Основная ветка KOS хостится на SourceForge, идем туда и тянем себе kos и kos-ports:
git clone git://git.code.sf.net/p/cadcdev/kallistios kos
git clone git://git.code.sf.net/p/cadcdev/kos-ports kos-ports
теперь обновим сабмодули в kos-ports
cd kos-ports
git submodule update --init
Скрипт для сборки тулчейна лежит внутри kos в utils/dc-chain. На момент написания этой статьи — благодаря усилиям SWAT, и небольшим моим правкам в него — доступен скрипт, собирающий тулчейн с gcc-4.9.1, а также binutils-2.25 и newlib-2.2.0. Взять его можно с репозитория DreamShell. Скопируйте с заменой содержимое из /sdk/toolchain в /utils/dc-chain. Теперь все готово для запуска сборки gcc. Сначала скачаем необходимые пакеты
bash download.sh
Распакуем их
bash unpack.sh
и поставим на сборку (для ускорения процесса можно указать кол-во потоков сборки в параметр мейкфайла makejobs=-j4, где 4 кол-во ядер вашего процессора)
make all
Этот процесс достаточно продолжительный, на моем i5 2.9GHz и 8Gb оперативы сборка продолжалась около 30 минут
Имея рабочий тулчейн можно собрать какой-нибудь примерчик и запустить его в эмуле. Для примера соберем семпл из KOS, например тест OpenGL API, который лежит в examples/dreamcast/cpp/gltest.
Но прежде, нам понадобится разово собрать KOS и ее библиотеки. Для начала необходимо создать скрипт с необходимыми переменными окружениями. Если все предыдущие шаги были выполнены в точности как вышеописано (это касается расположения kos), то просто можно скопировать из /doc файл environ.sh.sample в корневой каталог, и переименовать его в environ.sh
cp /usr/local/dc/kos/doc/environ.sh.sample /usr/local/dc/kos/doc/environ.sh
Заходим в каталог c KOS и выполним експорт всех необходимых переменных окружения из этого скрипта, командой source (или .)
source environ.sh
Делать это прийдется каждую сессию, т.е. если вдруг терминал закрыли, то придется делать экспорт опять (или можно сразу прописать експорт этого файла в .bash_profile). Можем собрать KOS
make all
Далее соберем kos-ports
cd /usr/local/dc/kos-ports
make all
если вдруг на тулчейне с gcc-4.9.1 сборка libgl прервется ошибкой, то необходимо будет понизить в мейкфайле libgl уровень оптимизации с O3 до O2.
Теперь можно собрать пример:
cd /usr/local/dc/kos/examples/dreamcast/cpp/gltest
make all
и запустим в эмуляторе полученный бинарник
/Applications/lxdream.app/Contents/MacOS/lxdream gltest.elf
На этом все, в следующий раз я постараюсь рассказать как прикрутить тулчейн к Eclipse IDE и перестать программировать в блокноте и терминале :)
- +5
- developer
- 21 января 2015, 22:39
Комментарии (1)
rss свернуть / развернутьсвернуть ветку