| @@ -70,14 +70,14 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
| #define __inline__ inline | |||
| #if (!defined(int8_t) && !defined(_STDINT_H)) | |||
| #define __int8_t_defined | |||
| typedef char int8_t; | |||
| typedef unsigned char uint8_t; | |||
| typedef short int16_t; | |||
| typedef unsigned short uint16_t; | |||
| typedef long int32_t; | |||
| typedef unsigned long uint32_t; | |||
| typedef LONGLONG int64_t; | |||
| typedef ULONGLONG uint64_t; | |||
| typedef INT8 int8_t; | |||
| typedef UINT8 uint8_t; | |||
| typedef INT16 int16_t; | |||
| typedef UINT16 uint16_t; | |||
| typedef INT32 int32_t; | |||
| typedef UINT32 uint32_t; | |||
| typedef INT64 int64_t; | |||
| typedef UINT64 uint64_t; | |||
| #endif | |||
| #elif __MINGW32__ /* MINGW */ | |||
| #include <stdint.h> | |||
| @@ -131,11 +131,16 @@ def build(bld): | |||
| '../windows/JackWinTime.c', | |||
| ] | |||
| includes = ['../windows' ] + includes | |||
| libsuffix = "64" if (bld.env['DEST_CPU'] == "x86_64" and not bld.variant) else "" | |||
| skipshared = bool('HAVE_TRE_REGEX_H' in bld.env) | |||
| uselib.append('REGEX') | |||
| uselib.append('WS2_32') | |||
| uselib.append('PSAPI') | |||
| uselib.append('WINMM') | |||
| else: | |||
| libsuffix = "" | |||
| clientlib = bld(features = ['c', 'cxx', 'cxxshlib', 'cshlib']) | |||
| if bld.env['IS_MACOSX']: | |||
| clientlib.framework = ['CoreAudio', 'Accelerate'] | |||
| @@ -143,14 +148,14 @@ def build(bld): | |||
| clientlib.use = uselib | |||
| if bld.env['IS_WINDOWS']: | |||
| clientlib.env['cxxshlib_PATTERN'] = 'lib%s.dll' | |||
| clientlib.install_path = '${BINDIR}' | |||
| else: | |||
| clientlib.install_path = '${LIBDIR}' | |||
| clientlib.env['cxxstlib_PATTERN'] = 'lib%s.a' | |||
| clientlib.env['implib_PATTERN'] = 'lib%s.dll.a' | |||
| clientlib.install_path = '${LIBDIR}' | |||
| if bld.env['AUTOSTART_METHOD'] == 'dbus': | |||
| clientlib.use.append('DBUS-1') | |||
| clientlib.includes = includes | |||
| clientlib.name = 'clientlib' | |||
| clientlib.target = 'jack' | |||
| clientlib.target = 'jack'+libsuffix | |||
| clientlib.source = [] + common_libsources | |||
| clientlib.source += [ | |||
| 'JackLibClient.cpp', | |||
| @@ -184,7 +189,8 @@ def build(bld): | |||
| '../windows/JackMMCSS.cpp', | |||
| ] | |||
| clientlib.vnum = bld.env['JACK_API_VERSION'] | |||
| if not bld.env['IS_WINDOWS']: | |||
| clientlib.vnum = bld.env['JACK_API_VERSION'] | |||
| if bld.env['IS_LINUX']: | |||
| clientlib.env.append_value('CPPFLAGS', '-fvisibility=hidden') | |||
| @@ -197,6 +203,9 @@ def build(bld): | |||
| clientlib.env.append_value('LINKFLAGS', '-lnsl -lsocket') | |||
| if bld.env['IS_WINDOWS']: | |||
| # remove switch to shared binaries if possible, as we most likely want static builds on Windows | |||
| if skipshared: | |||
| clientlib.env['SHLIB_MARKER'] = '' | |||
| # statically link libjack to libstdc++, some client apps like ardour come | |||
| # with a different version of libstdc++.dll that takes precedence and results | |||
| # in missing symbols during runtime | |||
| @@ -212,14 +221,17 @@ def build(bld): | |||
| serverlib.framework = ['CoreAudio', 'CoreFoundation', 'Accelerate'] | |||
| serverlib.defines = ['HAVE_CONFIG_H','SERVER_SIDE'] | |||
| serverlib.includes = includes | |||
| serverlib.name = 'serverlib' | |||
| serverlib.target = 'jackserver' | |||
| serverlib.name = 'serverlib' | |||
| serverlib.target = 'jackserver'+libsuffix | |||
| serverlib.use = uselib | |||
| if bld.env['IS_WINDOWS']: | |||
| serverlib.env['cxxshlib_PATTERN'] = 'lib%s.dll' | |||
| serverlib.install_path = '${BINDIR}' | |||
| else: | |||
| serverlib.install_path = '${LIBDIR}' | |||
| serverlib.env['cxxshlib_PATTERN'] = 'lib%s.dll' | |||
| serverlib.env['cxxstlib_PATTERN'] = 'lib%s.a' | |||
| serverlib.env['implib_PATTERN'] = 'lib%s.dll.a' | |||
| if skipshared: | |||
| serverlib.env['SHLIB_MARKER'] = '' | |||
| serverlib.env.append_value('LINKFLAGS', ['-static-libstdc++', '--disable-auto-import']) | |||
| serverlib.install_path = '${LIBDIR}' | |||
| serverlib.source = [] + common_libsources | |||
| serverlib.source += [ | |||
| 'JackAudioDriver.cpp', | |||
| @@ -292,7 +304,8 @@ def build(bld): | |||
| '../windows/JackNetWinSocket.cpp', | |||
| ] | |||
| serverlib.vnum = bld.env['JACK_API_VERSION'] | |||
| if not bld.env['IS_WINDOWS']: | |||
| serverlib.vnum = bld.env['JACK_API_VERSION'] | |||
| if bld.env['IS_LINUX']: | |||
| serverlib.env.append_value('CPPFLAGS', '-fvisibility=hidden') | |||
| @@ -310,18 +323,19 @@ def build(bld): | |||
| netlib.framework = ['CoreAudio'] | |||
| netlib.defines = ['HAVE_CONFIG_H','SERVER_SIDE'] | |||
| netlib.includes = includes | |||
| netlib.name = 'netlib' | |||
| netlib.target = 'jacknet' | |||
| netlib.name = 'netlib' | |||
| netlib.target = 'jacknet'+libsuffix | |||
| netlib.use = ['SAMPLERATE', 'CELT', 'OPUS', 'PTHREAD'] | |||
| if bld.env['IS_WINDOWS']: | |||
| netlib.env['cxxshlib_PATTERN'] = 'lib%s.dll' | |||
| netlib.install_path = '${BINDIR}' | |||
| netlib.env['cxxstlib_PATTERN'] = 'lib%s.a' | |||
| netlib.env['implib_PATTERN'] = 'lib%s.dll.a' | |||
| if skipshared: | |||
| netlib.env['SHLIB_MARKER'] = '' | |||
| netlib.use += ['WS2_32', 'WINMM'] | |||
| elif bld.env['IS_MACOSX']: | |||
| netlib.install_path = '${LIBDIR}' | |||
| else: | |||
| elif not bld.env['IS_MACOSX']: | |||
| netlib.use += ['RT'] | |||
| netlib.install_path = '${LIBDIR}' | |||
| netlib.install_path = '${LIBDIR}' | |||
| netlib.source = [ | |||
| 'JackNetAPI.cpp', | |||
| 'JackNetInterface.cpp', | |||
| @@ -349,7 +363,8 @@ def build(bld): | |||
| if bld.env['IS_WINDOWS']: | |||
| netlib.source += ['../windows/JackNetWinSocket.cpp','../windows/JackWinThread.cpp', '../windows/JackMMCSS.cpp', '../windows/JackWinTime.c'] | |||
| netlib.vnum = bld.env['JACK_API_VERSION'] | |||
| if not bld.env['IS_WINDOWS']: | |||
| netlib.vnum = bld.env['JACK_API_VERSION'] | |||
| create_jack_process_obj(bld, 'netmanager', 'JackNetManager.cpp', serverlib) | |||
| @@ -415,5 +430,6 @@ def build(bld): | |||
| target = 'jack.pc', | |||
| install_path = '${PKGCONFDIR}', | |||
| INCLUDEDIR = os.path.normpath(bld.env['PREFIX'] + '/include'), | |||
| CLIENTLIB = clientlib.target, | |||
| SERVERLIB = serverlib.target, | |||
| ) | |||
| @@ -17,20 +17,20 @@ static char* subject = NULL; | |||
| static void | |||
| show_usage (void) | |||
| { | |||
| fprintf (stderr, "\nUsage: jack_property [options] UUID [ key [ value [ type ] ] ]\n"); | |||
| fprintf (stderr, "Set/Display JACK properties (metadata).\n\n"); | |||
| fprintf (stderr, "Set options:\n"); | |||
| fprintf (stderr, " -s, --set Set property \"key\" to \"value\" for \"UUID\" with optional MIME type \"type\"\n"); | |||
| fprintf (stderr, " -d, --delete Remove/delete property \"key\" for \"UUID\"\n"); | |||
| fprintf (stderr, " -d, --delete UUID Remove/delete all properties for \"UUID\"\n"); | |||
| fprintf (stderr, " -D, --delete-all Remove/delete all properties\n"); | |||
| fprintf (stderr, "\nUsage: jack_property [options] UUID [ key [ value [ type ] ] ]\n"); | |||
| fprintf (stderr, "Set/Display JACK properties (metadata).\n\n"); | |||
| fprintf (stderr, "Set options:\n"); | |||
| fprintf (stderr, " -s, --set Set property \"key\" to \"value\" for \"UUID\" with optional MIME type \"type\"\n"); | |||
| fprintf (stderr, " -d, --delete Remove/delete property \"key\" for \"UUID\"\n"); | |||
| fprintf (stderr, " -d, --delete UUID Remove/delete all properties for \"UUID\"\n"); | |||
| fprintf (stderr, " -D, --delete-all Remove/delete all properties\n"); | |||
| fprintf (stderr, " --client Interpret UUID as a client name, not a UUID\n"); | |||
| fprintf (stderr, " --port \tInterpret UUID as a port name, not a UUID\n"); | |||
| fprintf (stderr, "\nDisplay options:\n"); | |||
| fprintf (stderr, " -l Show all properties\n"); | |||
| fprintf (stderr, " -l, --list UUID \tShow value for all properties of UUID\n"); | |||
| fprintf (stderr, " -l, --list UUID key Show value for key of UUID\n"); | |||
| fprintf (stderr, "\nFor more information see https://jackaudio.org/\n"); | |||
| fprintf (stderr, "\nDisplay options:\n"); | |||
| fprintf (stderr, " -l Show all properties\n"); | |||
| fprintf (stderr, " -l, --list UUID \tShow value for all properties of UUID\n"); | |||
| fprintf (stderr, " -l, --list UUID key Show value for key of UUID\n"); | |||
| fprintf (stderr, "\nFor more information see https://jackaudio.org/\n"); | |||
| } | |||
| static int | |||
| @@ -82,7 +82,7 @@ get_subject (jack_client_t* client, char* argv[], int* optind) | |||
| int main (int argc, char* argv[]) | |||
| { | |||
| jack_client_t* client = NULL; | |||
| jack_options_t options = JackNoStartServer; | |||
| jack_options_t options = JackNoStartServer; | |||
| char* key = NULL; | |||
| char* value = NULL; | |||
| char* type = NULL; | |||
| @@ -90,32 +90,32 @@ int main (int argc, char* argv[]) | |||
| int delete = 0; | |||
| int delete_all = 0; | |||
| int c; | |||
| int option_index; | |||
| extern int optind; | |||
| struct option long_options[] = { | |||
| { "set", 0, 0, 's' }, | |||
| { "delete", 0, 0, 'd' }, | |||
| { "delete-all", 0, 0, 'D' }, | |||
| { "list", 0, 0, 'l' }, | |||
| { "client", 0, 0, 'c' }, | |||
| { "port", 0, 0, 'p' }, | |||
| { 0, 0, 0, 0 } | |||
| }; | |||
| int option_index; | |||
| extern int optind; | |||
| struct option long_options[] = { | |||
| { "set", 0, 0, 's' }, | |||
| { "delete", 0, 0, 'd' }, | |||
| { "delete-all", 0, 0, 'D' }, | |||
| { "list", 0, 0, 'l' }, | |||
| { "client", 0, 0, 'c' }, | |||
| { "port", 0, 0, 'p' }, | |||
| { 0, 0, 0, 0 } | |||
| }; | |||
| if (argc < 2) { | |||
| show_usage (); | |||
| exit (1); | |||
| } | |||
| while ((c = getopt_long (argc, argv, "sdDlaApc", long_options, &option_index)) >= 0) { | |||
| switch (c) { | |||
| case 's': | |||
| while ((c = getopt_long (argc, argv, "sdDlaApc", long_options, &option_index)) >= 0) { | |||
| switch (c) { | |||
| case 's': | |||
| if (argc < 5) { | |||
| show_usage (); | |||
| exit (1); | |||
| } | |||
| set = 1; | |||
| break; | |||
| set = 1; | |||
| break; | |||
| case 'd': | |||
| if (argc < 3) { | |||
| show_usage (); | |||
| @@ -258,7 +258,7 @@ int main (int argc, char* argv[]) | |||
| /* list all properties for a given UUID */ | |||
| jack_description_t description; | |||
| size_t cnt, n; | |||
| int cnt, n; | |||
| if (get_subject (client, argv, &optind)) { | |||
| return -1; | |||
| @@ -289,9 +289,8 @@ int main (int argc, char* argv[]) | |||
| /* list all properties */ | |||
| jack_description_t* description; | |||
| int cnt; | |||
| int cnt, n; | |||
| size_t p; | |||
| int n; | |||
| char buf[JACK_UUID_STRING_SIZE]; | |||
| if ((cnt = jack_get_all_properties (&description)) < 0) { | |||
| @@ -7,5 +7,5 @@ server_libs=-L@LIBDIR@ -l@SERVERLIB@ | |||
| Name: jack | |||
| Description: the Jack Audio Connection Kit: a low-latency synchronous callback-based media server | |||
| Version: @JACK_VERSION@ | |||
| Libs: -L@LIBDIR@ -ljack | |||
| Libs: -L@LIBDIR@ -l@CLIENTLIB@ | |||
| Cflags: -I@INCLUDEDIR@ | |||
| @@ -379,7 +379,7 @@ def configure(conf): | |||
| # we define this in the environment to maintain compatibility with | |||
| # existing install paths that use ADDON_DIR rather than have to | |||
| # have special cases for windows each time. | |||
| conf.env['ADDON_DIR'] = conf.env['BINDIR'] + '/jack' | |||
| conf.env['ADDON_DIR'] = conf.env['LIBDIR'] + '/jack' | |||
| if Options.options.platform == 'msys': | |||
| conf.define('ADDON_DIR', 'jack') | |||
| conf.define('__STDC_FORMAT_MACROS', 1) # for PRIu64 | |||