Hi, First post on the list, hello everyone! Ok, I wanted to try the ppc port of haiku and I got the latest svn and folllowed the instructions online, built the compiler/binutils/etc and started the build. Build failed immediately on the host tools, in particular bfs_shell. I found that __swap_*() functions were not being declared anywhere but were used in bfs_endian.h. I did a little testing around, I found a simple fix (I hardly think it's the right way, but I'd gladly prepare a proper patch with some pointer in the right direction). I attach the diff between current svn and my version -which compiles on ppc. I got some more failures afterwards, but I was told they was due to some changes in the Device Manager, so I'll try again later. Thanks Konstantinos PS. I'm doing PowerPC/Cell coding for a living (in particular AltiVec/SPU optimizations, incl. a library with altivec optimized libc replacement functions, 3d, math stuff, etc) and I'd gladly help in the ppc port of Haiku, it will take me some time to understand its internals though :/ PS2. I was a very early BeOS user (my 603@180Mhz with BeOS was the fastest system I ever used, still beats many XP/Vista PCs out there, imho :). Thanks to Haiku I can have that experience again, thanks guys!
Index: src/add-ons/kernel/file_systems/bfs/bfs_endian.h =================================================================== --- src/add-ons/kernel/file_systems/bfs/bfs_endian.h (revision 25669) +++ src/add-ons/kernel/file_systems/bfs/bfs_endian.h (working copy) @@ -28,6 +28,22 @@ #elif defined(BFS_LITTLE_ENDIAN_ONLY) && B_HOST_IS_BENDIAN \ || defined(BFS_BIG_ENDIAN_ONLY) && B_HOST_IS_LENDIAN /* host is big endian, BFS is little endian or vice versa */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern double __swap_double(double arg); +extern float __swap_float(float arg); +extern uint64 __swap_int64(uint64 uarg); +extern uint32 __swap_int32(uint32 uarg); +extern uint16 __swap_int16(uint16 uarg); + +#ifdef __cplusplus +} +#endif + + # define BFS_ENDIAN_TO_HOST_INT16(value) __swap_int16(value) # define BFS_ENDIAN_TO_HOST_INT32(value) __swap_int32(value) # define BFS_ENDIAN_TO_HOST_INT64(value) __swap_int64(value)