-GLOBAL_VAR(pgm_L, findFile "unlit" cGHC_UNLIT, String)
-GLOBAL_VAR(pgm_P, cRAWCPP, String)
-GLOBAL_VAR(pgm_C, findFile "hsc" cGHC_HSC, String)
-GLOBAL_VAR(pgm_c, cGCC, String)
-GLOBAL_VAR(pgm_m, findFile "ghc-asm" cGHC_MANGLER, String)
-GLOBAL_VAR(pgm_s, findFile "ghc-split" cGHC_SPLIT, String)
-GLOBAL_VAR(pgm_a, cGCC, String)
-GLOBAL_VAR(pgm_l, cGCC, String)
-
-GLOBAL_VAR(opt_dep, [], [String])
-GLOBAL_VAR(anti_opt_C, [], [String])
-GLOBAL_VAR(opt_C, [], [String])
-GLOBAL_VAR(opt_l, [], [String])
-GLOBAL_VAR(opt_dll, [], [String])
+GLOBAL_VAR(v_Pgm_L, error "pgm_L", String)
+GLOBAL_VAR(v_Pgm_P, cRAWCPP, String)
+GLOBAL_VAR(v_Pgm_c, cGCC, String)
+GLOBAL_VAR(v_Pgm_m, error "pgm_m", String)
+GLOBAL_VAR(v_Pgm_s, error "pgm_s", String)
+GLOBAL_VAR(v_Pgm_a, cGCC, String)
+GLOBAL_VAR(v_Pgm_l, cGCC, String)
+
+GLOBAL_VAR(v_Opt_dep, [], [String])
+GLOBAL_VAR(v_Anti_opt_C, [], [String])
+GLOBAL_VAR(v_Opt_C, [], [String])
+GLOBAL_VAR(v_Opt_l, [], [String])
+GLOBAL_VAR(v_Opt_dll, [], [String])
+
+getStaticOpts :: IORef [String] -> IO [String]
+getStaticOpts ref = readIORef ref >>= return . reverse