ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-3.0/ac-tools/fortran90.m4
(Generate patch)

Comparing trunk/OOPSE-3.0/ac-tools/fortran90.m4 (file contents):
Revision 1490 by gezelter, Fri Sep 24 04:16:43 2004 UTC vs.
Revision 1535 by gezelter, Wed Oct 6 21:22:43 2004 UTC

# Line 1047 | Line 1047 | m4_default([$2],[$1])="$ac_val"
1047  
1048   ])# AC_F95_FUNC
1049  
1050 + # AC_F90_MODULE_NAMES
1051 + # -------------------
1052 + #
1053 + # Figure out how the Fortran 90 compiler constructs module file names
1054 + #
1055 + AC_DEFUN([AC_F90_MODULE_NAMES],
1056 + [AC_REQUIRE([AC_PROG_F90])dnl
1057 + AC_CACHE_CHECK([for Fortran 90 module file names],
1058 +               ac_cv_f90_module_names,
1059 + [AC_LANG_PUSH(Fortran 90)
1060 + # carry out the test in a new directory, so that we don't miss anything
1061 + mkdir conftest
1062 + cd conftest
1063 + AC_COMPILE_IFELSE(
1064 + [MODULE Bar
1065 + END MODULE Bar],
1066 + ac_cv_f90_module_names=
1067 + [ac_file_list=*
1068 + for ac_file in $ac_file_list; do
1069 +   case $ac_file in
1070 +      # don't care for original source and object files
1071 +      conftest.$ac_ext | conftest.$ac_objext | conftest.err )
1072 +          :
1073 +          ;;
1074 +      # look for new files derived from the file name
1075 +      *conftest*)
1076 +          ac_pat=`echo $ac_file | sed s/conftest/%FILE%/`
1077 +          _AC_LIST_MEMBER_IF($ac_pat, $ac_cv_f90_module_names,,
1078 +              ac_cv_f90_module_names="$ac_cv_f90_module_names $ac_pat")
1079 +          ;;
1080 +      # look for new files derived from the module name,
1081 +      # with different case translation schemes
1082 +      *Bar*)
1083 +          ac_pat=`echo $ac_file | sed s/Bar/%Module%/`
1084 +          _AC_LIST_MEMBER_IF($ac_pat, $ac_cv_f90_module_names,,
1085 +              ac_cv_f90_module_names="$ac_cv_f90_module_names $ac_pat")
1086 +          ;;
1087 +      *bar*)
1088 +          ac_pat=`echo $ac_file | sed s/bar/%module%/`
1089 +          _AC_LIST_MEMBER_IF($ac_pat, $ac_cv_f90_module_names,,
1090 +              ac_cv_f90_module_names="$ac_cv_f90_module_names $ac_pat")
1091 +          ;;
1092 +      *BAR*)
1093 +          ac_pat=`echo $ac_file | sed s/BAR/%MODULE%/`
1094 +          _AC_LIST_MEMBER_IF($ac_pat, $ac_cv_f90_module_names,,
1095 +              ac_cv_f90_module_names="$ac_cv_f90_module_names $ac_pat")
1096 +          ;;
1097 +       # Other files - we have no idea how they are generated
1098 +       *)
1099 +          AC_MSG_WARN([Bogus file found: $ac_file])
1100 +          ;;
1101 +   esac
1102 + done
1103 + if test "x$ac_cv_f90_module_names" = "x"; then
1104 +  AC_MSG_WARN([Couldn't determine module file names])
1105 + fi
1106 + ],
1107 + [ac_cv_f90_module_names=
1108 + AC_MSG_WARN([Couldn't determine module file names])])
1109 + cd ..
1110 + # cleanup
1111 + rm -rf conftest
1112 + AC_LANG_POP()dnl
1113 + ]) # AC_CACHE_CHECK
1114  
1115 + # We now generate a shell script that will help us to figure out the correct
1116 + # module file names, using the value of ac_cv_f90_module_names
1117 +
1118 + echo "Generating shell script modnam"
1119 +
1120 + cat > scripts/modnam << EOF
1121 + #! /bin/sh
1122 + # This script is auto-generated by configure
1123 + #
1124 + usage="\\
1125 + Usage: \$[0] [[FILES]]
1126 +
1127 + [[FILES]] are Fortran 90 source files.
1128 + The output is a list of module file names that the Fortran 90 compiler
1129 + generates when compiling [[FILES]]."
1130 +
1131 + list=
1132 + empty=
1133 +
1134 + if test \$[@%:@] -eq 0; then
1135 +   echo "\$usage"; exit 0
1136 + fi
1137 +
1138 + while test \$[@%:@] != 0; do
1139 +
1140 +  file=\$[1]
1141 +  shift
1142 +
1143 + # strip suffix
1144 +  base=\`echo \$file | sed 's/[[.]][[^.]]*$//'\`
1145 +
1146 +  test ! -f \$file && continue
1147 +
1148 + # Look for module definitions and transform them to upper / lower case
1149 +  mods=\`cat \$file | sed '/^ *[[mM][oO][dD][uU][lL][eE]]/!d;s/^ *[[mM][oO][dD][uU][lL][eE]] *\([[A-Za-z_][A-Za-z0-9_]]*\).*\$/\1/'\`
1150 +  upper=\`echo \$mods | tr a-z A-Z\`
1151 +  lower=\`echo \$mods | tr A-Z a-z\`
1152 +
1153 + # Here, the patterns for generating module file names were inserted by configure
1154 +  for trans in $ac_cv_f90_module_names; do
1155 +
1156 +    pat=\`echo \$trans | sed 's/.*\(%.*%\).*/\1/'\`
1157 +    var=empty
1158 +    case \$pat in
1159 +       %MODULE%)
1160 +          var=upper ;;
1161 +       %Module%)
1162 +          var=mods ;;
1163 +       %module%)
1164 +          var=lower ;;
1165 +       %FILE%)
1166 +          test -n "\$mods" && var=base ;;
1167 +    esac
1168 +    new=\`eval '(for i in \$'\$var '; do echo \$trans | sed s/\$pat/\$i/; done)'\`
1169 +    list="\$list \$new"
1170 +  done
1171 + done
1172 +
1173 + echo \$list
1174 + # end of configure-generated script
1175 + EOF
1176 + chmod 755 scripts/modnam
1177 + ]) # AC_F90_MODULE_NAMES

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines