From 2a7ef1c60d0a1b9d9251e3118f3af53ec935fad5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Corentin=20No=C3=ABl?= Date: Tue, 18 Dec 2018 10:14:55 +0100 Subject: Use Meson build system --- benchmark/meson.build | 15 +++++++ doc/meson.build | 23 ++++++++++ gee/meson.build | 115 ++++++++++++++++++++++++++++++++++++++++++++++++++ meson.build | 32 ++++++++++++++ meson_options.txt | 3 ++ tests/meson.build | 49 +++++++++++++++++++++ utils/meson.build | 5 +++ 7 files changed, 242 insertions(+) create mode 100644 benchmark/meson.build create mode 100644 doc/meson.build create mode 100644 gee/meson.build create mode 100644 meson.build create mode 100644 meson_options.txt create mode 100644 tests/meson.build create mode 100644 utils/meson.build diff --git a/benchmark/meson.build b/benchmark/meson.build new file mode 100644 index 0000000..5fd12d3 --- /dev/null +++ b/benchmark/meson.build @@ -0,0 +1,15 @@ +benchmark_exec = executable( + 'benchmarks', + 'benchmark.vala', + 'benchmarksorts.vala', + dependencies : [gee_internal_dep, m_dep], + build_by_default: false, +) + +benchmark( + 'gee', + benchmark_exec, + args: [ + '--run-sort', + ], +) diff --git a/doc/meson.build b/doc/meson.build new file mode 100644 index 0000000..c19940c --- /dev/null +++ b/doc/meson.build @@ -0,0 +1,23 @@ +valadoc = find_program('valadoc') +custom_target( + 'documentation', + command: [ + valadoc, + '--directory='+meson.current_build_dir(), + '--basedir='+meson.source_root(), + '--wiki='+meson.current_source_dir(), + '--vapidir='+join_paths(meson.source_root(), 'utils'), + '--package-name='+gee_name, + '--package-version='+meson.project_version(), + '--pkg=geeutils', + '--pkg=glib-2.0', + '--pkg=gio-2.0', + '--pkg=gobject-2.0', + '--use-svg-images', + '--importdir='+join_paths(glib_dep.get_pkgconfig_variable('prefix'), get_option('datadir'), 'gtk-doc', 'html'), + '--force', + '@INPUT@' + ], + output: 'index.html', + input: gee_files, +) diff --git a/gee/meson.build b/gee/meson.build new file mode 100644 index 0000000..872bff0 --- /dev/null +++ b/gee/meson.build @@ -0,0 +1,115 @@ +gee_files = files( + 'abstractbidirlist.vala', + 'abstractbidirsortedmap.vala', + 'abstractbidirsortedset.vala', + 'abstractcollection.vala', + 'abstractlist.vala', + 'abstractmap.vala', + 'abstractmultimap.vala', + 'abstractmultiset.vala', + 'abstractqueue.vala', + 'abstractset.vala', + 'abstractsortedmap.vala', + 'abstractsortedset.vala', + 'arraylist.vala', + 'arrayqueue.vala', + 'assemblyinfo.vala', + 'bidiriterator.vala', + 'bidirlistiterator.vala', + 'bidirlist.vala', + 'bidirmapiterator.vala', + 'bidirsortedmap.vala', + 'bidirsortedset.vala', + 'collection.vala', + 'comparable.vala', + 'concurrentlist.vala', + 'concurrentset.vala', + 'deque.vala', + 'functions.vala', + 'future.vala', + 'hashable.vala', + 'hashmap.vala', + 'hashmultimap.vala', + 'hashmultiset.vala', + 'hashset.vala', + 'hazardpointer.vala', + 'iterable.vala', + 'iterator.vala', + 'lazy.vala', + 'lightmapfuture.vala', + 'linkedlist.vala', + 'listiterator.vala', + 'list.vala', + 'mapiterator.vala', + 'map.vala', + 'multimap.vala', + 'multiset.vala', + 'priorityqueue.vala', + 'promise.vala', + 'queue.vala', + 'readonlybidirlist.vala', + 'readonlybidirsortedmap.vala', + 'readonlybidirsortedset.vala', + 'readonlycollection.vala', + 'readonlylist.vala', + 'readonlymap.vala', + 'readonlymultimap.vala', + 'readonlymultiset.vala', + 'readonlyset.vala', + 'readonlysortedmap.vala', + 'readonlysortedset.vala', + 'set.vala', + 'sortedmap.vala', + 'sortedset.vala', + 'streamiterator.vala', + 'task.vala', + 'teeiterator.vala', + 'timsort.vala', + 'traversable.vala', + 'treemap.vala', + 'treemultimap.vala', + 'treemultiset.vala', + 'treeset.vala', + 'unfolditerator.vala', + 'unrolledlinkedlist.vala', +) + +gee_name = 'gee-'+api_version +gee_gir = 'Gee-'+api_version+'.gir' +gee_typelib = 'Gee-'+api_version+'.typelib' +gee_deps = [glib_dep, gobject_dep, gio_dep] + +gee_lib = library( + gee_name, + gee_files, + soversion: meson.project_version().split('.')[0], + version: meson.project_version(), + vala_header: 'gee.h', + vala_vapi: gee_name+'.vapi', + vala_gir: gee_gir, + dependencies: [gee_deps, geeutils_dep], + install: true, + install_dir: [true, join_paths(get_option('includedir'), gee_name), true, true], +) + +g_ir_compiler = find_program('g-ir-compiler') +custom_target( + gee_name + 'typelib', + command: [g_ir_compiler, '--output', '@OUTPUT@', join_paths(meson.current_build_dir(), gee_gir)], + output: gee_typelib, + depends: gee_lib, + install: true, + install_dir: join_paths(get_option('libdir'), 'girepository-1.0') +) + +gee_dep = declare_dependency( + link_with: gee_lib, + dependencies: gee_deps, + include_directories: include_directories('.') +) + +gee_internal_dep = declare_dependency( + sources: gee_files, + dependencies: [gee_deps, geeutils_dep], + include_directories: include_directories('.') +) diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..2cc15a2 --- /dev/null +++ b/meson.build @@ -0,0 +1,32 @@ +project('libgee', 'c', 'vala', version: '0.20.5') +api_version = '0.8' + +glib_minimal_version = '2.36' +glib_dep = dependency('glib-2.0', version: '>='+glib_minimal_version) +gobject_dep = dependency('gobject-2.0', version: '>='+glib_minimal_version) +gio_dep = dependency('gio-2.0', version: '>='+glib_minimal_version) +m_dep = meson.get_compiler('c').find_library('m', required : false) +posix_dep = meson.get_compiler('vala').find_library('posix') + +add_project_arguments([ + '--hide-internal', + '--target-glib='+glib_minimal_version, + ], + language: 'vala' +) + +if get_option('internal-asserts') + add_project_arguments('--define=DISABLE_INTERNAL_ASSERTS', language: 'vala') +endif + +if get_option('consistency-check') + add_project_arguments('--define=CONSISTENCY_CHECKS', language: 'vala') +endif + +subdir('utils') +subdir('gee') +subdir('benchmark') +subdir('tests') +if get_option('documentation') + subdir('doc') +endif diff --git a/meson_options.txt b/meson_options.txt new file mode 100644 index 0000000..7551754 --- /dev/null +++ b/meson_options.txt @@ -0,0 +1,3 @@ +option('documentation', type : 'boolean', value : false, description : 'Documentation generation') +option('internal-asserts', type : 'boolean', value : true, description : 'Use internal asserts') +option('consistency-check', type : 'boolean', value : false, description : 'Do some (very) expensive consistency checks: It might affect the asymptotic performance') diff --git a/tests/meson.build b/tests/meson.build new file mode 100644 index 0000000..a13d014 --- /dev/null +++ b/tests/meson.build @@ -0,0 +1,49 @@ +tests_exec = executable( + 'benchmarks', + 'testarraylist.vala', + 'testarrayqueue.vala', + 'testbidirlist.vala', + 'testbidirsortedset.vala', + 'testbidirsortedmap.vala', + 'testcase.vala', + 'testcollection.vala', + 'testconcurrentlist.vala', + 'testconcurrentset.vala', + 'testdata.vala', + 'testdeque.vala', + 'testfunctions.vala', + 'testhashmap.vala', + 'testhashmultimap.vala', + 'testhashmultiset.vala', + 'testhashset.vala', + 'testlinkedlist.vala', + 'testlinkedlistasdeque.vala', + 'testlist.vala', + 'testmain.vala', + 'testmap.vala', + 'testmultimap.vala', + 'testmultiset.vala', + 'testpriorityqueue.vala', + 'testqueue.vala', + 'testreadonlybidirlist.vala', + 'testreadonlycollection.vala', + 'testreadonlylist.vala', + 'testreadonlymap.vala', + 'testreadonlyset.vala', + 'testset.vala', + 'testsortedset.vala', + 'testsortedmap.vala', + 'testtreemap.vala', + 'testtreemultimap.vala', + 'testtreemultiset.vala', + 'testtreeset.vala', + 'testunrolledlinkedlist.vala', + 'testunrolledlinkedlistasdeque.vala', + dependencies : [gee_dep, posix_dep], + build_by_default: false, +) + +test( + 'tests', + tests_exec +) diff --git a/utils/meson.build b/utils/meson.build new file mode 100644 index 0000000..1f4fbb9 --- /dev/null +++ b/utils/meson.build @@ -0,0 +1,5 @@ +geeutils_vapi = meson.get_compiler('vala').find_library('geeutils', dirs: meson.current_source_dir()) +geeutils_dep = declare_dependency( + dependencies: geeutils_vapi, + include_directories: include_directories('.') +) -- cgit v1.2.1