GDC on psptoolchain

John Grindstaff perfectcell14 at yahoo.com
Fri Jul 25 10:29:42 PDT 2008


To clarify, I meant "PSP_MODULE_INFO" macro, and its C wrapper would 
ideally be built into libgphobos as a patch so that one could write D 
psp projects without the C source file "glue."

John Grindstaff wrote:
> 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