I've gotten it to compile no problems for 32-bit and 64-bit linux, and 32-bit windows (all under 64-bit linux), and I've also tried the mingw 64-bit windows compiler from 3 different sources so far, and all error out with the same error, so I'd say it's either a flag thing or something needs fixed in the code (unlikely since it compiles for 64-bit linux)
~/simba/public-smart$ make windows
Compiling Color.cpp
src/Color.cpp: In function ‘long int setTarget(PRGB, int, int)’:
src/Color.cpp:43:24: warning: cast from ‘PRGB’ to ‘long int’ loses precision [-fpermissive]
Compiling Java Classes...
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Compiling Class Cypher
Encoding Java classes...
+build/java/java/awt/Canvas.class
+build/java/java/awt/Canvas$AccessibleAWTCanvas.class
+build/java/smart/Client.class
+build/java/smart/EventNazi$KeySender.class
+build/java/smart/Client$2.class
+build/java/smart/EventRedirect.class
+build/java/smart/Client$3.class
+build/java/smart/ClientStub.class
+build/java/smart/Client$4.class
+build/java/smart/Client$1.class
+build/java/smart/UnblockedEvent.class
+build/java/smart/EventNazi.class
+build/java/smart/BlockingEventQueue.class
Compiling Classloader.cpp
Compiling Input.cpp
Compiling Reflection.cpp
src/Reflection.cpp: In function ‘long int getFieldObject(jobject, char*)’:
src/Reflection.cpp:96:31: warning: cast from ‘jobject’ to ‘long int’ loses precision [-fpermissive]
src/Reflection.cpp: In function ‘long int getFieldArrayObject(jobject, char*, int)’:
src/Reflection.cpp:209:31: warning: cast from ‘jobject’ to ‘long int’ loses precision [-fpermissive]
src/Reflection.cpp: In function ‘long int getFieldArray3DObject(jobject, char*, int, int, int)’:
src/Reflection.cpp:335:31: warning: cast from ‘jobject’ to ‘long int’ loses precision [-fpermissive]
src/Reflection.cpp: In function ‘long int getFieldArray2DObject(jobject, char*, int, int)’:
src/Reflection.cpp:459:31: warning: cast from ‘jobject’ to ‘long int’ loses precision [-fpermissive]
Compiling JVM.cpp
Compiling Smart.cpp
src/Smart.cpp: In function ‘long int getImageHDC()’:
src/Smart.cpp:62:19: warning: cast from ‘HDC’ to ‘long int’ loses precision [-fpermissive]
src/Smart.cpp: In function ‘long int getDebugHDC()’:
src/Smart.cpp:66:19: warning: cast from ‘HDC’ to ‘long int’ loses precision [-fpermissive]
src/Smart.cpp: In function ‘long int getImageArray()’:
src/Smart.cpp:72:19: warning: cast from ‘PRGB’ to ‘long int’ loses precision [-fpermissive]
src/Smart.cpp: In function ‘long int getDebugArray()’:
src/Smart.cpp:76:19: warning: cast from ‘PRGB’ to ‘long int’ loses precision [-fpermissive]
Compiling Main.cpp
/tmp/ccm8xBmY.s: Assembler messages:
/tmp/ccm8xBmY.s:547: Error: invalid instruction suffix for `pop'
/tmp/ccm8xBmY.s:603: Error: invalid instruction suffix for `pop'
make: *** [build/windows/Main.o] Error 1
The last one is really what matters, this is the only change I made to the makefile:
WIN_GPP=x86_64-w64-mingw32-g++ -fpermissive
#WIN_GPP=i586-mingw32msvc-g++
Any ideas?