Sending to Fedora mingw mailing list. Rich.
On Sun, Feb 05, 2012 at 07:45:59PM +0100, Sylvain wrote: > Hi, > > I forward you this mail because you packaged FreeGLUT for win32 > through cross-compilation. > > I just sent this patch to the developers after cross-compilation broke > in 2.8.0. (I believe the current maintainer works primarily under > windows and doesn't uses the autoconf build system.) > > If you think what I did can be improved, feel free to say so to the > list: [email protected] . > > Cheers! > > - Sylvain > > ----- Forwarded message from Sylvain <[email protected]> ----- > > Date: Sun, 5 Feb 2012 19:33:41 +0100 > From: Sylvain <[email protected]> > To: [email protected] > Subject: [Freeglut-developer] Mingw cross-compilation > User-Agent: Mutt/1.5.21 (2010-09-15) > > Hi, > > When working on porting FreeGLUT for Android, I noticed that the > cross-compilation to windows with MinGW32 doesn't work anymore. > > It's used among others in the mingw32-freeglut RPM package and I'm > myself a heavy user of cross-compilation when targetting windows. > > Attached is a patch. I used Automake conditionals to do the job. > What do you think? > > > Cheers! > NB: the patch also fixes "make dist" by updating EXTRA_DIST. > > -- > Sylvain > > Index: README.mingw_cross > =================================================================== > --- README.mingw_cross (révision 0) > +++ README.mingw_cross (révision 0) > @@ -0,0 +1,24 @@ > +Cross-compilation from GNU/Linux (static and shared DLL) > +======================================================== > + > +Install MinGW32 and prepare FreeGLUT on Debian/Ubuntu: > + > + apt-get install mingw32 > + ./configure --host=i586-mingw32msvc --prefix=/freeglut > + > +Install MinGW32 and prepare FreeGLUT on Fedora: > + > + yum install mingw32-gcc > + ./configure --host=i686-pc-mingw32 --prefix=/freeglut > + > +Cross-compile! > + > + make > + make install DESTDIR=$(pwd) > + > +Everything is in the new freeglut/ directory. > +The .dll is in the freeglut/bin/. > + > + > +Compilation of your own programs is done as usual. > +See README.cygwin_mingw for details. > Index: src/Makefile.am > =================================================================== > --- src/Makefile.am (révision 1067) > +++ src/Makefile.am (copie de travail) > @@ -10,7 +10,7 @@ > # > noinst_HEADERS = Common/freeglut_internal.h Common/freeglut_teapot_data.h > > -EXTRA_DIST = freeglutdll.def > +EXTRA_DIST = Common/freeglutdll.def > > # > # Those source files build the freeglut library > @@ -37,23 +37,46 @@ > Common/freeglut_structure.c \ > Common/freeglut_teapot.c \ > Common/freeglut_videoresize.c \ > - Common/freeglut_window.c \ > - x11/freeglut_cursor_x11.c \ > - x11/freeglut_display_x11.c \ > - x11/freeglut_ext_x11.c \ > - x11/freeglut_gamemode_x11.c \ > - x11/freeglut_glutfont_definitions_x11.c \ > - x11/freeglut_init_x11.c \ > - x11/freeglut_input_devices_x11.c \ > - x11/freeglut_joystick_x11.c \ > - x11/freeglut_main_x11.c \ > - x11/freeglut_menu_x11.c \ > - x11/freeglut_spaceball_x11.c \ > - x11/freeglut_state_x11.c \ > - x11/freeglut_structure_x11.c \ > - x11/freeglut_window_x11.c \ > - x11/freeglut_xinput_x11.c > + Common/freeglut_window.c > > +if TARGET_HOST_MS_WINDOWS > +lib@LIBRARY@_la_SOURCES += \ > + mswin/freeglut_cursor_mswin.c \ > + mswin/freeglut_display_mswin.c \ > + mswin/freeglut_ext_mswin.c \ > + mswin/freeglut_gamemode_mswin.c \ > + mswin/freeglut_init_mswin.c \ > + mswin/freeglut_input_devices_mswin.c \ > + mswin/freeglut_internal_mswin.h \ > + mswin/freeglut_joystick_mswin.c \ > + mswin/freeglut_main_mswin.c \ > + mswin/freeglut_menu_mswin.c \ > + mswin/freeglut_spaceball_mswin.c \ > + mswin/freeglut_state_mswin.c \ > + mswin/freeglut_structure_mswin.c \ > + mswin/freeglut_window_mswin.c > +endif > + > +if TARGET_HOST_POSIX_X11 > +lib@LIBRARY@_la_SOURCES += \ > + x11/freeglut_cursor_x11.c \ > + x11/freeglut_display_x11.c \ > + x11/freeglut_ext_x11.c \ > + x11/freeglut_gamemode_x11.c \ > + x11/freeglut_glutfont_definitions_x11.c \ > + x11/freeglut_init_x11.c \ > + x11/freeglut_input_devices_x11.c \ > + x11/freeglut_internal_x11.h \ > + x11/freeglut_joystick_x11.c \ > + x11/freeglut_main_x11.c \ > + x11/freeglut_menu_x11.c \ > + x11/freeglut_spaceball_x11.c \ > + x11/freeglut_state_x11.c \ > + x11/freeglut_structure_x11.c \ > + x11/freeglut_window_x11.c \ > + x11/freeglut_xinput_x11.c > +endif > + > # > # Additional linker flags > # > Index: configure.ac > =================================================================== > --- configure.ac (révision 1067) > +++ configure.ac (copie de travail) > @@ -1,6 +1,6 @@ > # Process this file with autoconf to produce a configure script. > > -AC_INIT([freeglut library], [2.6.0], [[email protected]], > [freeglut]) > +AC_INIT([freeglut library], [2.9.0], [[email protected]], > [freeglut]) > AM_INIT_AUTOMAKE > AC_PREREQ([2.56]) > AC_CONFIG_SRCDIR([AUTHORS]) > @@ -21,21 +21,40 @@ > # Checks for libraries. > AC_PATH_XTRA > > -if test "x$no_x" = xyes; then > - GL_LIBS="-lopengl32 -lgdi32 -lwinmm" > - LIBXXF86VM= > - LIBXI= > - VERSION_INFO= > - EXPORT_FLAGS="-DFREEGLUT_EXPORTS" > -else > - GL_LIBS="-lGL -lXext -lX11" > - AC_CHECK_LIB([Xxf86vm], [XF86VidModeSwitchToMode]) > - AC_CHECK_LIB([Xrandr], [XRRQueryExtension]) > - AC_CHECK_LIB([Xi], [XISelectEvents]) > - LIBXI=-lXi > - VERSION_INFO="-version-info 12:0:9" > - EXPORT_FLAGS= > -fi > +#if test "x$no_x" = xyes; then > +VERSION_INFO="-version-info 12:0:9" > +AM_CONDITIONAL(TARGET_HOST_MS_WINDOWS, false) > +AM_CONDITIONAL(TARGET_HOST_POSIX_X11, false) > +AM_CONDITIONAL(TARGET_HOST_ANDROID, false) > +case "${host}" in > + *-*-msdos* | *-*-go32* | *-*-mingw32* | *-*-cygwin* | *-*-windows*) > + # Windows+Cygwin/MSYS, MinGW cross-compilation > + GL_LIBS="-lopengl32 -lgdi32 -lwinmm" > + LIBXXF86VM= > + LIBXI= > + CPPFLAGS="$CPPFLAGS -DFREEGLUT_EXPORTS" > + AM_CONDITIONAL(TARGET_HOST_MS_WINDOWS, true) > + ;; > + *-*-linux-androideabi) > + # Android > + # e.g. arm-unknown-linux-androideabi > + GL_LIBS="-lEGL -lGLESv2" > + LIBXXF86VM= > + LIBXI= > + CPPFLAGS="$CPPFLAGS -DANDROID" > + AM_CONDITIONAL(TARGET_HOST_ANDROID, true) > + ;; > + *) > + # Unix/X11 > + GL_LIBS="-lGL -lXext -lX11" > + AC_CHECK_LIB([Xxf86vm], [XF86VidModeSwitchToMode]) > + AC_CHECK_LIB([Xrandr], [XRRQueryExtension]) > + AC_CHECK_LIB([Xi], [XISelectEvents]) > + LIBXI=-lXi > + AM_CONDITIONAL(TARGET_HOST_POSIX_X11, true) > + ;; > +esac > + > AC_SUBST([GL_LIBS]) > AC_SUBST([LIBXXF86VM]) > AC_SUBST([LIBXI]) > Index: Makefile.am > =================================================================== > --- Makefile.am (révision 1067) > +++ Makefile.am (copie de travail) > @@ -17,39 +17,45 @@ > freeglut.mak \ > freeglut.rc \ > freeglut.spec \ > - freeglut.tgt \ > - freeglut.wpj \ > - freeglut_evc4.vcp \ > - freeglut_evc4.vcw \ > - freeglut_static.dep \ > - freeglut_static.dsp \ > - freeglut_static.mak \ > - freeglut_static.tgt \ > - freeglut_static_vs2008.vcproj \ > - freeglut_vs2008.sln \ > - freeglut_vs2008.vcproj \ > + VisualStudio/2010/freeglut.vcxproj.filters \ > + VisualStudio/2010/smooth_opengl3/smooth_opengl3.vcxproj.filters \ > + VisualStudio/2010/smooth_opengl3/smooth_opengl3.vcxproj \ > + VisualStudio/2010/One/One.vcxproj \ > + VisualStudio/2010/One/One.vcxproj.filters \ > + VisualStudio/2010/Fractals_random/Fractals_random.vcxproj \ > + VisualStudio/2010/Fractals_random/Fractals_random.vcxproj.filters \ > + VisualStudio/2010/Resizer/Resizer.vcxproj \ > + VisualStudio/2010/Resizer/Resizer.vcxproj.filters \ > + VisualStudio/2010/freeglut.sln \ > + VisualStudio/2010/Lorenz/Lorenz.vcxproj.filters \ > + VisualStudio/2010/Lorenz/Lorenz.vcxproj \ > + VisualStudio/2010/shapes/shapes.vcxproj.filters \ > + VisualStudio/2010/shapes/shapes.vcxproj \ > + VisualStudio/2010/Fractals/Fractals.vcxproj.filters \ > + VisualStudio/2010/Fractals/Fractals.vcxproj \ > + VisualStudio/2010/freeglut.vcxproj \ > + VisualStudio/2010/subwin/subwin.vcxproj.filters \ > + VisualStudio/2010/subwin/subwin.vcxproj \ > + VisualStudio/2010/CallbackMaker/CallbackMaker.vcxproj \ > + VisualStudio/2010/CallbackMaker/CallbackMaker.vcxproj.filters \ > + VisualStudio/2008/smooth_opengl3/smooth_opengl3.vcproj \ > + VisualStudio/2008/One/One.vcproj \ > + VisualStudio/2008/Fractals_random/Fractals_random.vcproj \ > + VisualStudio/2008/Resizer/Resizer.vcproj \ > + VisualStudio/2008/freeglut.sln \ > + VisualStudio/2008/Lorenz/Lorenz.vcproj \ > + VisualStudio/2008/shapes/shapes.vcproj \ > + VisualStudio/2008/Fractals/Fractals.vcproj \ > + VisualStudio/2008/subwin/subwin.vcproj \ > + VisualStudio/2008/CallbackMaker/CallbackMaker.vcproj \ > + VisualStudio/2008/freeglut.vcproj \ > progs/demos/CallbackMaker/CallbackMakerStatic.dsp \ > - progs/demos/CallbackMaker/CallbackMakerStatic_vs2008.vcproj \ > - progs/demos/CallbackMaker/CallbackMaker_vs2008.vcproj \ > progs/demos/Fractals/FractalsStatic.dsp \ > - progs/demos/Fractals/FractalsStatic_vs2008.vcproj \ > - progs/demos/Fractals/Fractals_vs2008.vcproj \ > progs/demos/Fractals_random/Fractals_randomStatic.dsp \ > - progs/demos/Fractals_random/Fractals_randomStatic_vs2008.vcproj \ > - progs/demos/Fractals_random/Fractals_random_vs2008.vcproj \ > progs/demos/Lorenz/lorenzStatic.dsp \ > - progs/demos/Lorenz/lorenzStatic_vs2008.vcproj \ > - progs/demos/Lorenz/lorenz_vs2008.vcproj \ > progs/demos/One/oneStatic.dsp \ > - progs/demos/One/oneStatic_vs2008.vcproj \ > - progs/demos/One/one_vs2008.vcproj \ > - progs/demos/demos_vs2008.sln \ > progs/demos/shapes/shapesStatic.dsp \ > - progs/demos/shapes/shapesStatic_vs2008.vcproj \ > - progs/demos/shapes/shapes_vs2008.vcproj \ > - progs/demos/smooth_opengl3/smooth_opengl3Static.dsp \ > - progs/demos/smooth_opengl3/smooth_opengl3Static_vs2008.vcproj \ > - progs/demos/smooth_opengl3/smooth_opengl3_vs2008.vcproj > + progs/demos/smooth_opengl3/smooth_opengl3Static.dsp > > # Thanks to WinDoze, some files in CVS have the "execute" bit set when they > # shouldn't. We could fix this if we had direct access to the CVS repository, > > ----- End forwarded message ----- -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones libguestfs lets you edit virtual machines. Supports shell scripting, bindings from many languages. http://libguestfs.org _______________________________________________ mingw mailing list [email protected] https://admin.fedoraproject.org/mailman/listinfo/mingw
