Kompilacja z MinGW

Contents

Wstęp

Ta strona zawiera instrukcje potrzebne do kompilacji Openttd w wersji 32 bitowej z użyciem MinGW.

Lista paczek

Ten tutorial został przetestowany z użyciem następujących paczek:

Instalacja MinGW i MSYS

  1. Ściągnij i zainstaluj mingw-get-inst (Link do downloadu można znaleźć w poprzedniej sekcji).
  2. Wybierz "Use pre-packaged repository catalogues".
  3. Przejrzyj warunki licencyjne i je zaakceptuj.
  4. Miej na uwadzę fakt, iż MinGW musi zostać zainstalowany w miejscu do którego ścieżka nie zawiera żadnych spacji. Ta metoda została przetestowana ze ścieżką instalacyjna C:\MinGW.
  5. Wybierz "C++ Compiler" (Kompilator C++) i "MSYS Basic System" (Podstawowy system MSYS) jako składniki do instalacji.
  6. Czekaj aż wszystkie paczki zostaną ściągnięte i instalacja się zakończy

Konfiguracja MSYS

Wejdź do folderu MSYS (Można go znaleźć pod <folder instalacji MinGW>\msys\1.0, C:\MinGW\msys\1.0 przy domyślnej ścieżce), otwórz etc\fstab za pomocą edytora tekstu (n.p. notatnik) i dodaj następującą linię na końcu pliku:
C:\MinGW\   /usr/local

Na Windows Vista i nowszych wersjach systemu będziesz potrzebować dodatkowych kroków aby MSYS w pełni działał, jeśli UAC jest włączony (Przy domyślnych ustawieniach zawsze jest włączony). Idż do folderu MSYS (C\MinGW\Msys\1.0), otwórz msys.bat za pomocą edytora tekstu i dodaj następująca linijkę po @echo off:

cd "C:\MinGW\msys\1.0"

Jeśli zainstalowałeś MSYS na innym dysku niż systemowy (domyślnie dysk C:) to dodaj jeszcze jedną linie:

C:

Po zapisaniu pliku kliknij prawym przyciskiem myszy na msys.bat i wybierz opcję "Uruchom jako administrator". Będziesz musiał to robić za każdym razem uruchamiając MSYS. Dzięki temu programy wymagające uprawnień administratorskich (takie jak install lub patch) będą działać poprawnie.

Sprawdzenie poprawności instalacji MSYS/MinGW

Jeśli dostaniesz błąd

gcc: command not found

Wejdź do folderu z instalacją MinGW a następnie do msys\1.0\postinstall i uruchom pi.bat.

Kompilacja i instalacja wymaganych paczek

W celu znalezienia dodatkowych informacji o bibliotekach sprawdź część 7.1) pliku Readme OpenTTD. Aby skompilować i zainstalować paczki najpierw musimy zainstalować następujące komendy: (Aby proces kompilacji działał poprawnie na Windowsie 7 należy upewnić się, iż włączony jest serwis "application experience" )

Możesz skopiować poniższe komendy do MinGW używać CTRL+INS zamiast CTRL+V.

Uruchom wewnątrz MSYS:

mingw-get install msys-wget
mingw-get install msys-unzip
mingw-get install msys-patch

Jeśli wyświetli się błąd: configure: error: cannot run C compiled programs. , Jedną z przyczyn może być twój antywirus, który potajemnie usuwa plik wykonywalny a.exe. Spróbuj tymczasowo wyłączyć program antywirusowy i spróbuj ponownie.

Instalacja Subversion

Uruchom w MSYS:

wget http://sourceforge.net/projects/win32svn/files/1.7.6/apache22/svn-win32-1.7.6.zip/download --no-check-certificate
unzip svn-win32-1.7.6.zip
cd svn-win32-1.7.6
mv bin/* /usr/local/bin/
cd ..

Kompilacja zlib

Uruchom w MSYS:

wget http://zlib.net/zlib-1.2.11.tar.gz
tar xvfz zlib-1.2.11.tar.gz
cd zlib-1.2.11
make -f win32/Makefile.gcc BINARY_PATH=/bin INCLUDE_PATH=/usr/local/include LIBRARY_PATH=/usr/local/lib install
cd ..

Jeśli nie jesteś w stanie skompilować tej paczki z użyczkiem MSYS i komend powyżej możesz spróbować ją zainstalować za pomocą "MinGW Installation Manager". Wewnątrz menadżera instalacyjnego paczka ta nazwana jest mingw32-libz. Jeśli program nie jest w stanie jej znaleźć na serwerze to twórcy najprawdopodbniej postanowili ją przenieść do innej rewizji. Udaj się do http://zlib.net, aby zobaczyć wersję nowej rewizji. Następnie zamień występujące powyżej wersje 1.2.11 na tą którą znalazłeś na stronie (1.2.[rr]).

Kompilacja libpng

Uruchom w MSYS:

wget http://sourceforge.net/projects/libpng/files/libpng15/older-releases/1.5.16/libpng-1.5.16.tar.xz/download --no-check-certificate
tar xvfJ libpng-1.5.16.tar.xz
cd libpng-1.5.16
mv INSTALL INSTALL.txt
./configure
make install
cd ..

Kompilacja liblzo2

Uruchom w MSYS:

wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.06.tar.gz
tar xvfz lzo-2.06.tar.gz
cd lzo-2.06
./configure --enable-static
make install
cd ..

Kompilacja libfreetype

Uruchom w MSYS:

wget http://sourceforge.net/projects/freetype/files/freetype2/2.4.10/freetype-2.4.10.tar.gz --no-check-certificate
tar zxvf freetype-2.4.10.tar.gz
cd freetype-2.4.10
./configure --enable-static
make install
cd ..

Kompilacja xz

Liblzma, która jest częścią xz, jest wymagana do kompilacji OpenTTD od rewizji r21044. Dodatkowo potrzebuje pkg-config i jego zależności.

Uruchom w MSYS:

wget http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime_0.18.1.1-2_win32.zip
unzip gettext-runtime_0.18.1.1-2_win32.zip -d /usr/local
wget http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.26/glib_2.26.0-2_win32.zip
unzip glib_2.26.0-2_win32.zip -d /usr/local
wget http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config_0.23-3_win32.zip
unzip pkg-config_0.23-3_win32.zip -d /usr/local
wget http://tukaani.org/xz/xz-5.0.4.tar.gz --no-check-certificate
tar xvfz xz-5.0.4.tar.gz
cd xz-5.0.4
./configure --enable-static --disable-threads
make install
cd ..

Kompilacja libicu

libicu jest opcjonalną biblioteką, która obsługuję zapis pisowni od prawej do lewej (n.p. język Arabski i Perski) i sortowanie naturalne list. Proces kompilacji może zająć bardzo długo, więc możesz bezpiecznie pominąć tą paczkę, jeśli jej nie potrzebujesz.

/File/en/Notice.png
Note
Instalcja drugiego patcha jest krokiem opcjonalnym. Zmniejszy ona rozmiar skompilowanego OpenTTD kosztem braku sortowania danych dla większości języków.
/File/en/Content.png
Warning
Kompilacja z użyciem libicu znacząco wpłynie na wielkość pliku wykonywalnego OpenTTD.

Rozmiar openttd.exe z libicu:ok. 25 MB
Rozmiar openttd.exe z libicu (zredukowany o rozmiar icudata):ok. 10MB
Rozmiar openttd.exe bez libicu:ok. 8MB

Uruchom w MSYS:

wget http://download.icu-project.org/files/icu4c/4.8/icu4c-4_8-src.zip
unzip icu4c-4_8-src.zip
cd icu
wget http://devs.openttd.org/~terkhen/libicu/libicu_4_8_mingw32.diff
patch -p1 -i libicu_4_8_mingw32.diff
wget http://devs.openttd.org/~terkhen/libicu/libicu_reduce_icudata_size.diff
patch -p1 -i libicu_reduce_icudata_size.diff
cd source
./configure --enable-static --disable-shared --disable-strict --disable-threads
make install
cd ../..

Pobieranie kodu źródłowego

Otwórz MSYS i uruchom

cd && svn checkout svn://svn.openttd.org/trunk

Kod źródłowych OpenTTD znajduje się teraz wewnątrz folderu trunk, który jest w twoim folderze domowym MSYS (<Miejsce instalacji MinGW>\MSYS\1.0\home\<Twoja nazwa użytkownika>).

Kompilacja OpenTTD

  1. Uruchom MSYS.
  2. Uruchom:
    cd ~/<path_to_source>
    ./configure
    make
    (~ oznacza twój folder domowy MSYS)
  3. Proces kompilacji jest skończony, gdy powstanie plik openttd.exe. Zostanie on skopiowany do folderu ./bin
  4. Aby przetestować swoją kompilacje możesz uruchomić (z tego samego folderu w którym kompilowałeś OpenTTD):
    ./bin/openttd
    Nie zapomnij zainstalować base graphics set przed tym krokiem, jeśli jeszcze nie masz paczek z grafikami. (Najprostszym sposobem jest manualna instalacja OpenGFX)
  5. Jeśli masz zamiar wygenerować zestaw instalacyjny możesz użyć:
    make bundle
    Jak ta komenda zostanie zakończona zastaniesz pełną wersję OpenTTD gotową do instalacji na innych komputerach w folderze ~/<paczka do źródeł Openttd>/bundle.

Patchowanie kodu źródłowego

Umieść plik z patchem, który chcesz zaaplikować, w folderze w którym zlokalizowane są źródła Openttd ( <Folder instalacyjny MinGW>\MSYS\1.0\home\<twoja nazwa użytkownika>\trunk ) Następnie wewnątrz MSYS uruchom:

cd ~/trunk
patch -p1/p0 < <patch name>

Użyj p0 dla patchy w stylu subversion, p1 dla wszystkich pozostałych (Prawdopodobnie dobrym pomysłem jest użycie p1 na samym początku). Wyjaśnienie różnicy między p1/p0:

FAQ development (en)#how-to-apply-a-patch