Discuss the development of new homebrew software, tools and libraries.
Moderators: cheriff , TyRaNiD
Heimdall
Posts: 245 Joined: Thu Nov 10, 2005 1:29 am
Location: Netherlands
Contact:
Post
by Heimdall » Wed Aug 27, 2008 5:46 pm
When i try to build the latest openTRI i get the following error:
Code: Select all
psp-gcc -I. -IC:/pspsdk/psp/sdk/include -O3 -G0 -Wall -D__PSP__ -D_PSP_FW_VERSION=150 -c -o triParticle.o triParticle.c
In file included from triParticle.c:36:
triParticle.h:184: error: expected ')' before '*' token
triParticle.h:222: error: expected specifier-qualifier-list before 'triParticleRenderer'
This happens on triParticle.h
Code: Select all
...
/** Custom particle render callback
* @param s Pointer to particle system
* @param p Pointer to particle structure to render
*/
typedef void (*triParticleRenderer)(triParticleSystem* s, triParticle* p);
typedef struct triParticleSystem
{
triS32 ID; // Particle system ID
triS32 typeID; // Particle system type ID - see triParticleEmitterTypes
triParticleEmitter *emitter; // The emitter attached to this system
triS32 textureID; // Texture to use for this particle system
triS32 texMode; // one of GU_TFX_*
triU32 texColor; // sceGuTexEnvColor
triBlendMode blendMode;
triS32 renderMode; // GU_POINTS, GU_LINES, GU_SPRITES, GU_TRIANGLES
triS32 useBillboards; // make particles always point towards camera, only applicable in GU_TRIANGLES_MODE
triU32 actions[triNumActions]; // actions to apply every frame
triParticle* particles; // particle list for update/movement
triVortex* vortices; // vortex particle list
triS32* particleStack;
triS32* vorticesStack;
triS32 numParticles;
triS32 numVortices;
triS32 numVerticesPerParticle; // numbers to allocate the right amount of memory
void* vertices; // particle vertice list for rendering (created during update)
triS32 numVertices;
triS32 vertexFormat;
triVec3f boundingBox[8];
triS32 updateFlag;
triParticleRenderer render; // function pointer to custom particle rendering function
struct triParticleSystem* next;
} triParticleSystem;
...
The typedef above references the struct bellow and the struct bellow reference the typedef above, GCC 4.3.1 seems not to like it! Any ideas on how to fix this?
hlide
Posts: 739 Joined: Sun Sep 10, 2006 2:31 am
Post
by hlide » Wed Aug 27, 2008 7:29 pm
Code: Select all
struct struct triParticleSystem; // forward declaration, only necessary if the following typedef doesn't already treat "struct triParticleSystem" as a forward declaration.
typedef void (*triParticleRenderer)(struct triParticleSystem* s, triParticle* p);
sauron_le_noir
Posts: 203 Joined: Sat Jul 05, 2008 8:03 am
Post
by sauron_le_noir » Wed Aug 27, 2008 7:56 pm
No problem here
Code: Select all
[f731@localhost tri]$ psp-gcc -v
Utilisation des specs internes.
Target: psp
Configuré avec: ../configure --prefix=/usr/local/pspdev --target=psp --enable-languages=c,c++ --with-newlib --with-gmp --with-mpfr --enable-cxx-flags=-G0
Modèle de thread: single
gcc version 4.3.1 (GCC)
[f731@localhost tri]$ make
psp-gcc -I. -I/usr/local/pspdev/psp/sdk/include -I../include -I /usr/local/pspdev/psp/include -I /usr/local/pspdev/psp/include/freetype2 -I ./streams -I ./mmgr -I ./pmp -D__PSP__ -DDEBUG -D_DEBUG -D_DEBUG_LOG -D_DEBUG_MEMORY -DTRI_SUPPORT_PNG -D_PSP_FW_VERSION=150 -c -o streams/streams.o streams/streams.c
psp-gcc -I. -I/usr/local/pspdev/psp/sdk/include -I../include -I /usr/local/pspdev/psp/include -I /usr/local/pspdev/psp/include/freetype2 -I ./streams -I ./mmgr -I ./pmp -D__PSP__ -DDEBUG -D_DEBUG -D_DEBUG_LOG -D_DEBUG_MEMORY -DTRI_SUPPORT_PNG -D_PSP_FW_VERSION=150 -c -o triTexman.o triTexman.c
psp-gcc -I. -I/usr/local/pspdev/psp/sdk/include -I../include -I /usr/local/pspdev/psp/include -I /usr/local/pspdev/psp/include/freetype2 -I ./streams -I ./mmgr -I ./pmp -D__PSP__ -DDEBUG -D_DEBUG -D_DEBUG_LOG -D_DEBUG_MEMORY -DTRI_SUPPORT_PNG -D_PSP_FW_VERSION=150 -c -o triCamera.o triCamera.c
psp-gcc -I. -I/usr/local/pspdev/psp/sdk/include -I../include -I /usr/local/pspdev/psp/include -I /usr/local/pspdev/psp/include/freetype2 -I ./streams -I ./mmgr -I ./pmp -D__PSP__ -DDEBUG -D_DEBUG -D_DEBUG_LOG -D_DEBUG_MEMORY -DTRI_SUPPORT_PNG -D_PSP_FW_VERSION=150 -c -o triVAlloc.o triVAlloc.c
psp-gcc -I. -I/usr/local/pspdev/psp/sdk/include -I../include -I /usr/local/pspdev/psp/include -I /usr/local/pspdev/psp/include/freetype2 -I ./streams -I ./mmgr -I ./pmp -D__PSP__ -DDEBUG -D_DEBUG -D_DEBUG_LOG -D_DEBUG_MEMORY -DTRI_SUPPORT_PNG -D_PSP_FW_VERSION=150 -c -o triMemory.o triMemory.c
psp-gcc -I. -I/usr/local/pspdev/psp/sdk/include -I../include -I /usr/local/pspdev/psp/include -I /usr/local/pspdev/psp/include/freetype2 -I ./streams -I ./mmgr -I ./pmp -D__PSP__ -DDEBUG -D_DEBUG -D_DEBUG_LOG -D_DEBUG_MEMORY -DTRI_SUPPORT_PNG -D_PSP_FW_VERSION=150 -c -o triFont.o triFont.c
psp-gcc -I. -I/usr/local/pspdev/psp/sdk/include -I../include -I /usr/local/pspdev/psp/include -I /usr/local/pspdev/psp/include/freetype2 -I ./streams -I ./mmgr -I ./pmp -D__PSP__ -DDEBUG -D_DEBUG -D_DEBUG_LOG -D_DEBUG_MEMORY -DTRI_SUPPORT_PNG -D_PSP_FW_VERSION=150 -c -o triRefcount.o triRefcount.c
psp-gcc -I. -I/usr/local/pspdev/psp/sdk/include -I../include -I /usr/local/pspdev/psp/include -I /usr/local/pspdev/psp/include/freetype2 -I ./streams -I ./mmgr -I ./pmp -D__PSP__ -DDEBUG -D_DEBUG -D_DEBUG_LOG -D_DEBUG_MEMORY -DTRI_SUPPORT_PNG -D_PSP_FW_VERSION=150 -c -o triImage.o triImage.c
triImage.c: In function ‘_triImageLoadPngStream’:
triImage.c:558: attention : passing argument 5 of ‘png_get_IHDR’ from incompatible pointer type
triImage.c:558: attention : passing argument 6 of ‘png_get_IHDR’ from incompatible pointer type
triImage.c:558: attention : passing argument 7 of ‘png_get_IHDR’ from incompatible pointer type
triImage.c:598: attention : passing argument 4 of ‘png_get_PLTE’ from incompatible pointer type
triImage.c:599: attention : passing argument 4 of ‘png_get_tRNS’ from incompatible pointer type
psp-gcc -I. -I/usr/local/pspdev/psp/sdk/include -I../include -I /usr/local/pspdev/psp/include -I /usr/local/pspdev/psp/include/freetype2 -I ./streams -I ./mmgr -I ./pmp -D__PSP__ -DDEBUG -D_DEBUG -D_DEBUG_LOG -D_DEBUG_MEMORY -DTRI_SUPPORT_PNG -D_PSP_FW_VERSION=150 -c -o rle.o rle.c
psp-gcc -I. -I/usr/local/pspdev/psp/sdk/include -I../include -I /usr/local/pspdev/psp/include -I /usr/local/pspdev/psp/include/freetype2 -I ./streams -I ./mmgr -I ./pmp -D__PSP__ -DDEBUG -D_DEBUG -D_DEBUG_LOG -D_DEBUG_MEMORY -DTRI_SUPPORT_PNG -D_PSP_FW_VERSION=150 -c -o triGraphics.o triGraphics.c
psp-gcc -I. -I/usr/local/pspdev/psp/sdk/include -I../include -I /usr/local/pspdev/psp/include -I /usr/local/pspdev/psp/include/freetype2 -I ./streams -I ./mmgr -I ./pmp -D__PSP__ -DDEBUG -D_DEBUG -D_DEBUG_LOG -D_DEBUG_MEMORY -DTRI_SUPPORT_PNG -D_PSP_FW_VERSION=150 -c -o tri3d.o tri3d.c
psp-gcc -I. -I/usr/local/pspdev/psp/sdk/include -I../include -I /usr/local/pspdev/psp/include -I /usr/local/pspdev/psp/include/freetype2 -I ./streams -I ./mmgr -I ./pmp -D__PSP__ -DDEBUG -D_DEBUG -D_DEBUG_LOG -D_DEBUG_MEMORY -DTRI_SUPPORT_PNG -D_PSP_FW_VERSION=150 -c -o triLog.o triLog.c
psp-gcc -I. -I/usr/local/pspdev/psp/sdk/include -I../include -I /usr/local/pspdev/psp/include -I /usr/local/pspdev/psp/include/freetype2 -I ./streams -I ./mmgr -I ./pmp -D__PSP__ -DDEBUG -D_DEBUG -D_DEBUG_LOG -D_DEBUG_MEMORY -DTRI_SUPPORT_PNG -D_PSP_FW_VERSION=150 -c -o triModel.o triModel.c
psp-gcc -I. -I/usr/local/pspdev/psp/sdk/include -I../include -I /usr/local/pspdev/psp/include -I /usr/local/pspdev/psp/include/freetype2 -I ./streams -I ./mmgr -I ./pmp -D__PSP__ -DDEBUG -D_DEBUG -D_DEBUG_LOG -D_DEBUG_MEMORY -DTRI_SUPPORT_PNG -D_PSP_FW_VERSION=150 -c -o triInput.o triInput.c
psp-gcc -I. -I/usr/local/pspdev/psp/sdk/include -I../include -I /usr/local/pspdev/psp/include -I /usr/local/pspdev/psp/include/freetype2 -I ./streams -I ./mmgr -I ./pmp -D__PSP__ -DDEBUG -D_DEBUG -D_DEBUG_LOG -D_DEBUG_MEMORY -DTRI_SUPPORT_PNG -D_PSP_FW_VERSION=150 -c -o triVMath_vfpu.o triVMath_vfpu.c
psp-gcc -I. -I/usr/local/pspdev/psp/sdk/include -I../include -I /usr/local/pspdev/psp/include -I /usr/local/pspdev/psp/include/freetype2 -I ./streams -I ./mmgr -I ./pmp -D__PSP__ -DDEBUG -D_DEBUG -D_DEBUG_LOG -D_DEBUG_MEMORY -DTRI_SUPPORT_PNG -D_PSP_FW_VERSION=150 -c -o triAt3.o triAt3.c
triAt3.c:161:22: attention : constante caractère multi-caractères
triAt3.c:165:23: attention : constante caractère multi-caractères
triAt3.c:169:25: attention : constante caractère multi-caractères
triAt3.c:171:26: attention : constante caractère multi-caractères
psp-gcc -I. -I/usr/local/pspdev/psp/sdk/include -I../include -I /usr/local/pspdev/psp/include -I /usr/local/pspdev/psp/include/freetype2 -I ./streams -I ./mmgr -I ./pmp -D__PSP__ -DDEBUG -D_DEBUG -D_DEBUG_LOG -D_DEBUG_MEMORY -DTRI_SUPPORT_PNG -D_PSP_FW_VERSION=150 -c -o triWav.o triWav.c
psp-gcc -I. -I/usr/local/pspdev/psp/sdk/include -I../include -I /usr/local/pspdev/psp/include -I /usr/local/pspdev/psp/include/freetype2 -I ./streams -I ./mmgr -I ./pmp -D__PSP__ -DDEBUG -D_DEBUG -D_DEBUG_LOG -D_DEBUG_MEMORY -DTRI_SUPPORT_PNG -D_PSP_FW_VERSION=150 -c -o triAudioLib.o triAudioLib.c
psp-gcc -I. -I/usr/local/pspdev/psp/sdk/include -I../include -I /usr/local/pspdev/psp/include -I /usr/local/pspdev/psp/include/freetype2 -I ./streams -I ./mmgr -I ./pmp -D__PSP__ -DDEBUG -D_DEBUG -D_DEBUG_LOG -D_DEBUG_MEMORY -DTRI_SUPPORT_PNG -D_PSP_FW_VERSION=150 -c -o triNet.o triNet.c
triNet.c: In function ‘triNetSocketAccept’:
triNet.c:235: attention : passing argument 3 of ‘accept’ from incompatible pointer type
psp-gcc -I. -I/usr/local/pspdev/psp/sdk/include -I../include -I /usr/local/pspdev/psp/include -I /usr/local/pspdev/psp/include/freetype2 -I ./streams -I ./mmgr -I ./pmp -D__PSP__ -DDEBUG -D_DEBUG -D_DEBUG_LOG -D_DEBUG_MEMORY -DTRI_SUPPORT_PNG -D_PSP_FW_VERSION=150 -c -o triError.o triError.c
psp-gcc -I. -I/usr/local/pspdev/psp/sdk/include -I../include -I /usr/local/pspdev/psp/include -I /usr/local/pspdev/psp/include/freetype2 -I ./streams -I ./mmgr -I ./pmp -D__PSP__ -DDEBUG -D_DEBUG -D_DEBUG_LOG -D_DEBUG_MEMORY -DTRI_SUPPORT_PNG -D_PSP_FW_VERSION=150 -c -o triParticle.o triParticle.c
psp-ar cru ../lib/libtri.a ./streams/streams.o ./triTexman.o ./triCamera.o ./triVAlloc.o ./triMemory.o ./triFont.o ./triRefcount.o ./triImage.o ./rle.o ./triGraphics.o ./tri3d.o ./triLog.o ./triModel.o ./triInput.o ./triVMath_vfpu.o ./triAt3.o ./triWav.o ./triAudioLib.o ./triNet.o ./triError.o ./triLog.o ./triParticle.o
psp-ranlib ../lib/libtri.a
my makefile is:
Code: Select all
PSPSDK=$(shell psp-config --pspsdk-path)
PSPDIR=$(shell psp-config --psp-prefix)
TARGET_LIB = ../lib/libtri.a
OBJS = ./streams/streams.o ./triTexman.o ./triCamera.o ./triVAlloc.o ./triMemory.o ./triFont.o \
./triRefcount.o ./triImage.o ./rle.o ./triGraphics.o ./tri3d.o ./triLog.o \
./triModel.o ./triInput.o ./triVMath_vfpu.o ./triAt3.o ./triWav.o ./triAudioLib.o \
./triNet.o ./triError.o ./triLog.o ./triParticle.o
CFLAGS += -I../include -I $(PSPDIR)/include -I $(PSPDIR)/include/freetype2 -I ./streams -I ./mmgr -I ./pmp -D__PSP__ -DDEBUG -D_DEBUG -D_DEBUG_LOG -D_DEBUG_MEMORY -DTRI_SUPPORT_PNG
LIBS = -lpspgum -lpspgu -lpsprtc -lm -lz -lpspwlan -lpspaudio -lpspaudiocodec -lcurl
include $(PSPSDK)/lib/build.mak
install: $(PSP_LIB)
@echo "Installing libtri into $(PSPDIR)"
mkdir -p $(PSPDIR)/include $(PSPDIR)/include/tri $(PSPDIR)/include/tri/streams $(PSPDIR)/include/tri/mmgr $(PSPDIR)/include/tri/pmp $(PSPDIR)/lib
cp *.h $(PSPDIR)/include/tri
cp ./streams/*.h $(PSPDIR)/include/tri/streams
cp ./mmgr/*.h $(PSPDIR)/include/tri/mmgr
cp ./pmp/*.h $(PSPDIR)/include/tri/pmp
cp $(TARGET_LIB) $(PSPDIR)/lib
@echo "Done"
[/code]
Heimdall
Posts: 245 Joined: Thu Nov 10, 2005 1:29 am
Location: Netherlands
Contact:
Post
by Heimdall » Wed Aug 27, 2008 8:07 pm
Code: Select all
//struct triParticleSystem;
/** Custom particle render callback
* @param s Pointer to particle system
* @param p Pointer to particle structure to render
*/
typedef void (*triParticleRenderer)(struct triParticleSystem* s, triParticle* p);
without forward declaring the struct GCC warns:
Code: Select all
psp-gcc -I. -IC:/pspsdk/psp/sdk/include -O3 -G0 -Wall -D__PSP__ -D_PSP_FW_VERSION=150 -c -o triParticle.o triParticle.c
In file included from triParticle.c:36:
triParticle.h:186: warning: 'struct triParticleSystem' declared inside parameter list
triParticle.h:186: warning: its scope is only this definition or declaration, which is probably not what you want
triParticle.c: In function 'triParticleSystemRender':
triParticle.c:179: warning: passing argument 1 of 's->render' from incompatible pointer type
triParticle.c: In function 'triParticleUpdateLoadEmitter':
triParticle.c:288: warning: no return statement in function returning non-void
BTW i'm using the latest SVN version rev29 which have a different makefile from sauron_le_noir.
With the forward declaration it works perfectly!
sauron_le_noir
Posts: 203 Joined: Sat Jul 05, 2008 8:03 am
Post
by sauron_le_noir » Wed Aug 27, 2008 8:15 pm
Yes indeed it is better to use the forward declaration gcc 4.3 is more strict (and it is better) just must just talking to raphael about this problem so he can put it in his code
i have made my own makefile because so i can incorporate it in my pdf reader as dependance of a JAMRULES
mupdf use JAM perftools
sauron_le_noir
Posts: 203 Joined: Sat Jul 05, 2008 8:03 am
Post
by sauron_le_noir » Wed Aug 27, 2008 8:26 pm
by the way don't forget to drop this macro -D__PSP__ -DDEBUG -D_DEBUG -D_DEBUG_LOG -D_DEBUG_MEMORY in your homebrew when is is in proudction
compiling your homebrew with this macro activate the logs of the TriMemory function
Increase also in triMemory.c this define
#define MAX_AMOUNT 32767
if you use a lot of triAlloc in your homebrew
Raphael
Posts: 646 Joined: Tue Jan 17, 2006 4:54 pm
Location: Germany
Contact:
Post
by Raphael » Wed Aug 27, 2008 10:21 pm
I compiled the last version with gcc4.1.0, so that could indeed be a tighter restriction of latest gcc. I'll be sure to fix that :)
Comitted revision 30.