diff --git a/share/machdeps/machdep-schema.json b/share/machdeps/machdep-schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..8d564e6483b051664fc9ea8365cf33179187b588
--- /dev/null
+++ b/share/machdeps/machdep-schema.json
@@ -0,0 +1,127 @@
+{
+    "$schema": "https://json-schema.org/draft/2020-12/schema",
+    "$id" : "FRAMAC_SHARE/machdeps/machdep-schema.json",
+    "type" : "object",
+    "properties": {
+        "version": {
+            "description": "information on this machdep",
+            "type" : "string"
+        },
+        "compiler": {
+            "description": "compiler being used",
+            "type" : "string"
+        },
+        "cpp_arch_flags": {
+            "description": "argument to be given to compiler when this machdep is selected",
+            "type" : "string"
+        },
+        "sizeof_short": {
+            "description": "size of 'short' type",
+            "type": "integer"
+        },
+        "sizeof_int": {
+            "description": "size of 'int' type",
+            "type": "integer"
+        },
+        "sizeof_long": {
+            "description": "size of 'long' type",
+            "type": "integer"
+        },
+        "sizeof_longlong": {
+            "description": "size of 'long long' type",
+            "type": "integer"
+        },
+        "sizeof_ptr": {
+            "description": "size of 'void*' type",
+            "type": "integer"
+        },
+        "sizeof_float": {
+            "description": "size of 'float' type",
+            "type": "integer"
+        },
+        "sizeof_double": {
+            "description": "size of 'double' type",
+            "type": "integer"
+        },
+        "sizeof_longdouble": {
+            "description": "size of 'long double' type",
+            "type": "integer"
+        },
+        "sizeof_void": {
+            "description": "size of 'void' type. Negative if unsupported",
+            "type": "integer"
+        },
+        "sizeof_fun": {
+            "description": "size of a function type. Negative if unsupported",
+            "type": "integer"
+        },
+        "size_t": {
+            "description": "type of sizeof e",
+            "type": "string"
+        },
+        "wchar_t": {
+            "description": "definition of 'wchar_t'",
+            "type": "string"
+        },
+        "ptr_diff_t": {
+            "description": "definition of 'ptrdiff_t'",
+            "type": "string"
+        },
+        "alignof_short": {
+            "description": "alignment of 'short' type",
+            "type": "integer"
+        },
+        "alignof_int": {
+            "description": "alignment of 'int' type",
+            "type": "integer"
+        },
+        "alignof_long": {
+            "description": "alignment of 'long' type",
+            "type": "integer"
+        },
+        "alignof_longlong": {
+            "description": "alignment of 'long long' type",
+            "type": "integer"
+        },
+        "alignof_ptr": {
+            "description": "alignment of 'void*' type",
+            "type": "integer"
+        },
+        "alignof_float": {
+            "description": "alignment of 'float' type",
+            "type": "integer"
+        },
+        "alignof_double": {
+            "description": "alignment of 'double' type",
+            "type": "integer"
+        },
+        "alignof_longdouble": {
+            "description": "alignment of 'long double' type",
+            "type": "integer"
+        },
+        "alignof_string": {
+            "description": "alignment of string",
+            "type": "integer"
+        },
+        "alignof_void": {
+            "description": "alignment of 'void' type. Negative if unsupported",
+            "type": "integer"
+        },
+        "alignof_fun": {
+            "description": "alignment of a function type. Negative if unsupported",
+            "type": "integer"
+        },
+        "char_is_unsigned": {
+            "description": "whether 'char' is unsigned",
+            "type": "boolean"
+        },
+        "little_endian": {
+            "description": "whether the architecture is little-endian",
+            "type" : "boolean"
+        },
+        "alignof_aligned": {
+            "description": "alignement of a type with aligned attribute",
+            "type" : "integer"
+        }
+    }
+}