mirror of
https://github.com/OpenNebula/one.git
synced 2024-12-24 21:34:01 +03:00
819669442e
* B #3584: Make scons python3 compatible * L #~: PEP80 linting of SConstruct
83 lines
2.8 KiB
Python
83 lines
2.8 KiB
Python
# -------------------------------------------------------------------------- #
|
|
# Copyright 2002-2019, OpenNebula Project, OpenNebula Systems #
|
|
# #
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
|
|
# not use this file except in compliance with the License. You may obtain #
|
|
# a copy of the License at #
|
|
# #
|
|
# http://www.apache.org/licenses/LICENSE-2.0 #
|
|
# #
|
|
# Unless required by applicable law or agreed to in writing, software #
|
|
# distributed under the License is distributed on an "AS IS" BASIS, #
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
|
|
# See the License for the specific language governing permissions and #
|
|
# limitations under the License. #
|
|
# -------------------------------------------------------------------------- #
|
|
|
|
import os
|
|
import SCons
|
|
|
|
############
|
|
# BUILDERS #
|
|
############
|
|
|
|
|
|
def build_lex(target, source, env):
|
|
cwd = os.getcwd()
|
|
|
|
src = SCons.Util.to_String(source[0])
|
|
src_dir = os.path.dirname(src)
|
|
src_name = os.path.basename(src)
|
|
|
|
os.chdir(src_dir)
|
|
os.system("flex "+src_name)
|
|
os.chdir(cwd)
|
|
|
|
return None
|
|
|
|
|
|
def emitter_lex(target, source, env):
|
|
src = SCons.Util.to_String(source[0])
|
|
(src_name, src_ext) = os.path.splitext(os.path.basename(src))
|
|
target.append(src_name+".h")
|
|
return target, source
|
|
|
|
|
|
def add_lex(environment):
|
|
lex_bld = SCons.Builder.Builder(action=build_lex,
|
|
suffix='.cc',
|
|
src_suffix='.l',
|
|
emitter=emitter_lex)
|
|
environment.Append(BUILDERS={'Lex': lex_bld})
|
|
|
|
|
|
def build_bison(target, source, env):
|
|
cwd = os.getcwd()
|
|
|
|
src = SCons.Util.to_String(source[0])
|
|
src_dir = os.path.dirname(src)
|
|
src_name = os.path.basename(src)
|
|
(base, ext) = os.path.splitext(src_name)
|
|
|
|
os.chdir(src_dir)
|
|
os.system("bison "+src_name)
|
|
os.rename(base+".hh", base+".h")
|
|
os.chdir(cwd)
|
|
|
|
return None
|
|
|
|
|
|
def emitter_bison(target, source, env):
|
|
src = SCons.Util.to_String(source[0])
|
|
(src_name, src_ext) = os.path.splitext(os.path.basename(src))
|
|
target.append(src_name+".h")
|
|
return target, source
|
|
|
|
|
|
def add_bison(environment):
|
|
bison_bld = SCons.Builder.Builder(action=build_bison,
|
|
suffix='.cc',
|
|
src_suffix='.y',
|
|
emitter=emitter_bison)
|
|
environment.Append(BUILDERS={'Bison': bison_bld})
|