• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1printf_sources = [
2  'asnprintf.c',
3  'printf-args.c',
4  'printf-parse.c',
5  'vasnprintf.c',
6  'printf.c',
7  'printf-extension.c',
8]
9
10printf_args = gst_c_args + ['-DSTATIC=G_GNUC_INTERNAL']
11
12# Don't have a need for that and it's not portable so just ignore for now
13printf_args += ['-UHAVE_LONG_DOUBLE']
14
15# Just use internal emulation for printing long longs for now
16printf_args += ['-UHAVE_LONG_LONG_FORMAT']
17
18# Don't need any of this widechar stuff, so just disable it for now
19printf_args += ['-UHAVE_WCHAR_T', '-UHAVE_WCSLEN', '-UHAVE_WINT_T']
20
21if cc.has_argument('-Wno-format-nonliteral')
22  printf_args += ['-Wno-format-nonliteral']
23endif
24
25# Check if 'long long' works and what format can be used to print it
26# jm_AC_TYPE_LONG_LONG
27if cc.compiles('''long long ll = 1LL;
28                  int i = 63;
29                  int some_func (void) {
30                    long long llmax = (long long) -1;
31                    return ll << i | ll >> i | llmax / ll | llmax % ll;
32                  }''', name : 'long long')
33  printf_args += ['-DHAVE_LONG_LONG']
34  have_long_long = true
35else
36  have_long_long = false
37endif
38
39# The following uintmax_t/intmax_t checks are also in glib
40found_uintmax_t = false
41
42# Define HAVE_INTTYPES_H_WITH_UINTMAX if <inttypes.h> exists,
43# doesn't clash with <sys/types.h>, and declares uintmax_t.
44# jm_AC_HEADER_INTTYPES_H
45if cc.compiles('''#include <sys/types.h>
46                  #include <inttypes.h>
47                  uintmax_t i = (uintmax_t) -1;
48               ''', name : 'uintmax_t in inttypes.h')
49  printf_args += ['-DHAVE_INTTYPES_H_WITH_UINTMAX']
50  found_uintmax_t = true
51endif
52
53# Define HAVE_STDINT_H_WITH_UINTMAX if <stdint.h> exists,
54# doesn't clash with <sys/types.h>, and declares uintmax_t.
55# jm_AC_HEADER_STDINT_H
56if cc.compiles('''#include <sys/types.h>
57                  #include <stdint.h>
58                  uintmax_t i = (uintmax_t) -1;
59               ''', name : 'uintmax_t in stdint.h')
60  printf_args += ['-DHAVE_STDINT_H_WITH_UINTMAX']
61  found_uintmax_t = true
62endif
63
64
65# Define intmax_t to 'long' or 'long long'
66# if it is not already defined in <stdint.h> or <inttypes.h>.
67# For simplicity, we assume that a header file defines 'intmax_t'
68# if and only if it defines 'uintmax_t'.
69printf_args += ['-DHAVE_INTMAX_T']
70if not found_uintmax_t
71  if have_long_long
72    printf_args += ['-Dintmax_t=long long']
73  else
74    printf_args += ['-Dintmax_t=long']
75  endif
76endif
77
78printf_lib = static_library('gstprintf',
79    printf_sources,
80    include_directories : [configinc],
81    c_args : printf_args,
82    install : false,
83    pic: true,
84    dependencies : [glib_dep])
85