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