Browse Source

Merge topic 'emscripten-arch-id'

5ec87b2ba7 Emscripten: Provide CMAKE_<LANG>_COMPILER_ARCHITECTURE_ID

Acked-by: Kitware Robot <[email protected]>
Merge-request: !11452
Brad King 6 days ago
parent
commit
8afe7a3d2d

+ 6 - 0
Help/variable/CMAKE_LANG_COMPILER_ARCHITECTURE_ID.rst

@@ -126,6 +126,12 @@ targets a UNIX platform.
 ``sw_64``
   Sunway
 
+``wasm32``
+  WebAssembly (Emscripten) 32-bit
+
+``wasm64``
+  WebAssembly (Emscripten) 64-bit
+
 ``x86_64``
   Intel 64-bit
 

+ 4 - 0
Modules/CMakeCompilerABI.h

@@ -144,6 +144,10 @@ static unsigned short const info_byte_order_little_endian[] = {
 #  else
 #    define ARCHITECTURE_ID "ppc"
 #  endif
+#elif defined(__wasm64) || defined(__wasm64__)
+#  define ARCHITECTURE_ID "wasm64"
+#elif defined(__wasm32) || defined(__wasm32__)
+#  define ARCHITECTURE_ID "wasm32"
 #endif
 
 /* Construct the string literal in pieces to prevent the source from

+ 4 - 0
Modules/CMakeFortranCompilerABI.F

@@ -143,6 +143,10 @@
 #  else
         PRINT *, 'INFO:arch[ppc]'
 #  endif
+#elif defined(__wasm64) || defined(__wasm64__)
+        PRINT *, 'INFO:arch[wasm64]'
+#elif defined(__wasm32) || defined(__wasm32__)
+        PRINT *, 'INFO:arch[wasm32]'
 #endif
 
         PRINT *, 'ABI Detection'

+ 4 - 0
Modules/CMakeFortranCompilerABI.F90

@@ -151,6 +151,10 @@ PRINT *, 'INFO:arch[ppcle]'
 #  else
 PRINT *, 'INFO:arch[ppc]'
 #  endif
+#elif defined(__wasm64) || defined(__wasm64__)
+PRINT *, 'INFO:arch[wasm64]'
+#elif defined(__wasm32) || defined(__wasm32__)
+PRINT *, 'INFO:arch[wasm32]'
 #endif
 
 PRINT *, 'ABI Detection'

+ 4 - 0
Modules/Internal/CMakeParseCompilerArchitectureId.cmake

@@ -69,6 +69,10 @@ function(cmake_parse_compiler_architecture_id triple arch_id_var)
     set(ARCHITECTURE_ID "ppcle")
   elseif(_dumpmachine_triple MATCHES "^(powerpc|ppc)-")
     set(ARCHITECTURE_ID "ppc")
+  elseif(_dumpmachine_triple MATCHES "^wasm64-")
+    set(ARCHITECTURE_ID "wasm64")
+  elseif(_dumpmachine_triple MATCHES "^wasm32-")
+    set(ARCHITECTURE_ID "wasm32")
   else()
     set(ARCHITECTURE_ID "")
   endif()

+ 1 - 0
Tests/RunCMake/Emscripten/C-enable-stdout.txt

@@ -1,2 +1,3 @@
 -- CMAKE_C_BYTE_ORDER='LITTLE_ENDIAN'
+-- CMAKE_C_COMPILER_ARCHITECTURE_ID='wasm(32|64)'
 -- CMAKE_C_SIZEOF_DATA_PTR='[1-9][0-9]*'

+ 1 - 0
Tests/RunCMake/Emscripten/C-enable.cmake

@@ -1,6 +1,7 @@
 enable_language(C)
 foreach(var IN ITEMS
     CMAKE_C_BYTE_ORDER
+    CMAKE_C_COMPILER_ARCHITECTURE_ID
     CMAKE_C_SIZEOF_DATA_PTR
   )
   message(STATUS "${var}='${${var}}'")