------------- EIFFEL (v2.3) SYSTEM DESCRIPTION FILE (version UNSA) ---------
-- Pour les cas simples, donner seulement le nom de la classe racine ROOT: nom
-- et verifier les options pour les assertions (mettre ou retirer les "--").

-- EVITER D'UTILISER LES OPTIONS OPTIMIZE, SAUF POUR LE PACKAGING FINAL
-- NE JAMAIS UTILISER OPTIMIZE AVEC DES ASSERTIONS !!!
-- N'UTILISER ALL_ASSERTIONS QUE POUR VOS CLASSES: PAS CELLES DE LA BIBLIO.

-- CONSEILS POUR LE CHOIX DES OPTIONS: A LA FIN DE CE FICHIER
-- Explications completes: faire man es ou lire la doc ``The Environnement'' 
-----------------------------------------------------------------------------

ROOT: 

--------- DEFINITION DE L'UNIVERS: ACCES AUX SOURCES EIFFEL ----------------

UNIVERSE: -- Verifier / completer / supprimer les repertoires ci-dessous
  $EIFFEL/library/support
  $EIFFEL/library/structures
------- Bibliotheques locales
--  $EIFFEL/library/local                 -- => EXTERNAL local.a
------- Bibliotheques pour environnemnt Xwindow
--    $EIFFEL/library/graphics/extensions -- => EXTERNAL graphiclib.a -lm -lX11
--    $EIFFEL/library/graphics/figure     -- => EXTERNAL graphiclib.a -lm -lX11
--    $EIFFEL/library/graphics/window     -- => EXTERNAL graphiclib.a -lm -lX11
------- Bibliotheques pour environnemnt Terminaux alphanumeriques
--    $EIFFEL/library/winpack/window      -- => EXTERNAL winpack.a + -ltermcap
--    $EIFFEL/library/winpack/editor      -- => EXTERNAL winpack.a + -ltermcap
------- Bibliotheques pour la compilation
--    $EIFFEL/library/lexical             -- => EXTERNAL lexical.a
--    $EIFFEL/library/parsing             -- => EXTERNAL lexical.a
------- Bibliotheques pour parcours de structures
--    $EIFFEL/library/iterations
--    $EIFFEL/library/structures/Beta

--------- BINAIRES NON EIFFEL (interfacage avec langage C) ------------------
-- Syntaxe: { file.o | archive.a | -llibrary }*

EXTERNAL: -- Verifier / completer / supprimer les binaires ci-dessous
   -lm                               -- library mathematique
--	$EIFFEL/files/local.a             -- pour local
-- $EIFFEL/files/graphiclib.a /usr/lib/X11/libX11.a  -- pour graphics
-- $EIFFEL/files/winpack.a -ltermcap -- pour winpack
-- $EIFFEL/files/lexical.a           -- pour lexical/parsing

--------- OPTIONS POUR LES ASSERTIONS --------------------------------------
-- Syntaxe: (Y|N): ALL | {class}*

-- NO_ASSERTION_CHECK (Y): ALL
PRECONDITIONS      (Y): ALL
-- ALL_ASSERTIONS     (Y): ALL

--------- POST-PROCESSEUR (pour phase operationnelle finale) ----------------
-- Utiliser les commandes Unix batch ou at pour generer un package: tres lent
-- OPTIMIZE  (Y): ALL
-- C_PACKAGE (Y): CPACK -- resultat dans repertoire PACKAGE
-- Pour que CPACK ait en plus une forme transportable =>
-- VISIBLE (Y):   -- {class}* : celles dont les rout. exportees le seront aussi
-- C_EXTERNAL:    -- {file.c | file.h}* : fichiers a` inclure dans le PACKAGE
-- MAKE:          -- Makefile : pour construire les binaires externes

---------- OPTIONS RARES ----------------------------------------------------
-- GARBAGE_COLLECTION (Y): -- (Y|N) seulement si necessaire
-- DEBUG (Y): ALL          -- (Y|N): ALL | {class}* -- pour intructions debug
-- TRACE (Y): classes      -- (Y|N): ALL | {class}* -- preferer eb ou et !
-- KERNEL: dirname*        -- si le kernel standard ne vous plait pas

---------- CONSEILS POUR LE CHOIX DES OPTIONS -------------------------------
-- Rappels: faire man es ou lire la brochure ``The environnement'' ou
-- lire la fin du fichier $EIFFEL/files/.eiffelmodel.ori
-- On considere qu'un TP d'e'tudiant ne de'passe pas l'e'tape 2)
-- Pour un projet, il est recommande' d'aller jusqu'a` l'e'tape finale

-- 1) mise au point : execution tres lente a cause des invariants
--    Le programme peut contenir de erreurs de programmation

--    NO_ASSERTION_CHECK (N):
--    PRECONDITIONS (Y): ALL
--    ALL_ASSERTIONS (Y): toutes les classes a` tester

-- 2) demo finale : execution assez lente mais acceptable pour une demo
--    Toutes les erreurs ont e'te' traque'es, mais il peut encore en rester...
--    A PARTIR DE CETTE ETAPE ET DANS LES SUIVANTES, NE PAS OUBLIER DE STRIPPER
--    (commande unix: strip nom_executable)
--    NO_ASSERTION_CHECK (N):
--    PRECONDITIONS (Y): ALL
--    ALL_ASSERTIONS (N):

-- 3)  beta test: gaine de vitesse d'un facteur souvent de 15 par rapport a 2)
--     En principe il n'y a plus d'erreurs: sinon revenir en 2)

--    NO_ASSERTION_CHECK (Y): ALL
--    PRECONDITIONS (N): 
--    ALL_ASSERTIONS (N):

-- 4) operationnel: execution sans assertion + optimisation maximale
--    = gain de vitesse de 3 ou 4 par rapport a 3)
--    mais tres lent a produire: utiliser la commande unix batch ou at.
--    exemples: batch  | at 0400
--             es
--             ^D

--    NO_ASSERTION_CHECK (Y): ALL
--    PRECONDITIONS (N): 
--    ALL_ASSERTIONS (N):
--    OPTIMIZE (Y): ALL
--    GARBAGE_COLLECTION (N)
--    C_PACKAGE (Y): CPACK

-- On recupere un makefile et un executable dans le repertoire CPACK.
-- On gagne beaucoup en vitesse et place. (Ne pas oublier de striper)
-- SUR DEC MIPS, on peut encore ameliorer en relancant les compilations
-- de tous les sources avec l'option -O3 ou -O4. (gain de 30%). C'est assez
-- delicat a faire: modifier le Makefile pour compiler aussi le RUN_TIME...
-- et le resultat n'est pas garanti pour les gros programmes.
