#!/bin/csh

#######################################################################################################################################
#                                                                                                                                     #
#         G E N E R A T I O N   D U   P R E _ P R O C E S S E U R   ' C P P '  :                                                      #
#                                                                                                                                     #
#                                                                                                                                     #
#         Utilisation :                                                                                                               #
#                                                                                                                                     #
#                   $xcp/cpp$D/GENERE$Z                                                                                               #
#                                                                                                                                     #
#                                                                                                                                     #
#         Author of '$xcp/cpp$D/GENERE$Z' :                                                                                           #
#                                                                                                                                     #
#                     Jean-Francois COLONNA (LACTAMME, AAAAMMJJhhmmss).                                                               #
#                                                                                                                                     #
#######################################################################################################################################

source    $xcc/PeutOnCompiler$vv$Y
                                        # Introduit le 20240712075830 depuis que la vraie '$CMAP28' est devenue incompatible au       #
                                        # niveau des '$X's avec les fausses '$CMAP28's...                                             #

set  Racine_cpp="$K_VIDE"
set  Racine_cpp="beau_"
                                        # Cette variable permet de choisir entre l'ancien et le nouveau (ou "beau") cpp...            #

xcp
CD        cpp$D
direct    $cwd
unset     xCWD
set       xCWD=$nDirectory

saut 3
set  date=`d`
echo "$Prompt"$date
                                        # Edition de la date.                                                                         #
echo "$Prompt""Directory = "$xCWD
                                        # Edition du directory d'appartenance du fichier.                                             #
echo "$Prompt""Generation du pre-processeur cpp"'$X'" :"
if   (-e $xcp/cpp$X) then
     $DELETE   $xcp/cpp$X
else
endif
if   (-e "$Racine_cpp"cpp$O) then
     $DELETE   "$Racine_cpp"cpp$O
else
endif
if   (-e "$Racine_cpp"cpy$O) then
     $DELETE   "$Racine_cpp"cpy$O
else
endif

set  use_Ccw=$NEXIST
                                        # A priori, on n'utilise pas (jamais) '$Ccw'...                                               #

switch    ("$SYSTEME")
                                        # Compilation du fichier 'cpp$c'.                                                             #
     case "SYSTEME_APC_LinuxMandrake_GCC":
     case "SYSTEME_CRAY2_UNICOS_CC":
     case "SYSTEME_CRAY2_UNICOS_SCC":
     case "SYSTEME_CRAYC98_UNICOS_CC":
     case "SYSTEME_CRAYC98_UNICOS_SCC":
     case "SYSTEME_CRAYC916_UNICOS_CC":
     case "SYSTEME_CRAYC916_UNICOS_SCC":
     case "SYSTEME_CRAYYMP1_UNICOS_CC":
     case "SYSTEME_CRAYYMP1_UNICOS_SCC":
     case "SYSTEME_CRAYYMP2_UNICOS_CC":
     case "SYSTEME_CRAYYMP2_UNICOS_SCC":
     case "SYSTEME_CRAYYMP4_UNICOS_CC":
     case "SYSTEME_CRAYYMP4_UNICOS_SCC":
     case "SYSTEME_DECALPHA340_OSF1_GCC":
     case "SYSTEME_DECALPHA350_OSF1_GCC":
     case "SYSTEME_DPX2000_SPIX_CC":
     case "SYSTEME_DPX5000_SPIX_CC":
     case "SYSTEME_FX40_CONCENTRIX_CC":
     case "SYSTEME_FX40_CONCENTRIX_FXC":
     case "SYSTEME_HP705_HPUX_CC":
     case "SYSTEME_HP710_HPUX_CC":
     case "SYSTEME_HP720_HPUX_CC":
     case "SYSTEME_HP750_HPUX_CC":
     case "SYSTEME_HP755_HPUX_CC":
     case "SYSTEME_HP819_HPUX_CC":
     case "SYSTEME_NWS3000_NEWSOS_CC":
     case "SYSTEME_RS6000_AIX_CC":
     case "SYSTEME_SUN3_SUNOS_CC":
     case "SYSTEME_SUN4_SUNOS_CC":
     case "SYSTEME_SPS9_ROS_CC":
     case "SYSTEME_SPS9_ROS_RC":
     case "SYSTEME_VAX8600_ULTRIX_CC":
     case "SYSTEME_VAX8600_ULTRIX_VCC":
          $Cc  -O -c "$Racine_cpp"cpp$c -Dunix -D$MACHINE             |& $SE -f $xcc/cb$D/sup.Copyrig$sed
          breaksw
     case "SYSTEME_APC_LinuxDebian_GCC":
                                        # Deplace ici le 20041206111059 pour '$LACT17'...                                             #
     case "SYSTEME_APC_LinuxRedHat_GCC":
     case "SYSTEME_APC_LinuxUbuntu_GCC":
     case "SYSTEME_APC_LinuxUbuntu_ICC":
     case "SYSTEME_APC_LinuxUlmint_GCC":
     case "SYSTEME_APC_LinuxUlmint_ICC":
          set  use_Ccw=$EXIST
                                        # Et bien, on a utilise au moins une fois '$Ccw'...                                           #

          $Ccw -O -c "$Racine_cpp"cpp$c -Dunix -D$MACHINE             |& $SE -f $xcc/cb$D/sup.Copyrig$sed
                                        # L'option '-w' est utilisee parce que le pre-processeur ne supporte pas que "#else" et       #
                                        # "#endif" aient des arguments, ce qui donne le message :                                     #
                                        #                                                                                             #
                                        #                   warning: extra tokens at end of #else directive                           #
                                        #                                                                                             #
                                        # Cela a ete mis en place le 20031028103446 pour '$LACT16'...                                 #
          breaksw
     case "SYSTEME_DECALPHA340_OSF1_CC":
     case "SYSTEME_DECALPHA350_OSF1_CC":
     case "SYSTEME_DECALPHA464_OSF1_CC":
          set  use_Ccw=$EXIST
                                        # Et bien, on a utilise au moins une fois '$Ccw'...                                           #

          $Ccw -c "$Racine_cpp"cpp$c -Dunix -D$MACHINE                |& $SE -f $xcc/cb$D/sup.Copyrig$sed
                                        # L'option '-w' est utilisee parce que le compilateur detecte les instructions non atteintes  #
                                        # et dit alors :                                                                              #
                                        #                                                                                             #
                                        #                   uopt: Warning: control: part(s) of procedure have no exit point           #
                                        #                                                                                             #
                                        # c'est le cas d'un 'return(0);' dans la fonction 'control(...)'.                             #
          breaksw
     case "SYSTEME_FX2800_CONCENTRIX_FXC":
     case "SYSTEME_FX2800_CONCENTRIX_PCC":
     case "SYSTEME_FX2800_CONCENTRIX_SCC":
     case "SYSTEME_ES9000_AIX_CC":
          set  use_Ccw=$EXIST
                                        # Et bien, on a utilise au moins une fois '$Ccw'...                                           #

          $Ccw -c "$Racine_cpp"cpp$c -Dunix -D$MACHINE                |& $SE -f $xcc/cb$D/sup.Copyrig$sed
                                        # L'option '-w' est utilisee parce que le compilateur detecte les boucles "infinies"...       #
          breaksw
     case "SYSTEME_NWS3000_NEWSOS_2CC":
          set  use_Ccw=$EXIST
                                        # Et bien, on a utilise au moins une fois '$Ccw'...                                           #

          $Ccw -c "$Racine_cpp"cpp$c -Dunix -D$MACHINE                |& $SE -f $xcc/cb$D/sup.Copyrig$sed
                                        # L'option '-w' est utilisee parce que le compilateur detecte les instructions non atteintes  #
                                        # et dit alors :                                                                              #
                                        #                                                                                             #
                                        #                   ccom: Warning: cpp.c, line ...: statement not reached                     #
                                        #                                                                                             #
                                        # c'est le cas d'un 'return(0);' dans la fonction 'control(...)'.                             #
          breaksw
     case "SYSTEME_SG4D20G_IRIX_CC":
     case "SYSTEME_SG4D25TG_IRIX_CC":
     case "SYSTEME_SG4D310VGX_IRIX_CC":
     case "SYSTEME_SG4D35TG_IRIX_CC":
     case "SYSTEME_SG4D85GT_IRIX_CC":
          set  use_Ccw=$EXIST
                                        # Et bien, on a utilise au moins une fois '$Ccw'...                                           #

          $Ccw -c "$Racine_cpp"cpp$c -Dunix -D$MACHINE                |& $SE -f $xcc/cb$D/sup.Copyrig$sed
                                        # L'option '-w' est utilisee parce que le compilateur                                         #
                                        # Mips detecte une erreur avec la sortie du message                                           #
                                        # suivant :                                                                                   #
                                        #                                                                                             #
                                        #                   "uopt: Warning: control: parts of procedure have no exit point".          #
                                        #                                                                                             #
          breaksw
     case "SYSTEME_SGIND308_IRIX_CC":
     case "SYSTEME_SGIND324_IRIX_CC":
     case "SYSTEME_SGIND3GA_IRIX_CC":
     case "SYSTEME_SGIND408_IRIX_CC":
     case "SYSTEME_SGIND424_IRIX_CC":
     case "SYSTEME_SGIND4GA_IRIX_CC":
     case "SYSTEME_SGIND508_IRIX_CC":
     case "SYSTEME_SGIND524_IRIX_CC":
     case "SYSTEME_SGIND5GA_IRIX_CC":
     case "SYSTEME_SGIND808_IRIX_CC":
     case "SYSTEME_SGIND824_IRIX_CC":
     case "SYSTEME_SGIND8GA_IRIX_CC":
     case "SYSTEME_SGINDA08_IRIX_CC":
     case "SYSTEME_SGINDA24_IRIX_CC":
     case "SYSTEME_SGINDAGA_IRIX_CC":
     case "SYSTEME_SGO200A1_IRIX_CC":
     case "SYSTEME_SGO200A2_IRIX_CC":
     case "SYSTEME_SGO200A4_IRIX_CC":
     case "SYSTEME_SGO25224_IRIX_CC":
     case "SYSTEME_SGO252VA_IRIX_CC":
     case "SYSTEME_SGO252VN_IRIX_CC":
     case "SYSTEME_SGPCM801_IRIX_CC":
     case "SYSTEME_SGPCMA01_IRIX_CC":
          if   ($nSYSTEM_RELEASE < 502000000) then
               set  use_Ccw=$EXIST
                                        # Et bien, on a utilise au moins une fois '$Ccw'...                                           #

               $Ccw -c "$Racine_cpp"cpp$c -Dunix -D$MACHINE                |& $SE -f $xcc/cb$D/sup.Copyrig$sed
                                        # L'option '-w' est utilisee parce que d'une part le pre-processeur dit sinon :               #
                                        #                                                                                             #
                                        #                   ...: warning: text following #else violates ANSI standard                 #
                                        #                   ...: warning: text following #endif violates ANSI standard                #
                                        #                                                                                             #
                                        # et que d'autre part le compilateur Mips detecte une erreur avec la sortie du message        #
                                        # suivant :                                                                                   #
                                        #                                                                                             #
                                        #                   "uopt: Warning: control: parts of procedure have no exit point".          #
                                        #                                                                                             #
          else
          endif

          if   (($nSYSTEM_RELEASE >= 502000000) && ($nSYSTEM_RELEASE < 600000000)) then
               set  use_Ccw=$EXIST
                                        # Et bien, on a utilise au moins une fois '$Ccw'...                                           #

               $Ccw -c "$Racine_cpp"cpp$c -Dunix -D$MACHINE                |& $SE -f $xcc/cb$D/sup.Copyrig$sed                          \
                                                                           |& $SE -f $xcc/cl$D/sup.LibInuti$sed

                                        # L'option '-w' est utilisee parce que d'une part le pre-processeur dit sinon :               #
                                        #                                                                                             #
                                        #                   ...: warning: text following #else violates ANSI standard                 #
                                        #                   ...: warning: text following #endif violates ANSI standard                #
                                        #                                                                                             #
                                        # et que d'autre part le compilateur Mips detecte une erreur avec la sortie du message        #
                                        # suivant :                                                                                   #
                                        #                                                                                             #
                                        #                   "uopt: Warning: control: parts of procedure have no exit point".          #
                                        #                                                                                             #
          else
          endif

          if   ($nSYSTEM_RELEASE >= 600000000) then
               set  use_Ccw=$EXIST
                                        # Et bien, on a utilise au moins une fois '$Ccw'...                                           #

               $Ccw -c "$Racine_cpp"cpp$c -Dunix -D$MACHINE                |& $SE -f $xcc/cb$D/sup.Copyrig$sed
          else
          endif

          breaksw
     case "SYSTEME_SUN4NCUBE2S_SUNOS_CC":
     case "SYSTEME_SUN4NCUBE2S_SUNOS_NCC":
          set  use_Ccw=$EXIST
                                        # Et bien, on a utilise au moins une fois '$Ccw'...                                           #

          $Ccw -c "$Racine_cpp"cpp$c -Dunix -D$MACHINE                |& $SE -f $xcc/cb$D/sup.Copyrig$sed
                                        # L'option '-w' est utilisee parce que le compilateur detecte les instructions non atteintes  #
                                        # et dit alors :                                                                              #
                                        #                                                                                             #
                                        #                   "beau_cpp.c", line ...: warning: statement not reached                    #
                                        #                                                                                             #
                                        # c'est le cas d'un 'return(0);' dans la fonction 'control(...)'.                             #
          breaksw
     case "SYSTEME_VAX9000_ULTRIX_CC":
     case "SYSTEME_VAX9000_ULTRIX_GCC":
     case "SYSTEME_VAX9000_ULTRIX_VCC":
          $Cc  -O -c "$Racine_cpp"cpp$c -Dunix -D$MACHINE -U__STDC__  |& $SE -f $xcc/cb$D/sup.Copyrig$sed                               \
                                                                      |& $SE -e '/^\*undef\*:1: warning: undefining .__STDC__.$/d'
                                        # L'option '-U__STDC__' est destinee a supprimer la validation du type des arguments des      #
                                        # fonctions definies via "stdio.h". Ceci est du a la procedure 'cCHAR(...)' de cast des       #
                                        # caracteres...                                                                               #
          breaksw
     case "SYSTEME_IMPOSSIBLE":
                                        # Cas des SYSTEMEs pour lesquels cette sequence n'a pas de sens :                             #
          EROR      "Une sequence n'a pas de sens pour '"$SYSTEME"'."
          breaksw
     default:
                                        # Cas des SYSTEMEs non reconnus :                                                             #
          EROR      "Variable 'SYSTEME' (='$SYSTEME') inconnue."
          breaksw
endsw

#20041208102519____:yacc      "$Racine_cpp"cpy.y                                                                                      #

set       FiChIeR_yacc="$Racine_cpp"cpy.y
set       pFiChIeR_yacc=`GetPost $FiChIeR_yacc`
                                        # ATTENTION : je rappelle le 20071122121115 que c'est bien 'cpy.y' qu'il convient d'utiliser  #
                                        # ici (et non pas 'cpy$Y') car, en effet il ne s'agit pas d'un '$Y' !                         #

FileTmpB  FiChIeRT_yacc $pFiChIeR_yacc

$CA       $FiChIeR_yacc                                                                                                           |     \
$SE       -e 's+^\(# *include  *"\)'"+\1$CWD$K_sepS+"                                                                                   \
                                                                                          > $FiChIeRT_yacc
                                        # A priori, le fichier '$FiChIeR_yacc' est utilise tel quel...                                #

switch    ("$SYSTEME")
                                        # Modification eventuelle du fichier '"$Racine_cpp"cpy.y'...                                  #
                                        #                                                                                             #
                                        # Discrimination des differents SYSTEMEs possibles :                                          #
     case "SYSTEME_APC_LinuxDebian_GCC":
          if        ($nSYSTEM_RELEASE >= 301000000) then
                    $DELETE   $FiChIeRT_yacc

                    $CA       $FiChIeR_yacc                                                                                       |     \
                    $SE       -e "s/\( \)=\({[^}]*}\)/\1\2/"                                                                            \
                                                                                                              > $FiChIeRT_yacc
                                        # Tous les "={" ont du etre remplaces par "{" le 20041208102519 lors de l'introduction de     #
                                        # '$LACT17' car avec "={" cela donnait les messages :                                         #
                                        #                                                                                             #
                                        #                   beau_cpy.y:...: syntax error, unexpected "="                              #
                                        #                                                                                             #
                                        # Au passage, il semblerait que cette suppression des "=" soit toleree ailleurs, mais         #
                                        # je prefere etre prudent...                                                                  #
          else
          endif
          breaksw
     case "SYSTEME_APC_LinuxMandrake_GCC":
     case "SYSTEME_APC_LinuxRedHat_GCC":
     case "SYSTEME_APC_LinuxUbuntu_GCC":
     case "SYSTEME_APC_LinuxUbuntu_ICC":
     case "SYSTEME_APC_LinuxUlmint_GCC":
     case "SYSTEME_APC_LinuxUlmint_ICC":
     case "SYSTEME_CRAY2_UNICOS_CC":
     case "SYSTEME_CRAY2_UNICOS_SCC":
     case "SYSTEME_CRAYC98_UNICOS_CC":
     case "SYSTEME_CRAYC98_UNICOS_SCC":
     case "SYSTEME_CRAYC916_UNICOS_CC":
     case "SYSTEME_CRAYC916_UNICOS_SCC":
     case "SYSTEME_CRAYYMP1_UNICOS_CC":
     case "SYSTEME_CRAYYMP1_UNICOS_SCC":
     case "SYSTEME_CRAYYMP2_UNICOS_CC":
     case "SYSTEME_CRAYYMP2_UNICOS_SCC":
     case "SYSTEME_CRAYYMP4_UNICOS_CC":
     case "SYSTEME_CRAYYMP4_UNICOS_SCC":
     case "SYSTEME_DECALPHA340_OSF1_CC":
     case "SYSTEME_DECALPHA340_OSF1_GCC":
     case "SYSTEME_DECALPHA350_OSF1_CC":
     case "SYSTEME_DECALPHA350_OSF1_GCC":
     case "SYSTEME_DECALPHA464_OSF1_CC":
     case "SYSTEME_DPX2000_SPIX_CC":
     case "SYSTEME_DPX5000_SPIX_CC":
     case "SYSTEME_ES9000_AIX_CC":
     case "SYSTEME_FX2800_CONCENTRIX_FXC":
     case "SYSTEME_FX2800_CONCENTRIX_PCC":
     case "SYSTEME_FX2800_CONCENTRIX_SCC":
     case "SYSTEME_FX40_CONCENTRIX_CC":
     case "SYSTEME_FX40_CONCENTRIX_FXC":
     case "SYSTEME_HP705_HPUX_CC":
     case "SYSTEME_HP710_HPUX_CC":
     case "SYSTEME_HP720_HPUX_CC":
     case "SYSTEME_HP750_HPUX_CC":
     case "SYSTEME_HP755_HPUX_CC":
     case "SYSTEME_HP819_HPUX_CC":
     case "SYSTEME_NWS3000_NEWSOS_CC":
     case "SYSTEME_NWS3000_NEWSOS_2CC":
     case "SYSTEME_RS6000_AIX_CC":
     case "SYSTEME_SG4D20G_IRIX_CC":
     case "SYSTEME_SG4D25TG_IRIX_CC":
     case "SYSTEME_SG4D310VGX_IRIX_CC":
     case "SYSTEME_SG4D35TG_IRIX_CC":
     case "SYSTEME_SG4D85GT_IRIX_CC":
     case "SYSTEME_SGIND308_IRIX_CC":
     case "SYSTEME_SGIND324_IRIX_CC":
     case "SYSTEME_SGIND3GA_IRIX_CC":
     case "SYSTEME_SGIND408_IRIX_CC":
     case "SYSTEME_SGIND424_IRIX_CC":
     case "SYSTEME_SGIND4GA_IRIX_CC":
     case "SYSTEME_SGIND508_IRIX_CC":
     case "SYSTEME_SGIND524_IRIX_CC":
     case "SYSTEME_SGIND5GA_IRIX_CC":
     case "SYSTEME_SGIND808_IRIX_CC":
     case "SYSTEME_SGIND824_IRIX_CC":
     case "SYSTEME_SGIND8GA_IRIX_CC":
     case "SYSTEME_SGINDA08_IRIX_CC":
     case "SYSTEME_SGINDA24_IRIX_CC":
     case "SYSTEME_SGINDAGA_IRIX_CC":
     case "SYSTEME_SGO200A1_IRIX_CC":
     case "SYSTEME_SGO200A2_IRIX_CC":
     case "SYSTEME_SGO200A4_IRIX_CC":
     case "SYSTEME_SGO25224_IRIX_CC":
     case "SYSTEME_SGO252VA_IRIX_CC":
     case "SYSTEME_SGO252VN_IRIX_CC":
     case "SYSTEME_SGPCM801_IRIX_CC":
     case "SYSTEME_SGPCMA01_IRIX_CC":
     case "SYSTEME_SPS9_ROS_CC":
     case "SYSTEME_SPS9_ROS_RC":
     case "SYSTEME_SUN3_SUNOS_CC":
     case "SYSTEME_SUN4_SUNOS_CC":
     case "SYSTEME_SUN4NCUBE2S_SUNOS_CC":
     case "SYSTEME_SUN4NCUBE2S_SUNOS_NCC":
     case "SYSTEME_VAX8600_ULTRIX_CC":
     case "SYSTEME_VAX8600_ULTRIX_VCC":
     case "SYSTEME_VAX9000_ULTRIX_CC":
     case "SYSTEME_VAX9000_ULTRIX_GCC":
     case "SYSTEME_VAX9000_ULTRIX_VCC":
          breaksw
     case "SYSTEME_IMPOSSIBLE":
                                        # Cas des SYSTEMEs pour lesquels cette sequence n'a pas de sens :                             #
          EROR      "Une sequence n'a pas de sens pour '"$SYSTEME"'."
          breaksw
     default:
                                        # Cas des SYSTEMEs non reconnus :                                                             #
          EROR      "Variable 'SYSTEME' (='$SYSTEME') inconnue."
          breaksw
endsw

source    $xcp/cpp$D/Definition_yacc$vv$Y
                                        # Mis sous cette forme le 20180428094453...                                                   #

if        (-e $YACC) then
                                        # Test introduit le 20071122084801 a cause de '$LACT18' sur laquelle '$YACC' n'existait       #
                                        # pas a priori. Ce dispositif a ete mis en place au cas ou '$YACC' disparaitrait...           #
          $YACC     $FiChIeRT_yacc
else
#20210302100018____:          EROR      "Le processeur '$YACC' n'existe pas."                                          #
          EROR      "Le processeur '$YACC' n'existe pas, mais on va peut-etre pouvoir s'en passer."

          if        (-e y.tab$c$INUTILE) then
                    relatif   $xcpp

                    $CA       y.tab$c$INUTILE                                                                                     |     \
                    $SE       -e "s+$dREFERENCE/$nomR+$xcpp+"                                                                           \
                                                                                                              > y.tab$c

                    unset     nomR

                    echo      "Oui, c'est bon..."
                                        # Introduit le 20210302101625 pour indiquer que tout s'est bien passe...                      #
          else
#20210302100018____:                    EROR      "Le fichier 'y.tab$c$INUTILE' n'existe pas, la situation est desesperee."           #
                    EROR "Et non, malheureusement le fichier '"'$xcpp/y.tab$c$INUTILE'"' n'existe pas, la situation est desesperee."
          endif
endif

FileTmpE  FiChIeRT_yacc

switch    ("$SYSTEME")
                                        # Compilation du fichier 'y.tab$c'.                                                           #
                                        #                                                                                             #
                                        # Discrimination des differents SYSTEMEs possibles :                                          #
     case "SYSTEME_APC_LinuxMandrake_GCC":
     case "SYSTEME_CRAY2_UNICOS_CC":
     case "SYSTEME_CRAY2_UNICOS_SCC":
     case "SYSTEME_CRAYC98_UNICOS_CC":
     case "SYSTEME_CRAYC98_UNICOS_SCC":
     case "SYSTEME_CRAYC916_UNICOS_CC":
     case "SYSTEME_CRAYC916_UNICOS_SCC":
     case "SYSTEME_CRAYYMP1_UNICOS_CC":
     case "SYSTEME_CRAYYMP1_UNICOS_SCC":
     case "SYSTEME_CRAYYMP2_UNICOS_CC":
     case "SYSTEME_CRAYYMP2_UNICOS_SCC":
     case "SYSTEME_CRAYYMP4_UNICOS_CC":
     case "SYSTEME_CRAYYMP4_UNICOS_SCC":
     case "SYSTEME_DECALPHA340_OSF1_CC":
     case "SYSTEME_DECALPHA340_OSF1_GCC":
     case "SYSTEME_DECALPHA350_OSF1_CC":
     case "SYSTEME_DECALPHA350_OSF1_GCC":
     case "SYSTEME_DECALPHA464_OSF1_CC":
     case "SYSTEME_DPX2000_SPIX_CC":
     case "SYSTEME_DPX5000_SPIX_CC":
     case "SYSTEME_HP705_HPUX_CC":
     case "SYSTEME_HP710_HPUX_CC":
     case "SYSTEME_HP720_HPUX_CC":
     case "SYSTEME_HP750_HPUX_CC":
     case "SYSTEME_HP755_HPUX_CC":
     case "SYSTEME_HP819_HPUX_CC":
     case "SYSTEME_NWS3000_NEWSOS_CC":
     case "SYSTEME_NWS3000_NEWSOS_2CC":
     case "SYSTEME_RS6000_AIX_CC":
     case "SYSTEME_SG4D20G_IRIX_CC":
     case "SYSTEME_SG4D25TG_IRIX_CC":
     case "SYSTEME_SG4D310VGX_IRIX_CC":
     case "SYSTEME_SG4D35TG_IRIX_CC":
     case "SYSTEME_SG4D85GT_IRIX_CC":
     case "SYSTEME_SPS9_ROS_CC":
     case "SYSTEME_SPS9_ROS_RC":
     case "SYSTEME_SUN3_SUNOS_CC":
     case "SYSTEME_SUN4_SUNOS_CC":
     case "SYSTEME_SUN4NCUBE2S_SUNOS_CC":
     case "SYSTEME_SUN4NCUBE2S_SUNOS_NCC":
     case "SYSTEME_VAX8600_ULTRIX_CC":
     case "SYSTEME_VAX8600_ULTRIX_VCC":
     case "SYSTEME_VAX9000_ULTRIX_CC":
     case "SYSTEME_VAX9000_ULTRIX_GCC":
     case "SYSTEME_VAX9000_ULTRIX_VCC":
          $Cc       -O  -c y.tab$c                                    |& $SE -f $xcc/cb$D/sup.Copyrig$sed
          breaksw
     case "SYSTEME_APC_LinuxDebian_GCC":
                                        # Deplace ici le 20041206111059 pour '$LACT17'...                                             #
     case "SYSTEME_APC_LinuxRedHat_GCC":
     case "SYSTEME_APC_LinuxUbuntu_GCC":
     case "SYSTEME_APC_LinuxUbuntu_ICC":
     case "SYSTEME_APC_LinuxUlmint_GCC":
     case "SYSTEME_APC_LinuxUlmint_ICC":
          set  use_Ccw=$EXIST
                                        # Et bien, on a utilise au moins une fois '$Ccw'...                                           #

          $Ccw      -O  -c y.tab$c                                    |& $SE -f $xcc/cb$D/sup.Copyrig$sed
                                        # L'option '-w' est utilisee parce que le pre-processeur ne supporte pas que "#else" et       #
                                        # "#endif" aient des arguments, ce qui donne le message :                                     #
                                        #                                                                                             #
                                        #                   warning: extra tokens at end of #else directive                           #
                                        #                                                                                             #
                                        # Cela a ete mis en place le 20031028103446 pour '$LACT16'...                                 #
          breaksw
     case "SYSTEME_FX2800_CONCENTRIX_FXC":
     case "SYSTEME_FX2800_CONCENTRIX_PCC":
     case "SYSTEME_FX2800_CONCENTRIX_SCC":
     case "SYSTEME_FX40_CONCENTRIX_CC":
     case "SYSTEME_FX40_CONCENTRIX_FXC":
          set  use_Ccw=$EXIST
                                        # Et bien, on a utilise au moins une fois '$Ccw'...                                           #

          $Ccw      -O  -c y.tab$c                                    |& $SE -f $xcc/cb$D/sup.Copyrig$sed
                                        # L'option '-w' est utilisee parce que le compilateur detecte des erreurs avec la sortie      #
                                        # du message :                                                                                #
                                        #                                                                                             #
                                        #         "y.tab.c", line 261:                                                                #
                                        #         261                           while ( yyps >= yys ) {                               #
                                        #         scc - warning: (1) Expressions to be compared must be pointers to the same type     #
                                        #                                                                                             #
          breaksw
     case "SYSTEME_SGIND308_IRIX_CC":
     case "SYSTEME_SGIND324_IRIX_CC":
     case "SYSTEME_SGIND3GA_IRIX_CC":
     case "SYSTEME_SGIND408_IRIX_CC":
     case "SYSTEME_SGIND424_IRIX_CC":
     case "SYSTEME_SGIND4GA_IRIX_CC":
     case "SYSTEME_SGIND508_IRIX_CC":
     case "SYSTEME_SGIND524_IRIX_CC":
     case "SYSTEME_SGIND5GA_IRIX_CC":
     case "SYSTEME_SGIND808_IRIX_CC":
     case "SYSTEME_SGIND824_IRIX_CC":
     case "SYSTEME_SGIND8GA_IRIX_CC":
     case "SYSTEME_SGINDA08_IRIX_CC":
     case "SYSTEME_SGINDA24_IRIX_CC":
     case "SYSTEME_SGINDAGA_IRIX_CC":
     case "SYSTEME_SGO200A1_IRIX_CC":
     case "SYSTEME_SGO200A2_IRIX_CC":
     case "SYSTEME_SGO200A4_IRIX_CC":
     case "SYSTEME_SGO25224_IRIX_CC":
     case "SYSTEME_SGO252VA_IRIX_CC":
     case "SYSTEME_SGO252VN_IRIX_CC":
     case "SYSTEME_SGPCM801_IRIX_CC":
     case "SYSTEME_SGPCMA01_IRIX_CC":
          if   ($nSYSTEM_RELEASE < 502000000) then
               set  use_Ccw=$EXIST
                                        # Et bien, on a utilise au moins une fois '$Ccw'...                                           #

               $Ccw      -c y.tab$c                                        |& $SE -f $xcc/cb$D/sup.Copyrig$sed
                                        # L'option '-w' est utilisee parce que le pre-processeur dit sinon :                          #
                                        #                                                                                             #
                                        #                   ...: warning: text following #else violates ANSI standard                 #
                                        #                   ...: warning: text following #endif violates ANSI standard                #
                                        #                                                                                             #
          else
          endif

          if   (($nSYSTEM_RELEASE >= 502000000) && ($nSYSTEM_RELEASE < 600000000)) then
               set  use_Ccw=$EXIST
                                        # Et bien, on a utilise au moins une fois '$Ccw'...                                           #

               $Ccw      -c y.tab$c                                        |& $SE -f $xcc/cb$D/sup.Copyrig$sed                          \
                                                                           |& $SE -f $xcc/cl$D/sup.LibInuti$sed
                                        # L'option '-w' est utilisee parce que le pre-processeur dit sinon :                          #
                                        #                                                                                             #
                                        #                   ...: warning: text following #else violates ANSI standard                 #
                                        #                   ...: warning: text following #endif violates ANSI standard                #
                                        #                                                                                             #
          else
          endif

          if   ($nSYSTEM_RELEASE >= 600000000) then
               set  use_Ccw=$EXIST
                                        # Et bien, on a utilise au moins une fois '$Ccw'...                                           #

               $Ccw      -c y.tab$c                                        |& $SE -f $xcc/cb$D/sup.Copyrig$sed
          else
          endif

          breaksw
     case "SYSTEME_ES9000_AIX_CC":
          set  use_Ccw=$EXIST
                                        # Et bien, on a utilise au moins une fois '$Ccw'...                                           #

          $Ccw      -O  -c y.tab$c                                    |& $SE -f $xcc/cb$D/sup.Copyrig$sed
                                        # L'option '-w' est utilisee parce que le compilateur 'MetaWare High C Compiler'              #
                                        # detecte des erreurs avec la sortie des messages :                                           #
                                        #                                                                                             #
                                        #                   "w "cpy.y",L433/C14:   Array subscript out of range.",                    #
                                        #                   "w "cpy.y",L434/C14:   Array subscript out of range.",                    #
                                        #                   "w "cpy.y",L20/C22:    Unreachable statement.".                           #
                                        #                                                                                             #
          breaksw
     case "SYSTEME_IMPOSSIBLE":
                                        # Cas des SYSTEMEs pour lesquels cette sequence n'a pas de sens :                             #
          EROR      "Une sequence n'a pas de sens pour '"$SYSTEME"'."
          breaksw
     default:
                                        # Cas des SYSTEMEs non reconnus :                                                             #
          EROR      "Variable 'SYSTEME' (='$SYSTEME') inconnue."
          breaksw
endsw

if        ($mHOTE == $mREFERENCE) then
                                        # Dispositif introduit le 20071122084801 a cause de '$LACT18' sur laquelle '$YACC' n'existait #
                                        # pas a priori. Ce dispositif a ete mis en place au cas ou '$YACC' disparaitrait...           #
          $DELETE   y.tab$c$INUTILE

          $CA       y.tab$c                                                                                                       |     \
          $GRE      -v "^$PASSE_1"" *line "                                                                                             \
                                                                                                              > y.tab$c$INUTILE

          ro        y.tab$c$INUTILE
else
endif

$DELETE   y.tab$c

$MV       y.tab$O "$Racine_cpp"cpy$O > $nul

if        ($use_Ccw == $NEXIST) then
          set       use_Cc="$Cc"
                                        # Lorsque '$Ccw' n'a pas ete utilise, on peut utiliser '$Cc' sans problemes...                #
else
          set       optimise_Cc=`echo "$Cc" | $GRE " -O[0-9] " | $SE -e "s/^.* \(-O[0-9]\) .*/\1/"`
          set       optimise_Ccw=`echo "$Ccw" | $GRE " -O[0-9] " | $SE -e "s/^.* \(-O[0-9]\) .*/\1/"`
                                        # Recuperation des options d'optimisation utilisees...                                        #

          if        ("$optimise_Cc" == "$K_VIDE") then
                    set       use_Cc="$Cc $optimise_Ccw"
                                        # Cas ou '$Cc' etait sans optimisation, on rajoute l'option de '$Ccw' (eventuelle...).        #
          else
                    set       use_Cc=`echo $Cc | $SE -e "s/$optimise_Cc/$optimise_Ccw/"`
                                        # Cas ou '$Cc' etait avec optimisation, on met celle de '$Ccw' a la place. Ceci a ete rendu   #
                                        # le necessaire le 1996071000 lors du passge en 6.2 de '$LACT27' ; cela donnait les messages  #
                                        # suivants :                                                                                  #
                                        #                                                                                             #
                                        #                   uld:                                                                      #
                                        #                   No ucode object file linked -- please use -O2 or lower.                   #
                                        #                                                                                             #
          endif
endif

$use_Cc   -o $xcp/cpp$X "$Racine_cpp"cpp$O "$Racine_cpp"cpy$O         |& $SE -f $xcc/cb$D/sup.Copyrig$sed                               \
                                                                      |& $SE -f $xcc/cl$D/sup.LibInuti$sed

if   (-e "$Racine_cpp"cpp$O) then
     $DELETE   "$Racine_cpp"cpp$O
else
endif
if   (-e "$Racine_cpp"cpy$O) then
     $DELETE   "$Racine_cpp"cpy$O
else
endif
if   (-e $xcp/cpp$X) then
     ro   $xcp/cpp$X
                                        # Protection du module.                                                                       #
     SIZE $xcp/cpp$X
                                        # Et edition de sa taille.                                                                    #
     echo "$Prompt("$Fsize" octets)"
else
     EROR "ATTENTION, le fichier '"cpp$X"' n'est pas cree."
endif



Copyright © Jean-François COLONNA, 2021-2025.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2021-2025.