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