summaryrefslogtreecommitdiff
path: root/SConstruct
diff options
context:
space:
mode:
authorAndreas Hansson <andreas.hansson@arm.com>2013-01-21 09:20:18 -0500
committerAndreas Hansson <andreas.hansson@arm.com>2013-01-21 09:20:18 -0500
commit62544f938a8a7387bd22b397d36c637a2656f34a (patch)
tree9bd774edfe81870e42fc5106650b52f3dd802070 /SConstruct
parent1429d2124406440946fbe80a6e9dfe1148f3af91 (diff)
downloadgem5-62544f938a8a7387bd22b397d36c637a2656f34a.tar.xz
scons: Disable protobuf if pkg-config and CheckLib fails
This patch changes the use of pkg-config such that protobuf is still evaluated with CheckLib even if it fails. This is to allow setups where libprotobuf is available, but not configured through protobuf. Moreover, if CheckLib fails to use libprotobuf then all the tracing is disabled, but scons is allowed to continue with a warning.
Diffstat (limited to 'SConstruct')
-rwxr-xr-xSConstruct42
1 files changed, 27 insertions, 15 deletions
diff --git a/SConstruct b/SConstruct
index 26d993e83..93adc85de 100755
--- a/SConstruct
+++ b/SConstruct
@@ -637,21 +637,32 @@ if len(protoc_version) < 2 or protoc_version[0] != 'libprotoc':
termcap.Normal
main['PROTOC'] = False
else:
- # Determine the appropriate include path and library path using
- # pkg-config, that means we also need to check for pkg-config
- if not readCommand(['pkg-config', '--version'], exception=''):
- print 'Error: pkg-config not found. Please install and retry.'
- Exit(1)
-
- main.ParseConfig('pkg-config --cflags --libs-only-L protobuf')
-
# Based on the availability of the compress stream wrappers,
# require 2.1.0
min_protoc_version = '2.1.0'
if compareVersions(protoc_version[1], min_protoc_version) < 0:
- print 'Error: protoc version', min_protoc_version, 'or newer required.'
- print ' Installed version:', protoc_version[1]
- Exit(1)
+ print termcap.Yellow + termcap.Bold + \
+ 'Warning: protoc version', min_protoc_version, \
+ 'or newer required.\n' + \
+ ' Installed version:', protoc_version[1], \
+ termcap.Normal
+ main['PROTOC'] = False
+ else:
+ # Attempt to determine the appropriate include path and
+ # library path using pkg-config, that means we also need to
+ # check for pkg-config. Note that it is possible to use
+ # protobuf without the involvement of pkg-config. Later on we
+ # check go a library config check and at that point the test
+ # will fail if libprotobuf cannot be found.
+ if readCommand(['pkg-config', '--version'], exception=''):
+ try:
+ # Attempt to establish what linking flags to add for protobuf
+ # using pkg-config
+ main.ParseConfig('pkg-config --cflags --libs-only-L protobuf')
+ except:
+ print termcap.Yellow + termcap.Bold + \
+ 'Warning: pkg-config could not get protobuf flags.' + \
+ termcap.Normal
# Check for SWIG
if not main.has_key('SWIG'):
@@ -846,11 +857,12 @@ main['HAVE_PROTOBUF'] = main['PROTOC'] and \
conf.CheckLibWithHeader('protobuf', 'google/protobuf/message.h',
'C++', 'GOOGLE_PROTOBUF_VERIFY_VERSION;')
-# If we have the compiler but not the library, treat it as an error.
+# If we have the compiler but not the library, print another warning.
if main['PROTOC'] and not main['HAVE_PROTOBUF']:
- print 'Error: did not find protocol buffer library and/or headers.'
- print ' Please install libprotobuf-dev and try again.'
- Exit(1)
+ print termcap.Yellow + termcap.Bold + \
+ 'Warning: did not find protocol buffer library and/or headers.\n' + \
+ ' Please install libprotobuf-dev for tracing support.' + \
+ termcap.Normal
# Check for librt.
have_posix_clock = \