blawar / ooot

GNU General Public License v2.0
698 stars 92 forks source link

Improve linux compilation support (GLideN64) #315

Closed metronidazole closed 2 years ago

metronidazole commented 2 years ago

This improves linux compilation support. In conjunction with my GLideN64 PR ( https://github.com/blawar/GLideN64/pull/16 ), this will fix compilation of gliden64 as well as fixing a few bugs. It still results in linker errors as AziAudio hasn't been setup to compile, and the meson.build still needs some work for additional files (oot::json).

Has been tested on arch-linux. I haven't fixed the meson to take into account compiling this (32bit) on 64 bit and so you will need to manually fix some references prior to running ninja:

sed -i 's|/usr/lib/libSDL2.so|/usr/lib32/libSDL2.so|g' linux/build.ninja
sed -i 's|/usr/lib/libfreetype.so|/usr/lib32/libfreetype.so|g' linux/build.ninja
sed -i 's|/usr/lib/libpng16.so|/usr/lib32/libpng16.so|g' linux/build.ninja
sed -i 's|/usr/lib/libz.so|/usr/lib32/libz.so|g' linux/build.ninja
sed -i 's|/usr/lib/libGL.so|/usr/lib32/libGL.so|g' linux/build.ninja

Due to a bug in meson, you will need to copy/move the contents of GLideN64 into subprojects/gliden64 (just delete this symlink) for compiling to work. See https://github.com/mesonbuild/meson/issues/8827

Steps are basically the same:

cp baserom_original.z64 ooot/roms/EUR_MQD
cd ooot/tools/ZAPD/
make -j
cd ../../
python setup.py -b EUR_MQD

#symlink workaround due to meson bug
rm subprojects/gliden64 
mkdir subprojects/gliden64
cp -R GLideN64/* subprojects/gliden64/

meson setup linux
# At this point you can apply lib32 fixes if needed (see above)

cd linux
ninja

I have tested these changes on Windows and it compiles/runs fine.