Grafx2 compilation and installation =================================== === Requirements === * gcc C compiler (other compilers may work, but are not officially supported) * GNU make (other similar "make" tools may work, but are not supported) * SDL library v1.2 * SDL_image library * libpng (not on MacOSX) * FreeType library (optional, for truetype fonts) * SDL_ttf library (optional, for truetype fonts) * Lua library v5.1 or v5.2 (optional, for Lua scripting) Extra requirements for Windows: * a POSIX environment: MSYS is fine, maybe Cygwin would work as well. * use Mingw C compiler instead of gcc Extra requirements for UNIX/X11 (Linux, FreeBSD, ...): * pkg-config (optional, for Lua scripting) * X11 headers (optional, for truetype fonts) On Debian-based distributions you should be able to get all these files by simply running the following command from a terminal : sudo aptitude install gcc make libsdl1.2-dev libsdl-image1.2-dev libsdl-ttf2.0-dev libfreetype6-dev liblua5.1-0-dev lua5.1 === Instructions === Open a shell/Terminal, enter the directory where you have the project tree, and type: cd src make If all goes well, it should build grafx2 (the main program) in the "bin" directory. Voilą. If you don't have FreeType and SDL_ttf, type make NOTTF=1 instead. It will build a version without TrueType support : the Text tool will be limited to bitmap fonts, proportional fonts with .ttf extension won't be available. If you don't have lua available, type `make NOLUA=1`. You will not be able to use lua scripts to generate and alter brush and pictures. These options can be combined, for example for a build without ttf nor lua type make NOTTF=1 NOLUA=1 === Build variants === The default compilation is optimized ( -O ), with debugging symbols for GDB. Compile with OPTIM=0 to disable optimizations, if you have some real debugging to do. Compile with OPTIM=3 to use maximum optimizations. Type "make release" if you don't want the debugging symbols. Compile with USE_JOYSTICK=1 to enable joystick input : Only useful for developers, to check the input code for platforms that don't have a mouse. Compile with NOLAYERS=1 to make a version of Grafx2 that can't display several layers at a time: You will still be able to edit layered images, but you will only see one layer at a time. This option is designed for slow platforms, as it makes the program faster. Compile with NORECOIL=1 to disable support of the RECOIL (REtro COmputer Image Library) for loading images. This is advised on memory constrained platforms. === Other compilation targets === make clean Erases all generated files (intermediate objects, and executable) make depend Re-compute the dependencies (makefile.dep). Other compilation targets (make version, make ziprelease) require git and are only useful to contributors to the git repository of Grafx2. === System specifics === == Unix/Linux == sudo make install This copies the executable and data files in your system, in the /usr/local/bin and /usr/local/share directories. You then no longer need the compilation directory. sudo make uninstall Removes the copied files from your system, keeps your configuration. For both options, you can specify prefix=something to choose the target directory root: For example prefix=/usr or prefix=./test-install == gp2x == The gp2x build is very similar to the Linux one. TTF is always disabled because there is no X11 support on the gp2x. To compile a gp2x executable, type make GP2XCROSS=1 This will only work on an UNIXsystem (Linux or FreeBSD). == Windows == It is also possible to compile from linux, with this command : $ make WIN32CROSS=1 You will need the mingw cross-compiler, and all the librairies listed above. Variables CROSS_CC, CROSS_PKGCONFIG and CROSS_SDLCONFIG can be set : $ CROSS_CC=mingw32-gcc CROSS_PKGCONFIG=mingw32-pkg-config CROSS_SDLCONFIG=/path/to/ming32/sdl-config WIN32CROSS=1 NOTTF=1 make Here is a list of the resources used to build the Windows version: 4DOS with an alias make=mingw32-make MSYS installed in C:\MSYS Mingw installed in C:\MSYS\mingw SDL: SDL-devel-1.2.13-mingw32.tar.gz Uncompress in temporary directory make make install (no effect?) Headers are in /usr/mingw/include/SDL, copy them to /usr/include/SDL Zlib: http://gnuwin32.sourceforge.net/downlinks/zlib.php zlib-1.2.3.exe Install in c:\msys\mingw Libpng Requires: Zlib http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge/l/li/libpng/ libpng-1.4.2.tar.gz (Before June 2010, we were using libpng-1.0.23.tar.gz) Uncompress in temporary directory ./configure make make install (long) Files created in /usr/local/include and /usr/local/lib .... libjpeg (optional - improves SDL_image with JPEG reading) http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge/l/project/li/libjpeg/libjpeg/ jpegsr6.zip Uncompress in temporary directory ./configure --enable-shared make (make install doesn't work. Copy jpeglib.h, jmorecfg.h, jconfig.h in include, and libjpeg.a in lib) libtiff (optional - improves SDL_image with TIFF reading) ftp://ftp.sgi.com/graphics/tiff/ tiff-v3.4-tar.gz Uncompress in temporary directory ./configure i686-pc-mingw32 make Don't use 'make install', copy tiff.h libtiff.a manually instead. SDL_image: Requires: Libpng Requires optionally: libtiff Requires optionally: libjpeg http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge/l/li/libsdl/ SDL_image-1.2.8.zip Uncompress in temporary directory ./configure Check in the messages that png worked Optionally check if jpeg worked too Optionally check if tiff worked too make make install prefix=/usr/mingw FreeType: http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge/m/mi/mingw-cross/ mingw-freetype-2.3.7-2 Uncompress in c:/mwsys/mingw SDL_ttf: No mingw package http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge/l/li/libsdl/ SDL_ttf-2.0.9-win32.zip for DLLs: libfreetype-6.dll, SDL_ttf.dll, zlib1.dll SDL_ttf-2.0.9.tar.gz Lua: (optional) http://www.lua.org/ftp/lua-5.2.1.tar.gz Uncompress in temporary directory Use sh shell make mingw (make install doesn't work, even with prefix) Copy luaconf.h, lualib.h, lua.h, lauxlib.h to c:\msys\mingw\include Copy liblua.a to c:\msys\mingw\lib Copy lua51.dll to c:\msys\mingw\bin == Atari TOS machines == The Atari build is very similar to the Linux one. The build might work on native machine with gcc 4.3> compiler, but it wasn't tested. You can also build binary for Coldfire based machines(e.g. Firebee) by replacing '-m68020-60' in makefile to '-mcpu=5475'. Preferable way is to build GRAFX2 with use of cross compiler, you can get one from Vincent Riviere site: (URL: http://vincent.riviere.free.fr/soft/m68k-atari-mint). There are versions for win32 (Cygwin) and debian packages for latest Ubuntu (32/64bit). Before compilation you have to build all the needed libraries mentioned in requirements. To compile a Atari TOS executable, type in make ATARICROSS=1 prefix=/usr/m68k-atari-mint You can also add other options like NOTTF,NOLUA,NOLAYERS,NORECOIL etc. to enable/disable program features. If you don't know how build libraries here's some hints. Please note that prefix path in examples below is valid only under Linux, in case of Cygwin the path will be '/opt/m68k-atari-mint'. There will be no prefix when building on native machine. You have to omit 'sudo' under Cygwin and native build. Stick to this order and you will be fine ;> ... The versions of libraries were tested, you can also try newer versions. As I mentioned earlier, replace '-m68020-60' with '-mcpu=5475' if you want to target Coldfire machines. libpng [optional](for png reading in SDL_image): ------------------------------------------------ note: you will need libzip too libpng 1.2.44 ./configure --prefix=/usr/m68k-atari-mint --disable-shared --enable-static --host=m68k-atari-mint CFLAGS="-m68020-60 -O2 -fomit-frame-pointer" sudo make install or libpng 1.4.44 ./configure --prefix=/usr/m68k-atari-mint --disable-shared --enable-static --host=m68k-atari-mint CFLAGS="-m68020-60 -O2 -fomit-frame-pointer -DPNG_NO_SETJMP" sudo make install libjpeg, libtiff [optional] (for jpeg/tiff support in SDL_image) ---------------------------------------------------------------- ./configure --prefix=/usr/m68k-atari-mint --disable-shared --enable-static --host=m68k-atari-mint CFLAGS="-m68020-60 -O2 -fomit-frame-pointer" sudo make install freetype 2.4.4 [optional] (for TTF fonts support, required by SDL_ttf) ---------------------------------------------------------------------- ./configure --prefix=/usr/m68k-atari-mint --disable-shared --enable-static --host=m68k-atari-mint CFLAGS="-m68020-60 -O2 -fomit-frame-pointer" sudo make install lua 5.0.4 [optional] (for LUA scripting support) ------------------------------------------------ Here you have to customize makefiles, add prefixes, platform has to be set as generic. SDL 1.2 [mandatory] -------------------- note: best is to grab it directly from Mercurial repository ./configure --prefix=/usr/m68k-atari-mint --disable-shared --enable-static --host=m68k-atari-mint --disable-video-opengl --disable-shared --enable-static --disable-threads CFLAGS="-m68020-60 -O2 -fomit-frame-pointer" sudo make install SDL_ttf [optional] (for ttf fonts support, depends on SDL and freetype) ------------------------------------------- ./configure --prefix=/usr/m68k-atari-mint --disable-shared --enable-static --host=m68k-atari-mint --disable-shared --enable-static --with-sdl-prefix=/usr/m68k-atari-mint --with-freetype-prefix=/usr/m68k-atari-mint CFLAGS=" -m68020-60 -O2 -fomit-frame-pointer" sudo make install SDL_image 1.2.10 [mandatory] ---------------------------- ./configure --prefix=/usr/m68k-atari-mint --disable-shared --enable-static --host=m68k-atari-mint --disable-shared --enable-static --with-sdl-prefix=/usr/m68k-atari-mint CFLAGS="-DHAVE_OPENGL=0 -m68020-60 -O2 -fomit-frame-pointer" sudo make install And that's it! :)