From: Josh H. <jos...@gm...> - 2010-10-25 11:57:50
|
Hi, I have been working for a while on a small tool for setting up cross-compilation environments for myself. I do a bit of hobby work with SDL and mainly work with Linux, but it is nice to give Windows binaries to friends, etc. Setting up a MinGW compiler is easy enough, but for every lib that your game or app needs, you need an appropriately compiled library too. Thus "crossenv" was born. Crossenv acts as a wrapper script around existing install processes. It downloads the source of the library, executes the correct configure command, applies any required patches and does the compile. It also does dependency tracking, which allows for even further automation of the process. ./crossenv.sh i386-mingw32 libtiff It really is that easy. libtiff relies on zlib and libjpeg, and of course the compiler itself, all of which would be installed automatically, the only fuss being pressing 'y' on your keyboard at the start. Crossenv consists of a number of scripts. The main script is crossenv.sh. It should be provided with two arguments the name of the install platform, and the package name. Packages are tar.bz2 files which live in the packages directory. These packages contain an install script, a dependency info file, and any additional files required for the install (such as patches). Packages exist for the main compiler (named 'core'), and for individual libraries. The current list of packages are basically just to satisfy my own needs: core, libconfuse, libfreetype, libjpeg, libogg, libpng, libsdl, libsdl-net, libsdl-ttf, libtiff, libvorbis, libzzip, zlib Everything in crossenv is designed to work out of a user's home directory; none of the scripts require root permission. Of course, crossenv can be installed anywhere where the user has write access. There are three main directories. 'environments' stores the finalised compile environments. These are small mirrors of a regular unix file-system, but with files compiled in the target platform instead of in the host platform. 'packages' is a directory storing all of the available packages. 'temp' is as you would expect - a temp directory. There is currently only one platform available - 'i386-mingw32' - the cross compiler for Windows PE executables, which should run on W95 onwards, but may require a NT based kernel (NT4, Win2k, WinXP, etc). Additional platforms is planned for the future, once a decent number of mingw32 packages are available. The next platform will probably be something for MacOSX, their appears to be basically no docs on how to cross-compile for a Mac, so a decent script would probably be useful for many people. I don't really have a website or anything fancy yet, but that will come if this message generates sufficient (read 'any') interest. For more information, see the following: http://thejosh.info/crossenv/ Cheers, Josh |