summaryrefslogtreecommitdiffstats
path: root/configure.json
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@qt.io>2017-04-28 13:27:43 +0200
committerOswald Buddenhagen <oswald.buddenhagen@qt.io>2017-05-03 12:19:57 +0000
commit98c1d516b7f7624f7fcd7b9046783e3903a6a42b (patch)
tree2ae34970877411c731d3348d51a1b06409cb0ec5 /configure.json
parentfe04eade5559370bdb44e1a74a0a96326265358e (diff)
alloca: detect whether alloca.h exists
We can't depend on QT_HAS_INCLUDE for such an important functionality in QtQml, so detect at configure time. alloca() is not a POSIX function (it apparently first appeared in Version 32V AT&T UNIX), so the actual header that defines it varies from system to system. Clearly, if alloca.h exists, that's the one, so we try it first. On most other systems that don't define it, it's in stdlib.h. The only exception is Windows, where it's actually defined in malloc.h. Task-number: QTBUG-59700 Started-by: Thiago Macieira <thiago.macieira@intel.com> Change-Id: Icd0e0d4b27cb4e5eb892fffd14b4b2b389a4684e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'configure.json')
-rw-r--r--configure.json28
1 files changed, 25 insertions, 3 deletions
diff --git a/configure.json b/configure.json
index 49586ed6b8..02d5f1a65e 100644
--- a/configure.json
+++ b/configure.json
@@ -406,11 +406,23 @@
"type": "compile",
"test": "unix/posix_fallocate"
},
- "alloca": {
- "label": "alloca()",
+ "alloca_stdlib_h": {
+ "label": "alloca() in stdlib.h",
"type": "compile",
"test": "common/alloca"
},
+ "alloca_h": {
+ "label": "alloca() in alloca.h",
+ "type": "compile",
+ "test": "common/alloca",
+ "args": "DEFINES+=USE_ALLOCA_H"
+ },
+ "alloca_malloc_h": {
+ "label": "alloca() in malloc.h",
+ "type": "compile",
+ "test": "common/alloca",
+ "args": "DEFINES+=USE_MALLOC_H"
+ },
"stack_protector": {
"label": "stack protection",
"type": "compilerSupportsFlag",
@@ -900,9 +912,19 @@
"condition": "tests.posix_fallocate",
"output": [ "privateFeature" ]
},
+ "alloca_h": {
+ "label": "alloca.h",
+ "condition": "tests.alloca_h",
+ "output": [ "privateFeature" ]
+ },
+ "alloca_malloc_h": {
+ "label": "alloca() in malloc.h",
+ "condition": "!features.alloca_h && tests.alloca_malloc_h",
+ "output": [ "privateFeature" ]
+ },
"alloca": {
"label": "alloca()",
- "condition": "tests.alloca",
+ "condition": "features.alloca_h || features.alloca_malloc_h || tests.alloca_stdlib_h",
"output": [ "privateFeature" ]
},
"stack-protector-strong": {