| @@ -35,7 +35,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
| #define JackPlatformAdapter JackAlsaAdapter | #define JackPlatformAdapter JackAlsaAdapter | ||||
| #endif | #endif | ||||
| #if defined(__sun__) || defined(sun) | |||||
| #if defined(__sun__) || defined(sun) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) | |||||
| #include "JackOSSAdapter.h" | #include "JackOSSAdapter.h" | ||||
| #define JackPlatformAdapter JackOSSAdapter | #define JackPlatformAdapter JackOSSAdapter | ||||
| #endif | #endif | ||||
| @@ -22,12 +22,15 @@ def create_jack_process_obj(bld, target, sources, uselib = None, framework = Non | |||||
| if not bld.env['IS_WINDOWS']: | if not bld.env['IS_WINDOWS']: | ||||
| process.env['cxxshlib_PATTERN'] = '%s.so' | process.env['cxxshlib_PATTERN'] = '%s.so' | ||||
| process.defines = ['HAVE_CONFIG_H','SERVER_SIDE'] | process.defines = ['HAVE_CONFIG_H','SERVER_SIDE'] | ||||
| print(bld.env) | |||||
| if bld.env['IS_MACOSX']: | if bld.env['IS_MACOSX']: | ||||
| if framework: | if framework: | ||||
| process.framework = framework | process.framework = framework | ||||
| env_includes = ['../macosx', '../posix', '../macosx/coreaudio'] | env_includes = ['../macosx', '../posix', '../macosx/coreaudio'] | ||||
| if bld.env['IS_LINUX']: | if bld.env['IS_LINUX']: | ||||
| env_includes = ['../linux', '../posix', '../linux/alsa'] | env_includes = ['../linux', '../posix', '../linux/alsa'] | ||||
| if bld.env['IS_FREEBSD']: | |||||
| env_includes = ['../freebsd', '../posix', '../solaris/oss'] | |||||
| if bld.env['IS_SUN']: | if bld.env['IS_SUN']: | ||||
| env_includes = ['../solaris', '../posix', '../solaris/oss'] | env_includes = ['../solaris', '../posix', '../solaris/oss'] | ||||
| if bld.env['IS_WINDOWS']: | if bld.env['IS_WINDOWS']: | ||||
| @@ -36,7 +39,7 @@ def create_jack_process_obj(bld, target, sources, uselib = None, framework = Non | |||||
| process.name = target | process.name = target | ||||
| process.target = target | process.target = target | ||||
| process.source = sources | process.source = sources | ||||
| if bld.env['IS_LINUX'] or bld.env['IS_MACOSX']: | |||||
| if bld.env['IS_LINUX'] or bld.env['IS_MACOSX'] or bld.env['IS_FREEBSD']: | |||||
| process.env.append_value('CPPFLAGS', '-fvisibility=hidden') | process.env.append_value('CPPFLAGS', '-fvisibility=hidden') | ||||
| process.install_path = '${ADDON_DIR}/' | process.install_path = '${ADDON_DIR}/' | ||||
| process.use = [uselib.name] | process.use = [uselib.name] | ||||
| @@ -92,6 +95,20 @@ def build(bld): | |||||
| uselib.append('RT') | uselib.append('RT') | ||||
| uselib.append('DL') | uselib.append('DL') | ||||
| if bld.env['IS_FREEBSD']: | |||||
| common_libsources += [ | |||||
| 'JackDebugClient.cpp', | |||||
| 'timestamps.c', | |||||
| 'promiscuous.c', | |||||
| '../posix/JackPosixThread.cpp', | |||||
| '../posix/JackPosixProcessSync.cpp', | |||||
| '../posix/JackPosixMutex.cpp', | |||||
| '../posix/JackPosixSemaphore.cpp', | |||||
| '../posix/JackSocket.cpp', | |||||
| '../freebsd/JackFreeBSDTime.c', | |||||
| ] | |||||
| includes = ['../freebsd', '../posix'] + includes | |||||
| if bld.env['IS_SUN']: | if bld.env['IS_SUN']: | ||||
| common_libsources += [ | common_libsources += [ | ||||
| 'JackDebugClient.cpp', | 'JackDebugClient.cpp', | ||||
| @@ -177,6 +194,12 @@ def build(bld): | |||||
| '../posix/JackPosixServerLaunch.cpp', | '../posix/JackPosixServerLaunch.cpp', | ||||
| ] | ] | ||||
| if bld.env['IS_FREEBSD']: | |||||
| clientlib.source += [ | |||||
| '../posix/JackSocketClientChannel.cpp', | |||||
| '../posix/JackPosixServerLaunch.cpp', | |||||
| ] | |||||
| if bld.env['IS_SUN']: | if bld.env['IS_SUN']: | ||||
| clientlib.source += [ | clientlib.source += [ | ||||
| '../posix/JackSocketClientChannel.cpp', | '../posix/JackSocketClientChannel.cpp', | ||||
| @@ -206,6 +229,9 @@ def build(bld): | |||||
| if bld.env['IS_LINUX']: | if bld.env['IS_LINUX']: | ||||
| clientlib.env.append_value('CPPFLAGS', '-fvisibility=hidden') | clientlib.env.append_value('CPPFLAGS', '-fvisibility=hidden') | ||||
| if bld.env['IS_FREEBSD']: | |||||
| clientlib.env.append_value('CPPFLAGS', '-fvisibility=hidden') | |||||
| if bld.env['IS_MACOSX']: | if bld.env['IS_MACOSX']: | ||||
| clientlib.env.append_value('CPPFLAGS', '-fvisibility=hidden') | clientlib.env.append_value('CPPFLAGS', '-fvisibility=hidden') | ||||
| clientlib.env.append_value('LINKFLAGS', '-single_module') | clientlib.env.append_value('LINKFLAGS', '-single_module') | ||||
| @@ -282,6 +308,14 @@ def build(bld): | |||||
| '../posix/JackNetUnixSocket.cpp', | '../posix/JackNetUnixSocket.cpp', | ||||
| ] | ] | ||||
| if bld.env['IS_FREEBSD']: | |||||
| serverlib.source += [ | |||||
| '../posix/JackSocketServerChannel.cpp', | |||||
| '../posix/JackSocketNotifyChannel.cpp', | |||||
| '../posix/JackSocketServerNotifyChannel.cpp', | |||||
| '../posix/JackNetUnixSocket.cpp', | |||||
| ] | |||||
| if bld.env['IS_SUN']: | if bld.env['IS_SUN']: | ||||
| serverlib.source += [ | serverlib.source += [ | ||||
| '../posix/JackSocketServerChannel.cpp', | '../posix/JackSocketServerChannel.cpp', | ||||
| @@ -361,6 +395,10 @@ def build(bld): | |||||
| netlib.source += ['../posix/JackNetUnixSocket.cpp','../posix/JackPosixThread.cpp', '../posix/JackPosixMutex.cpp', '../linux/JackLinuxTime.c'] | netlib.source += ['../posix/JackNetUnixSocket.cpp','../posix/JackPosixThread.cpp', '../posix/JackPosixMutex.cpp', '../linux/JackLinuxTime.c'] | ||||
| netlib.env.append_value('CPPFLAGS', '-fvisibility=hidden') | netlib.env.append_value('CPPFLAGS', '-fvisibility=hidden') | ||||
| if bld.env['IS_FREEBSD']: | |||||
| netlib.source += ['../posix/JackNetUnixSocket.cpp','../posix/JackPosixThread.cpp', '../posix/JackPosixMutex.cpp', '../linux/JackLinuxTime.c'] | |||||
| netlib.env.append_value('CPPFLAGS', '-fvisibility=hidden') | |||||
| if bld.env['IS_SUN']: | if bld.env['IS_SUN']: | ||||
| netlib.source += ['../posix/JackNetUnixSocket.cpp','../posix/JackPosixThread.cpp', '../posix/JackPosixMutex.cpp', '../solaris/JackSolarisTime.c'] | netlib.source += ['../posix/JackNetUnixSocket.cpp','../posix/JackPosixThread.cpp', '../posix/JackPosixMutex.cpp', '../solaris/JackSolarisTime.c'] | ||||
| netlib.env.append_value('CPPFLAGS', '-fvisibility=hidden') | netlib.env.append_value('CPPFLAGS', '-fvisibility=hidden') | ||||
| @@ -423,7 +461,7 @@ def build(bld): | |||||
| process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib) | process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib) | ||||
| process.use += ['ALSA', 'SAMPLERATE'] | process.use += ['ALSA', 'SAMPLERATE'] | ||||
| if bld.env['BUILD_ADAPTER'] and bld.env['IS_SUN']: | |||||
| if bld.env['BUILD_ADAPTER'] and (bld.env['IS_SUN'] or bld.env['IS_FREEBSD']): | |||||
| audio_adapter_sources += ['../solaris/oss/JackOSSAdapter.cpp', 'memops.c'] | audio_adapter_sources += ['../solaris/oss/JackOSSAdapter.cpp', 'memops.c'] | ||||
| process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib) | process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib) | ||||
| process.use += 'SAMPLERATE' | process.use += 'SAMPLERATE' | ||||
| @@ -39,6 +39,8 @@ def build(bld): | |||||
| obj = bld(features = ['c', 'cprogram'], idx=17) | obj = bld(features = ['c', 'cprogram'], idx=17) | ||||
| if bld.env['IS_LINUX']: | if bld.env['IS_LINUX']: | ||||
| sysdeps_dbus_include = ['../linux', '../posix'] | sysdeps_dbus_include = ['../linux', '../posix'] | ||||
| if bld.env['IS_FREEBSD']: | |||||
| sysdeps_dbus_include = ['../freebsd', '../posix'] | |||||
| if bld.env['IS_MACOSX']: | if bld.env['IS_MACOSX']: | ||||
| sysdeps_dbus_include = ['../macosx', '../posix'] | sysdeps_dbus_include = ['../macosx', '../posix'] | ||||
| @@ -67,6 +69,8 @@ def build(bld): | |||||
| '../linux/uptime.c', | '../linux/uptime.c', | ||||
| ] | ] | ||||
| obj.use += ['PTHREAD', 'DL', 'RT', 'DBUS-1', 'EXPAT', 'STDC++'] | obj.use += ['PTHREAD', 'DL', 'RT', 'DBUS-1', 'EXPAT', 'STDC++'] | ||||
| if bld.env['IS_FREEBSD']: | |||||
| obj.use += ['PTHREAD', 'EXECINFO', 'LIBSYSINFO', 'DBUS-1', 'EXPAT'] | |||||
| if bld.env['IS_MACOSX']: | if bld.env['IS_MACOSX']: | ||||
| obj.source += [ | obj.source += [ | ||||
| '../macosx/uptime.c', | '../macosx/uptime.c', | ||||
| @@ -31,6 +31,8 @@ def build(bld): | |||||
| os_incdir = ['../linux', '../posix'] | os_incdir = ['../linux', '../posix'] | ||||
| if bld.env['IS_MACOSX']: | if bld.env['IS_MACOSX']: | ||||
| os_incdir = ['../macosx', '../posix'] | os_incdir = ['../macosx', '../posix'] | ||||
| if bld.env['IS_FREEBSD']: | |||||
| os_incdir = ['../freebsd', '../posix'] | |||||
| if bld.env['IS_SUN']: | if bld.env['IS_SUN']: | ||||
| os_incdir = ['../solaris', '../posix'] | os_incdir = ['../solaris', '../posix'] | ||||
| if bld.env['IS_WINDOWS']: | if bld.env['IS_WINDOWS']: | ||||
| @@ -65,6 +67,8 @@ def build(bld): | |||||
| prog.use += ['RT', 'M'] | prog.use += ['RT', 'M'] | ||||
| if bld.env['IS_SUN']: | if bld.env['IS_SUN']: | ||||
| prog.use += ['M'] | prog.use += ['M'] | ||||
| if bld.env['IS_FREEBSD']: | |||||
| prog.use += ['M'] | |||||
| if bld.env['IS_WINDOWS'] and bld.env['BUILD_STATIC']: | if bld.env['IS_WINDOWS'] and bld.env['BUILD_STATIC']: | ||||
| prog.env['LIB_PTHREAD'] = [':libwinpthread.a'] | prog.env['LIB_PTHREAD'] = [':libwinpthread.a'] | ||||
| #prog.cflags = ['-Wno-deprecated-declarations', '-Wno-misleading-indentation'] | #prog.cflags = ['-Wno-deprecated-declarations', '-Wno-misleading-indentation'] | ||||
| @@ -81,6 +85,8 @@ def build(bld): | |||||
| prog.use += ['SNDFILE'] | prog.use += ['SNDFILE'] | ||||
| if bld.env['IS_LINUX']: | if bld.env['IS_LINUX']: | ||||
| prog.use += ['RT', 'SNDFILE'] | prog.use += ['RT', 'SNDFILE'] | ||||
| if bld.env['IS_FREEBSD']: | |||||
| prog.use += ['SNDFILE'] | |||||
| if bld.env['IS_SUN']: | if bld.env['IS_SUN']: | ||||
| prog.use += ['RT', 'SNDFILE'] | prog.use += ['RT', 'SNDFILE'] | ||||
| if bld.env['IS_WINDOWS']: | if bld.env['IS_WINDOWS']: | ||||
| @@ -0,0 +1,90 @@ | |||||
| /* | |||||
| Copyright (C) 2001-2003 Paul Davis | |||||
| Copyright (C) 2005 Jussi Laako | |||||
| Copyright (C) 2004-2008 Grame | |||||
| Copyright (C) 2018 Greg V | |||||
| This program is free software; you can redistribute it and/or modify | |||||
| it under the terms of the GNU Lesser General Public License as published by | |||||
| the Free Software Foundation; either version 2.1 of the License, or | |||||
| (at your option) any later version. | |||||
| This program is distributed in the hope that it will be useful, | |||||
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
| GNU Lesser General Public License for more details. | |||||
| You should have received a copy of the GNU Lesser General Public License | |||||
| along with this program; if not, write to the Free Software | |||||
| Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||||
| */ | |||||
| #include "JackConstants.h" | |||||
| #include "JackTime.h" | |||||
| #include "JackTypes.h" | |||||
| #include "JackError.h" | |||||
| #include <time.h> | |||||
| #include <unistd.h> | |||||
| jack_time_t (*_jack_get_microseconds)(void) = 0; | |||||
| static jack_time_t jack_get_microseconds_from_system (void) | |||||
| { | |||||
| jack_time_t jackTime; | |||||
| struct timespec time; | |||||
| clock_gettime(CLOCK_MONOTONIC, &time); | |||||
| jackTime = (jack_time_t) time.tv_sec * 1e6 + | |||||
| (jack_time_t) time.tv_nsec / 1e3; | |||||
| return jackTime; | |||||
| } | |||||
| SERVER_EXPORT void JackSleep(long usec) | |||||
| { | |||||
| usleep(usec); | |||||
| } | |||||
| SERVER_EXPORT void InitTime() | |||||
| { | |||||
| /* nothing to do on a generic system - we use the system clock */ | |||||
| } | |||||
| SERVER_EXPORT void EndTime() | |||||
| {} | |||||
| void SetClockSource(jack_timer_type_t source) | |||||
| { | |||||
| jack_log("Clock source : %s", ClockSourceName(source)); | |||||
| switch (source) | |||||
| { | |||||
| case JACK_TIMER_SYSTEM_CLOCK: | |||||
| default: | |||||
| _jack_get_microseconds = jack_get_microseconds_from_system; | |||||
| break; | |||||
| } | |||||
| } | |||||
| const char* ClockSourceName(jack_timer_type_t source) | |||||
| { | |||||
| switch (source) { | |||||
| case JACK_TIMER_SYSTEM_CLOCK: | |||||
| return "system clock via clock_gettime"; | |||||
| } | |||||
| return "unknown"; | |||||
| } | |||||
| SERVER_EXPORT jack_time_t GetMicroSeconds() | |||||
| { | |||||
| return _jack_get_microseconds(); | |||||
| } | |||||
| SERVER_EXPORT jack_time_t jack_get_microseconds() | |||||
| { | |||||
| return _jack_get_microseconds(); | |||||
| } | |||||
| @@ -0,0 +1,85 @@ | |||||
| /* | |||||
| Copyright (C) 2004-2008 Grame | |||||
| Copyright (C) 2018 Greg V | |||||
| This program is free software; you can redistribute it and/or modify | |||||
| it under the terms of the GNU Lesser General Public License as published by | |||||
| the Free Software Foundation; either version 2.1 of the License, or | |||||
| (at your option) any later version. | |||||
| This program is distributed in the hope that it will be useful, | |||||
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
| GNU Lesser General Public License for more details. | |||||
| You should have received a copy of the GNU Lesser General Public License | |||||
| along with this program; if not, write to the Free Software | |||||
| Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||||
| */ | |||||
| #ifndef __JackPlatformPlug_freebsd__ | |||||
| #define __JackPlatformPlug_freebsd__ | |||||
| #define jack_server_dir "/tmp" | |||||
| #define jack_client_dir "/tmp" | |||||
| #define JACK_DEFAULT_DRIVER "oss" | |||||
| namespace Jack | |||||
| { | |||||
| struct JackRequest; | |||||
| struct JackResult; | |||||
| class JackPosixMutex; | |||||
| class JackPosixThread; | |||||
| class JackPosixSemaphore; | |||||
| class JackSocketServerChannel; | |||||
| class JackSocketClientChannel; | |||||
| class JackSocketServerNotifyChannel; | |||||
| class JackSocketNotifyChannel; | |||||
| class JackClientSocket; | |||||
| class JackNetUnixSocket; | |||||
| } | |||||
| /* __JackPlatformMutex__ */ | |||||
| #include "JackPosixMutex.h" | |||||
| namespace Jack {typedef JackPosixMutex JackMutex; } | |||||
| /* __JackPlatformThread__ */ | |||||
| #include "JackPosixThread.h" | |||||
| namespace Jack { typedef JackPosixThread JackThread; } | |||||
| /* __JackPlatformSynchro__ client activation */ | |||||
| #include "JackPosixSemaphore.h" | |||||
| namespace Jack { typedef JackPosixSemaphore JackSynchro; } | |||||
| /* __JackPlatformChannelTransaction__ */ | |||||
| #include "JackSocket.h" | |||||
| namespace Jack { typedef JackClientSocket JackChannelTransaction; } | |||||
| /* __JackPlatformProcessSync__ */ | |||||
| #include "JackPosixProcessSync.h" | |||||
| namespace Jack { typedef JackPosixProcessSync JackProcessSync; } | |||||
| /* __JackPlatformServerChannel__ */ | |||||
| #include "JackSocketServerChannel.h" | |||||
| namespace Jack { typedef JackSocketServerChannel JackServerChannel; } | |||||
| /* __JackPlatformClientChannel__ */ | |||||
| #include "JackSocketClientChannel.h" | |||||
| namespace Jack { typedef JackSocketClientChannel JackClientChannel; } | |||||
| /* __JackPlatformServerNotifyChannel__ */ | |||||
| #include "JackSocketServerNotifyChannel.h" | |||||
| namespace Jack { typedef JackSocketServerNotifyChannel JackServerNotifyChannel; } | |||||
| /* __JackPlatformNotifyChannel__ */ | |||||
| #include "JackSocketNotifyChannel.h" | |||||
| namespace Jack { typedef JackSocketNotifyChannel JackNotifyChannel; } | |||||
| /* __JackPlatformNetSocket__ */ | |||||
| #include "JackNetUnixSocket.h" | |||||
| namespace Jack { typedef JackNetUnixSocket JackNetSocket; } | |||||
| #endif | |||||
| @@ -0,0 +1 @@ | |||||
| ../linux/driver.h | |||||
| @@ -0,0 +1,34 @@ | |||||
| /* | |||||
| Copyright (C) 2004-2008 Grame | |||||
| Copyright (C) 2018 Greg V | |||||
| This program is free software; you can redistribute it and/or modify | |||||
| it under the terms of the GNU Lesser General Public License as published by | |||||
| the Free Software Foundation; either version 2.1 of the License, or | |||||
| (at your option) any later version. | |||||
| This program is distributed in the hope that it will be useful, | |||||
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
| GNU Lesser General Public License for more details. | |||||
| You should have received a copy of the GNU Lesser General Public License | |||||
| along with this program; if not, write to the Free Software | |||||
| Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||||
| */ | |||||
| #ifndef __JackAtomic_freebsd__ | |||||
| #define __JackAtomic_freebsd__ | |||||
| #include "JackTypes.h" | |||||
| #include <sys/types.h> | |||||
| #include <machine/atomic.h> | |||||
| static inline char CAS(volatile UInt32 value, UInt32 newvalue, volatile void* addr) | |||||
| { | |||||
| return atomic_cmpset_32((uint32_t*)addr, value, newvalue); | |||||
| } | |||||
| #endif | |||||
| @@ -20,6 +20,8 @@ def build(bld): | |||||
| prog.includes = ['..','../macosx', '../posix', '../common/jack', '../common'] | prog.includes = ['..','../macosx', '../posix', '../common/jack', '../common'] | ||||
| if bld.env['IS_LINUX']: | if bld.env['IS_LINUX']: | ||||
| prog.includes = ['..','../linux', '../posix', '../common/jack', '../common'] | prog.includes = ['..','../linux', '../posix', '../common/jack', '../common'] | ||||
| if bld.env['IS_FREEBSD']: | |||||
| prog.includes = ['..','../freebsd', '../posix', '../common/jack', '../common'] | |||||
| if bld.env['IS_SUN']: | if bld.env['IS_SUN']: | ||||
| prog.includes = ['..','../solaris', '../posix', '../common/jack', '../common'] | prog.includes = ['..','../solaris', '../posix', '../common/jack', '../common'] | ||||
| prog.source = test_program_sources | prog.source = test_program_sources | ||||
| @@ -29,6 +29,8 @@ def build(bld): | |||||
| os_incdir = ['../linux', '../posix'] | os_incdir = ['../linux', '../posix'] | ||||
| if bld.env['IS_MACOSX']: | if bld.env['IS_MACOSX']: | ||||
| os_incdir = ['../macosx', '../posix'] | os_incdir = ['../macosx', '../posix'] | ||||
| if bld.env['IS_FREEBSD']: | |||||
| os_incdir = ['../freebsd', '../posix'] | |||||
| if bld.env['IS_SUN']: | if bld.env['IS_SUN']: | ||||
| os_incdir = ['../solaris', '../posix'] | os_incdir = ['../solaris', '../posix'] | ||||
| if bld.env['IS_WINDOWS']: | if bld.env['IS_WINDOWS']: | ||||
| @@ -191,6 +191,7 @@ def detect_platform(conf): | |||||
| platforms = [ | platforms = [ | ||||
| # ('KEY, 'Human readable name', ['strings', 'to', 'check', 'for']) | # ('KEY, 'Human readable name', ['strings', 'to', 'check', 'for']) | ||||
| ('IS_LINUX', 'Linux', ['gnu0', 'gnukfreebsd', 'linux', 'posix']), | ('IS_LINUX', 'Linux', ['gnu0', 'gnukfreebsd', 'linux', 'posix']), | ||||
| ('IS_FREEBSD', 'FreeBSD', ['freebsd']), | |||||
| ('IS_MACOSX', 'MacOS X', ['darwin']), | ('IS_MACOSX', 'MacOS X', ['darwin']), | ||||
| ('IS_SUN', 'SunOS', ['sunos']), | ('IS_SUN', 'SunOS', ['sunos']), | ||||
| ('IS_WINDOWS', 'Windows', ['cygwin', 'msys', 'win32']) | ('IS_WINDOWS', 'Windows', ['cygwin', 'msys', 'win32']) | ||||
| @@ -230,6 +231,10 @@ def configure(conf): | |||||
| conf.env.append_unique('CXXFLAGS', ['-Wall', '-Wno-invalid-offsetof']) | conf.env.append_unique('CXXFLAGS', ['-Wall', '-Wno-invalid-offsetof']) | ||||
| conf.env.append_unique('CXXFLAGS', '-std=gnu++11') | conf.env.append_unique('CXXFLAGS', '-std=gnu++11') | ||||
| if conf.env['IS_FREEBSD']: | |||||
| conf.check(lib='execinfo', uselib='EXECINFO', define_name='EXECINFO') | |||||
| conf.check_cfg(package='libsysinfo', args='--cflags --libs') | |||||
| if not conf.env['IS_MACOSX']: | if not conf.env['IS_MACOSX']: | ||||
| conf.env.append_unique('LDFLAGS', '-Wl,--no-undefined') | conf.env.append_unique('LDFLAGS', '-Wl,--no-undefined') | ||||
| else: | else: | ||||
| @@ -524,6 +529,9 @@ def obj_add_includes(bld, obj): | |||||
| if bld.env['IS_LINUX']: | if bld.env['IS_LINUX']: | ||||
| obj.includes += ['linux', 'posix'] | obj.includes += ['linux', 'posix'] | ||||
| if bld.env['IS_FREEBSD']: | |||||
| obj.includes += ['freebsd', 'posix'] | |||||
| if bld.env['IS_MACOSX']: | if bld.env['IS_MACOSX']: | ||||
| obj.includes += ['macosx', 'posix'] | obj.includes += ['macosx', 'posix'] | ||||
| @@ -551,6 +559,9 @@ def build_jackd(bld): | |||||
| if bld.env['IS_LINUX']: | if bld.env['IS_LINUX']: | ||||
| jackd.use += ['DL', 'M', 'PTHREAD', 'RT', 'STDC++'] | jackd.use += ['DL', 'M', 'PTHREAD', 'RT', 'STDC++'] | ||||
| if bld.env['IS_FREEBSD']: | |||||
| jackd.use += ['M', 'PTHREAD'] | |||||
| if bld.env['IS_MACOSX']: | if bld.env['IS_MACOSX']: | ||||
| jackd.use += ['DL', 'PTHREAD'] | jackd.use += ['DL', 'PTHREAD'] | ||||
| jackd.framework = ['CoreFoundation'] | jackd.framework = ['CoreFoundation'] | ||||
| @@ -768,7 +779,7 @@ def build_drivers(bld): | |||||
| use = ['serverlib'], # FIXME: Is this needed? | use = ['serverlib'], # FIXME: Is this needed? | ||||
| framework = ['AudioUnit', 'CoreMIDI', 'CoreServices', 'Foundation']) | framework = ['AudioUnit', 'CoreMIDI', 'CoreServices', 'Foundation']) | ||||
| if bld.env['IS_SUN']: | |||||
| if bld.env['IS_SUN'] or bld.env['IS_FREEBSD']: | |||||
| create_driver_obj( | create_driver_obj( | ||||
| bld, | bld, | ||||
| target = 'boomer', | target = 'boomer', | ||||
| @@ -819,7 +830,7 @@ def build(bld): | |||||
| bld.recurse('example-clients') | bld.recurse('example-clients') | ||||
| bld.recurse('tools') | bld.recurse('tools') | ||||
| if bld.env['IS_LINUX']: | |||||
| if bld.env['IS_LINUX'] or bld.env['IS_FREEBSD']: | |||||
| bld.recurse('man') | bld.recurse('man') | ||||
| bld.recurse('systemd') | bld.recurse('systemd') | ||||
| if not bld.env['IS_WINDOWS']: | if not bld.env['IS_WINDOWS']: | ||||