25 from SCons.Script
import Exit
26 from Buildhelper
import isCleanupOperation, isHelpRequest
32 """ locate required libraries. 33 setup platform specific options. 34 Abort build in case of failure. 36 if isCleanupOperation(env)
or isHelpRequest():
39 conf = env.Configure()
44 if not conf.TryAction(
'pkg-config --version > $TARGET')[0]:
45 problems.append(
'We need pkg-config for including library configurations, exiting.')
47 if not conf.CheckLibWithHeader(
'm',
'math.h',
'C'):
48 problems.append(
'Did not find math.h / libm.')
50 if not conf.CheckLibWithHeader(
'dl',
'dlfcn.h',
'C'):
51 problems.append(
'Functions for runtime dynamic loading not available.')
53 if not conf.CheckLibWithHeader(
'pthread',
'pthread.h',
'C'):
54 problems.append(
'Did not find the pthread lib or pthread.h.')
56 conf.env.Append(CPPFLAGS =
' -DHAVE_PTHREAD')
57 conf.env.Append(CCFLAGS =
' -pthread')
59 if not conf.CheckLib(symbol=
'clock_gettime', library=
'rt'):
60 problems.append(
'We expect the POSIX realtime extensions to be available through librt. ' +
61 'Unable to use clock_gettime()')
63 if conf.CheckCHeader(
'execinfo.h'):
64 conf.env.Append(CPPFLAGS =
' -DHAVE_EXECINFO_H')
66 if conf.CheckCHeader(
'valgrind/valgrind.h'):
67 conf.env.Append(CPPFLAGS =
' -DHAVE_VALGRIND_H')
69 print 'Valgrind not found. The use of Valgrind is optional; building without.' 71 if not conf.CheckPkgConfig(
'nobugmt', 201008.1):
72 problems.append(
'Did not find NoBug [http://nobug.pipapo.org/].')
74 conf.env.mergeConf(
'nobugmt')
76 if not conf.CheckCXXHeader(
'memory'):
77 problems.append(
'We rely on the C++11 smart-pointers.')
79 if not conf.CheckCXXHeader(
'functional'):
80 problems.append(
'We rely on the C++11 functor objects.')
82 if not conf.CheckCXXHeader(
'boost/config.hpp'):
83 problems.append(
'We need the C++ boost-libraries.')
85 if not conf.CheckCXXHeader(
'boost/lexical_cast.hpp'):
86 problems.append(
'We need boost::lexical_cast')
87 if not conf.CheckCXXHeader(
'boost/format.hpp'):
88 problems.append(
'We need boost::format (header).')
89 if not conf.CheckLibWithHeader(
'boost_program_options',
'boost/program_options.hpp',
'C++'):
90 problems.append(
'We need boost::program_options (including binary lib for linking).')
91 if not conf.CheckLibWithHeader(
'boost_system',
'boost/system/error_code.hpp',
'C++'):
92 problems.append(
'We need the boost::system support library (including binary lib).')
93 if not conf.CheckLibWithHeader(
'boost_filesystem',
'boost/filesystem.hpp',
'C++'):
94 problems.append(
'We need the boost::filesystem lib (including binary lib for linking).')
97 if not conf.CheckPkgConfig(
'gavl',
'1.4'):
98 problems.append(
'Did not find Gmerlin Audio Video Lib [http://gmerlin.sourceforge.net/gavl.html].')
100 conf.env.mergeConf(
'gavl')
102 if not conf.CheckPkgConfig(
'alsa',
'1.0.23'):
103 problems.append(
'Support for ALSA sound output is required')
105 if not conf.CheckPkgConfig(
'gtkmm-3.0',
'3.10'):
106 problems.append(
'Unable to configure the mm-bindings for GTK-3')
108 if not conf.CheckPkgConfig(
'glibmm-2.4',
'2.39'):
109 problems.append(
'Unable to configure the mm-bindings for Glib')
111 if not conf.CheckPkgConfig(
'sigc++-2.0',
'2.2.10'):
112 problems.append(
'Need the signal-slot-binding library SigC++2')
114 if not conf.CheckPkgConfig(
'glib-2.0',
'2.40'):
115 problems.append(
'Need a suitable Glib version.')
117 if not conf.CheckPkgConfig(
'gthread-2.0',
'2.40'):
118 problems.append(
'Need gthread support lib for Glib based thread handling.')
120 if not conf.CheckPkgConfig(
'cairomm-1.0',
'1.10'):
121 problems.append(
'Unable to configure Cairo--')
125 urlGDLmm =
'http://ftp.gnome.org/pub/GNOME/sources/gdlmm/' 126 urlGDLmmDEB =
'http://lumiera.org/debian/' 127 if not conf.CheckPkgConfig(
'gdl-3.0', verGDL):
128 problems.append(
'GNOME Docking Library not found. We need at least GDL %s ' 129 'and suitable C++ ("mm")-bindings (GDLmm >=%s)' % (verGDL, verGDLmm))
130 if not conf.CheckPkgConfig(
'gdlmm-3.0', verGDLmm, alias=
'gdl'):
131 problems.append(
'We need the C++ bindings for GDL by Fabien Parent: GDLmm >=%s ' 132 '(either from GNOME %s or use the debian package from %s)' %
133 (verGDLmm, urlGDLmm, urlGDLmmDEB))
135 if not conf.CheckPkgConfig(
'librsvg-2.0',
'2.30'):
136 problems.append(
'Need rsvg Library for rendering icons.')
138 if not conf.CheckCHeader([
'X11/Xutil.h',
'X11/Xlib.h'],
'<>'):
139 problems.append(
'Xlib.h and Xutil.h required. Please install libx11-dev.')
143 if not conf.CheckPkgConfig(
'xv') : problems.append(
'Need libXv...')
144 if not conf.CheckPkgConfig(
'x11') : problems.append(
'Need X-lib...')
145 if not conf.CheckPkgConfig(
'xext'): problems.append(
'Need libXext.')
150 print "*** unable to build due to the following problems:" 151 for isue
in problems:
154 print "build aborted." 157 print "** Gathered Library Info: %s" % conf.env.libInfo.keys()