From 16d97766465ba87cd69412836d65e68395e84943 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Wed, 25 Feb 2009 17:51:42 +0000 Subject: [PATCH] Move waf up to top level, waf building of pbd, evoral, midi++ git-svn-id: svn://localhost/ardour2/branches/3.0@4654 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/evoral/autowaf.py => autowaf.py | 10 +-- libs/midi++2/wscript | 78 +++++++++++++++++++++++ libs/pbd/mountpoint.cc | 4 ++ libs/pbd/pbd/stacktrace.h | 4 ++ libs/pbd/wscript | 89 +++++++++++++++++++++++++++ libs/evoral/waf => waf | Bin 6 files changed, 180 insertions(+), 5 deletions(-) rename libs/evoral/autowaf.py => autowaf.py (97%) create mode 100644 libs/midi++2/wscript create mode 100644 libs/pbd/wscript rename libs/evoral/waf => waf (100%) diff --git a/libs/evoral/autowaf.py b/autowaf.py similarity index 97% rename from libs/evoral/autowaf.py rename to autowaf.py index 20e3ef3426..3439db9d78 100644 --- a/libs/evoral/autowaf.py +++ b/autowaf.py @@ -91,7 +91,7 @@ def check_tool(conf, name): def check_pkg(conf, name, **args): "Check for a package iff it hasn't been checked for yet" - var_name = 'HAVE_' + args['uselib_store'] + var_name = 'HAVE_' + args['uselib_store'].replace('/', '_') check = not var_name in conf.env if not check and 'atleast_version' in args: # Re-check if version is newer than previous check @@ -100,13 +100,13 @@ def check_pkg(conf, name, **args): check = True; if check: conf.check_cfg(package=name, args="--cflags --libs", **args) - found = bool(conf.env['HAVE_' + args['uselib_store']]) + found = bool(conf.env[var_name]) if found: - conf.define('HAVE_' + args['uselib_store'], int(found)) + conf.define(var_name, int(found)) if 'atleast_version' in args: conf.env['VERSION_' + name] = args['atleast_version'] else: - conf.undefine('HAVE_' + args['uselib_store']) + conf.undefine(var_name) if args['mandatory'] == True: conf.fatal("Required package " + name + " not found") @@ -198,7 +198,7 @@ def configure(conf): g_step = 2 def set_local_lib(conf, name, has_objects): - conf.define('HAVE_' + name.upper(), 1) + conf.define('HAVE_' + name.upper().replace('/', '_'), 1) if has_objects: if type(conf.env['AUTOWAF_LOCAL_LIBS']) != dict: conf.env['AUTOWAF_LOCAL_LIBS'] = {} diff --git a/libs/midi++2/wscript b/libs/midi++2/wscript new file mode 100644 index 0000000000..3b5401b327 --- /dev/null +++ b/libs/midi++2/wscript @@ -0,0 +1,78 @@ +#!/usr/bin/env python +import autowaf + +# Version of this package (even if built as a child) +LIBMIDIPP_VERSION = '0.0.0' + +# Library version (UNIX style major, minor, micro) +# major increment <=> incompatible changes +# minor increment <=> compatible changes (additions) +# micro increment <=> no interface changes +LIBMIDIPP_LIB_VERSION = '4.1.0' + +# Variables for 'waf dist' +APPNAME = 'libmidipp' +VERSION = LIBMIDIPP_VERSION + +# Mandatory variables +srcdir = '.' +blddir = 'build' + +def set_options(opt): + autowaf.set_options(opt) + +def configure(conf): + autowaf.configure(conf) + autowaf.check_tool(conf, 'compiler_cxx') + autowaf.check_pkg(conf, 'glib-2.0', uselib_store='GLIB', atleast_version='2.2', mandatory=True) + autowaf.check_pkg(conf, 'glibmm-2.4', uselib_store='GLIBMM', atleast_version='2.14.0', mandatory=True) + autowaf.check_pkg(conf, 'sigc++-2.0', uselib_store='SIGCPP', atleast_version='2.0', mandatory=True) + autowaf.check_pkg(conf, 'libxml-2.0', uselib_store='XML', mandatory=True) + autowaf.check_pkg(conf, 'jack', uselib_store='JACK', atleast_version='0.109.0', mandatory=True) + + conf.env.append_value('CXXFLAGS', '-DHAVE_WAFCONFIG_H') + conf.write_config_header('wafconfig.h') + + # TODO + conf.env['SYSMIDI'] == 'JACK MIDI' + conf.env.append_value('CXXFLAGS', '-DWITH_JACK_MIDI') + + # Boost headers + autowaf.check_header(conf, 'boost/shared_ptr.hpp', mandatory=True) + autowaf.check_header(conf, 'boost/weak_ptr.hpp', mandatory=True) + +def build(bld): + # Library + obj = bld.new_task_gen('cxx', 'shlib') + obj.source = ''' + fd_midiport.cc + fifomidi.cc + midi.cc + midichannel.cc + midifactory.cc + midimanager.cc + midiparser.cc + midiport.cc + midnam_patch.cc + mmc.cc + mtc.cc + version.cc + ''' + if bld.env['SYSMIDI'] == 'JACK MIDI': + obj.source += ' jack_midiport.cc ' + elif bld.env['SYSMIDI'] == 'Alsa Sequencer': + obj.source += ' alsa_sequencer_midiport.cc ' + elif bld.env['SYSMIDI'] == 'CoreMIDI': + obj.source += ' coremidi_midiport.cc ' + obj.export_incdirs = ['.'] + obj.includes = ['.'] + obj.name = 'libmidipp' + obj.target = 'midipp' + obj.uselib = 'GLIBMM SIGCPP XML JACK' + obj.uselib_local = 'libpbd libevoral' + obj.vnum = LIBMIDIPP_LIB_VERSION + obj.install_path = '' + +def shutdown(): + autowaf.shutdown() + diff --git a/libs/pbd/mountpoint.cc b/libs/pbd/mountpoint.cc index f273146343..a4063a0e40 100644 --- a/libs/pbd/mountpoint.cc +++ b/libs/pbd/mountpoint.cc @@ -28,6 +28,10 @@ using std::string; +#ifdef HAVE_WAFCONFIG_H +#include "wafconfig.h" +#endif + #if HAVE_GETMNTENT #include diff --git a/libs/pbd/pbd/stacktrace.h b/libs/pbd/pbd/stacktrace.h index 0a349dcaeb..18f7b993e1 100644 --- a/libs/pbd/pbd/stacktrace.h +++ b/libs/pbd/pbd/stacktrace.h @@ -29,6 +29,10 @@ namespace PBD { void stacktrace (std::ostream& out, int levels = 0); void trace_twb(); +#ifdef HAVE_WAFCONFIG_H +#include "wafconfig.h" +#endif + #ifdef HAVE_EXECINFO #include #include diff --git a/libs/pbd/wscript b/libs/pbd/wscript new file mode 100644 index 0000000000..9b5dc4cbb2 --- /dev/null +++ b/libs/pbd/wscript @@ -0,0 +1,89 @@ +#!/usr/bin/env python +import autowaf + +# Version of this package (even if built as a child) +LIBPBD_VERSION = '0.0.0' + +# Library version (UNIX style major, minor, micro) +# major increment <=> incompatible changes +# minor increment <=> compatible changes (additions) +# micro increment <=> no interface changes +LIBPBD_LIB_VERSION = '4.1.0' + +# Variables for 'waf dist' +APPNAME = 'libpbd' +VERSION = LIBPBD_VERSION + +# Mandatory variables +srcdir = '.' +blddir = 'build' + +def set_options(opt): + autowaf.set_options(opt) + +def configure(conf): + autowaf.configure(conf) + autowaf.check_tool(conf, 'compiler_cxx') + autowaf.check_pkg(conf, 'glib-2.0', uselib_store='GLIB', atleast_version='2.2', mandatory=True) + autowaf.check_pkg(conf, 'glibmm-2.4', uselib_store='GLIBMM', atleast_version='2.14.0', mandatory=True) + autowaf.check_pkg(conf, 'sigc++-2.0', uselib_store='SIGCPP', atleast_version='2.0', mandatory=True) + autowaf.check_pkg(conf, 'libxml-2.0', uselib_store='XML', mandatory=True) + autowaf.check_pkg(conf, 'uuid', uselib_store='UUID', mandatory=True) + + conf.check(function_name='getmntent', header_name='mntent.h', define_name='HAVE_GETMNTENT') + conf.check(header_name='execinfo.h', define_name='HAVE_EXECINFO') + + conf.env.append_value('CXXFLAGS', '-DHAVE_WAFCONFIG_H') + conf.write_config_header('wafconfig.h') + + # Boost headers + autowaf.check_header(conf, 'boost/shared_ptr.hpp', mandatory=True) + autowaf.check_header(conf, 'boost/weak_ptr.hpp', mandatory=True) + +def build(bld): + # Library + obj = bld.new_task_gen('cxx', 'shlib') + obj.source = ''' + basename.cc + base_ui.cc + command.cc + convert.cc + controllable.cc + enumwriter.cc + dmalloc.cc + error.cc + filesystem.cc + filesystem_paths.cc + file_utils.cc + fpu.cc + id.cc + mountpoint.cc + pathscanner.cc + pool.cc + pthread_utils.cc + receiver.cc + search_path.cc + shortpath.cc + stacktrace.cc + stateful.cc + strreplace.cc + strsplit.cc + textreceiver.cc + transmitter.cc + undo.cc + uuid.cc + version.cc + whitespace.cc + xml++.cc + ''' + obj.export_incdirs = ['.'] + obj.includes = ['.'] + obj.name = 'libpbd' + obj.target = 'pbd' + obj.uselib = 'GLIBMM SIGCPP XML UUID' + obj.vnum = LIBPBD_LIB_VERSION + obj.install_path = '' + +def shutdown(): + autowaf.shutdown() + diff --git a/libs/evoral/waf b/waf similarity index 100% rename from libs/evoral/waf rename to waf