TrustedUser
574
edits
(→Hard Way: Update links for pspdev.org to their Github Repository (especially as pspdev.org seems intermittent/down/overloaded).) |
(→Hard Way: Add Nitrus's guidance notes on building the PSP toolchain from source.) |
||
Line 18: | Line 18: | ||
* [https://github.com/pspdev/psp-ports/tree/master/libTremor libTremor] | * [https://github.com/pspdev/psp-ports/tree/master/libTremor libTremor] | ||
* [http://libmpeg2.sf.net libmpeg2] - As this is not in [https://github.com/pspdev/psp-ports pspdev/psp-ports], you'll need to build it manually. Adding a psp target/host to config.sub and using a configure line similar to the SDL port worked. | * [http://libmpeg2.sf.net libmpeg2] - As this is not in [https://github.com/pspdev/psp-ports pspdev/psp-ports], you'll need to build it manually. Adding a psp target/host to config.sub and using a configure line similar to the SDL port worked. | ||
<br> | |||
The following guidance notes on doing this were written by Nitrus on 2014-03-14: | |||
<pre> | |||
Built on Xubuntu 13.04 (Raring Ringtail). | |||
I did this by building the toolchain myself, since I ran into various problems with PSPMinW (I think it might have been the x64 against x32 architecture, not sure). | |||
The SVN for the toolchain failed more times than I can count, it's experiencing server downtime or something. | |||
The jim was a bit old I think, so I went with Git. | |||
First, download ScummVM source code: | |||
git clone https://github.com/scummvm/scummvm.git ~/scummsource | |||
Next before building, download the following build dependency libraries and install: | |||
autoconf, automake, bison, flex, gcc, g++/gcc-c++, libusb-dev, make, ncurses, patch, readline, subversion, texinfo, wget, mpc, gmp, libelf, mpfr, git | |||
This did the trick for me (different linux distros may vary): | |||
sudo apt-get install autoconf build-essential automake bison flex gcc libusb-dev make libncurses5-dev patch libreadline-dev subversion texinfo wget libmpc-dev libgmp3-dev libgmp-dev libelf-dev libmpfr-dev git | |||
Note: most of these are probably installed already. | |||
Next, some environment variables: | |||
export PSPDEV=/usr/local/pspdev && export PSPSDK=$PSPDEV/psp/sdk && PATH=$PATH:$PSPDEV/bin:$PSPSDK/bin | |||
For good measure, I added these to ~/.bashrc at the end of the file, in case I miss something. | |||
Then: | |||
source ~/.bashrc | |||
Next, I downloaded the toolchain into a psptoolchain folder: | |||
git clone https://github.com/pspdev/psptoolchain.git ~/psptoolchain | |||
Now, we let it download/compile/build, and it takes a long time (around half an hour, to an hour and a half). Change directory then execute: | |||
cd psptoolchain | |||
sudo ./toolchain-sudo.sh | |||
It will check if all the needed dependencies are there. | |||
Some of the scripts in psptoolchain/scripts do tend to fail (Git fetching is not always ideal, or FTP anon login gets rejected sometimes, in this case the ./toolchain-sudo.sh needs to be run again, until it's done). | |||
This can be due to DNS resolve errors, or sometimes a connection cannot be established. Sometimes it ends before it even begins. | |||
Next comes zlib. | |||
I got this one, newest at time of writing: | |||
version 1.2.8, tar.gz format (558K, MD5 checksum 44d667c142d7cda120332623eab69f40) | |||
Went into home by typing cd, and then downloaded and unpacked by: | |||
wget http://sourceforge.net/projects/libpng/files/zlib/1.2.8/zlib-1.2.8.tar.gz && tar -xzf zlib-1.2.8.tar.gz && rm zlib-1.2.8.tar.gz | |||
cd zlib-1.2.8 | |||
Then, I downloaded the configure, Makefile and Makefile.in from https://github.com/pspdev/psp-ports/tree/master/zlib sincce they were good for this version too. | |||
wget -O ./configure https://raw.github.com/pspdev/psp-ports/master/zlib/configure | |||
wget -O ./Makefile https://raw.github.com/pspdev/psp-ports/master/zlib/Makefile | |||
wget -O ./Makefile.in https://raw.github.com/pspdev/psp-ports/master/zlib/Makefile.in | |||
Next I typed make, but for the install (unless I wanted to chown the whole /usr/local/pspdev folder), I needed to go in sudo. | |||
So: | |||
sudo su | |||
Next we need the environment variables again: | |||
export PSPDEV=/usr/local/pspdev && export PSPSDK=$PSPDEV/psp/sdk && export PATH=$PATH:$PSPDEV/bin:$PSPSDK/bin | |||
And finally: | |||
make install | |||
Then, we exit sudo with: | |||
exit | |||
You can check whether it has correctly cross compiled by doing 'objdump -f /usr/local/pspdev/psp/lib/libz.a', and it should find an unknown architecture, while 'psp-objdump -f /usr/local/pspdev/psp/lib/libz.a' should correctly point out the mipsallegrex arch. | |||
Next, we download libPNG. I used version 1.2.50. I tried the newest one, but libpng has undergone some significant API changes, which would require extensive of ScummVM. | |||
fedd8c66d106c28f8d527f9397c265a2 libpng-1.2.50.tar.gz | |||
Go to home, and type: | |||
wget http://sourceforge.net/projects/libpng/files/libpng12/1.2.50/libpng-1.2.50.tar.gz && tar -xzf libpng-1.2.50.tar.gz && rm libpng-1.2.50.tar.gz | |||
We will modify the config.sub a bit, so we wouldn't fiddle around with makefiles, to make them include build.mak. | |||
After line 273 add: | |||
| mipsallegrex | mipsallegrexel \ | |||
After line 358 (now 359 because of previous addition) add: | |||
| mipsallegrex-* | mipsallegrexel-* \ | |||
After line 928 (now 930 because of previous addition) add: | |||
psp) | |||
basic_machine=mipsallegrexel-psp | |||
;; | |||
Save and quit the editor. | |||
Now run following config script from the lib-1.2.50 folder: | |||
./configure --prefix=/usr/local/pspdev/psp --host=psp CC=psp-gcc LDFLAGS="-L/usr/local/pspdev/psp/sdk/lib -lc -lpspuser" CFLAGS="-isystem /usr/local/pspdev/psp/sdk/include" | |||
Then once again: | |||
make | |||
sudo su | |||
export PSPDEV=/usr/local/pspdev && export PSPSDK=$PSPDEV/psp/sdk && export PATH=$PATH:$PSPDEV/bin:$PSPSDK/bin | |||
make install | |||
exit | |||
Now, for compiling ScummVM: | |||
Create a builds/psp/folder in scummsource: | |||
cd ~/scummsource && mkdir builds && cd builds && mkdir psp && cd psp | |||
Then, I compiled ScummVM with this: | |||
../../configure --host=psp --enable-plugins --default-dynamic --enable-debug && make clean && make | |||
This does not include instructions on any of the optional plugins. | |||
</pre> | |||
== Easy Way == | == Easy Way == |