Собираем Zandronum 2.0 самостоятельно под Mac OS X

В этой статье я расскажу как скомпилировать Zandronum под Apple Mac OS X с нуля. Для написания статьи будут использоваться виртуальные машины с чистыми, но настроенными MacOS 10.6.8 и 10.7.5 (retail версия с последними обновлениями) с 32-битным ядром и 4 Гб оперативной памяти и 2 процессорными ядрами (с этой задачей идеально справляется VMware Workstation 10 с патчем-анлокером), а также машина PowerMac G5 с MacOS 10.5.8 и 8 Гб памяти. Фрэймворк разработки для MacOS 10.6 позволяет создавать программы, способные выполняться на 3 разных архитектурах процессоров: ppc, i386 и x86_64. Фрэймворк для MacOS 10.5 также поддерживает ppc64. Кроме того, создаваемые программы смогут выполняться на любой версии MacOS с 10.4 по 10.8 включительно. Фрэймворк для MacOS 10.7 компилирует под i386 и x86_64, полученные программы могут выполняться на MacOS с 10.6 по 10.8. У этих версий MacOS есть два ядра - i386 и x86_64; чтобы узнать какое в данный момент у вас загружено - выполните команду 'arch' в терминале (создайте ссылку на "Терминал" в Dock - мы будем часто им пользоваться; приложение находится по адресу /Applications/Utilities/Terminal.app).

Разделим процесс на 4 этапа:
1) Скачивание необходимых сред разработки, утилит и библиотек
2) Конфигурирование среды сборки, установка библиотек
3) Получение исходного кода
4) Компиляция исходного кода

При повторной сборке переходите сразу к п. 3.

1. Файлы для скачивания

1. Для MacOS 10.5: Apple Xcode 3.1.4 - Авторизуйтесь своим Apple ID, введите в поиске "Xcode 3.1.4" и скачайте .dmg образ (размер 993 Мб).

    Для MacOS 10.6: Apple Xcode 3.2.6 - версия 3.2.x является последней с поддержкой MacOS 10.4 таргетирования и ppc архитектуры. Авторизуйтесь своим Apple ID, введите в поиске "Xcode 3.2.6" и скачайте .dmg образ (размер 4.14 Гб).

    Для MacOS 10.7: Apple Xcode 4.2.1 (размер 1.68 Гб) - более новые версии не поддерживаются
2. FMOD Ex Programmers API 4.26.36 - эта проприетарная библиотека ограничивает выбор платформ, под которые можно скомпилировать программу. Со списком поддерживаемых разными версиями платформ можно ознакомиться здесь. Текущая версия Zandronum поддерживает только FMOD 4.24 поэтому мы будем собирать только под i386 и ppc.
3. CMake 2.8.10.2 - программа для конфигурации сборки исходного кода под вашу систему. Более новые версии не поддерживаются
4. Для MacOS 10.5 и 10.6: SDL 1.2.15 i386/ppc/x86_64 - мультимедийная библиотека.

    Для MacOS 10.7: SDL 1.2.15 i386/x86_64

5. Только для MacOS 10.5: Mercurial 2.0.2
6. Zandronum PPC patch - патч исправляющий компиляцию под ppc архитектуру.

7. GLEW 1.10.0 - OpenGL библиотека


2. Установка программ
1. Получение root доступа. Задайте пароль для своего аккаунта (Системные настройки - Учётные записи - Сменить пароль). Выполните команду 'sudo su' в терминале и введите свой пароль - вы окажетесь в root шелле. Выполните команду 'passwd root' и задайте пароль для суперпользователя. Теперь вы сможете получать root доступ командой su, при желании теперь можно снять пароль со своего аккаунта. Чтобы заходить в root шелл без пароля - выполните от имени root команду 'EDITOR=/Applications/TextEdit.app/Contents/MacOS/TextEdit visudo', добавьте в конец файла строку '%staff ALL=(ALL:ALL) NOPASSWD:ALL', сохраните его и закройте редактор. После этого можно заходить в root шелл без пароля командой sudo su
2. Установите утилиты разработки Xcode в каталог по умолчанию.
Для MacOS 10.5 и 10.6: если вы не собираетесь разрабатывать приложения для iOS 4.x - не соглашайтесь с соответствующей лицензией в установщике. Выберите полный набор компонентов включая Mac OS X 10.4 SDK.
Для MacOS 10.7: после завершения работы инсталлятора в программах появится ярлык Install Xcode - запустите его.
3. Для MacOS 10.5: Установите Mercurial со стандартными настройками.
    Для MacOS 10.6 и 10.7: Установите программу для загрузки исходных кодов Zandronum. Выполните команду из root шелла:
easy_install mercurial
4. Установите CMake, для утилит командной строки выберите путь /usr/local/bin
5. Установите FMOD Ex.
6. Подключите образ SDL. Скопируйте папку SDL.Framework в /Library/Frameworks
7. Установите библиотеку GLEW, перейдя в каталог со скаченным архивом:
tar xzf glew-1.10.0.tgz && cd glew-1.10.0
make CC=/usr/bin/gcc-4.0 CFLAGS.EXTRA="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4 -arch i386 -arch ppc" LDFLAGS.EXTRA="-arch i386 -arch ppc" GLEW_DEST=/usr/local STRIP=
sudo make install GLEW_DEST=/usr/local

3. Получение исходного кода
1) Чтобы скачать последний снапшот исходного кода, откройте терминал и перейдите в нужный каталог. Выполните команду:
hg clone https://bitbucket.org/Torr_Samaho/zandronum
Исходники скачаются в подкаталог 'zandronum'.
2) При желании вы можете скачать стабильную версию. Перейдите на закладку "Tags", найдите нужную версию и скачайте её в виде bz2 архива. Распакуйте архив в нужный каталог.
3) Чтобы обновить имеющуюся копию исходников, выполните команду повторно:
hg clone https://bitbucket.org/Torr_Samaho/zandronum

4. Компиляция исходного кода
1) Откройте терминал и перейдите в каталог со скаченными исходниками. В текущей версии Zandronum есть баг, не позволяющий скомпилировать универсальный исполняемый файл. Поэтому мы его создадим вручную.
2) Скомпилируйте порт под i386 архитектуру. Для этого выполните команды:
    MacOS 10.5 и 10.6
mkdir release_i386 && cd release_i386

cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/usr/bin/gcc-4.0 -DCMAKE_CXX_COMPILER=/usr/bin/g++-4.0 -DCMAKE_OSX_SYSROOT=/Developer/SDKs/MacOSX10.4u.sdk -DCMAKE_OSX_DEPLOYMENT_TARGET=10.4 -DCMAKE_OSX_ARCHITECTURES=i386 -DFMOD_LIBRARY="/Developer/FMOD Programmers API Mac/api/lib/libfmodex.dylib" ..

make

cd ..

    MacOS 10.7
mkdir release && cd release

cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_SYSROOT=/Developer/SDKs/MacOSX10.6.sdk -DCMAKE_OSX_DEPLOYMENT_TARGET=10.6 -DCMAKE_OSX_ARCHITECTURES=i386 -DFMOD_LIBRARY="/Developer/FMOD Programmers API Mac/api/lib/libfmodex.dylib" ..

make

cd ..

3)
Только MacOS 10.5 и 10.6: Скомпилируйте порт под ppc архитектуру. Для этого выполните команды:
cp -vf ~/Downloads/zandronum-v1-ppc.patch .

patch -p0 < zandronum-v1-ppc.patch

mkdir release_ppc && cd release_ppc

cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/usr/bin/gcc-4.0 -DCMAKE_CXX_COMPILER=/usr/bin/g++-4.0 -DCMAKE_OSX_SYSROOT=/Developer/SDKs/MacOSX10.4u.sdk -DCMAKE_OSX_DEPLOYMENT_TARGET=10.4 -DCMAKE_OSX_ARCHITECTURES="ppc750;ppc7400;ppc7450;ppc970" -DFMOD_LIBRARY="/Developer/FMOD Programmers API Mac/api/lib/libfmodex.dylib" ..

make

cd ..

4) Только MacOS 10.5 и 10.6: Создайте универсальную сборку командами:
mkdir release && cd release

lipo -create -output zandronum ../release_i386/zandronum ../release_ppc/zandronum

5) Скопируйте необходимую динамическую библиотеку:
    MacOS 10.5 и 10.6
cp -f ../release_i386/*.pk3 /Developer/FMOD\ Programmers\ API\ Mac/api/lib/libfmodex.dylib .
    MacOS 10.7
cp -f /Developer/FMOD\ Programmers\ API\ Mac/api/lib/libfmodex.dylib .

5) В текущей папке будут все необходимые для игры файлы:

  • zandronum
  • zandronum.pk3
  • skulltag_actors.pk3
  • brightmaps.pk3
  • libfmodex.dylib
  • Выполните ./zandronum чтобы проверить работоспособность сборки.