#!/usr/bin/env perl use strict; use warnings; my %cpp_options = ( "ABINITGW"=>"OK", "CONTRACT"=>"OK", "HAVE_CONFIG_H"=>"OK", "MACOSX"=>"OK", "T3E"=>"OK", "VMS"=>"OK", "HAVE_COMPAQ_FFT"=>"OK", "HAVE_FFTW"=>"OK", "HAVE_FFTWTHREADS"=>"OK", "HAVE_HP_MLIB"=>"OK", "HAVE_IBM_ESSL"=>"OK", "HAVE_IBM_ESSL_OLD"=>"Probably obsolete (cgeicd)", "HAVE_NEC_ASL"=>"OK", "HAVE_NETCDF"=>"OK", "HAVE_NQXC"=>"OK", "HAVE_SGI_MATH"=>"OK", "HAVE_XMLF90"=>"OK", "MPI"=>"OK", "MPI1"=>"OK", "MPI2"=>"OK", "MPI3"=>"OK", "MPIO"=>"OK", "MPI_EXT"=>"OK", "MPI_FFT"=>"OK", "MPI_TRACE"=>"OK", "ABSOFT_FC"=>"OK", "COMPAQ_FC"=>"OK", "FUJITSU_FC"=>"OK", "HITACHI_FC"=>"OK", "HP_FC"=>"OK", "IBM_FC"=>"OK", "INTEL_FC"=>"OK", "MIPSPRO_FC"=>"OK", "NAG_FC"=>"OK", "NEC_FC"=>"OK", "SUN_FC"=>"OK", "HAVE_FORTRAN_EXIT"=>"OK", "READ_FROM_FILE"=>"OK", "__INTEL_COMPILER"=>"OK", "i386"=>"OK", "TEST_AIM"=>"Unmaintained", "OPENMP"=>"Unmaintained", "PGIWin"=>"Unmaintained", "T3E"=>"Unmaintained", "__IFC"=>"Replaced by __INTEL__COMPILER", "__VMS"=>"Replaced by VMS", "CHGSTDIO"=>"Replaced by READ_FROM_FILE", "FFTW"=>"Replaced by HAVE_FFTW", "FFTWTHREADS"=>"Replaced by HAVE_FFTWTHREADS", "MPIEXT"=>"Replaced by MPI_EXT", "NAGf95"=>"Replaced by NAG_FC", "P6"=>"Replaced by i386", "TRACE"=>"Replaced by MPI_TRACE", "bim"=>"Replaced by HAVE_IBM_ESSL", "bmi"=>"Replaced by HAVE_IBM_ESSL_OLD", "cen"=>"Replaced by HAVE_NEC_ASL or NEC_FC", "dec_alpha"=>"Replaced by COMPAQ_FC", "hp"=>"Replaced by HAVE_HP_MLIB or HP_FC", "hpux"=>"Replaced by HAVE_HP_MLIB", "ibm"=>"Replaced by XL_FC", "macosx"=>"Replaced by MACOSX", "mpi"=>"Replaced by MPI", "nec"=>"Replaced by HAVE_NEC_ASL or NEC_FC", "nolib"=>"Replaced by HAVE_COMPAQ_FFT", "sgi"=>"Replaced by HAVE_SGI_MATH or MIPSPRO_FC", "sr8k"=>"Replaced by HITACHI_FC", "vpp"=>"Replaced by FUJITSU_FC", "OLD_INIT"=>"Removed", "ultrix"=>"Removed"); my %options_found; foreach my $src (split(/\n/,`grep -l '^#' src/*/*.F90`)) { open(INP,"<$src"); while ( ) { if ( /^#if/ ) { chomp(); s/^#[\s]*//; s/[\s]*$//; if ( /^if/ or /^elif/ ) { s/ifdef//; s/ifndef//; s/if//; s/elif//; s/defined//g; s/[!\(\)]//g; s/\&\&//g; s/\|\|//g; s/^[\s]+//; s/[\s]+/ /g; s/\\$//; foreach my $opt (split(/\s+/,$_)) { if ( $options_found{$opt} ) { $options_found{$opt}++; } else { $options_found{$opt} = 1; } } } } } close(INP); } printf "%-20s %4s %-40s\n","Option","#","Status"; print "-------------------- ---- ----------------------------------------\n"; foreach my $opt (sort keys %options_found) { printf "%-20s %4d ",$opt,$options_found{$opt}; if ( ! $cpp_options{$opt} ) { print "UNKNOWN\n"; } else { print "$cpp_options{$opt}\n"; } } foreach my $opt (sort keys %cpp_options) { if ( (! $options_found{$opt}) and ($cpp_options{$opt} eq "OK") ) { printf "%-20s %4d Unused\n",$opt,0; } } print "-------------------- ---- ----------------------------------------\n";