******************************************************************************
* Copyright (c) 2000-2021 Ericsson Telecom AB
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
*  Contributors:
*   Balasko, Jeno
*   Baranyi, Botond
*   Pilisi, Gergely
******************************************************************************

Please be aware that due to the incompatibility of EPL and GPL licenses, one may not link EPL and GPL code together 
and distribute the result. ( see https://mmilinkov.wordpress.com/2010/04/06/epl-gpl-commentary/). However 
from pure technical standpoint Titan can be compiled on GPL-licensed Cygwin as detailed below.

Last tested cygwin version: 3.2.0

Cygwin setup
    - If Cygwin is installed already, refresh your Cygwin installation
      Titan is always build for the newest Cygwin version available. 
      Start the Cygwin setup utility (see below), it will refresh your
      installed Cygwin packages to the newest versions.
    - If Cygwin is not installed yet:
  
   (A) Download and execute the latest cygwin installer utility, 
       please use the 64-bit version installer:
       https://cygwin.com/setup-x86_64.exe
       Latest setup version 2.908 (64 bit)
  
   (B) Select Install from Internet (recommended to save local disk space)
   
   (C) Choose Cygwin installation root directory (C:\cygwin64 is recommended)
       Select All Users, or Just Me.
   
   (D) Select "Local Package Directory" (typically the same directory,  
       where the setup....exe Cygwin installer utility is stored).
   
   (E) Use Internet Explorer Proxy Settings (recommended).
   
   (F) Select a download mirror site.
   
   (G) In the package selection dialog, 
       Note: You can select different views to find the required packages
       easier and/or search the packages via the search field.
       
       There are 3 hierarchical levels of minimally required packages, 
       depending on your task.
       Note: Cygwin installer will automatically select the packages the
             manually selected ones are depending on; do NOT deselect
             any automatically selected package!
  a) Test execution ONLY (command line or from Eclipse Executor):
    Base: <all packages> (Default setting of the installer)
    Net: openssl
    Tcl: expect
  b) Test case development: in addition to the above select the 
     following packages:
    Devel: binutils
    Devel: gcc-g++
    Devel: make
    Libs: libxml2-devel
    Net: libssl-devel ( instead of openssl-devel - obsolete!!! )
  c) To compile your own Titan Cygwin binary: in addition to the
           above, select the following packages:
    Devel: bison
    Devel: ctags
    Lib: libexpat1 (installed by default)
    Lib: libiconv-devel
    Lib: libiconv2  (installed by default)
    Devel: diffstat
    Devel: flex
    Devel: gcc-core
    Editors: <any editor of your preference> (optional)
    Libs: libncurses-devel
    Libs: libreadline-devel
    Libs: libedit-devel
    Doc or Text: asciidoc 
    
  If, after selecting the required packages and clicking on the 
  "Next" button, a "Resolving Dependcies" window lists further 
  required packages, ensure that the "Select required packages 
  (RECOMMENDED)" checkbox is checked and click the "Next" button.
  
   (H) Select the Create icon on Desktop checkbox
   
    (I) Change <your home directory> (optional):
       Your "unix" home directory, by default is:
       <your cygwin installation directory>/home/<yourUserId>
       If you are (also) working in command line mode, it is a good 
       practice to change this to the folder where your TTCN-3 projects 
       are.

       In older cygwins: 
       Edit the file <your cygwin installation directory>/etc/passw:
       In the line:
       <yourUserId>:unused:<xxxxxx>:<yyyyy>:U-<yourDomain>\<yourUserId>,
       S-1-5-21-nnnnnn...nnnnnn:/home/<yourUserId>:/bin/bash
       replace "/home/<yourUserId>" with the folder of your preference.
       Note: you can access all Windows drives from Cygwin as
       /cygdrive/<windowsDriveLetter>".
       Example: to set your "unix" home directory to the "My_Home" folder 
       within your Windows Documents folder, you should replace 
       "/home/<yourUserId>" by 
       "/cygdrive/c/Users/<yourUserId>/Documents/My_Home"

       Starting with Cygwin 1.7.34 or later, set "db_home" in file "/etc/nsswitch.conf".
       Fore example set:
       "db_home:  /cygdrive/c/Users/<yourUserId>/Documents/My_Home".

       After changing your home directory,
       copy the .bashrc and the .profile file from the old home directory to the new home directory
       (from <your cygwin installation directory>/home/<yourUserId> to "/cygdrive/c/Users/<yourUserId>/Documents/My_Home")
       
       WARNING: The path of your "unix" home directory shall not contain
                any space!

    (I1)If you are working with Titan plugins for Eclipse or any Windows based program 
        using cygwin commands, insert the Windows equivalent path of cygwin folders "/bin" or/and "/usr/bin" 
        into the Windows environment variable "Path". For example if the cygwin root is "C:\cygwin64" then 
        Path should contain  "C:\cygwin64\bin;C:\cygwin64\usr\bin".

   (J)Using the binary Titan package: 
      Download the Titan package from
      https://projects.eclipse.org/projects/tools.titan/downloads.
      Unpack the Titan package into a folder of your choice (for example ${HOME}/titan.core)
      Note: It is not a requirement, but is a kind of best practice to 
            place Titan into a subfolder within your "unix" home directory.
      Edit the <your cygwin installation directory>/home/<yourUserId>/.bashrc
      file ( or "/cygdrive/c/Users/<yourUserId>/Documents/My_Home/.bashrc"). Add these lines to it:
        export TTCN3_DIR=${HOME}/titan.core
        export PATH=${TTCN3_DIR}/bin:${PATH}
        export LD_LIBRARY_PATH=${TTCN3_DIR}/lib:${LD_LIBRARY_PATH}

  or(K) Using TITAN from source code
    
	(K1)Get the latest source code from GitLab:
      - First time:
        cd ~/git
        git clone https://gitlab.eclipse.org/eclipse/titan/titan.core.git
        //Folder titan.core will be created
      - Updating the already existing local repository:
        cd ~/git/titan.core
        git pull https://gitlab.eclipse.org/eclipse/titan/titan.core.git
    
	(K2) Download and install JDK from Oracle's download site:
     http://www.oracle.com/technetwork/java/javase/downloads/index.html
	
	(K3) If you want generate pdf documents from your .adoc files (asciidoc files), execute this command:
		  gem install asciidoctor-pdf
    
	(K4) Compile Titan with Cygwin:

    Edit the <your home directory>/.bashrc, as above in (J), add these lines to it: 
      export TTCN3_DIR=${HOME}/git/titan.core/Install
      export PATH=.:${TTCN3_DIR}/bin:${PATH}
      export LD_LIBRARY_PATH=${TTCN3_DIR}/lib:${LD_LIBRARY_PATH}
    Create titan.core/Makefile.personal with the following content:    
            TTCN3_DIR := <your home directory>/git/titan.core/Install
            JDKDIR := /home/<user id>/jdk
            JNI := no
            GUI := no
            GEN_PDF := no
            DEBUG := no
            OLD_LIBEDIT := yes # if the first line of /usr/include/editline/readline.h
                               # contains v1.34 or older i.e version of editline is 0:53:0 or older.
    Compile Titan:
          cd titan
          make dep
          make -j  
          make install
    The compiled files will be placed into the titan.core/Install directory. 
  
  (L) If you want to use graphical tools (like nedit for example), then you need to install the Cygwin/X
      component too. The install procedure can be found at the homepage:
      http://x.cygwin.com/docs/ug/cygwin-x-ug.html
	  
  (M) Continue from here with the Titan installation guide and the Eclipse plug-ins installation guide.
  Recommendation is that you install Eclipse under Windows (not within the Cygwin environment).
  
  
