Difference between revisions of "OpenTasks"

Jump to navigation Jump to search
67 bytes added ,  20:45, 22 March 2010
→‎Improve the ScummVM build system: Updated to match current state of affairs a bit better
(→‎Student application template: -- added skypeid, phone, TZ)
(→‎Improve the ScummVM build system: Updated to match current state of affairs a bit better)
Line 61: Line 61:
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).  
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.  
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, we already do this with the help our custom C++ tool [code]create_msvc[/code].  


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.
Another issue is the following: There are several people who develop 3rd party engines, which use the core code from ScummVM, but are 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 [code]engines/engines.mk[/code] 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.
Then there are the ScummVM tools, which are hosted in a separate module of our repository. It would be nice if the tools could share code with ScummVM other than by copying it, 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.
All of the above needs to be implemented in a portable fashion.
Line 72: Line 72:
''The Task:''
''The Task:''


* Generate project files for various IDEs (MSVC, XCode, eclipse, ...) from the default build system.
* Generate project files for various IDEs (XCode, Eclipse, ...) from the default build system. (MSVC has already been done.)
* Modify ScummVM build system to add ability to build engines outside of the main source tree.  
* Modify ScummVM build system to add ability to build engines outside 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).
* 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].
An alternative approach to hand-rolling everything described above would be to switch our buildsystem to [http://www.cmake.org/ CMake]. However, since this would be a major change for us, it would have to be carefully research first, in particular with regards to the next point:


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, ...).
A prime requirement is that the resulting system must still work on Linux, Mac OS X and Windows, and all other platforms that use the default build system (e.g. WinCE, Nintendo DS, ...). Any negative impact on portability should be avoided.


''Required Skills:''
''Required Skills:''
Line 84: Line 84:
* Good C++ skills.  
* Good C++ skills.  
* Excellent Makefile skills
* Excellent Makefile skills
* Possibly experience with cmake or another meta-build system
* Possibly experience with CMake, SCons or another meta-build system


=== Implemented support for loadable modules on small devices ===
=== Implemented support for loadable modules on small devices ===
1,079

edits

Navigation menu