Because vala is not listed in clike_langs, is_source(fname) is returning False for Vala source files. Therefore, extract_all_objects() is completely empty for Vala programs. Fixes #791pull/3729/head
parent
d47ece391a
commit
1a5a18a3f3
9 changed files with 91 additions and 2 deletions
@ -0,0 +1,11 @@ |
|||||||
|
project('valatest', 'vala', 'c') |
||||||
|
|
||||||
|
valadeps = [dependency('glib-2.0'), dependency('gobject-2.0')] |
||||||
|
|
||||||
|
# A dummy target, just so that we can check that extract_all_objects() works |
||||||
|
# properly for Vala sources. Due to a bug, Vala's .c.o files weren't included |
||||||
|
# which would cause the "e" executable below to have no "main" and fail to link. |
||||||
|
dummy = executable('valaprog_dummy', 'prog.vala', dependencies : valadeps, build_by_default: false) |
||||||
|
|
||||||
|
objs = dummy.extract_all_objects() |
||||||
|
e = executable('valaprog', objects: objs, dependencies : valadeps) |
@ -0,0 +1,7 @@ |
|||||||
|
class MainProg : GLib.Object { |
||||||
|
|
||||||
|
public static int main(string[] args) { |
||||||
|
stdout.printf("Vala is working.\n"); |
||||||
|
return 0; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,23 @@ |
|||||||
|
project('vala and asm', 'vala', 'c') |
||||||
|
|
||||||
|
cpu = host_machine.cpu_family() |
||||||
|
cc = meson.get_compiler('c') |
||||||
|
|
||||||
|
supported_cpus = ['arm', 'x86', 'x86_64'] |
||||||
|
|
||||||
|
if not supported_cpus.contains(cpu) |
||||||
|
error('MESON_SKIP_TEST unsupported cpu:' + cpu) |
||||||
|
endif |
||||||
|
|
||||||
|
if meson.get_compiler('c').get_id() == 'msvc' |
||||||
|
error('MESON_SKIP_TEST MSVC can\'t compile assembly') |
||||||
|
endif |
||||||
|
|
||||||
|
if cc.symbols_have_underscore_prefix() |
||||||
|
add_project_arguments('-DMESON_TEST__UNDERSCORE_SYMBOL', language: 'c') |
||||||
|
endif |
||||||
|
|
||||||
|
valadeps = [dependency('glib-2.0'), dependency('gobject-2.0')] |
||||||
|
e = executable('vala-asm', ['prog.vala', 'retval-' + cpu + '.S'], |
||||||
|
dependencies: valadeps) |
||||||
|
test('test-vala-asm', e) |
@ -0,0 +1,9 @@ |
|||||||
|
extern int get_retval(); |
||||||
|
|
||||||
|
class MainProg : GLib.Object { |
||||||
|
|
||||||
|
public static int main(string[] args) { |
||||||
|
stdout.printf("Vala is working.\n"); |
||||||
|
return get_retval(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,11 @@ |
|||||||
|
#include "symbol-underscore.h" |
||||||
|
|
||||||
|
.text |
||||||
|
.globl SYMBOL_NAME(get_retval) |
||||||
|
# ifdef __linux__ |
||||||
|
.type get_retval, %function |
||||||
|
#endif |
||||||
|
|
||||||
|
SYMBOL_NAME(get_retval): |
||||||
|
mov r0, #0 |
||||||
|
mov pc, lr |
@ -0,0 +1,12 @@ |
|||||||
|
#include "symbol-underscore.h" |
||||||
|
|
||||||
|
.text |
||||||
|
.globl SYMBOL_NAME(get_retval) |
||||||
|
/* Only supported on Linux with GAS */ |
||||||
|
# ifdef __linux__ |
||||||
|
.type get_retval, %function |
||||||
|
#endif |
||||||
|
|
||||||
|
SYMBOL_NAME(get_retval): |
||||||
|
xorl %eax, %eax |
||||||
|
retl |
@ -0,0 +1,11 @@ |
|||||||
|
#include "symbol-underscore.h" |
||||||
|
|
||||||
|
.text |
||||||
|
.globl SYMBOL_NAME(get_retval) |
||||||
|
# ifdef __linux__ |
||||||
|
.type get_retval, %function |
||||||
|
#endif |
||||||
|
|
||||||
|
SYMBOL_NAME(get_retval): |
||||||
|
xorl %eax, %eax |
||||||
|
retq |
@ -0,0 +1,5 @@ |
|||||||
|
#if defined(MESON_TEST__UNDERSCORE_SYMBOL) |
||||||
|
# define SYMBOL_NAME(name) _##name |
||||||
|
#else |
||||||
|
# define SYMBOL_NAME(name) name |
||||||
|
#endif |
Loading…
Reference in new issue