GDC on psptoolchain

John Grindstaff perfectcell14 at yahoo.com
Fri Jul 25 10:27:37 PDT 2008


Thanks very much. That actually worked and libgphobos.a appeared where 
it should (in psp next to libiberty, libc++ or whatever).

Are you using garbage collection without calling Phobos's Cmain 
function? I thought it inits GC with gc_init() so how is that possible?

I wonder if it is possible to write a C-source function wrapper around 
the PSP_MODULE_MACRO so that one could use a D main function (as normal)?

Kostas Karanikolas wrote:
> John Grindstaff wrote:
> 
>> Thanks. How exactly do you compile libgphobos.a for the PSP? I tried it
>> but got errors about missing files. What directory should I be in and
>> what command do I type?
> 
> Build instructions
> 
> First of all I'm running OSX Leopard on a PowerPC, so what you need to
> do may vary, not by much on a Unix system but potentially a lot on Windows.
> 
> I assume you have the latest and complete psp toolchain. If not I
> suggest you try downloading & installing a prebuilt one or preferably
> use the "psptoolchain" build scripts found on:
> svn://svn.ps2dev.org/psp/trunk/psptoolchain
> 
> Ok, here we go:
> 
> 1. Make a temporary directory for your build
> mkdir pspd
> cd pspd
> 
> 2. Setup environment paths
> export PSPDEV=/the/path/where/the/pspsdk/is/already/installed
> export PATH=$PATH:$PSPDEV/bin
> 
> # If your native compiler tools are in some extra non standard path
> # also export these variables.
> # In my case I use macports, installed on /opt/local
> export C_INCLUDE_PATH="/opt/local/include"
> export CPLUS_INCLUDE_PATH="/opt/local/include"
> export LIBRARY_PATH="/opt/local/lib"
> 
> 3. Download and unpack gcc
> wget --continue ftp://ftp.gnu.org/pub/gnu/gcc/gcc-4.1.0/gcc-4.1.0.tar.bz2
> 
> tar -xvjf gcc-4.1.0.tar.bz2
> 
> 4. Download and apply psp toolchain patches to gcc
> svn export
> svn://svn.ps2dev.org/psp/trunk/psptoolchain/patches/gcc-4.1.0-PSP.patch
> cd gcc-4.1.0
> patch -p1 <../gcc-4.1.0-PSP.patch
> 
> 5. Download and setup gdc
> cd gcc
> # we now must be in directory ...../pspd/gcc-4.1.0/gcc
> 
> # Checkout dgcc from svn
> svn co https://dgcc.svn.sourceforge.net/svnroot/dgcc/trunk/d
> 
> cd ..
> 
> # setup dgcc
> ./gcc/d/setup-gcc.sh --d-language-version=1
> 
> 5.5 Optional step, for those compiling GCC under Leopard/PowerPC. Apply 
> a patch to fix some GCC compiler errors
> 
> cd gcc/config/rs6000/
> wget 
> "http://trac.macports.org/attachment/ticket/13191/gcc_patch?format=raw" 
> -Oleopard_ppc.patch
> patch -p1 <leopard_ppc.patch
> cd ../../../
> 
> 
> 6. Configure, build, and install gcc (gdc & libgphobos included)
> # Make a separate build subdirectory
> # we must be ...../pspd/gcc-4.1.0
> mkdir build-psp
> cd build-psp
> 
> # Configure GCC
> ../configure --prefix="$PSPDEV" --target="psp" 
> --enable-languages="c,d,c++" --with-newlib --enable-cxx-flags="-G0" 
> --disable-libssp --enable-static --disable-shared
> 
> # Compile GCC
> CFLAGS_FOR_TARGET="-G0" make
> 
> # Install GCC
> make install
> 
> And that should be enough to get a funcional GCC with D/libgphobos
> 
> As far as my small libgphobos patch is concerned, I agree that it might 
> not be necessary. However given the temperamental behaviour of the 
> linker (especially when it comes to the order of the PSPSDK libraries) I 
> removed the extra definition of main, to make sure that if no main is 
> declared a linker error would be raised. At any rate it works fine 
> without the change.
> 
> Have fun !
> 
> Kostas
> 
> 
> FreekSh0w86 wrote:
>> Oh yeah that's true... I forgot because I made an example without 
>> libgphobos but that _would_ interfere. I don't have libgphobos.a 
>> compiled yet so I wouldn't know directly. David Friedman wrote:
>>> Assuming the C main() in libgphobos is not actually interfering with 
>>> the  PSP SDK (e.g., duplicate symbols), you do not have to rename it. 
>>> You can call the following function which exists for exactly this 
>>> purpose.
>>>
>>> extern (C) int _d_run_Dmain(int argc, char **argv);
>>>
>>> David
>>>
> 
> 
> 
> 


More information about the D.gnu mailing list