1# 2# Licensed to the Apache Software Foundation (ASF) under one 3# or more contributor license agreements. See the NOTICE file 4# distributed with this work for additional information 5# regarding copyright ownership. The ASF licenses this file 6# to you under the Apache License, Version 2.0 (the 7# "License"); you may not use this file except in compliance 8# with the License. You may obtain a copy of the License at 9# 10# http://www.apache.org/licenses/LICENSE-2.0 11# 12# Unless required by applicable law or agreed to in writing, 13# software distributed under the License is distributed on an 14# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15# KIND, either express or implied. See the License for the 16# specific language governing permissions and limitations 17# under the License. 18# 19 20from os import path 21from SCons.Builder import Builder 22from six.moves import map 23 24 25def scons_env(env, add=''): 26 opath = path.dirname(path.abspath('$TARGET')) 27 lstr = 'thrift --gen cpp -o ' + opath + ' ' + add + ' $SOURCE' 28 cppbuild = Builder(action=lstr) 29 env.Append(BUILDERS={'ThriftCpp': cppbuild}) 30 31 32def gen_cpp(env, dir, file): 33 scons_env(env) 34 suffixes = ['_types.h', '_types.cpp'] 35 targets = map(lambda s: 'gen-cpp/' + file + s, suffixes) 36 return env.ThriftCpp(targets, dir + file + '.thrift') 37