summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNedko Arnaudov <nedko@arnaudov.name>2012-11-24 07:06:31 +0200
committerNedko Arnaudov <nedko@arnaudov.name>2012-11-24 07:06:31 +0200
commitce50e5b0ed617d768eb041f7e4f7799e62d4dcd5 (patch)
treef1af5a76db3484d0545959a1e7a7570a5cca92bc
parent6f7f96a8b5d6571eb7960a924d722e0528e37a06 (diff)
downloadjack2-ce50e5b0ed617d768eb041f7e4f7799e62d4dcd5.tar.gz
waf: configure option for enforcing autostart method
-rw-r--r--common/wscript2
-rw-r--r--posix/JackPosixServerLaunch.cpp7
-rw-r--r--wscript25
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
}
diff --git a/wscript b/wscript
index f78cf505..18702caa 100644
--- a/wscript
+++ b/wscript
@@ -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)