summaryrefslogtreecommitdiffstats
path: root/wscript
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2022-07-14 15:38:57 -0400
committerDavid Robillard <d@drobilla.net>2022-08-13 18:17:34 -0400
commit03b1626676f596d78df9de718e3e079e8269f5cc (patch)
tree5a99193e9ba6f0b67620462c632fbd30b88b46ec /wscript
parent3ca0a8cf142d59bd0c76d141fa394ffacc6f9c12 (diff)
downloadganv-03b1626676f596d78df9de718e3e079e8269f5cc.tar.gz
ganv-03b1626676f596d78df9de718e3e079e8269f5cc.tar.bz2
ganv-03b1626676f596d78df9de718e3e079e8269f5cc.zip
Switch to meson build system
Diffstat (limited to 'wscript')
-rw-r--r--wscript309
1 files changed, 0 insertions, 309 deletions
diff --git a/wscript b/wscript
deleted file mode 100644
index e60ac0c..0000000
--- a/wscript
+++ /dev/null
@@ -1,309 +0,0 @@
-#!/usr/bin/env python
-
-import os
-
-from waflib import Options, Utils
-from waflib.extras import autowaf
-
-# Library and package version (UNIX style major, minor, micro)
-# major increment <=> incompatible changes
-# minor increment <=> compatible changes (additions)
-# micro increment <=> no interface changes
-GANV_VERSION = '1.8.0'
-GANV_MAJOR_VERSION = '1'
-
-# Mandatory waf variables
-APPNAME = 'ganv' # Package name for waf dist
-VERSION = GANV_VERSION # Package version for waf dist
-top = '.' # Source directory
-out = 'build' # Build directory
-
-# Release variables
-uri = 'http://drobilla.net/sw/ganv'
-dist_pattern = 'http://download.drobilla.net/ganv-%d.%d.%d.tar.bz2'
-post_tags = ['Hacking', 'LAD', 'Ganv']
-
-
-def options(ctx):
- ctx.load('compiler_c')
- ctx.load('compiler_cxx')
- ctx.add_flags(
- ctx.configuration_options(),
- {'no-graphviz': 'do not compile with graphviz support',
- 'light-theme': 'use light coloured theme',
- 'no-fdgl': 'use experimental force-directed graph layout',
- 'no-nls': 'disable i18n (native language support)',
- 'gir': 'build GObject introspection data'})
-
-def configure(conf):
- conf.load('compiler_c', cache=True)
- conf.load('compiler_cxx', cache=True)
- conf.load('autowaf', cache=True)
- autowaf.set_c_lang(conf, 'c99')
- autowaf.set_cxx_lang(conf, 'c++11')
-
- if Options.options.ultra_strict:
- autowaf.add_compiler_flags(conf.env, 'c', {
- 'clang': [
- '-Wno-bad-function-cast',
- '-Wno-documentation',
- ],
- 'gcc': [
- '-Wno-bad-function-cast',
- ]
- })
-
- autowaf.add_compiler_flags(conf.env, 'cxx', {
- 'clang': [
- '-Wno-exit-time-destructors',
- '-Wno-global-constructors',
- '-Wno-missing-noreturn',
- '-Wno-old-style-cast',
- '-Wno-weak-vtables',
- '-Wno-zero-as-null-pointer-constant',
- ],
- 'gcc': [
- '-Wno-effc++',
- '-Wno-missing-noreturn',
- '-Wno-old-style-cast',
- '-Wno-useless-cast',
- '-Wno-zero-as-null-pointer-constant',
- ]
- })
-
- autowaf.add_compiler_flags(conf.env, '*', {
- 'clang': [
- '-Wno-cast-qual',
- '-Wno-covered-switch-default',
- '-Wno-disabled-macro-expansion',
- '-Wno-documentation-unknown-command',
- '-Wno-double-promotion',
- '-Wno-float-conversion',
- '-Wno-float-equal',
- '-Wno-implicit-fallthrough',
- '-Wno-implicit-float-conversion',
- '-Wno-padded',
- '-Wno-reserved-id-macro',
- '-Wno-shadow',
- '-Wno-shorten-64-to-32',
- '-Wno-sign-conversion',
- '-Wno-switch-enum',
- '-Wno-unused-macros',
- '-Wno-used-but-marked-unused',
- ],
- 'gcc': [
- '-Wno-cast-function-type',
- '-Wno-cast-qual',
- '-Wno-conversion',
- '-Wno-deprecated-declarations',
- '-Wno-double-promotion',
- '-Wno-float-conversion',
- '-Wno-float-equal',
- '-Wno-format',
- '-Wno-implicit-fallthrough',
- '-Wno-padded',
- '-Wno-pedantic',
- '-Wno-shadow',
- '-Wno-sign-conversion',
- '-Wno-switch-enum',
- '-Wno-unused-macros',
- ],
- })
-
- conf.check_pkg('gtk+-2.0', uselib_store='GTK', system=True)
- conf.check_pkg('gtkmm-2.4 >= 2.10.0', uselib_store='GTKMM', system=True)
-
- if Options.options.gir:
- conf.check_pkg('gobject-introspection-1.0',
- uselib_store='GIR',
- system=True,
- mandatory=False)
- conf.find_program('g-ir-doc-tool', var='G_IR_DOC_TOOL', mandatory=False)
- conf.find_program('yelp-build', var='YELP_BUILD', mandatory=False)
-
- if not Options.options.no_graphviz:
- conf.check_pkg('libgvc',
- uselib_store='AGRAPH',
- system=True,
- mandatory=False)
- if conf.env.HAVE_AGRAPH:
- conf.define('HAVE_AGRAPH', 1)
-
- if not Options.options.no_fdgl:
- conf.define('GANV_FDGL', 1)
-
- if Options.options.light_theme:
- conf.define('GANV_USE_LIGHT_THEME', 1)
-
- if not Options.options.no_nls:
- conf.check_function('cxx', 'dgettext',
- header_name = 'libintl.h',
- lib = 'intl',
- define_name = 'ENABLE_NLS',
- return_type = 'char*',
- arg_types = 'const char*,const char*',
- mandatory = False)
-
- autowaf.set_lib_env(conf, 'ganv', GANV_VERSION)
- conf.write_config_header('ganv_config.h', remove=False)
-
- autowaf.display_summary(
- conf,
- {'Static (Graphviz) arrange': bool(conf.env.HAVE_AGRAPH),
- 'Interactive force-directed arrange': conf.is_defined('GANV_FDGL'),
- 'Native language support': bool(conf.env.ENABLE_NLS),
- 'GObject introspection': bool(conf.env.HAVE_GIR),
- 'Unit tests': bool(conf.env.BUILD_TESTS)})
-
-ganv_source = [
- 'src/Canvas.cpp',
- 'src/Port.cpp',
- 'src/box.c',
- 'src/circle.c',
- 'src/edge.c',
- 'src/ganv-marshal.c',
- 'src/group.c',
- 'src/item.c',
- 'src/module.c',
- 'src/node.c',
- 'src/port.c',
- 'src/text.c',
- 'src/widget.c'
-]
-
-def declare_doc_files(task):
- bld = task.generator.bld
- path = bld.path.get_bld().find_or_declare('doc-html')
- for i in path.ant_glob('*', remove=False):
- i.sig = Utils.h_file(i.abspath())
-
-def build(bld):
- # Headers
- includedir = '${INCLUDEDIR}/ganv-%s/ganv' % GANV_MAJOR_VERSION
- bld.install_files(includedir, bld.path.ant_glob('ganv/*.h*'))
-
- # Pkgconfig file
- autowaf.build_pc(bld, 'GANV', GANV_VERSION, GANV_MAJOR_VERSION,
- 'GTK GTKMM AGRAPH',
- {'GANV_MAJOR_VERSION' : GANV_MAJOR_VERSION})
-
- bld(rule = 'glib-genmarshal --prefix=ganv_marshal --header ${SRC} > ${TGT}',
- source = 'src/ganv-marshal.list',
- target = 'src/ganv-marshal.h')
-
- bld(rule = 'glib-genmarshal --prefix=ganv_marshal --body ${SRC} > ${TGT}',
- source = 'src/ganv-marshal.list',
- target = 'src/ganv-marshal.c.in')
-
- bld(rule = 'cat ${SRC} > ${TGT}',
- source = ['src/ganv-marshal.h', 'src/ganv-marshal.c.in'],
- target = 'src/ganv-marshal.c')
-
- # Library
- lib = bld(features = 'c cshlib cxx cxxshlib',
- export_includes = ['.'],
- source = ganv_source,
- includes = ['.', './src'],
- name = 'libganv',
- target = 'ganv-%s' % GANV_MAJOR_VERSION,
- uselib = 'GTK GTKMM AGRAPH',
- vnum = GANV_VERSION,
- install_path = '${LIBDIR}')
- if bld.is_defined('ENABLE_NLS'):
- lib.lib = ['intl']
-
- # Benchmark program (C++)
- bld(features = 'cxx cxxprogram',
- source = 'src/ganv_bench.cpp',
- includes = ['.', './src'],
- use = 'libganv',
- uselib = 'GTK GTKMM AGRAPH',
- target = 'src/ganv_bench')
-
- if bld.env.BUILD_TESTS:
- test_libs = []
- test_cflags = ['']
- test_linkflags = ['']
- if not bld.env.NO_COVERAGE:
- test_cflags += ['--coverage']
- test_linkflags += ['--coverage']
-
- # Static library for test program
- bld(features = 'c cstlib cxx cxxshlib',
- source = ganv_source,
- includes = ['.', './src'],
- name = 'libganv_profiled',
- target = 'ganv_profiled',
- uselib = 'GTK GTKMM AGRAPH',
- install_path = '',
- cflags = test_cflags,
- linkflags = test_linkflags)
-
- # Test program (C)
- bld(features = 'cxx cxxprogram',
- source = 'src/ganv_test.c',
- includes = ['.', './src'],
- use = 'libganv_profiled',
- lib = test_libs,
- uselib = 'GTK GTKMM AGRAPH',
- target = 'src/ganv_test',
- cflags = test_cflags,
- linkflags = test_linkflags)
-
- # Documentation
- #autowaf.build_dox(bld, 'GANV', GANV_VERSION, top, out)
-
- if bld.env.HAVE_GIR:
- bld.add_group()
-
- bld_dir = os.path.join(out, APPNAME)
- if not (len(bld.stack_path) > 1): # not top-level
- bld_dir = out
-
- pc_path = os.path.abspath(os.path.join(bld_dir, 'ganv-1.pc'))
-
- bld(name = 'ganv-gir',
- source = ganv_source + bld.path.ant_glob('ganv/*.h'),
- target = 'Ganv-1.0.gir',
- install_path = '${LIBDIR}/girepository-1.0',
- rule = 'g-ir-scanner --warn-all -n Ganv --nsversion=1.0'
- ' --no-libtool ' +
- ('--pkg=%s' % pc_path) +
- (' -I%s' % bld.path.bldpath()) +
- ''.join([' -I' + path for path in bld.env.INCLUDES_GTK]) +
- (' -L%s' % bld_dir) +
- ' --library=ganv-1'
- ' --include=GObject-2.0 --include=Gdk-2.0 --include Gtk-2.0'
- ' -o ${TGT} ${SRC}')
-
- bld(name = 'ganv-typelib',
- after = 'ganv-gir',
- source = 'Ganv-1.0.gir',
- target = 'Ganv-1.0.typelib',
- install_path = '${LIBDIR}/girepository-1.0',
- rule = 'g-ir-compiler ${SRC} -o ${TGT}')
-
- if bld.env.DOCS and bld.env['G_IR_DOC_TOOL'] and bld.env['YELP_BUILD']:
- # The source and target files used here aren't exclusive,
- # but are declared so waf can track dependencies
- bld(rule = '${G_IR_DOC_TOOL} --language C -o doc-xml ${SRC}',
- source = 'Ganv-1.0.gir',
- target = 'doc-xml/index.page')
- bld(name = 'yelp-build',
- rule = '${YELP_BUILD} html -o doc-html doc-xml',
- source = 'doc-xml/index.page',
- target = 'doc-html/index.html')
- bld(name = 'find-docs',
- always = True,
- rule = declare_doc_files,
- after = 'yelp-build')
-
- bld.install_files(
- os.path.join('${DOCDIR}', 'ganv-0', 'html'),
- bld.path.get_bld().ant_glob('doc-html/*'))
-
- bld.add_post_fun(autowaf.run_ldconfig)
-
-def i18n(bld):
- autowaf.build_i18n(bld, '..', 'ganv', APPNAME, ganv_source,
- 'David Robillard')