------------------------------------------------------------------------------
--                                                                          --
--                           POLYORB COMPONENTS                             --
--                                                                          --
--         Copyright (C) 1999-2019 Free Software Foundation, Inc.           --
--                                                                          --
-- PolyORB is free software; you  can  redistribute  it and/or modify it    --
-- under terms of the  GNU General Public License as published by the  Free --
-- Software Foundation;  either version 2,  or (at your option)  any  later --
-- version. PolyORB is distributed  in the hope that it will be  useful,    --
-- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
-- License  for more details.  You should have received  a copy of the GNU  --
-- General Public License distributed with PolyORB; see file COPYING. If    --
-- not, write to the Free Software Foundation, 59 Temple Place - Suite 330, --
-- Boston, MA 02111-1307, USA.                                              --
--                                                                          --
-- As a special exception,  if other files  instantiate  generics from this --
-- unit, or you link  this unit with other files  to produce an executable, --
-- this  unit  does not  by itself cause  the resulting  executable  to  be --
-- covered  by the  GNU  General  Public  License.  This exception does not --
-- however invalidate  any other reasons why  the executable file  might be --
-- covered by the  GNU Public License.                                      --
--                                                                          --
--                  PolyORB is maintained by AdaCore.                       --
--                     (email: sales@adacore.com)                           --
--                                                                          --
------------------------------------------------------------------------------

This file details the compilation and installation of PolyORB.

For more details about build requirements, supported compilers,
supported platforms and platform-specific information, please refer
to the PolyORB User's Guide.

Build instructions
------------------

NOTE: Developers building PolyORB from the version control repository
who need to rebuild the configure and Makefile.in files should run the
following command from within the top-level source dir:

  % support/reconfig

This should be done after each update from the repository.
In addition to the requirements above, they will need autoconf 2.60 or
newer, automake 1.6.3 or newer, and libtool 1.5.8 or newer.

NOTE: A ready to used generic version of `configure` is available. The PolyORB version
and date are replaced by place holder.
It can be updated using:
  % utils/adapt_configure
It can be generated using
  % utils/prepare_distrib -G <path to root>


To install PolyORB, execute:

  % ./configure [some options]
  % make
  % make install

This will install files in standard locations.

If you want to choose another prefix than /usr/local, give configure a
--prefix=whereveryouwant argument.

NOTE: you MUST use GNU make (version 3.80 or later) to build PolyORB.

Available options for the 'configure' script include:

  --with-appli-perso="...": application personalities to build
      Available personalities: CORBA, DSA, MOMA
      e.g.   --with-appli-perso="corba moma" to build both the CORBA 
             and MOMA personalities

  --with-proto-perso="...": personalities to build
      Available personalities: GIOP, SOAP, SRP
      e.g.   --with-proto-perso="giop soap" to build both the GIOP 
             and SOAP personalities

  --with-corba-services="...": CORBA COS services to build
      Available services: event, ir, naming, notification, time
      e.g.  --with-corba-services="event naming" to build only
      COS Event and COS Naming.	

  --with-openssl[=ARG]: build SSL support and SSL dependent features,
    including the IIOP/SSLIOP personality

  --with-gnatcoll: build with GNATCOLL support

  --help: list all options available

By default, only the CORBA and GIOP personalities are built, no CORBA
Services are built.

  --enable-shared:    build shared libraries.

  --enable-debug:     enable debugging information generation and supplementary
                      runtime checks.

  --enable-debug=all: like the above, and also enable full validity checks

The following environment variables can be used to override configure's
guess at what compilers to use:
  CC:  the C compiler
  ADA: the Ada 95 compiler (e.g. gcc, gnatgcc or adagcc)

For example, if you have two versions of GNAT installed and available
in your PATH, and configure picks the wrong one, you can indicate
what compiler should be used with the following syntax:

ADA=/path/to/good/compiler/gcc ./configure [options]


Installation instruction for Windows
------------------------------------

The following tools are needed to install PolyORB on Windows.

  - MinGW + MSYS
    The packages mingw32-base and msys-base need to
    be installed via the MinGW Installation Manager.

  - Python
    The 2.7 version is required. The 3.x versions will not work.

  - GNAT
    e.g. the GNAT Community edition

Follow these instructions. Path names are usually examples.
Start MSYS:

  Start C:\MinGW\msys\1.0\msys.bat

This opens the MINGW32 console where all
the following commands should be entered.
Tell MSYS where to find the GNAT compiler and Python:

  export PATH=/c/GNATPRO/20.0/bin/:/c/Python27/:$PATH

Change to the folder where the PolyORB sources are located:

  cd /c/PolyORB

Call the support/reconfig script:

  support/reconfig

Call the configure script, change the prefix to the desired
location where PolyORB will be installed. Adjust the parameters
to build the wanted sub components:

  ./configure –prefix=C:/GNATPRO/20.0/ \
    --with-appli-perso="corba dsa moma" \
    --with-proto-perso="giop soap srp" \
    --with-corba-services="event ir naming notification time" \
    --with-openssl --with-gnatcoll

Now the notation of some paths need to be fixed.
Open C:\PolyORB\projects\polyorb_config.gpr with a text editor.
Turn these lines into Windows path notation, i.e. from

    Top_Source_Dir := "/c/PolyORB/";
    Top_Build_Dir := "/c/PolyORB/";

to

    Top_Source_Dir := "C:/PolyORB/";
    Top_Build_Dir := "C:/PolyORB/";

Build PolyORB:

  make top_builddir=C:/PolyORB

Install PolyORB:

  make install top_builddir=C:/PolyORB top_srcdir=C:/PolyORB

Verify PolyORB:

  cd C:/PolyORB/examples/dsa/echo
  /c/GNATPRO/20.0/bin/po_gnatdist.exe echo.cfg
  client.exe
