dpkg-split: Use varbuf instead of ad-hoc allocation in read_info
[dpkg.git] / m4 / dpkg-arch.m4
blob5540eedb72b79e7aad112dd0c0e41e8d72ac7406
1 # serial 2
2 # Copyright © 2005 Scott James Remnant <scott@netsplit.com>
3 # Copyright © 2006-2023 Guillem Jover <guillem@debian.org>
5 # _DPKG_ARCHITECTURE([DEB_VAR], [sh_var])
6 # ---------------------------------------
7 # Use dpkg-architecture from the source tree to set sh_var using DEB_VAR for
8 # the target architecture, to avoid duplicating its logic.
9 AC_DEFUN([_DPKG_ARCHITECTURE], [
10   AC_REQUIRE([DPKG_PROG_PERL])dnl
11   AC_REQUIRE([AC_CANONICAL_HOST])dnl
12   $2=$(PERL=$PERL ${CONFIG_SHELL-/bin/sh} "$srcdir/build-aux/run-script" scripts/dpkg-architecture.pl -t$host -q$1 2>/dev/null)
13 ])# _DPKG_ARCHITECTURE
15 # DPKG_CPU_TYPE
16 # -------------
17 # Parse the host cpu name and check it against the cputable to determine
18 # the Debian name for it.  Sets ARCHITECTURE_CPU.
19 AC_DEFUN([DPKG_CPU_TYPE], [
20   AC_MSG_CHECKING([dpkg cpu type])
21   _DPKG_ARCHITECTURE([DEB_HOST_ARCH_CPU], [cpu_type])
22   AS_IF([test "x$cpu_type" = "x"], [
23     cpu_type=$host_cpu
24     AC_MSG_RESULT([$cpu_type])
25     AC_MSG_WARN([$host_cpu not found in cputable])
26   ], [
27     AC_MSG_RESULT([$cpu_type])
28   ])
29   AC_DEFINE_UNQUOTED([ARCHITECTURE_CPU], ["${cpu_type}"],
30     [Set this to the canonical dpkg CPU name.])
31 ])# DPKG_CPU_TYPE
33 # DPKG_OS_TYPE
34 # ------------
35 # Parse the host operating system name and check it against a list of
36 # special cases to determine what type it is.  Sets ARCHITECTURE_OS.
37 AC_DEFUN([DPKG_OS_TYPE], [
38   AC_MSG_CHECKING([dpkg operating system type])
39   _DPKG_ARCHITECTURE([DEB_HOST_ARCH_OS], [os_type])
40   AS_IF([test "x$os_type" = "x"], [
41     os_type=$host_os
42     AC_MSG_RESULT([$os_type])
43     AC_MSG_WARN([$host_os not found in ostable])
44   ], [
45     AC_MSG_RESULT([$os_type])
46   ])
47   AC_DEFINE_UNQUOTED([ARCHITECTURE_OS], ["${os_type}"],
48     [Set this to the canonical dpkg system name.])
49 ])# DPKG_OS_TYPE
51 # DPKG_ARCHITECTURE
52 # ------------------------
53 # Determine the Debian name for the host operating system,
54 # sets ARCHITECTURE.
55 AC_DEFUN([DPKG_ARCHITECTURE], [
56   DPKG_CPU_TYPE
57   DPKG_OS_TYPE
58   AC_MSG_CHECKING([dpkg architecture name])
59   _DPKG_ARCHITECTURE([DEB_HOST_ARCH], [dpkg_arch])
60   AS_IF([test "x$dpkg_arch" = "x"], [
61     AC_MSG_ERROR([cannot determine host dpkg architecture])
62   ], [
63     AC_MSG_RESULT([$dpkg_arch])
64   ])
65   AC_DEFINE_UNQUOTED([ARCHITECTURE], ["${dpkg_arch}"],
66     [Set this to the canonical dpkg architecture name.])
67 ])# DPKG_ARCHITECTURE
69 # DPKG_ARCH_ABI
70 # -------------
71 # Determine parts of the Debian architecture ABI for the host system,
72 # so that it can be printed during configure.
73 AC_DEFUN([DPKG_ARCH_ABI], [
74   AC_CHECK_SIZEOF([short])
75   AC_CHECK_SIZEOF([int])
76   AC_CHECK_SIZEOF([long])
77   AC_CHECK_SIZEOF([long long])
78   AC_CHECK_SIZEOF([float])
79   AC_CHECK_SIZEOF([double])
80   AC_CHECK_SIZEOF([long double])
81   AC_CHECK_SIZEOF([void *])
83   AC_CHECK_ALIGNOF([max_align_t])
85   AC_C_CHAR_UNSIGNED
86   AS_IF([test "$ac_cv_c_char_unsigned" = yes],
87     [dpkg_char_sign=unsigned],
88     [dpkg_char_sign=signed]
89   )
91   AC_C_BIGENDIAN
92   AS_CASE([$ac_cv_c_bigendian],
93     [yes], [dpkg_arch_endian=big],
94     [no], [dpkg_arch_endian=little],
95     [dpkg_arch_endian=$ac_cv_c_bigendian]
96   )
98   AC_COMPUTE_INT([dpkg_char_bits], [CHAR_BIT], [#include <limits.h>])
99   dpkg_arch_bits=$((ac_cv_sizeof_void_p * dpkg_char_bits))
100 ])# DPKG_ARCH_ABI