Enable build for FreeBSD (part 1/2)

Adopted from Michael Beer -- GH pull-request #232 with minor changes:

*   rebased on master,
*   removed trailing whitespace,
*   don't explicitly change saved configuration defaults (wscript)
*   moved sys/wait (WNOHANG) to header include
*   separate changes in GUI and lib
This commit is contained in:
Robin Gareus 2016-06-26 16:43:07 +02:00
parent e37b250d4d
commit 86763cba90
10 changed files with 26 additions and 7 deletions

View File

@ -32,6 +32,7 @@
#include "ardour/route.h"
#include "ardour/route_group.h"
#include "ardour/session.h"
#include "ardour/debug.h"
#include "i18n.h"

View File

@ -3459,7 +3459,7 @@ Session::add_routes_inner (RouteList& new_routes, bool input_auto_connect, bool
}
}
#ifndef __APPLE__
#if !defined(__APPLE__) && !defined(__FreeBSD__)
/* clang complains: 'operator<<' should be declared prior to the call site or in an associated namespace of one of its
* arguments std::ostream& operator<<(std::ostream& o, ARDOUR::PresentationInfo const& rid)"
*/

View File

@ -39,7 +39,7 @@
#include <sys/vfs.h>
#endif
#ifdef __APPLE__
#if defined(__APPLE__) || defined(__FreeBSD__)
#include <sys/param.h>
#include <sys/mount.h>
#endif
@ -2262,7 +2262,7 @@ Session::save_template (string template_name, bool replace_existing)
void
Session::refresh_disk_space ()
{
#if __APPLE__ || (HAVE_SYS_VFS_H && HAVE_SYS_STATVFS_H)
#if __APPLE__ || __FreeBSD__ || (HAVE_SYS_VFS_H && HAVE_SYS_STATVFS_H)
Glib::Threads::Mutex::Lock lm (space_lock);

View File

@ -23,7 +23,7 @@
#include <iostream>
#if defined(PLATFORM_WINDOWS)
#include <winsock.h>
#elif defined(__FREE_BSD__)
#elif defined(__FreeBSD__)
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/_sockaddr_storage.h>

View File

@ -43,10 +43,14 @@ hardware_concurrency()
{
#if defined(PTW32_VERSION) || defined(__hpux)
return pthread_num_processors_np();
#elif defined(__APPLE__) || defined(__FreeBSD__)
#elif defined(__APPLE__)
int count;
size_t size=sizeof(count);
return sysctlbyname("hw.physicalcpu",&count,&size,NULL,0)?0:count;
#elif defined(__FreeBSD__)
int count;
size_t size=sizeof(count);
return sysctlbyname("hw.ncpu",&count,&size,NULL,0)?0:count;
#elif defined(HAVE_UNISTD) && defined(_SC_NPROCESSORS_ONLN)
int const count=sysconf(_SC_NPROCESSORS_ONLN);
return (count>0)?count:0;

View File

@ -28,6 +28,7 @@
#include <stdint.h>
#include <cstdlib> // abs(int)
#include <cmath>
#include "pbd/libpbd_visibility.h"

View File

@ -37,6 +37,9 @@
#undef interface // VKamyshniy: to avoid "include/giomm-2.4/giomm/dbusmessage.h:270:94: error: expected ',' or '...' before 'struct'"
#endif
#else // posix
#include <sys/types.h>
#include <sys/wait.h> /* WNOHANG is part of the exposed API */
#endif
#include <string>

View File

@ -15,6 +15,7 @@
*/
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <string.h>
#include <assert.h>

View File

@ -2,6 +2,8 @@
from waflib.extras import autowaf as autowaf
from waflib import Options
import os
import re
import sys
# Mandatory variables
top = '.'
@ -19,5 +21,6 @@ def build(bld):
obj.source = [ 'abicheck.c' ]
obj.target = 'gcc-glibmm-abi-check'
obj.name = 'gcc-glibmm-abi-check'
obj.lib = 'dl'
if re.search ("freebsd", sys.platform) == None:
obj.lib = 'dl'
obj.install_path = None

View File

@ -568,6 +568,9 @@ int main() { return 0; }''',
if opt.stl_debug:
cxx_flags.append("-D_GLIBCXX_DEBUG")
if re.search ("freebsd", sys.platform) != None:
linker_flags.append('-lexecinfo')
if conf.env['DEBUG_RT_ALLOC']:
compiler_flags.append('-DDEBUG_RT_ALLOC')
linker_flags.append('-ldl')
@ -940,7 +943,10 @@ def configure(conf):
# executing a test program is n/a when cross-compiling
if Options.options.dist_target != 'mingw':
if Options.options.dist_target != 'msvc':
conf.check_cc(function_name='dlopen', header_name='dlfcn.h', lib='dl', uselib_store='DL')
if re.search ("freebsd", sys.platform) != None:
conf.check_cc(function_name='dlopen', header_name='dlfcn.h', uselib_store='DL')
else:
conf.check_cc(function_name='dlopen', header_name='dlfcn.h', lib='dl', uselib_store='DL')
conf.check_cxx(fragment = "#include <boost/version.hpp>\nint main(void) { return (BOOST_VERSION >= 103900 ? 0 : 1); }\n",
execute = "1",
mandatory = True,