2014-04-23 02:07:58 +02:00
|
|
|
From fd3eb1e9f712e4c96c0b55d4203745afb2bcc8c2 Mon Sep 17 00:00:00 2001
|
|
|
|
From: Gustavo Zacarias <gustavo@zacarias.com.ar>
|
|
|
|
Date: Wed, 9 Apr 2014 10:21:59 -0300
|
|
|
|
Subject: [PATCH 3/5] build: make wafsamba CHECK_SIZEOF cross-compile friendly
|
|
|
|
|
|
|
|
Use the same trick as commit 0d9bb86293c9d39298786df095c73a6251b08b7e
|
|
|
|
We do the same array trick iteratively starting from 1 (byte) by powers
|
|
|
|
of 2 up to 32.
|
|
|
|
|
|
|
|
The new 'critical' option is used to make the invocation die or not
|
|
|
|
according to each test.
|
|
|
|
The default is True since normally it's expected to find a proper
|
|
|
|
result and should error out if not.
|
|
|
|
|
2014-05-09 14:31:37 +02:00
|
|
|
Status: Upstream.
|
|
|
|
|
2014-04-23 02:07:58 +02:00
|
|
|
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
|
|
|
|
---
|
|
|
|
buildtools/wafsamba/samba_autoconf.py | 28 ++++++++++++++++------------
|
|
|
|
1 file changed, 16 insertions(+), 12 deletions(-)
|
|
|
|
|
|
|
|
diff --git a/buildtools/wafsamba/samba_autoconf.py b/buildtools/wafsamba/samba_autoconf.py
|
|
|
|
index 59d9e79..f60ce9d 100644
|
|
|
|
--- a/buildtools/wafsamba/samba_autoconf.py
|
|
|
|
+++ b/buildtools/wafsamba/samba_autoconf.py
|
|
|
|
@@ -304,23 +304,27 @@ def CHECK_FUNCS(conf, list, link=True, lib=None, headers=None):
|
|
|
|
|
|
|
|
|
|
|
|
@conf
|
|
|
|
-def CHECK_SIZEOF(conf, vars, headers=None, define=None):
|
|
|
|
+def CHECK_SIZEOF(conf, vars, headers=None, define=None, critical=True):
|
|
|
|
'''check the size of a type'''
|
|
|
|
- ret = True
|
|
|
|
for v in TO_LIST(vars):
|
|
|
|
v_define = define
|
|
|
|
+ ret = False
|
|
|
|
if v_define is None:
|
|
|
|
v_define = 'SIZEOF_%s' % v.upper().replace(' ', '_')
|
|
|
|
- if not CHECK_CODE(conf,
|
|
|
|
- 'printf("%%u", (unsigned)sizeof(%s))' % v,
|
|
|
|
- define=v_define,
|
|
|
|
- execute=True,
|
|
|
|
- define_ret=True,
|
|
|
|
- quote=False,
|
|
|
|
- headers=headers,
|
|
|
|
- local_include=False,
|
|
|
|
- msg="Checking size of %s" % v):
|
|
|
|
- ret = False
|
|
|
|
+ for size in list((1, 2, 4, 8, 16, 32)):
|
|
|
|
+ if CHECK_CODE(conf,
|
|
|
|
+ 'static int test_array[1 - 2 * !(((long int)(sizeof(%s))) <= %d)];' % (v, size),
|
|
|
|
+ define=v_define,
|
|
|
|
+ quote=False,
|
|
|
|
+ headers=headers,
|
|
|
|
+ local_include=False,
|
|
|
|
+ msg="Checking if size of %s == %d" % (v, size)):
|
|
|
|
+ conf.DEFINE(v_define, size)
|
|
|
|
+ ret = True
|
|
|
|
+ break
|
|
|
|
+ if not ret and critical:
|
|
|
|
+ Logs.error("Couldn't determine size of '%s'" % v)
|
|
|
|
+ sys.exit(1)
|
|
|
|
return ret
|
|
|
|
|
|
|
|
@conf
|
|
|
|
--
|
|
|
|
1.8.3.2
|
|
|
|
|