#!/usr/bin/python3
import os
import subprocess
import sys
import typing

"""
This wrapper is used to ignore or replace some unsupported flags for flang-new.

It will operate as follows:

1. Ignore `-Minform=inform` and `-fdiagnostics-color`.
  They are added by meson automatically, but are not supported by flang-new yet.
2. Remove `-lflang` and `-lpgmath`.
  It exists in classic-flang but doesn't exist in flang-new.
3. Replace `-Oz` to `-O2`.
  `-Oz` is not supported by flang-new.
4. Replace `-module` to `-J`.
  See https://github.com/llvm/llvm-project/issues/66969
5. Ignore `-MD`, `-MQ file` and `-MF file`.
  They generates files used by GNU make but we're using ninja.
6. Ignore `-fvisibility=hidden`.
  It is not supported by flang-new, and ignoring it will not break the functionality,
  as scipy also uses version script for shared libraries.
"""

COMPLIER_PATH = "@COMPILER@"

def main(argv: typing.List[str]):
  cwd = os.getcwd()
  argv_new = []
  i = 0
  while i < len(argv):
    arg = argv[i]
    if arg in ["-Minform=inform", "-lflang", "-lpgmath", "-MD", "-fvisibility=hidden"] \
        or arg.startswith("-fdiagnostics-color"):
      pass
    elif arg == "-Oz":
      argv_new.append("-O2")
    elif arg == "-module":
      argv_new.append("-J")
    elif arg in ["-MQ", "-MF"]:
      i += 1
    else:
      argv_new.append(arg)
    i += 1
  args = [COMPLIER_PATH] + argv_new
  subprocess.check_call(args, env=os.environ, cwd=cwd, text=True)

if __name__ == '__main__':
  main(sys.argv[1:])
