Thanks IOhannes.
Sounds like gem-dev's a more relevant list for these harder gem issues. I'm now subscribed to gem-dev too. I'm still wondering whether GCC can be called with a more generous interpretation of the C code so it doesn't raise these spurious errors on a codebase which is demonstrated to work for GCC3.3.
Anyway I've attached the latest useful looking build files for you to look at. This is from the first build attempt described below with nil swapped for null64, not the second, abortive one with MMX disabled.
To carry out the first build attempt I executed the global code changes you mentioned to check if the nil value is causing the problem.
So I used perl -pi -e 's/nil/null64/g' `find Pixes/ -type f -name '*.cpp'` for a global find replace of all files in place switching lowercase 'nil' for 'null64'.
<BTW> Can I not just change it at the following line... Pixes/pix_chroma_key.cpp:277: const __m64 nil=_mm_setzero_si64(); </BTW>
Then I get as far as...
g++ -c -fPIC -I/Users/cefn/Documents/curiosity/pdplay/pd-intel/ pd-0.39-2/src/ -I.. pix_filmQT.cpp -o pix_filmQT.o pix_filmDarwin.cpp: In member function 'virtual void pix_filmDarwin::closeMess()': pix_filmDarwin.cpp:63: warning: 'DisposeGWorld' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/QDOffscreen.h:226) pix_filmDarwin.cpp:63: warning: 'DisposeGWorld' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/QDOffscreen.h:226) pix_filmDarwin.cpp:69: warning: 'DisposeGWorld' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/QDOffscreen.h:226) pix_filmDarwin.cpp:69: warning: 'DisposeGWorld' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/QDOffscreen.h:226) pix_filmDarwin.cpp:75: warning: 'DisposeGWorld' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/QDOffscreen.h:226) pix_filmDarwin.cpp:75: warning: 'DisposeGWorld' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/QDOffscreen.h:226) pix_filmDarwin.cpp: In member function 'virtual void pix_filmDarwin::realOpen(char*)': pix_filmDarwin.cpp:205: warning: 'OffsetRect' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/Quickdraw.h:2422) pix_filmDarwin.cpp:205: warning: 'OffsetRect' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/Quickdraw.h:2422) pix_filmDarwin.cpp:278: warning: 'SetRect' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/Quickdraw.h:2401) pix_filmDarwin.cpp:278: warning: 'SetRect' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/Quickdraw.h:2401) pix_filmDarwin.cpp:326: error: 'null64' was not declared in this scope pix_filmDarwin.cpp:330: warning: 'GetGWorldDevice' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/QDOffscreen.h:416) pix_filmDarwin.cpp:330: warning: 'GetGWorldDevice' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/QDOffscreen.h:416) pix_filmDarwin.cpp: In member function 'virtual void pix_filmDarwin::getFrame()': pix_filmDarwin.cpp:413: error: 'null64' was not declared in this scope pix_filmDarwin.cpp:424: error: 'null64' was not declared in this scope make[1]: *** [pix_filmDarwin.o] Error 1 make[1]: *** Waiting for unfinished jobs.... pix_filmYUV.h:150: error: ISO C++ forbids declaration of 'pixStruct' with no type pix_filmYUV.h:150: error: expected ';' before '*' token pix_filmDarwinYUV.cpp: In member function 'virtual void pix_filmDarwinYUV::closeMess()': pix_filmDarwinYUV.cpp:56: warning: 'DisposeGWorld' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/QDOffscreen.h:226) pix_filmDarwinYUV.cpp:56: warning: 'DisposeGWorld' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/QDOffscreen.h:226) pix_filmDarwinYUV.cpp:64: warning: 'DisposeGWorld' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/QDOffscreen.h:226) pix_filmDarwinYUV.cpp:64: warning: 'DisposeGWorld' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/QDOffscreen.h:226) pix_filmDarwinYUV.cpp:72: warning: 'DisposeGWorld' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/QDOffscreen.h:226) pix_filmDarwinYUV.cpp:72: warning: 'DisposeGWorld' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/QDOffscreen.h:226) pix_filmDarwinYUV.cpp: In member function 'virtual void pix_filmDarwinYUV::realOpen(char*)': pix_filmDarwinYUV.cpp:174: warning: 'OffsetRect' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/Quickdraw.h:2422) pix_filmDarwinYUV.cpp:174: warning: 'OffsetRect' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/Quickdraw.h:2422) pix_filmDarwinYUV.cpp:207: warning: 'GetGWorldDevice' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/QDOffscreen.h:416) pix_filmDarwinYUV.cpp:207: warning: 'GetGWorldDevice' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/QDOffscreen.h:416) make[1]: *** [pix_filmDarwinYUV.o] Error 1 pix_filmQT.cpp: In member function 'virtual void pix_filmQT::closeMess ()': pix_filmQT.cpp:103: warning: 'DisposeGWorld' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/QDOffscreen.h:226) pix_filmQT.cpp:103: warning: 'DisposeGWorld' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/QDOffscreen.h:226) pix_filmQT.cpp:109: warning: 'DisposeGWorld' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/QDOffscreen.h:226) pix_filmQT.cpp:109: warning: 'DisposeGWorld' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/QDOffscreen.h:226) pix_filmQT.cpp:115: warning: 'DisposeGWorld' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/QDOffscreen.h:226) pix_filmQT.cpp:115: warning: 'DisposeGWorld' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/QDOffscreen.h:226) pix_filmQT.cpp: In member function 'virtual void pix_filmQT::realOpen (char*)': pix_filmQT.cpp:177: warning: 'CopyCStringToPascal' is deprecated (declared at /System/Library/Frameworks/CoreServices.framework/ Frameworks/CarbonCore.framework/Headers/TextUtils.h:619) pix_filmQT.cpp:177: warning: 'CopyCStringToPascal' is deprecated (declared at /System/Library/Frameworks/CoreServices.framework/ Frameworks/CarbonCore.framework/Headers/TextUtils.h:619) pix_filmQT.cpp:179: warning: 'FSMakeFSSpec' is deprecated (declared at /System/Library/Frameworks/CoreServices.framework/Frameworks/ CarbonCore.framework/Headers/Files.h:8967) pix_filmQT.cpp:179: warning: 'FSMakeFSSpec' is deprecated (declared at /System/Library/Frameworks/CoreServices.framework/Frameworks/ CarbonCore.framework/Headers/Files.h:8967) pix_filmQT.cpp:226: warning: 'OffsetRect' is deprecated (declared at / System/Library/Frameworks/ApplicationServices.framework/Frameworks/ QD.framework/Headers/Quickdraw.h:2422) pix_filmQT.cpp:226: warning: 'OffsetRect' is deprecated (declared at / System/Library/Frameworks/ApplicationServices.framework/Frameworks/ QD.framework/Headers/Quickdraw.h:2422) pix_filmQT.cpp:268: warning: 'GetGWorldDevice' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/QDOffscreen.h:416) pix_filmQT.cpp:268: warning: 'GetGWorldDevice' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/QDOffscreen.h:416) pix_filmQT.cpp: In member function 'virtual void pix_filmQT::getFrame ()': pix_filmQT.cpp:316: warning: 'GetGWorld' is deprecated (declared at / System/Library/Frameworks/ApplicationServices.framework/Frameworks/ QD.framework/Headers/QDOffscreen.h:240) pix_filmQT.cpp:316: warning: 'GetGWorld' is deprecated (declared at / System/Library/Frameworks/ApplicationServices.framework/Frameworks/ QD.framework/Headers/QDOffscreen.h:240) pix_filmQT.cpp:317: warning: 'SetGWorld' is deprecated (declared at / System/Library/Frameworks/ApplicationServices.framework/Frameworks/ QD.framework/Headers/QDOffscreen.h:254) pix_filmQT.cpp:317: warning: 'SetGWorld' is deprecated (declared at / System/Library/Frameworks/ApplicationServices.framework/Frameworks/ QD.framework/Headers/QDOffscreen.h:254) pix_filmQT.cpp:320: warning: 'GetGWorldPixMap' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/QDOffscreen.h:480) pix_filmQT.cpp:320: warning: 'GetGWorldPixMap' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/QDOffscreen.h:480) pix_filmQT.cpp:321: warning: 'GetPixBaseAddr' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/QDOffscreen.h:364) pix_filmQT.cpp:321: warning: 'GetPixBaseAddr' is deprecated (declared at /System/Library/Frameworks/ApplicationServices.framework/ Frameworks/QD.framework/Headers/QDOffscreen.h:364) make: *** [Pixes] Error 2
...and in a second build attempt after following your suggestion to add the undef to the gcc flags like...
src (501) : export CFLAGS="$CFLAGS -U__MMX__" src (502) : export CPPFLAGS="$CPPFLAGS -U__MMX__" src (503) : export CXXFLAGS="$CXXFLAGS -U__MMX__"
I get make -C Base -f ..//Makefile.subdir -j4 In file included from /usr/lib/gcc/i686-apple-darwin8/4.0.1/include/ xmmintrin.h:39, from /usr/lib/gcc/i686-apple-darwin8/4.0.1/include/ emmintrin.h:35, from GemSIMD.h:40, from GemSIMD.cpp:1: /usr/lib/gcc/i686-apple-darwin8/4.0.1/include/mmintrin.h:35:3: error: #error "MMX instruction set not enabled" make[1]: *** [GemSIMD.d] Error 1 make[1]: *** Waiting for unfinished jobs.... In file included from /usr/lib/gcc/i686-apple-darwin8/4.0.1/include/ xmmintrin.h:39, from /System/Library/Frameworks/ CoreServices.framework/Frameworks/CarbonCore.framework/Headers/ MachineExceptions.h:29, from /System/Library/Frameworks/ CoreServices.framework/Frameworks/CarbonCore.framework/Headers/ DriverServices.h:32, from /System/Library/Frameworks/ CoreServices.framework/Frameworks/CarbonCore.framework/Headers/ CarbonCore.h:125, from /System/Library/Frameworks/ CoreServices.framework/Headers/CoreServices.h:21, from /System/Library/Frameworks/Carbon.framework/ Headers/Carbon.h:20, from GemWinCreateMac.cpp:17: /usr/lib/gcc/i686-apple-darwin8/4.0.1/include/mmintrin.h:35:3: error: #error "MMX instruction set not enabled" In file included from /usr/lib/gcc/i686-apple-darwin8/4.0.1/include/ xmmintrin.h:39, from /System/Library/Frameworks/ CoreServices.framework/Frameworks/CarbonCore.framework/Headers/ MachineExceptions.h:29, from /System/Library/Frameworks/ CoreServices.framework/Frameworks/CarbonCore.framework/Headers/ DriverServices.h:32, from /System/Library/Frameworks/ CoreServices.framework/Frameworks/CarbonCore.framework/Headers/ CarbonCore.h:125, from /System/Library/Frameworks/ CoreServices.framework/Headers/CoreServices.h:21, from /System/Library/Frameworks/Carbon.framework/ Headers/Carbon.h:20, from GemMan.h:23, from GemSetup.cpp:20: /usr/lib/gcc/i686-apple-darwin8/4.0.1/include/mmintrin.h:35:3: error: #error "MMX instruction set not enabled" make[1]: *** [GemSetup.d] Error 1 make: *** [Base] Error
Cefn http://cefn.com
On 27 Mar 2006, at 13:30, IOhannes m zmoelnig wrote:
hi
i moved this to gem-dev.
Cefn Hoile wrote:
Thanks, IOhannes
Now building from latest cvs source of the Gem module from cvs.gem.iem.at:/cvsroot/pd-gem
Have to change both CFLAGS, CPPFLAGS and CXXFLAGS to include the pd-39_2 source folder, else you get...
configure: WARNING: m_pd.h: accepted by the compiler, rejected by the preprocessor!
...or...
error: m_pd.h: No such file or directory
configure expects m_pd.h to be in the default search paths. this should probably be handled by the "-with-pd" flag to configure (but it is not).
it might work if you set the INCLUDES when running configure:
%> INCLUDES="-I/Users/cefn/Documents/curiosity/pdplay/pd-intel/" ./configure ...
(this is one line!)
this should save you from the following:
So for me it was export CFLAGS=-I/Users/cefn/Documents/curiosity/pdplay/pd-intel/ pd-0.39-2/src/ export CPPFLAGS=-I/Users/cefn/Documents/curiosity/pdplay/pd-intel/ pd-0.39-2/src/ export CXXFLAGS=-I/Users/cefn/Documents/curiosity/pdplay/pd-intel/ pd-0.39-2/src/
But I run into exactly the same error as before, even with the CVS version.
If I run ./configure --disable-SIMD I get the same
what is the output of configure? how do Make.config and Base/configDarwin.h look like? (that is: after configure)
is there any mention of "mmx" somewhere?
I am now building the latest source from the Gem CVS repository. Anyone any ideas what options I could throw at GCC version 4 to make it more forgiving of these errors, or alternatively, what the error means (I'm not an experienced C coder)...
g++ -c -fPIC -I/Users/cefn/Documents/curiosity/pdplay/pd-intel/ pd-0.39-2/src/ -I.. pix_coloralpha.cpp -o pix_coloralpha.o pix_chroma_key.cpp: In member function 'virtual void pix_chroma_key::processRGBA_MMX(imageStruct&, imageStruct&)': pix_chroma_key.cpp:277: error: expected unqualified-id before numeric constant pix_chroma_key.cpp:288: error: cannot convert 'int' to 'int __vector__' for argument '2' to 'int __vector__ _mm_cmpeq_pi32(int __vector__, int __vector__)'
it seems to be a problem with MMX.
however, looking at the code again, it might be that there is a problem with variable name "nil" (as defined in line277 of pix_chroma_key.cpp) you could try to replace all occurences of "nil" with "null64". probably that's all. (if so, you might have to change it in a couple of other files too)
if you still get the same errors, then there IS an issue with MMX. you might try to add "-U__MMX__" to the gcc-flags. or add a a "#undef __MMX__" somewhere at the beginning of Base/ GemSIMD.h (line 30 seems to be fine)
mfg.ads IOhannes