eme version 0.2a - seme version 0.2

  1. Introduction
  2. Tutorial: How to draw a map ?
  3. Tutorial: How to create a map format in SEME ?
  4. Tutorial: How to write a plugin ?
  5. Tutorial: How to create a new type of property ?
  6. The user interface
  7. seme
  8. ieme
  9. The API
  10. FAQ
  11. Portability
  12. Known bugs
  13. Reference: Application Program Interface
  14. Reference: emetool
  15. Index

Portability



If you try to port eme to another system/compiler than Linux/gcc and DOS/DJGPP, I'd be pleased to hear of you (even to tell me that you've dropped the port because of too many errors ;).

eme is developped under GNU/Linux. It relies heavily on GNU make, gcc, Allegro and several GNU tools. I test it (and compile seme) under DOS with DJGPP.

I expect ports to platform where GNU make, gcc and Allegro work to be not too difficult. There may be neverthless some problems with:

System autodetection: the guess.mk autodetects the system in a very simple way:

Windows: I try as much as possible to give a version that works under a Microsoft OS, but I can test only on platform I have access to (which means DOS).

gcc version: Tested with gcc 2.95 and 3.1.

Various gcc flavour: eme is tested with gcc and DJGPP. I don't have other versions (such as MingW32/Cygwin) but i expect them to compile my code happily.

Windows+bash: I know some people use bash under Windows, the makefiles may not cope with that.

Other compiler than gcc: I don't have a non-gcc compiler and I don't plan to buy or steal one. I also know that some new C/C++ features I use aren't supported in the same way by all compilers.

Non-GNU Unices: There may be problems with tools with a slightly different behaviour.

Non-GNU make: eme makefiles will most probably not work with other make tools. Note: on some Unices, GNU make is called gmake.

CR, LF, CR/LF: The tarball file has Unix line separators, the zip file has CR/LF separators, there is no version with Apple separators. Text files are read by eme in the following cases:

Having an empty half hard-drive on a laptop, and an old i386 spleeping with no useful OS, I may one day try to port eme to an other OS.


Makefile structure.

The main makefile is Makefile, it defines all the main targets and includes the following makefiles:

If you create an emetool version, you'll probably not have to change the following makefiles. Seme uses two makefiles: seme/Makefile and seme/version.mk. Ieme uses one makefiles: ieme/Makefile. There are three makefiles in the examples directory: examples/Makefile, examples/seme/Makefile, examples/plugin/Makefile.

Note that all autogen.mk makefiles are autogenerated by emetool.


File structure.

You need Altheme which is *not* ported/tested under other compiler than gcc and djgpp. After you've unzipped Altheme, you'll find the source files in src/ and the includes files in include/. The files should be compiled as a library.

eme is divided in one library and several executables.

The eme library: the files in src/ should be compiled as a library. The include files are also in src/. To compile the library you need the Altheme include files.

seme executable: the .cc and .h files in seme/ need the include files from both Altheme and eme. They should be linked with: eme library, Altheme library, Allegro library, standard C++ library.

ieme executable: ieme/plugin.cc need the include files from both Altheme and eme. It should be linked with: eme library, Altheme library, Allegro library, standard C++ library.

Example plugin: examples/plugin.cc need the include files from both Altheme and eme. It should be linked with: eme library, Altheme library, Allegro library, standard C++ library.

"Game" example: the files examples/seme/loader.c, examples/seme/loader.h and examples/seme/game.cc should be compiled and linked with Allegro.

emetool: The emetool generation is done in the makefile emetool.mk. There are currently two versions: one for sh (mainly defined in emetool.nix) and one for DOS (mainly defined in emetool.dos).


Conditional compilation.

There are several defines that can change what is compiled:


Some differences between compilers, that I am aware of:


Last modified on 21/5/2003