/* ======================================================================== *\
!
! *
! * This file is part of MARS, the MAGIC Analysis and Reconstruction
! * Software. It is distributed to you in the hope that it can be a useful
! * and timesaving tool in analysing Data of imaging Cerenkov telescopes.
! * It is distributed WITHOUT ANY WARRANTY.
! *
! * Permission to use, copy, modify and distribute this software and its
! * documentation for any purpose is hereby granted without fee,
! * provided that the above copyright notice appear in all copies and
! * that both that copyright notice and this permission notice appear
! * in supporting documentation. It is provided "as is" without express
! * or implied warranty.
! *
!
!
!   Author(s): Thomas Bretz  12/2000 (tbretz@uni-sw.gwdg.de)
!
!   Copyright: MAGIC Software Development, 2000-2001
!
!
\* ======================================================================== */

Bool_t isloaded()
{
    TString str = gSystem->GetLibraries("*/mars.so");

    return !str.IsNull();
}

void unload()
{
    if (!isloaded())
        return;

    cout << "Unloading 'mars.so'... " << flush;
    if (gSystem->Unload("mars.so"))
        cout << "error." << endl;
    else
        cout << "done." << endl << endl;
}

void load()
{
    if (isloaded())
        return;

    cout << "Loading 'mars.so'... " << flush;

    if (gSystem->Load("mars.so")!=0)
        cout << "error." << endl;
    else
    {
        MParContainer::Class()->IgnoreTObjectStreamer();
        MArray::Class()->IgnoreTObjectStreamer();
        cout << "done." << endl;
    }

    cout << endl;
}

void make()
{
    unload();

    if (gSystem->Exec("make"))
    {
        cout << "Error calling make..." << endl;
        return;
    }

    load();
}

void rootlogon()
{
    cout << endl;

    load();

    gInterpreter->AddIncludePath("macros");
    gInterpreter->AddIncludePath("manalysis");
    gInterpreter->AddIncludePath("mbase");
    gInterpreter->AddIncludePath("mdata");
    gInterpreter->AddIncludePath("mfileio");
    gInterpreter->AddIncludePath("mfilter");
    gInterpreter->AddIncludePath("mgeom");
    gInterpreter->AddIncludePath("mgui");
    gInterpreter->AddIncludePath("mhist");
    gInterpreter->AddIncludePath("mmain");
    gInterpreter->AddIncludePath("mmc");
    gInterpreter->AddIncludePath("mmontecarlo");
    gInterpreter->AddIncludePath("mraw");
    gInterpreter->AddIncludePath("mtools");

    if (TString("linux")==gSystem->GetBuildArch())
    {
        TString options = " -O -pipe -Wall -Woverloaded-virtual -fno-rtti -fno-exceptions -fPIC ";

        TString s = "cd $BuildDir ; ";
        s += "g++ -c" + options + "-Iinclude -D_REENTRANT $IncludePath $SourceFiles ; ";
        s += "g++ $ObjectFiles -shared -Wl,-soname,$LibName.so -O -o $SharedLib";
        gSystem->SetMakeSharedLib(s);
    }

    cout << "Welcome to the Mars Root environment." << endl;

    cout << endl;
}
