a) auf neueren Compilern zu bauen (getestet mit 4.3.3)
b) auf 64bit-Architekturen zu bauen (getestet auf x86_64)
Die Patches im einzelnen (Danke git-format-patch!):
- 0001-Add-missing-includes-for-newer-compilers.patch:
Seit gcc 4 ist der Compiler etwas penibler geworden, z.B. will der g++ mehr Header, die er früher implizit included hatte, jetzt explizit aufgeführt haben. - 0002-fix-char-vs-const-char-compiler-warnings.patch:
Es ist nun nicht mehr zulässig, eine Funktion, die foo(char *) ist mit foo("abc") aufzurufen, "abc" ist const char* - 0003-fix-scope-of-variables.patch:
Der Compiler ist nun penibler, wenn Variablen neudefiniert werden oder wenn mit "case" oder "goto" die Deklaration übersprungen wird - 0004-remove-unneeded-extra-qualifications.patch
- 0005-add-braces-after-empty-if-for-blocks.patch
"for(i = 0; i < 5; i++);" ist nicht mehr erlaubt (weil es ein Hinweis auf einen Tippfehler ist). Wenn man wirklich eine "leere" for-Schleife machen will, dann muss man "{}" dahinter machen. Dasselbe für "if()", dabei habe ich glatt einen bug im MP2 gefunden - 0006--typedef-enum-is-no-longer-allowed.patch
- 0007-fix-a-neutrino_msg_data_t-vs.-neutrino_msg_t-confusi.patch
Bugfix, fiel nur nie auf weil beide Typen gleich waren. Bei 64 bit sind sie das nicht mehr. - 0008-fix-neutrino_msg_data_t-definition.patch
neutrino_msg_data_t war als uint definiert. Allerdings werden damit auch pointer auf objekte durch den socket geschoben (doofe idee, aber egal). Ein Pointer ist aber auf 64bit-Maschinen 64 bit lang, uint nur 32 => definiere neutrino_msg_data_t als size_t. - 0009-a-pointer-is-not-necessarily-32-bits-long.patch
- 0010-syntax-tweaks-for-newer-compilers.patch
BTW: das war natürlich nicht alles, bei neutrino und Co spuckt der Compiler noch gift und Galle wg. const char* <-> char* etc, aber da neutrino nicht mit "-Werror" gebaut wird wie zapit ist das erstmal nicht sooooo schlimm, das können wir dann später mal aufräumen
P.S. wer ganz viel Spass haben will, sollte mal mit "-Wshadow" kompilieren...