commit
df1480fe11
6 changed files with 150 additions and 30 deletions
@ -0,0 +1,2 @@ |
||||
#define INTSIZE @INTSIZE@ |
||||
#define FOOBAR_IN_CONFIG_H @FOOBAR@ |
@ -0,0 +1,6 @@ |
||||
#ifndef __FOOBAR_H__ |
||||
#define __FOOBAR_H__ |
||||
|
||||
#define FOOBAR_IN_FOOBAR_H 10 |
||||
|
||||
#endif /*__FOOBAR_H__*/ |
@ -0,0 +1,35 @@ |
||||
project('compute int', 'c', 'cpp') |
||||
|
||||
inc = include_directories('.') |
||||
|
||||
# Test with C |
||||
cc = meson.get_compiler('c') |
||||
|
||||
intsize = cc.compute_int('sizeof(int)', low : 1, high : 16, guess : 4) |
||||
foobar = cc.compute_int('FOOBAR_IN_FOOBAR_H', prefix : '#include "foobar.h"', include_directories : inc) |
||||
|
||||
cd = configuration_data() |
||||
cd.set('INTSIZE', intsize) |
||||
cd.set('FOOBAR', foobar) |
||||
cd.set('CONFIG', 'config.h') |
||||
configure_file(input : 'config.h.in', output : 'config.h', configuration : cd) |
||||
s = configure_file(input : 'prog.c.in', output : 'prog.c', configuration : cd) |
||||
|
||||
e = executable('prog', s) |
||||
test('compute int test', e) |
||||
|
||||
# Test with C++ |
||||
cpp = meson.get_compiler('cpp') |
||||
|
||||
intsize = cpp.compute_int('sizeof(int)') |
||||
foobar = cpp.compute_int('FOOBAR_IN_FOOBAR_H', prefix : '#include "foobar.h"', include_directories : inc) |
||||
|
||||
cdpp = configuration_data() |
||||
cdpp.set('INTSIZE', intsize) |
||||
cdpp.set('FOOBAR', foobar) |
||||
cdpp.set('CONFIG', 'config.hpp') |
||||
configure_file(input : 'config.h.in', output : 'config.hpp', configuration : cdpp) |
||||
spp = configure_file(input : 'prog.c.in', output : 'prog.cc', configuration : cdpp) |
||||
|
||||
epp = executable('progpp', spp) |
||||
test('compute int test c++', epp) |
@ -0,0 +1,16 @@ |
||||
#include "@CONFIG@" |
||||
#include <stdio.h> |
||||
#include <wchar.h> |
||||
#include "foobar.h" |
||||
|
||||
int main(int argc, char **argv) { |
||||
if(INTSIZE != sizeof(int)) { |
||||
fprintf(stderr, "Mismatch: computed int size %d, actual size %d.\n", INTSIZE, (int)sizeof(int)); |
||||
return 1; |
||||
} |
||||
if(FOOBAR_IN_CONFIG_H != FOOBAR_IN_FOOBAR_H) { |
||||
fprintf(stderr, "Mismatch: computed int %d, should be %d.\n", FOOBAR_IN_CONFIG_H, FOOBAR_IN_FOOBAR_H); |
||||
return 1; |
||||
} |
||||
return 0; |
||||
} |
Loading…
Reference in new issue