2010-09-27 23:14:16 +02:00
|
|
|
Table of contents
|
|
|
|
-----------------
|
|
|
|
|
2011-01-09 23:17:22 +01:00
|
|
|
WARNING: Only intended for developers who'll build Speed Dreams from sources.
|
|
|
|
|
2010-09-27 23:14:16 +02:00
|
|
|
I - Pre-requisites
|
|
|
|
|
2011-09-29 19:17:27 +02:00
|
|
|
II - Linux Installation from sources
|
2010-09-27 23:14:16 +02:00
|
|
|
|
|
|
|
1 - Introduction
|
2012-03-17 20:27:10 +01:00
|
|
|
2 - Installation from the official tarballs
|
|
|
|
3 - Installation from SVN (developers only)
|
2011-10-27 00:19:20 +02:00
|
|
|
4 - Run Speed-Dreams
|
|
|
|
5 - Getting Help
|
2010-09-27 23:14:16 +02:00
|
|
|
|
2011-09-29 19:17:27 +02:00
|
|
|
III - Windows Installation from sources
|
2010-09-27 23:14:16 +02:00
|
|
|
|
|
|
|
1 - Cmake and MS VC++ 2005 (8) / 2008 (9) on Windows XP 32
|
|
|
|
2 - MS VC++ 6 no more supported
|
|
|
|
|
|
|
|
IV - FreeBSD Installation from sources (Work in progress)
|
|
|
|
|
|
|
|
V - MacOS X installation from sources (TODO)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
I - Pre-requisites
|
|
|
|
------------------
|
|
|
|
|
|
|
|
- Working OpenGL Driver and header files / associated libraries
|
|
|
|
- SDL 1.2 (http://www.libsdl.org/)
|
|
|
|
- PLIB 1.8.3 / 4 / 5 (http://plib.sourceforge.net/).
|
|
|
|
Linux: Be carefull to compile plib with -fPIC on AMD64 if you run a 64 bit version.
|
|
|
|
- OpenAL soft 1.5 / 1.6 / 1.11 (http://connect.creativelabs.com/openal)
|
|
|
|
(Torcs modified 0.0.8 from www.torcs.org also used to work in the past).
|
|
|
|
- ENet 1.2 (http://enet.bespin.org)
|
2012-03-17 20:27:10 +01:00
|
|
|
Linux: Be carefull to compile ENet with -fPIC on AMD64 if you run a 64 bit build.
|
2010-09-27 23:14:16 +02:00
|
|
|
- libpng
|
|
|
|
- zlib
|
|
|
|
- jpeg
|
|
|
|
|
2012-03-17 20:27:10 +01:00
|
|
|
WARNING: On Windows, be carefull to compile anything for multi-threaded DLL integration (/MD & /MDd)
|
|
|
|
|
|
|
|
|
2010-09-27 23:14:16 +02:00
|
|
|
II - Linux installation from sources
|
2012-03-17 20:27:10 +01:00
|
|
|
------------------------------------
|
2010-09-27 23:14:16 +02:00
|
|
|
|
|
|
|
1 - Introduction
|
|
|
|
|
2012-03-17 20:27:10 +01:00
|
|
|
There are 2 ways to build and install Speed Dreams from sources :
|
|
|
|
- from the official source tarballs,
|
|
|
|
- from the subversion repository.
|
2010-09-27 23:14:16 +02:00
|
|
|
|
2012-03-17 20:27:10 +01:00
|
|
|
Pick only one of the above options. If you have trouble during the installation,
|
2011-09-29 19:17:27 +02:00
|
|
|
have a look in the FAQ on the above sites. In case you get stuck,
|
2012-03-18 20:45:21 +01:00
|
|
|
please learn how to report the problem in the FAQ before filing a bug or contact us.
|
2011-09-29 19:17:27 +02:00
|
|
|
|
|
|
|
Have fun,
|
2010-09-27 23:14:16 +02:00
|
|
|
|
|
|
|
The Speed Dreams Team.
|
|
|
|
|
|
|
|
|
2012-03-17 20:27:10 +01:00
|
|
|
2 - Installation from the official tarballs
|
2011-09-29 19:17:27 +02:00
|
|
|
|
2012-03-17 20:27:10 +01:00
|
|
|
a - get these tarballs : please go to our SF.net download page at
|
2012-04-07 12:53:58 +02:00
|
|
|
|
|
|
|
http://sourceforge.net/projects/speed-dreams/files/2.0.0,
|
|
|
|
|
2012-03-17 20:27:10 +01:00
|
|
|
and you should find :
|
2010-09-27 23:14:16 +02:00
|
|
|
|
2012-03-17 20:27:10 +01:00
|
|
|
speed-dreams-src-base-<version>.tar.xz
|
|
|
|
speed-dreams-src-hq-cars-and-tracks-<version>.tar.xz
|
|
|
|
speed-dreams-src-more-hq-cars-and-tracks-<version>.tar.xz
|
|
|
|
speed-dreams-src-wip-cars-and-tracks-<version>.tar.xz
|
2012-04-07 12:53:58 +02:00
|
|
|
speed-dreams-src-unmaintained-<version>.tar.xz
|
2010-09-27 23:14:16 +02:00
|
|
|
|
2012-04-14 10:37:53 +02:00
|
|
|
where <version> is something like "2.0.0-rc1-r4420", "2.0.0-r4687", ...
|
2011-01-12 20:32:40 +01:00
|
|
|
|
2012-03-17 20:27:10 +01:00
|
|
|
Warning: you must download them all, as our current build system
|
|
|
|
can't cope with missing files.
|
2011-01-12 20:32:40 +01:00
|
|
|
|
2012-04-14 10:37:53 +02:00
|
|
|
Let's say that :
|
|
|
|
* you downloaded them all in $HOME/sd,
|
|
|
|
* and that <version> is x.y.z-rabcd.
|
2012-03-17 20:27:10 +01:00
|
|
|
(you can do as you like, but we'll use this folder in the explanations below).
|
2011-01-12 20:32:40 +01:00
|
|
|
|
2012-04-07 12:53:58 +02:00
|
|
|
b - uncompress the tarballs :
|
2010-09-27 23:14:16 +02:00
|
|
|
|
2012-03-17 20:27:10 +01:00
|
|
|
$ cd $HOME/sd
|
2012-04-14 10:37:53 +02:00
|
|
|
$ mkdir x.y.z-rabcd
|
|
|
|
$ cd x.y.z-rabcd
|
|
|
|
$ for file in ../*.xz; do tar xvfa $file; done
|
2012-03-17 20:27:10 +01:00
|
|
|
|
|
|
|
You should now see "cmake", "data" and "src" folders (among others).
|
2010-09-27 23:14:16 +02:00
|
|
|
|
2012-03-17 20:27:10 +01:00
|
|
|
c - configure :
|
2010-09-27 23:14:16 +02:00
|
|
|
|
2012-03-17 20:27:10 +01:00
|
|
|
1. create the build dir for CMake
|
2010-09-27 23:14:16 +02:00
|
|
|
|
2012-03-17 20:27:10 +01:00
|
|
|
$ mkdir build
|
|
|
|
$ cd build
|
2010-09-27 23:14:16 +02:00
|
|
|
|
|
|
|
2. run CMake :
|
|
|
|
|
|
|
|
- for a Release build using default 3rd party libs
|
|
|
|
|
2012-03-17 20:27:10 +01:00
|
|
|
$ cmake -D OPTION_OFFICIAL_ONLY:BOOL=ON ..
|
2011-09-29 19:17:27 +02:00
|
|
|
|
|
|
|
Note: This "OFFICIAL_ONLY" stuff is mandatory, otherwise
|
2012-03-17 20:27:10 +01:00
|
|
|
you'll get errors saying that some (unofficial contents) folders
|
|
|
|
are missing, just because the official tarballs don't include them.
|
2010-09-27 23:14:16 +02:00
|
|
|
|
|
|
|
- you may also want to override some default settings :
|
|
|
|
|
2012-03-17 20:27:10 +01:00
|
|
|
for that, you can use the -D option of cmake :
|
2010-09-27 23:14:16 +02:00
|
|
|
|
|
|
|
Example :
|
|
|
|
|
2011-01-12 20:32:40 +01:00
|
|
|
$ cmake -D SD_LOCALDIR:STRING=~/dev/.sd-settings \
|
|
|
|
-D CMAKE_PREFIX_PATH:STRING=/usr/local
|
2011-09-29 19:17:27 +02:00
|
|
|
-D CMAKE_BUILD_TYPE:STRING=Debug
|
2010-09-27 23:14:16 +02:00
|
|
|
|
|
|
|
or else you can use ccmake to change the variables interactively :
|
|
|
|
|
2012-03-17 20:27:10 +01:00
|
|
|
$ ccmake ..
|
2010-09-27 23:14:16 +02:00
|
|
|
|
|
|
|
* press (t) for advanced options if needed
|
|
|
|
* in order to change a variable :
|
|
|
|
* select the associated line using the up/down arrow keys
|
|
|
|
* press (enter)
|
|
|
|
* edit the value
|
|
|
|
* press (enter)
|
|
|
|
* press (c) for configure
|
|
|
|
* press (g) for generate
|
|
|
|
* press (e) to exit
|
|
|
|
|
|
|
|
|
2012-03-17 20:27:10 +01:00
|
|
|
Usefull CMake variables for Speed Dreams (note that some might be "advanced" ones) :
|
2010-09-27 23:14:16 +02:00
|
|
|
|
2011-10-27 11:36:18 +02:00
|
|
|
- CMAKE_BUILD_TYPE:STRING :
|
|
|
|
Debug, Release, RelWithDebInfo, MinSizeRel (def: Release)
|
|
|
|
|
|
|
|
- OPTION_OFFICIAL_ONLY:BOOL :
|
|
|
|
Build/install only official contents (def: OFF)
|
|
|
|
|
2012-03-17 20:27:10 +01:00
|
|
|
- SD_LOCALDIR:STRING :
|
|
|
|
User settings dir for run-time (def: ~/.speed-dreams-2)
|
|
|
|
|
|
|
|
- CMAKE_PREFIX_PATH:STRING :
|
|
|
|
Path prefixes for additional 3rdParty libraries (def:empty)
|
|
|
|
(use /usr/local if you compiled some 3rdParty libs yourself).
|
|
|
|
- CMAKE_INSTALL_PREFIX:PATH :
|
|
|
|
Install path for Speed Dreams (def: /usr/local)
|
|
|
|
|
2011-10-27 11:36:18 +02:00
|
|
|
- OPTION_TRACE:BOOL :
|
|
|
|
Full run-time traces if ON (def: ON)
|
2012-03-17 20:27:10 +01:00
|
|
|
|
2011-10-27 11:36:18 +02:00
|
|
|
- OPTION_TRACE_LEVEL:STRING :
|
|
|
|
Run-time traces level integer threshold, only if OPTION_DEBUG
|
|
|
|
(traces with higher level are not logged ;
|
|
|
|
0=Fatal, 1=Error, 2=Warning, 3=Info, 4=Trace, 5=Debug, ...) (def: 5)
|
|
|
|
|
|
|
|
- OPTION_UNLOAD_SSGGRAPH:BOOL :
|
|
|
|
The 'ssggraph' graphics engine module will never be unloaded if OFF (def: ON)
|
|
|
|
Usefull under some Linux configurations where this unloading badly crashes XOrg
|
|
|
|
(see http://sourceforge.net/apps/trac/speed-dreams/ticket/209),
|
|
|
|
or simply makes SD crash because PLib is shipped as a set of shared libraries
|
|
|
|
(see http://sourceforge.net/apps/trac/speed-dreams/ticket/459).
|
2011-10-27 00:19:20 +02:00
|
|
|
|
2011-10-27 11:36:18 +02:00
|
|
|
- OPTION_DEBUG:BOOL :
|
2012-03-17 20:27:10 +01:00
|
|
|
Enable debug symbols even in Release builds (def: ON)
|
2010-09-27 23:14:16 +02:00
|
|
|
|
|
|
|
Tips reported about some issues :
|
|
|
|
- sometimes, ENET_INCLUDE_DIR is not detected correctly, resulting in something like
|
|
|
|
/usr/include/enet or so, and, consequently, in bad compilation errors because
|
|
|
|
/usr/include/enet contains a special time.h header file that conflicts with the standard
|
|
|
|
one in /usr/include. Removing the "enet" postfix from ENET_INCLUDE_DIR should fix this
|
2011-10-27 11:36:18 +02:00
|
|
|
(in cmake command line or interactively through ccmake).
|
2010-09-27 23:14:16 +02:00
|
|
|
|
2011-09-29 19:17:27 +02:00
|
|
|
d - build:
|
2010-09-27 23:14:16 +02:00
|
|
|
|
2011-09-29 19:17:27 +02:00
|
|
|
$ make
|
2010-09-27 23:14:16 +02:00
|
|
|
|
2011-09-29 19:17:27 +02:00
|
|
|
e - install:
|
2010-09-27 23:14:16 +02:00
|
|
|
|
2011-09-29 19:17:27 +02:00
|
|
|
$ sudo make install
|
|
|
|
|
|
|
|
Notes:
|
|
|
|
* sudo is only useful if your install PREFIX is a read-only folder (like default /usr/local)
|
|
|
|
* sudo configuration : you may ask your system administrator to enable you to run
|
|
|
|
'sudo make install' ; if he doesn't know how, you can tell him/her
|
|
|
|
to add a line like this in /etc/sudoers (or something less permissive ;-) :
|
|
|
|
<your login name> ALL=(ALL) NOPASSWD: ALL
|
2010-09-27 23:14:16 +02:00
|
|
|
|
2012-03-17 20:27:10 +01:00
|
|
|
3 - Installation from SVN
|
2010-09-27 23:14:16 +02:00
|
|
|
|
2012-03-17 20:27:10 +01:00
|
|
|
Before you start, be aware that the SVN trunk / branches might crash or even not compile
|
|
|
|
sometimes. If you want to get it anyway, follow the instructions at
|
|
|
|
http://sourceforge.net/svn/?group_id=239111
|
2010-09-27 23:14:16 +02:00
|
|
|
|
2012-03-17 20:27:10 +01:00
|
|
|
For the moment,
|
|
|
|
- the developments for the next release are located in the trunk ;
|
|
|
|
you can checkout the current _development_ state through :
|
|
|
|
$ svn co https://speed-dreams.svn.sourceforge.net/svnroot/speed-dreams/trunk sd-trunk
|
|
|
|
- we make branches under the "branches" root dir ; as an exemple,
|
|
|
|
you can get the "1.4.x" release maintenance branch current state through :
|
|
|
|
$ svn co https://speed-dreams.svn.sourceforge.net/svnroot/speed-dreams/branches/1.4.x sd-1.4.x
|
2012-04-14 10:37:53 +02:00
|
|
|
- we make release tags under the "tags" root dir ;
|
|
|
|
as an exemple, you can get the "2.0.0 RC 1" pre-release through :
|
2012-03-17 20:27:10 +01:00
|
|
|
$ svn co https://speed-dreams.svn.sourceforge.net/svnroot/speed-dreams/tags/2.0.0-rc1 sd-2.0.0-rc1
|
2010-09-27 23:14:16 +02:00
|
|
|
|
2012-03-17 20:27:10 +01:00
|
|
|
See configure, build and install method above (2)
|
|
|
|
(note however that branches/1.4.x and tags/1.4.0 are not built through cmake :
|
|
|
|
please refer to the dedicated INSTALL file for these).
|
2010-09-27 23:14:16 +02:00
|
|
|
|
2011-09-29 19:17:27 +02:00
|
|
|
4 - Run Speed-Dreams
|
|
|
|
|
2012-04-14 10:37:53 +02:00
|
|
|
If the default CMake settings were kept, Speed Dreams is normally installed in /usr/local.
|
|
|
|
|
|
|
|
So, if /usr/local/games is already in your PATH variable, simply try :
|
2011-09-29 19:17:27 +02:00
|
|
|
|
2012-03-17 20:27:10 +01:00
|
|
|
$ speed-dreams-2
|
2011-09-29 19:17:27 +02:00
|
|
|
|
2012-04-14 10:37:53 +02:00
|
|
|
If /usr/local/games not already in your PATH variable, you may want to add it ; to do so,
|
|
|
|
simply add the line "export PATH=$PATH:/usr/local/games" to your ~/.bashrc file ;
|
|
|
|
you can use :
|
|
|
|
|
|
|
|
$ echo "export PATH=$PATH:/usr/local/games" >> ~/.bashrc" for that
|
|
|
|
|
|
|
|
Then, the above startup command should work now :
|
|
|
|
|
|
|
|
$ speed-dreams-2
|
2011-09-29 19:17:27 +02:00
|
|
|
|
2012-04-14 10:37:53 +02:00
|
|
|
If not or if the game crashes, see right below "5 - Known run-time issues".
|
|
|
|
|
|
|
|
Runtime options : type this command to get them explained :
|
2011-09-29 19:17:27 +02:00
|
|
|
|
2012-03-17 20:27:10 +01:00
|
|
|
$ speed-dreams-2 --help
|
2011-09-29 19:17:27 +02:00
|
|
|
|
2012-04-14 10:37:53 +02:00
|
|
|
5 - Known run-time issues :
|
|
|
|
|
|
|
|
* Under some Linux configurations, the game crashes after restarting a race,
|
|
|
|
of when exiting ; we have a build-time workaround for this :
|
|
|
|
see above, in II-2-c-2, the OPTION_UNLOAD_SSGGRAPH CMake option.
|
|
|
|
|
|
|
|
* If you get all white rectangles or ugly fonts in the menus,
|
|
|
|
it's likely that some game data was not properly installed ;
|
|
|
|
check again carefully the build and install instructions.
|
|
|
|
|
|
|
|
6 - Getting Help
|
2011-09-29 19:17:27 +02:00
|
|
|
|
2012-03-17 20:27:10 +01:00
|
|
|
From inside the game, press F1 at any time, you'll get a help page explaining
|
|
|
|
the available keyboard shorcuts.
|
|
|
|
|
|
|
|
If you are stuck please report problems through speed-dreams-users mailing list
|
|
|
|
or our bug tracker at http://sourceforge.net/apps/trac/speed-dreams/report.
|
2011-09-29 19:17:27 +02:00
|
|
|
|
2010-09-27 23:14:16 +02:00
|
|
|
|
|
|
|
II - Windows installation from sources
|
|
|
|
---------------------------------------
|
|
|
|
|
2011-09-29 19:17:27 +02:00
|
|
|
1) Cmake and MinGW : We want it ! Who can help us in this MinGW porting work :-?
|
|
|
|
|
2012-03-17 20:27:10 +01:00
|
|
|
2) Cmake and MS VC++ 2005 (8) / 2008 (9) / 2010 (10) on Windows XP 32
|
2010-09-27 23:14:16 +02:00
|
|
|
|
|
|
|
Note: If you use an "Express" version, don't forget to install also the Windows SDK.
|
|
|
|
|
|
|
|
a. Install CMake v2.6+ http://www.cmake.org/cmake/resources/software.html
|
2012-04-07 12:53:58 +02:00
|
|
|
b. Download the official tarballs from SF.net
|
2012-03-17 20:27:10 +01:00
|
|
|
http://sourceforge.net/projects/speed-dreams/files/2.0.0
|
|
|
|
(speed-dreams-src-<package>-<version>.tar.xz)
|
|
|
|
c. Extract their contents to your local disk (7Zip is an excellent tool for that),
|
|
|
|
all in the same target folder.
|
|
|
|
Warning: You need to extract all of the source packages in order to start building
|
|
|
|
(see ablove 2-a chapter for more).
|
2011-09-29 19:17:27 +02:00
|
|
|
d. Download the "MSVC 2005" release of the "3rdParty" package on SF.net
|
2012-03-17 20:27:10 +01:00
|
|
|
http://sourceforge.net/projects/speed-dreams/files/3rd%20party
|
2010-09-27 23:14:16 +02:00
|
|
|
(it contains necessary 3rd party libs compiled with/for MSVC 2005)
|
2011-09-29 19:17:27 +02:00
|
|
|
e. Extract from the zip file the "3rdParty" directory to where speed-dreams sources
|
|
|
|
are installed.
|
2012-03-17 20:27:10 +01:00
|
|
|
Example: If sources are in c:\gamesources\speed-dreams\src-2.0.0
|
|
|
|
(inside which you should find at least the "src" and "data" folders),
|
|
|
|
then extract 3rd party zip in c:\gamesources\speed-dreams\3rdParty
|
|
|
|
(inside which you should find at least the "include" and "lib" folders),
|
|
|
|
f. Startup CMake and set :
|
|
|
|
* "Where is the source code" to c:\gamesources\speed-dreams\src-2.0.0
|
|
|
|
* "Where to build the binaries" to c:\gamesources\speed-dreams\src-2.0.0\build
|
|
|
|
(if you follow the folder specs above).
|
|
|
|
g. Press "Configure" button, answer "Yes, create the ...\build folder"
|
|
|
|
and select the compiler.
|
2011-05-14 18:19:26 +02:00
|
|
|
Press the "Configure" button again, until the "OK" button is no more greyed.
|
2012-03-17 20:27:10 +01:00
|
|
|
h. Press the "Generate" button. CMake will generate the solution file "speed-dreams-2.sln"
|
|
|
|
and associated project files (*.vcproj) in the ...\build folder
|
|
|
|
(Note : .sln/.vcproj are OK for MSVC 2005, but you might get other files extensions
|
|
|
|
the later MSVC versions).
|
|
|
|
i. Load speed-dreams-2.sln in MSVC IDE.
|
2011-09-29 19:17:27 +02:00
|
|
|
j. Select the build configuration (Debug, Release, ...).
|
|
|
|
k. Build the whole Solution (Build / Build Solution)
|
|
|
|
l. Build the 'INSTALL' project (right click on it and select Build).
|
|
|
|
m. Double-click on speed-dreams-2.exe in c:\Program Files\speed-dreams-2\bin
|
2011-05-14 18:19:26 +02:00
|
|
|
|
2012-03-17 20:27:10 +01:00
|
|
|
Note: First-ever startups sometimes fail to correctly write the necessary stuff
|
2011-05-14 18:19:26 +02:00
|
|
|
into <My documents>\speed-dreams-2.settings and this prevents the game from starting.
|
|
|
|
If this happens, simply remove the <My documents>\speed-dreams-2.settings folder
|
|
|
|
with Windows explorer, and restart the game : it should now work.
|
2010-09-27 23:14:16 +02:00
|
|
|
|
2012-03-17 20:27:10 +01:00
|
|
|
Note: This should also work with MSVC 2008/2010.
|
|
|
|
For MSVC 2003, you'll probably need to rebuild
|
2010-09-27 23:14:16 +02:00
|
|
|
a dedicated 3rdParty package for this compiler
|
|
|
|
|
|
|
|
Note : If you need to recompile the 3rdParty package from sources,
|
|
|
|
(the "Sources" release of the "3rdParty" package on SF.net Download page)
|
|
|
|
be carefull then to rebuild :
|
|
|
|
- everything possible
|
|
|
|
- for the same configuration (don't mix Release and Debug)
|
|
|
|
- everything for multithreaded DLL integration (/MD & /MDd),
|
2012-03-17 20:27:10 +01:00
|
|
|
... or be ready for headaches, and no support at all ;-)
|
2010-09-27 23:14:16 +02:00
|
|
|
|
|
|
|
|
2011-01-12 20:32:40 +01:00
|
|
|
3) MS VC++ 6 : No more supported.
|
2010-09-27 23:14:16 +02:00
|
|
|
|
|
|
|
III - FreeBSD installation from sources
|
|
|
|
---------------------------------------
|
|
|
|
|
|
|
|
Mostly the same as for "Linux installation from sources" ...
|
|
|
|
|
|
|
|
Some specific details though :
|
|
|
|
|
2012-03-17 20:27:10 +01:00
|
|
|
2 - Installation from official tarballs
|
2010-09-27 23:14:16 +02:00
|
|
|
|
|
|
|
b - build and install:
|
|
|
|
|
2012-04-14 10:37:53 +02:00
|
|
|
1. cd $HOME/sd/2.0.0/build
|
2012-03-17 20:27:10 +01:00
|
|
|
2. ccmake ..
|
2010-09-27 23:14:16 +02:00
|
|
|
3. press (t) for advanced options
|
|
|
|
4. wanted rows CMake CPPFLAGS
|
|
|
|
5. press (enter)
|
|
|
|
6. add /usr/local/include
|
|
|
|
7. press (enter)
|
|
|
|
8. press (c) for configure
|
|
|
|
9. press (g) for generate and press (e)
|
|
|
|
10. make && sudo make install
|
|
|
|
|
|
|
|
|
|
|
|
TO BE COMPLETED
|
|
|
|
|
|
|
|
|
|
|
|
IV - MacOS X installation from sources
|
|
|
|
--------------------------------------
|
|
|
|
|
|
|
|
To do ...
|
|
|
|
|