removing precompiled libprotobuf objects. fixes ticket 23
This commit is contained in:
+60
-1
@@ -3,6 +3,51 @@
|
||||
import os
|
||||
import os.path
|
||||
import sys
|
||||
from subprocess import call
|
||||
|
||||
def CheckBoost(context, version):
|
||||
# Boost versions are in format major.minor.subminor
|
||||
v_arr = version.split(".")
|
||||
version_n = 0
|
||||
if len(v_arr) > 0:
|
||||
version_n += int(v_arr[0])*100000
|
||||
if len(v_arr) > 1:
|
||||
version_n += int(v_arr[1])*100
|
||||
if len(v_arr) > 2:
|
||||
version_n += int(v_arr[2])
|
||||
|
||||
context.Message('Checking for Boost version >= %s... ' % (version))
|
||||
ret = context.TryRun("""
|
||||
#include <boost/version.hpp>
|
||||
|
||||
int main()
|
||||
{
|
||||
return BOOST_VERSION >= %d ? 0 : 1;
|
||||
}
|
||||
""" % version_n, '.cpp')[0]
|
||||
context.Result(ret)
|
||||
return ret
|
||||
|
||||
def CheckProtobuf(context, version):
|
||||
# Protobuf versions are in format major.minor.subminor
|
||||
v_arr = version.split(".")
|
||||
version_n = 0
|
||||
if len(v_arr) > 0:
|
||||
version_n += int(v_arr[0])*1000000
|
||||
if len(v_arr) > 1:
|
||||
version_n += int(v_arr[1])*1000
|
||||
if len(v_arr) > 2:
|
||||
version_n += int(v_arr[2])
|
||||
|
||||
context.Message('Checking for Protobuffer version >= %s... ' % (version))
|
||||
ret = context.TryRun("""
|
||||
#include <google/protobuf/stubs/common.h>
|
||||
int main() {
|
||||
return (GOOGLE_PROTOBUF_VERSION >= %d) ? 0 : 1;
|
||||
}
|
||||
""" % version_n, '.cpp')[0]
|
||||
context.Result(ret)
|
||||
return ret
|
||||
|
||||
AddOption('--cxx', dest='cxx', type='string', nargs=1, action='store', metavar='STRING', help='C++ Compiler')
|
||||
AddOption('--stxxlroot', dest='stxxlroot', type='string', nargs=1, action='store', metavar='STRING', help='root directory of STXXL')
|
||||
@@ -35,7 +80,7 @@ if GetOption('buildconfiguration') == 'debug':
|
||||
else:
|
||||
env.Append(CCFLAGS = ' -O3 -DNDEBUG -march=native')
|
||||
#print "Compiling with: ", env['CXX']
|
||||
conf = Configure(env)
|
||||
conf = Configure(env, custom_tests = { 'CheckBoost' : CheckBoost, 'CheckProtobuf' : CheckProtobuf })
|
||||
if not conf.CheckHeader('omp.h'):
|
||||
print "Compiler does not support OpenMP. Exiting"
|
||||
Exit(-1)
|
||||
@@ -88,9 +133,23 @@ if not conf.CheckLibWithHeader('protobuf', 'google/protobuf/descriptor.h', 'CXX'
|
||||
Exit(-1)
|
||||
#if os.sysconf('SC_NPROCESSORS_ONLN') > 1:
|
||||
# env.Append(CCFLAGS = ' -D_GLIBCXX_PARALLEL');
|
||||
if not (conf.CheckBoost('1.37')):
|
||||
print 'Boost version >= 1.37 needed'
|
||||
Exit(-1);
|
||||
#check for protobuf 2.3.0, else rebuild proto files
|
||||
if not (conf.CheckProtobuf('2.3.0')):
|
||||
if not (env.Detect('protoc')):
|
||||
print 'protobuffer compiler not found'
|
||||
Exit(-1);
|
||||
|
||||
protobld = Builder(action = 'protoc -I=DataStructures/pbf-proto --cpp_out=DataStructures/pbf-proto $SOURCE')
|
||||
env.Append(BUILDERS = {'Protobuf' : protobld})
|
||||
env.Protobuf('DataStructures/pbf-proto/fileformat.proto')
|
||||
env.Protobuf('DataStructures/pbf-proto/osmformat.proto')
|
||||
env.Append(CCFLAGS = ' -fopenmp')
|
||||
env.Append(LINKFLAGS = ' -fopenmp')
|
||||
|
||||
|
||||
env.StaticObject("DataStructures/pbf-proto/fileformat.pb.cc")
|
||||
env.StaticObject("DataStructures/pbf-proto/osmformat.pb.cc")
|
||||
env.Program("extractor.cpp")
|
||||
|
||||
Reference in New Issue
Block a user