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.CheckLibWithHeader(
'stdc++fs',
'filesystem',
'C++'):
83 problems.append(
'We need the C++17 filesystem support.')
85 if not conf.CheckCXXHeader(
'boost/config.hpp'):
86 problems.append(
'We need the C++ boost-libraries.')
88 if not conf.CheckCXXHeader(
'boost/lexical_cast.hpp'):
89 problems.append(
'We need boost::lexical_cast')
90 if not conf.CheckCXXHeader(
'boost/format.hpp'):
91 problems.append(
'We need boost::format (header).')
92 if not conf.CheckLibWithHeader(
'boost_program_options',
'boost/program_options.hpp',
'C++'):
93 problems.append(
'We need boost::program_options (including binary lib for linking).')
94 if not conf.CheckLibWithHeader(
'boost_system',
'boost/system/error_code.hpp',
'C++'):
95 problems.append(
'We need the boost::system support library (including binary lib).')
96 if not conf.CheckLibWithHeader(
'boost_filesystem',
'boost/filesystem.hpp',
'C++'):
97 problems.append(
'We need the boost::filesystem lib (including binary lib for linking).')
100 if not conf.CheckPkgConfig(
'gavl',
'1.4'):
101 problems.append(
'Did not find Gmerlin Audio Video Lib [http://gmerlin.sourceforge.net/gavl.html].')
103 conf.env.mergeConf(
'gavl')
105 if not conf.CheckPkgConfig(
'alsa',
'1.0.23'):
106 problems.append(
'Support for ALSA sound output is required')
108 if not conf.CheckPkgConfig(
'gtkmm-3.0',
'3.10'):
109 problems.append(
'Unable to configure the mm-bindings for GTK-3')
111 if not conf.CheckPkgConfig(
'glibmm-2.4',
'2.39'):
112 problems.append(
'Unable to configure the mm-bindings for Glib')
114 if not conf.CheckPkgConfig(
'sigc++-2.0',
'2.2.10'):
115 problems.append(
'Need the signal-slot-binding library SigC++2')
117 if not conf.CheckPkgConfig(
'glib-2.0',
'2.40'):
118 problems.append(
'Need a suitable Glib version.')
120 if not conf.CheckPkgConfig(
'gthread-2.0',
'2.40'):
121 problems.append(
'Need gthread support lib for Glib based thread handling.')
123 if not conf.CheckPkgConfig(
'cairomm-1.0',
'1.10'):
124 problems.append(
'Unable to configure Cairo--')
128 urlGDLmm =
'http://ftp.gnome.org/pub/GNOME/sources/gdlmm/' 129 urlGDLmmDEB =
'http://lumiera.org/debian/' 130 if not conf.CheckPkgConfig(
'gdl-3.0', verGDL):
131 problems.append(
'GNOME Docking Library not found. We need at least GDL %s ' 132 'and suitable C++ ("mm")-bindings (GDLmm >=%s)' % (verGDL, verGDLmm))
133 if not conf.CheckPkgConfig(
'gdlmm-3.0', verGDLmm, alias=
'gdl'):
134 problems.append(
'We need the C++ bindings for GDL by Fabien Parent: GDLmm >=%s ' 135 '(either from GNOME %s or use the debian package from %s)' %
136 (verGDLmm, urlGDLmm, urlGDLmmDEB))
138 if not conf.CheckPkgConfig(
'librsvg-2.0',
'2.30'):
139 problems.append(
'Need rsvg Library for rendering icons.')
141 if not conf.CheckCHeader([
'X11/Xutil.h',
'X11/Xlib.h'],
'<>'):
142 problems.append(
'Xlib.h and Xutil.h required. Please install libx11-dev.')
146 if not conf.CheckPkgConfig(
'xv') : problems.append(
'Need libXv...')
147 if not conf.CheckPkgConfig(
'x11') : problems.append(
'Need X-lib...')
148 if not conf.CheckPkgConfig(
'xext'): problems.append(
'Need libXext.')
153 print "*** unable to build due to the following problems:" 154 for isue
in problems:
157 print "build aborted." 160 print "** Gathered Library Info: %s" % conf.env.libInfo.keys()