summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNirbheek Chauhan <nirbheek@centricular.com>2017-05-19 11:58:44 +0100
committerEmmanuele Bassi <ebassi@gnome.org>2017-05-19 17:32:28 +0100
commit09623d50ac8afd9b246e571372972142af5daaa3 (patch)
tree6d111164637f3756a3c2d90018763b5dafbf02e9
parent5d3af9bf597cf42bd39bf2e4275c7f0746a947b5 (diff)
downloadpango-09623d50ac8afd9b246e571372972142af5daaa3.tar.gz
meson: Add a few missing things, minor fixes, TODO
-rw-r--r--docs/meson.build4
-rw-r--r--examples/meson.build6
-rw-r--r--meson.build71
-rw-r--r--meson_options.txt4
-rw-r--r--pango/meson.build6
-rw-r--r--pango/mini-fribidi/meson.build4
-rw-r--r--tests/meson.build12
7 files changed, 66 insertions, 41 deletions
diff --git a/docs/meson.build b/docs/meson.build
index 23496897..336903bd 100644
--- a/docs/meson.build
+++ b/docs/meson.build
@@ -35,7 +35,7 @@ private_headers = [
'mini-fribidi',
]
-if not host_system.contains('darwin')
+if host_system != 'darwin'
private_headers += [
'pangocairo-coretextfont.h',
'pangocairo-coretext.h',
@@ -43,7 +43,7 @@ if not host_system.contains('darwin')
]
endif
-if not host_system.contains('windows')
+if host_system != 'windows'
private_headers += [
'pangocairo-win32.h',
'pangowin32.h',
diff --git a/examples/meson.build b/examples/meson.build
index ebcec9b8..8c7275f2 100644
--- a/examples/meson.build
+++ b/examples/meson.build
@@ -14,6 +14,12 @@ if pango_font_backends.contains('freetype')
examples_deps += libpangoft2_dep
endif
+if host_system == 'windows'
+ # This hasn't been built in years, most likely, but try now
+ examples += [ 'pangowin32tobmp' ]
+ examples_deps += [ libpangowin32_dep ]
+endif
+
foreach e: examples
executable(e, '@0@.c'.format(e),
dependencies: examples_deps + pango_deps,
diff --git a/meson.build b/meson.build
index 58b92e4f..2bac3b58 100644
--- a/meson.build
+++ b/meson.build
@@ -1,11 +1,12 @@
-project('pango', 'c', version: '1.40.5',
+project('pango', 'c', 'cpp',
+ version: '1.40.5',
license: 'LGPLv2.1+',
default_options: [
'buildtype=debugoptimized',
'warning_level=1',
'c_std=c99',
],
- meson_version : '>= 0.40.0')
+ meson_version : '>= 0.40.1')
add_project_arguments([ '-D_POSIX_C_SOURCE', '-D_POSIX_THREAD_SAFE_FUNCTIONS', '-D_GNU_SOURCE', ], language: 'c')
@@ -42,6 +43,7 @@ host_system = host_machine.system()
# Compiler and linker flags
common_cflags = []
+common_cppflags = []
common_ldflags = []
# Add more compiler warnings to the default set
@@ -67,19 +69,25 @@ if cc.get_id() == 'msvc'
'-we4071', # no function prototype given
'-we4819', # the file contains a character that cannot be represented in the current code page
]
+ test_c_only_flags = []
elif cc.get_id() == 'gcc' or cc.get_id() == 'clang'
- test_cflags = [
+ test_c_only_flags = [
+ '-Wimplicit-function-declaration',
+ '-Wstrict-prototypes',
+ '-Wmissing-prototypes',
+ '-Wnested-externs',
+ '-Wold-style-definition',
+ '-Wno-int-conversion',
+ '-Wno-discarded-qualifiers',
+ ]
+
+ test_cflags = test_c_only_flags + [
'-fno-strict-aliasing',
'-Wpointer-arith',
'-Wmissing-declarations',
- '-Wimplicit-function-declaration',
'-Wformat=2',
'-Wformat-nonliteral',
'-Wformat-security',
- '-Wstrict-prototypes',
- '-Wmissing-prototypes',
- '-Wnested-externs',
- '-Wold-style-definition',
'-Wunused',
'-Wcast-align',
'-Wmissing-noreturn',
@@ -88,8 +96,6 @@ elif cc.get_id() == 'gcc' or cc.get_id() == 'clang'
'-Wlogical-op',
'-Wno-uninitialized',
'-Wno-shadow',
- '-Wno-int-conversion',
- '-Wno-discarded-qualifiers',
'-Werror=redundant-decls',
'-Werror=implicit',
'-Werror=nonnull',
@@ -108,32 +114,43 @@ elif cc.get_id() == 'gcc' or cc.get_id() == 'clang'
'-Werror=write-strings',
'-Werror=undef',
]
+
+ if host_system == 'windows'
+ test_cflags += [ '-mms-bitfields' ]
+ endif
else
test_cflags = []
+ test_c_only_flags = []
endif
-foreach cflag: test_cflags
- if cc.has_argument(cflag)
- common_cflags += [ cflag ]
- endif
-endforeach
-
# Symbol visibility
if get_option('default_library') != 'static'
- if host_machine.system() == 'windows'
+ if host_system == 'windows'
pango_conf.set('DLL_EXPORT', true)
- if cc.get_id() == 'msvc'
- pango_conf.set('_PANGO_EXTERN', '__declspec(dllexport) extern')
- else
- pango_conf.set('_PANGO_EXTERN', '__attribute__((visibility("default"))) __declspec(dllexport) extern')
- common_cflags += ['-fvisibility=hidden']
+ pango_conf.set('_PANGO_EXTERN', '__declspec(dllexport) extern')
+ if cc.get_id() != 'msvc'
+ test_cflags += ['-fvisibility=hidden']
endif
else
pango_conf.set('_PANGO_EXTERN', '__attribute__((visibility("default"))) extern')
- common_cflags += ['-fvisibility=hidden']
+ test_cflags += ['-fvisibility=hidden']
endif
endif
+# Check all compiler flags
+foreach cflag: test_cflags
+ if cc.has_argument(cflag)
+ common_cflags += [ cflag ]
+ endif
+endforeach
+
+# Isolate the C++ compiler flags
+foreach cflag: common_cflags
+ if not test_c_only_flags.contains(cflag)
+ common_cppflags += [ cflag ]
+ endif
+endforeach
+
# Linker flags
if host_machine.system() == 'linux'
foreach ldflag: [ '-Wl,-Bsymbolic', '-Wl,-z,relro', '-Wl,-z,now', ]
@@ -176,10 +193,14 @@ foreach h: checked_headers
endforeach
buildtype = get_option('buildtype')
-if buildtype == 'debug' or buildtype == 'debugoptimized'
+if buildtype.startswith('debug')
pango_debug_cflags = [ '-DPANGO_ENABLE_DEBUG', ]
elif buildtype == 'release'
pango_debug_cflags = [ '-DG_DISABLE_CAST_CHECKS', ]
+ # TODO: We may want a configuration argument to add `G_DISABLE_CHECKS`
+ # and `G_DISABLE_ASSERT` from the build, for specific build environments.
+ # On the other hand, those who need these symbols can inject them in their
+ # build as well.
else
pango_debug_cflags = []
endif
@@ -343,6 +364,6 @@ subdir('pango-view')
subdir('tests')
subdir('tools')
-if get_option('enable-gtk-doc')
+if get_option('enable_docs')
subdir('docs')
endif
diff --git a/meson_options.txt b/meson_options.txt
index 783c1d59..e5f60225 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,4 +1,4 @@
-option('enable-gtk-doc',
+option('enable_docs',
description: 'Build API reference for Pango using GTK-Doc',
type: 'boolean',
- default: 'false')
+ value: false)
diff --git a/pango/meson.build b/pango/meson.build
index bbc6a579..9e9756b6 100644
--- a/pango/meson.build
+++ b/pango/meson.build
@@ -242,7 +242,7 @@ if xft_dep.found()
endif
# Win32
-if host_system.contains('windows')
+if host_system == 'windows'
pangowin32_headers = [
'pangowin32.h',
]
@@ -306,7 +306,7 @@ if cairo_dep.found()
pangocairo_gir_deps += pangoft2_gir_dep
endif
- if host_system.contains('windows') and pango_font_backends.contains('win32')
+ if host_system == 'windows' and pango_font_backends.contains('win32')
pangocairo_sources += [
'pangocairo-win32font.c',
'pangocairo-win32fontmap.c',
@@ -315,7 +315,7 @@ if cairo_dep.found()
pangocairo_deps += libpangowin32_dep
endif
- if host_system.contains('darwin') and pango_font_backends.contains('quartz')
+ if host_system == 'darwin' and pango_font_backends.contains('quartz')
pangocairo_sources += [
'pangocoretext.c',
'pangocoretext-fontmap.c',
diff --git a/pango/mini-fribidi/meson.build b/pango/mini-fribidi/meson.build
index e9dab258..4d87dc22 100644
--- a/pango/mini-fribidi/meson.build
+++ b/pango/mini-fribidi/meson.build
@@ -14,6 +14,4 @@ mini_fribidi_lib = static_library('libmini-fribidi', sources: mini_fribidi_sourc
mini_fribidi_dep = declare_dependency(link_with: mini_fribidi_lib,
dependencies: [ mathlib_dep, gobject_dep ],
- include_directories: [
- include_directories('.'),
- ])
+ include_directories: include_directories('.'))
diff --git a/tests/meson.build b/tests/meson.build
index 1a21101b..d69a0d0d 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -6,11 +6,7 @@ if xft_dep.found()
test_cflags += [ '-DHAVE_X', '-DHAVE_XFT' ]
endif
-if freetype_dep.found()
- test_cflags += '-DHAVE_FREETYPE'
-endif
-
-if host_system.contains('windows')
+if host_system == 'windows'
test_cflags += '-DHAVE_WIN32'
endif
@@ -25,15 +21,18 @@ tests = [
[ 'testboundaries_ucd' ],
[ 'testcolor' ],
[ 'testscript' ],
+ [ 'cxx-test', [ 'cxx-test.cpp' ] ],
]
if freetype_dep.found()
+ test_cflags += '-DHAVE_FREETYPE'
tests += [
[ 'test-ot-tags', [ 'test-ot-tags.c' ], [ libpangoft2_dep ] ],
]
endif
if cairo_dep.found()
+ test_cflags += '-DHAVE_CAIRO'
tests += [
[ 'testiter', [ 'testiter.c' ], [ libpangocairo_dep ] ],
[ 'test-pangocairo-threads', [ 'test-pangocairo-threads.c' ], [ libpangocairo_dep, cairo_dep ] ],
@@ -52,6 +51,7 @@ foreach t: tests
bin = executable(name, src,
dependencies: deps,
include_directories: root_inc,
- c_args: common_cflags + pango_debug_cflags)
+ c_args: common_cflags + pango_debug_cflags + test_cflags,
+ cpp_args: common_cppflags + pango_debug_cflags + test_cflags)
test(name, bin, env: test_env)
endforeach