Explorar el Código

Allow to build LLVM and wamrc on MinGW (#1013)

Use sysconfig.get_platform() to check whether the platform is MinGW,
and link necessary libraries to wamrc on MinGW.
lucianoiam hace 3 años
padre
commit
c8804c1ff9
Se han modificado 2 ficheros con 10 adiciones y 3 borrados
  1. 7 3
      build-scripts/build_llvm.py
  2. 3 0
      wamr-compiler/CMakeLists.txt

+ 7 - 3
build-scripts/build_llvm.py

@@ -10,6 +10,7 @@ import pathlib
 import shlex
 import shutil
 import subprocess
+import sysconfig
 import sys
 
 
@@ -112,9 +113,12 @@ def build_llvm(llvm_dir, platform, backends, projects):
         + LLVM_INCLUDE_TOOLS_OPTION
     )
 
-    CONFIG_CMD = f"cmake {compile_options} ../llvm " + (
-        "-A x64" if "windows" == platform else ""
-    )
+    CONFIG_CMD = f"cmake {compile_options} ../llvm"
+    if "windows" == platform:
+        if "mingw" in sysconfig.get_platform().lower():
+            CONFIG_CMD += " -G'Unix Makefiles'"
+        else:
+            CONFIG_CMD += " -A x64"
     print(f"{CONFIG_CMD}")
     subprocess.check_call(shlex.split(CONFIG_CMD), cwd=build_dir)
 

+ 3 - 0
wamr-compiler/CMakeLists.txt

@@ -250,6 +250,9 @@ add_executable (wamrc main.c)
 if (NOT MSVC)
   target_link_libraries (wamrc aotclib vmlib LLVMDemangle ${LLVM_AVAILABLE_LIBS} ${lib_ubsan}
                          -lm -ldl -lpthread ${lib_lldb})
+  if (MINGW)
+      target_link_libraries (wamrc -lssp -lWs2_32)
+  endif()
 else()
   target_link_libraries (wamrc aotclib vmlib  ${lib_lldb} ${LLVM_AVAILABLE_LIBS} ${lib_ubsan})
 endif()