#
# This file gives installation instructions on how to get started with cybop.
#
# Cybernetics Oriented Programming (CYBOP) <http://www.cybop.org/>
# Christian Heller <christian.heller@tuxtax.de>
#
# @version CYBOP 0.11.0 2012-01-01
# @author Christian Heller <christian.heller@tuxtax.de>
#

CYBOP Installation
__________________

- Change into some directory, e.g.:

    cd /home/cybop

- Extract the cybop-x.x.x.tar.gz or cybop-x.x.x.tar.bz2 file, respectively, e.g.:

    tar -xvzf cybop-0.9.0.tar.gz
    tar -xvjf cybop-0.9.0.tar.bz2

Package and Library Installation
________________________________

The following (Debian) packages are needed to execute CYBOL applications:
xorg

The following (Debian) packages are needed to compile CYBOI:
autotools (autoconf, automake)
xorg-dev
xlibs-dev (now possibly contained in xorg-dev)
glut or freeglut3 or the like
mesa etc.

CYBOI Compilation
_________________

- Change into cybop's root directory, e.g.:

    cd /home/cybop

- Set the executable flag for the autogen file, e.g.:

    chmod ugo+x /home/cybop/autogen.sh

- Execute the configure files with:

    ./autogen.sh
    ./configure

- Clean the object files of any previous compilation (this is optional):

    make clean

- Execute the make file with:

    make

Note, that the configure process and make system are prepared to be used on
the platforms: GNU/Linux, Windows (mingw environment), Linux 64bits.
The configure script forces the 32 bits emulation mode by using special options
of gcc and other binutils. Native 32 bits Linux and Windows was not tested, however.


CYBOL Application Execution
___________________________

- Set the executable flag for the cyboi binary file, e.g.:

    chmod ugo+x /home/cybop/src/controller/cyboi

- Change into the base directory of your cybol applications, e.g.:

    cd /home/cybop/examples

- Execute cyboi and give the "run.cybol" file of an application as argument, e.g.:

    /home/cybop/src/controller/cyboi --knowledge exit/run.cybol
    /home/cybop/src/controller/cyboi --knowledge exit_signal/run.cybol
    /home/cybop/src/controller/cyboi --knowledge exit_cybol_file/run.cybol
    /home/cybop/src/controller/cyboi --knowledge shell_output/run.cybol
    /home/cybop/src/controller/cyboi --knowledge shell_output_file/run.cybol
    /home/cybop/src/controller/cyboi --knowledge shell_output_sequence/run.cybol
    /home/cybop/src/controller/cyboi --knowledge if-else/run.cybol
    /home/cybop/src/controller/cyboi --knowledge shell_output_branch/run.cybol
    /home/cybop/src/controller/cyboi --knowledge shell_output_loop/run.cybol
    /home/cybop/src/controller/cyboi --knowledge shell_command_execution/run.cybol
    /home/cybop/src/controller/cyboi --knowledge programme_execution/run.cybol
    /home/cybop/src/controller/cyboi --knowledge addition/run.cybol
    /home/cybop/src/controller/cyboi --knowledge addition_dynamic_model/run.cybol
    /home/cybop/src/controller/cyboi --knowledge addition_dynamic_model_with_root/run.cybol
    /home/cybop/src/controller/cyboi --knowledge addition_static_model/run.cybol
    /home/cybop/src/controller/cyboi --knowledge counter/run.cybol
    /home/cybop/src/controller/cyboi --knowledge counter_static_model/run.cybol
    /home/cybop/src/controller/cyboi --knowledge counter_storage/run.cybol
    /home/cybop/src/controller/cyboi --knowledge time_output_1/run.cybol
    /home/cybop/src/controller/cyboi --knowledge time_output_2/run.cybol
    /home/cybop/src/controller/cyboi --knowledge time_output_3/run.cybol
    /home/cybop/src/controller/cyboi --knowledge helloworld/run.cybol
*NOT FUNCTIONING YET*    /home/cybop/src/controller/cyboi --knowledge ui_control/run.cybol
*NOT FUNCTIONING YET*    /home/cybop/src/controller/cyboi --knowledge http_communication/run.cybol
*NOT FUNCTIONING YET*    /home/cybop/src/controller/cyboi --knowledge presence/run.cybol

To make the client-server communication work in the "http_communication" example,
type the following URL into a web browser after having started the application:
http://localhost:1971/?action=index

You may also want to have a look at the Res Medicinae project, where more CYBOL
application modules for the healthcare domain will be provided over the coming years:
http://www.resmedicinae.org/


CYBOI Development
_________________

If new files are added to the "src" or "src/controller" directories, one needs to
add their name in the EXTRA_DIST variable at the top of the respective Makefile.am
file and run autogen.sh.
In the other directories, it isn't necessary because they are completely and recursively
included during the packaging (see the EXTRA_DIST variable in Makefile.am files).

If any of the environment flags are changed in the source code, e.g.:
"LINUX_OPERATING_SYSTEM" to "GNU_LINUX_OPERATING_SYSTEM",
the Makefile.am file in the src/controller/ directory needs to be
adapted and ./autogen.sh run afterwards to update the autotools!
The "build-aux" directory and other files more are generated by autogen.sh.

The target "make clean" may always be executed before the actual "make",
but is this not necessary, since make tests the modification date of each
source file and that way knows if it has to recompile the executable.

Another point to use make targets for is the generation of the documentation.


Tagging SVN
___________

Tagging and branching are very simple in SVN.
The root node of the trunk/ directory is just copied.
The graphical kdesvn application does not provide this functionality.
Therefore, adapt and use the following command line:

svn copy https://christian@svn.savannah.nongnu.org/cybop/trunk https://christian@svn.savannah.nongnu.org/cybop/tags/cybop-0.10.0 -m "Tag the cybop-0.10.0 release"


CYBOP Distribution
__________________

- Modify the CYBOP version number in the file configure.ac, e.g.:

    AC_INIT([cybop], [0.9.0], [christian.heller@tuxtax.de])

- Change into cybop's root directory, e.g.:

    cd /home/cybop

- Run the autogen.sh script (requires autoreconf to be installed) to update all autotools files:

    ./autogen.sh

- Execute the configure file with:

    ./configure

- Produce the archives (cybop-x.x.x.tar.gz and cybop-x.x.x.tar.bz2) to be distributed:

    make dist

CYBOP Packaging
_______________

- Install the checkinstall Debian package:

    apt-get install checkinstall

- Execute the checkinstall command with:

    checkinstall

- Configure package answering the checkinstall questions
