[flang] Get rid of code duplication in wrapper. Fix checking of undefined variables.
authorYury Gribov <tetra2005@gmail.com>
Wed, 19 Jan 2022 08:21:44 +0000 (17:21 +0900)
committerYuri Gribov <y.gribov@samsung.com>
Wed, 26 Jan 2022 08:42:03 +0000 (11:42 +0300)
Differential Revision: https://reviews.llvm.org/D117767

flang/tools/f18/flang

index 10b055b..fc3a3a0 100755 (executable)
@@ -263,6 +263,22 @@ categorise_opts()
   done
 }
 
+# === get_external_fc_name ====================================================
+#
+# Returns the name of external Fortran compiler based on values of
+# environment variables.
+# =============================================================================
+get_external_fc_name() {
+  if [[ -v FLANG_FC ]]; then
+    echo ${FLANG_FC}
+  elif [[ -v F18_FC ]]; then
+    # We support F18_FC for backwards compatibility.
+    echo ${F18_FC}
+  else
+    echo gfortran
+  fi
+}
+
 # === preprocess ==============================================================
 #
 # Runs the preprocessing. Fortran files are preprocessed using Flang. Other
@@ -278,18 +294,8 @@ preprocess() {
   local -n other_srcs=$2
   local -n opts=$3
 
-  local ext_fc=""
-  if [[ -v $FLANG_FC ]]; then
-    ext_fc="${FLANG_FC}"
-  elif [[ -v $F18_FC ]]; then
-    # We support F18_FC for backwards compatibility.
-    ext_fc="${F18_FC}"
-  else
-    ext_fc=gfortran
-  fi
-
+  local ext_fc="$(get_external_fc_name)"
 
-  local ext_fc="${FLANG_FC:-gfortran}"
   local -r wd=$(cd "$(dirname "$0")/.." && pwd)
 
   # Use the provided output file name.
@@ -412,7 +418,7 @@ main() {
   done
 
   # STEP 2: Compile Fortran Source Files
-  readonly ext_fc="${F18_FC:-gfortran}"
+  local ext_fc="$(get_external_fc_name)"
   # Temporary object files generated by this script. To be deleted at the end.
   local temp_object_files=()
   for idx in "${!fortran_source_files[@]}"; do