summaryrefslogtreecommitdiffstats
path: root/meson.build
diff options
context:
space:
mode:
Diffstat (limited to 'meson.build')
-rw-r--r--meson.build31
1 files changed, 25 insertions, 6 deletions
diff --git a/meson.build b/meson.build
index 03d51a4..e144325 100644
--- a/meson.build
+++ b/meson.build
@@ -4,21 +4,40 @@ add_project_arguments('-D_XOPEN_SOURCE=700', language : [ 'c' ])
c_comp = meson.get_compiler('c')
conf_data = configuration_data()
+
+if not c_comp.has_function_attribute('visibility:default') \
+ or not c_comp.has_function_attribute('visibility:hidden')
+ error('Your platform isn\'t supported. Use a gcc-like compiler on linux.')
+else
+ conf_data.set('PTX_EXPORT', '__attribute__((visibility("default")))')
+ conf_data.set('PTX_IMPORT', 'extern')
+endif
+
conf_data.set('HAS_ATTR_WUR', c_comp.has_function_attribute('warn_unused_result'))
conf_data.set('HAS_ATTR_ALWAYS_INLINE', c_comp.has_function_attribute('always_inline'))
conf_data.set('HAS_ATTR_MALLOC', c_comp.has_function_attribute('malloc'))
conf_data.set('HAS_ATTR_FORMAT', c_comp.has_function_attribute('format'))
+
conf_data.set('HAS_RESTRICT', c_comp.has_type('int *restrict'))
-configure_file(input : 'config.h.in', output : 'config.h', configuration : conf_data)
+
+configure_file(input : 'include/config.h.in', output : 'config.h', configuration : conf_data)
conf_include = include_directories('.')
src_include = include_directories('include')
-executable('ptxmc',
- 'pipeline.c',
- 'connection.c',
- 'main.c',
+export_dynamic = []
+
+if c_comp.get_argument_syntax() == 'gcc'
+ if c_comp.has_argument('-fvisibility=hidden')
+ add_project_arguments('-fvisibility=hidden', language : 'c')
+ endif
+endif
+
+subdir('src')
+
+executable('ptxmc', prog_sources,
include_directories : [ conf_include, src_include ],
- link_args : [ '-rdynamic' ])
+ gnu_symbol_visibility : 'hidden',
+ export_dynamic : true)
subdir('plugins')