Open main menu

Difference between revisions of "OpenTasks"

2,592 bytes added ,  19:06, 27 February 2009
(→‎Add 16bit graphics support to SCUMM engine: Update: other engines would benefit, and 24bit would be useful too)
Line 50: Line 50:
== Generic infrastructure tasks ==
== Generic infrastructure tasks ==


=== Add possibility for compiling externally to ScummVM tree ===
=== Improve the ScummVM build system ===


''Technical Contact'': [[User:Fingolfin|Max Horn]], [[User:Sev|Eugene Sandulenko]]
''Technical Contact'': [[User:Fingolfin|Max Horn]], [[User:Sev|Eugene Sandulenko]]
Line 56: Line 56:
''Background:''
''Background:''


OSystem (ScummVM core) turned into nice portable infrastructure for creating graphics-related applications. We already have our own full blown GUI and couple of dozens of engines built on top of it.
ScummVM uses a custom hand-made Makefile based build system by default. In addition, we maintain a set of project files for various versions of MSVC, and some other development environments. Some of our ports tie into the default Makefile build system, but others need yet other project files (e.g. the PalmOS port).
 
This leads to the following problem. Whenever we add, move or delete files from our repository, the default build system is updated, but the other project files in general are not -- they have to be maintained separately. This is a manual task, and if forgotten, causes these project files to become out of date and hence more or less unusable. Therefore, we would like to be able to generate these project files from the master build system. For MSVC, this should be possible using a simple perl script, for example.
 
Another issue is the following: There are several people who develop 3rd party engines, which use the core code from ScummVM, but is not hosted within the ScummVM repository. Since ScummVM allows building engines as loadable modules, that is fine. However, in order to ''build'' these engines, one currently has to copy them into a checkout of the ScummVM trunk, and then hook them into the build system (by modifying the engines/engines.mk file). It would be so much easier if one could build an engine as a loadable module *outside* of the ScummVM source tree, and without any need to modify files in the ScummVm source tree. This is definitely doable, but needs somebody to implement it.
 
Then there are the ScummVM tools, which are hosted in a separate module of our repository. They currently use a very crude Makefile. It would be much better if they used a more powerful system (e.g. the one we currently use for ScummVM itself), as well as a configure file to detect required dependencies. Moreover, it would be good if the tools could share code with ScummVM, e.g. by hooking into the ScummVM build system somehow. (Please ask us for details on this very vague statement if you are interested in pursuing this ;-). In addition, it would be nice to be able to generate project files for the tools, too.
 
All of the above needs to be implemented in a portable fashion.
 


''The Task:''
''The Task:''


Modify ScummVM build system to add ability to build engines ourside of the main source tree. It may require turning ScummVM OSystem into a library.
* Generate project files for various IDEs (MSVC, XCode, eclipse, ...) from the default build system.
* Modify ScummVM build system to add ability to build engines ourside of the main source tree.  
* Enhance the build system of the ScummVM tools (they are in a separate Subversion module, and not to be confused with the tools included in the ScummVM source tree itself).
 
An alternative approach to hand-rolling everything described above would be to switch our buildsystem to [http://www.cmake.org/ CMake].
 
In any case, the resulting system must still work on Linux, Mac OS X and Windows, and all other platforms that relay on the default build system (e.g. WinCE, Nintendo DS, ...).


''Required Skills:''
''Required Skills:''
Line 66: Line 81:
* Good C++ skills.  
* Good C++ skills.  
* Excellent Makefile skills
* Excellent Makefile skills
 
* Possibly experience with cmake or another meta-build system


=== Implemented support for loadable modules on Nintendo DS and other ports ===
=== Implemented support for loadable modules on Nintendo DS and other ports ===
1,079

edits