diff options
author | Nedko Arnaudov <nedko@arnaudov.name> | 2012-11-24 07:06:31 +0200 |
---|---|---|
committer | Nedko Arnaudov <nedko@arnaudov.name> | 2012-11-24 07:06:31 +0200 |
commit | ce50e5b0ed617d768eb041f7e4f7799e62d4dcd5 (patch) | |
tree | f1af5a76db3484d0545959a1e7a7570a5cca92bc | |
parent | 6f7f96a8b5d6571eb7960a924d722e0528e37a06 (diff) | |
download | jack2-ce50e5b0ed617d768eb041f7e4f7799e62d4dcd5.tar.gz |
waf: configure option for enforcing autostart method
-rw-r--r-- | common/wscript | 2 | ||||
-rw-r--r-- | posix/JackPosixServerLaunch.cpp | 7 | ||||
-rw-r--r-- | wscript | 25 |
3 files changed, 29 insertions, 5 deletions
diff --git a/common/wscript b/common/wscript index c3894a5e..36423d38 100644 --- a/common/wscript +++ b/common/wscript @@ -226,7 +226,7 @@ def build(bld): clientlib.defines = 'HAVE_CONFIG_H' clientlib.use = uselib clientlib.install_path = '${LIBDIR}' - if bld.env['BUILD_JACKDBUS'] == True and bld.env['BUILD_JACKD'] == False: + if bld.env['AUTOSTART_METHOD'] == "dbus": clientlib.use.append('DBUS-1') clientlib.includes = includes clientlib.name = 'clientlib' diff --git a/posix/JackPosixServerLaunch.cpp b/posix/JackPosixServerLaunch.cpp index 81836de0..9818f71d 100644 --- a/posix/JackPosixServerLaunch.cpp +++ b/posix/JackPosixServerLaunch.cpp @@ -73,7 +73,7 @@ static int start_server_dbus(const char* server_name) return 0; } -#else +#elif defined(USE_CLASSIC_AUTOLAUNCH) /* Exec the JACK server in this process. Does not return. */ static void start_server_classic_aux(const char* server_name) @@ -199,8 +199,11 @@ static int start_server(const char* server_name, jack_options_t options) #if defined(USE_LIBDBUS_AUTOLAUNCH) return start_server_dbus(server_name); -#else +#elif defined(USE_CLASSIC_AUTOLAUNCH) return start_server_classic(server_name); +#else + fprintf(stderr, "Automatic start of JACK server is disabled at configure time\n"); + return 1; #endif } @@ -76,6 +76,7 @@ def options(opt): opt.add_option('--firewire', action='store_true', default=False, help='Enable FireWire driver (FFADO)') opt.add_option('--freebob', action='store_true', default=False, help='Enable FreeBob driver') opt.add_option('--alsa', action='store_true', default=False, help='Enable ALSA driver') + opt.add_option('--autostart', type='string', default="default", help='Autostart method. Possible values: "default", "classic", "dbus", "none"') opt.sub_options('dbus') def configure(conf): @@ -214,6 +215,27 @@ def configure(conf): conf.env.append_unique('CFLAGS', '-g') conf.env.append_unique('LINKFLAGS', '-g') + if not Options.options.autostart in ["default", "classic", "dbus", "none"]: + conf.fatal("Invalid autostart value \"" + Options.options.autostart + "\"") + + if Options.options.autostart == "default": + if conf.env['BUILD_JACKDBUS'] == True and conf.env['BUILD_JACKD'] == False: + conf.env['AUTOSTART_METHOD'] = "dbus" + else: + conf.env['AUTOSTART_METHOD'] = "classic" + else: + conf.env['AUTOSTART_METHOD'] = Options.options.autostart + + if conf.env['AUTOSTART_METHOD'] == "dbus" and not conf.env['BUILD_JACKDBUS']: + conf.fatal("D-Bus autostart mode was specified but jackdbus will not be built") + if conf.env['AUTOSTART_METHOD'] == "classic" and not conf.env['BUILD_JACKD']: + conf.fatal("Classic autostart mode was specified but jackd will not be built") + + if conf.env['AUTOSTART_METHOD'] == "dbus": + conf.define('USE_LIBDBUS_AUTOLAUNCH', 1) + elif conf.env['AUTOSTART_METHOD'] == "classic": + conf.define('USE_CLASSIC_AUTOLAUNCH', 1) + conf.define('CLIENT_NUM', Options.options.clients) conf.define('PORT_NUM_FOR_CLIENT', Options.options.application_ports) @@ -224,8 +246,6 @@ def configure(conf): conf.define('JACKMP', 1) if conf.env['BUILD_JACKDBUS'] == True: conf.define('JACK_DBUS', 1) - if conf.env['BUILD_JACKD'] == False: - conf.define('USE_LIBDBUS_AUTOLAUNCH', 1) if conf.env['BUILD_WITH_PROFILE'] == True: conf.define('JACK_MONITOR', 1) conf.write_config_header('config.h', remove=False) @@ -277,6 +297,7 @@ def configure(conf): display_feature('Build standard JACK (jackd)', conf.env['BUILD_JACKD']) display_feature('Build D-Bus JACK (jackdbus)', conf.env['BUILD_JACKDBUS']) + display_msg('Autostart method', conf.env['AUTOSTART_METHOD']) if conf.env['BUILD_JACKDBUS'] and conf.env['BUILD_JACKD']: print(Logs.colors.RED + 'WARNING !! mixing both jackd and jackdbus may cause issues:' + Logs.colors.NORMAL) |