FrozenGene commented on a change in pull request #4657: [CodeGen] Generate blob 
use LLVM directly
URL: https://github.com/apache/incubator-tvm/pull/4657#discussion_r365067929
 
 

 ##########
 File path: python/tvm/contrib/cc.py
 ##########
 @@ -51,9 +51,32 @@ def create_shared(output,
     else:
         raise ValueError("Unsupported platform")
 
+def get_target_triple():
+    """ Get the target triple using compiler.
+
+    Returns
+    -------
+        out: str (Linux / Mac) or None (Win32)
+    """
+    if sys.platform == "darwin" or sys.platform.startswith("linux"):
+        cmd = ["g++", "-dumpmachine"]
+        proc = subprocess.Popen(
+            cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+        (out, _) = proc.communicate()
+        if proc.returncode != 0:
+            msg = "dumpmachine error:\n"
+            msg += py_str(out)
+            raise RuntimeError(msg)
+        return py_str(out)
+    elif sys.platform == "win32":
+        return None
+    else:
+        raise ValueError("Unsupported platform")
+
 
 # assign so as default output format
 create_shared.output_format = "so" if sys.platform != "win32" else "dll"
+create_shared.get_target_triple = get_target_triple()
 
 Review comment:
   > 
https://github.com/apache/incubator-tvm/blob/master/python/tvm/contrib/cc.py#L107
   
   Ok. combine your context I think you mean:
   
   ```python
   def get_target_by_dump_machine(compiler="g++"): # default value be g++. 
could be specified by users
       def get_target_triple():
       if sys.platform == "darwin" or sys.platform.startswith("linux"):
           cmd = [compiler, "-dumpmachine"] # change to compiler
           proc = subprocess.Popen(
               cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
           (out, _) = proc.communicate()
           if proc.returncode != 0:
               msg = "dumpmachine error:\n"
               msg += py_str(out)
               raise RuntimeError(msg)
           return py_str(out)
       elif sys.platform == "win32":
           return None
       else:
           raise ValueError("Unsupported platform")
   return get_target_triple
   # lazily create
   create_shared.get_target_by_dump_machine = get_target_by_dump_machine
   def cross_compiler():
        ...
       fcompile.get_target_by_dump_machine = get_target_by_dump_machine
   ```
   
   Also we need to add this support for NDK and `build_create_shared_func` so 
that all fcompile could have this fn support.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to