summaryrefslogtreecommitdiff
path: root/ccode
diff options
context:
space:
mode:
authorPrinceton Ferro <princetonferro@gmail.com>2021-05-09 16:00:11 -0400
committerRico Tzschichholz <ricotz@ubuntu.com>2021-05-20 11:59:28 +0200
commitd6f555908157783a309d049405ebe6b676e2b499 (patch)
treee823f754bafa982e37449509da37d4d30a885248 /ccode
parent994b4cb078643d9bb1842fa60ecb69891e1e7b87 (diff)
downloadvala-d6f555908157783a309d049405ebe6b676e2b499.tar.gz
codegen: Introduce VALA_EXPORT for public symbols to improve portability
Use it as replacement for "extern" and attribute every public symbol. We want to ensure that public symbols are exported, which isn't the default when generating a shared library in MSVC, for example.
Diffstat (limited to 'ccode')
-rw-r--r--ccode/valaccodedeclaration.vala2
-rw-r--r--ccode/valaccodefunction.vala2
2 files changed, 3 insertions, 1 deletions
diff --git a/ccode/valaccodedeclaration.vala b/ccode/valaccodedeclaration.vala
index 6da01cfa6..d9bdd82b8 100644
--- a/ccode/valaccodedeclaration.vala
+++ b/ccode/valaccodedeclaration.vala
@@ -87,7 +87,7 @@ public class Vala.CCodeDeclaration : CCodeStatement {
writer.write_string ("volatile ");
}
if ((modifiers & CCodeModifiers.EXTERN) != 0 && !has_initializer ()) {
- writer.write_string ("extern ");
+ writer.write_string ("VALA_EXTERN ");
}
if ((modifiers & CCodeModifiers.THREAD_LOCAL) != 0) {
writer.write_string ("thread_local ");
diff --git a/ccode/valaccodefunction.vala b/ccode/valaccodefunction.vala
index b1a529711..395ffdc8b 100644
--- a/ccode/valaccodefunction.vala
+++ b/ccode/valaccodefunction.vala
@@ -110,6 +110,8 @@ public class Vala.CCodeFunction : CCodeNode {
writer.write_indent (line);
if (CCodeModifiers.INTERNAL in modifiers) {
writer.write_string (GNUC_INTERNAL);
+ } else if (is_declaration && CCodeModifiers.EXTERN in modifiers) {
+ writer.write_string ("VALA_EXTERN ");
}
if (!is_declaration && CCodeModifiers.NO_INLINE in modifiers) {
writer.write_string (GNUC_NO_INLINE);