mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-19 02:25:52 +00:00
* Add VSProject SCons Builder * Add Protoc SCons Builder * Add Beast build utilities python module
140 lines
4.3 KiB
Python
140 lines
4.3 KiB
Python
from __future__ import absolute_import, division, print_function, unicode_literals
|
|
|
|
import copy
|
|
import itertools
|
|
import ntpath
|
|
import os
|
|
import random
|
|
import sys
|
|
|
|
def add_beast_to_path():
|
|
python_home = os.path.join(os.getcwd(), 'python')
|
|
if python_home not in sys.path:
|
|
sys.path.append(python_home)
|
|
|
|
add_beast_to_path()
|
|
|
|
from beast.env.AddCommonFlags import add_common_flags
|
|
from beast.env.AddUserEnv import add_user_env
|
|
from beast.env import Print
|
|
from beast.platform import GetEnvironment
|
|
from beast.util import Boost
|
|
from beast.util import File
|
|
from beast.util import Tests
|
|
|
|
VARIANT_DIRECTORIES = {
|
|
'beast': ('bin', 'beast'),
|
|
'modules': ('bin', 'modules'),
|
|
}
|
|
|
|
BOOST_LIBRARIES = '' #boost_system'
|
|
MAIN_PROGRAM_FILE = 'beast/unit_test/tests/main.cpp'
|
|
DOTFILE = '~/.scons'
|
|
|
|
def main():
|
|
File.validate_libraries(Boost.LIBPATH, BOOST_LIBRARIES)
|
|
defaults = GetEnvironment.get_environment(ARGUMENTS)
|
|
working = copy.deepcopy(defaults)
|
|
add_common_flags(defaults)
|
|
|
|
add_user_env(working, DOTFILE)
|
|
add_common_flags(working)
|
|
Print.print_build_config(working, defaults)
|
|
|
|
env = Environment(**working)
|
|
|
|
for name, path in VARIANT_DIRECTORIES.items():
|
|
env.VariantDir(os.path.join(*path), name, duplicate=0)
|
|
env.Replace(PRINT_CMD_LINE_FUNC=Print.print_cmd_line)
|
|
#Tests.run_tests(env, MAIN_PROGRAM_FILE, '.', '.test.cpp')
|
|
|
|
#main()
|
|
|
|
#-------------------------------------------------------------------------------
|
|
|
|
def is_unity(path):
|
|
b, e = os.path.splitext(path)
|
|
return os.path.splitext(b)[1] == '.unity' and e in ['.c', '.cpp']
|
|
|
|
def files(base):
|
|
for parent, _, files in os.walk(base):
|
|
for path in files:
|
|
path = os.path.join(parent, path)
|
|
yield os.path.normpath(path)
|
|
|
|
#-------------------------------------------------------------------------------
|
|
|
|
'''
|
|
/MP /GS /W3 /wd"4018" /wd"4244" /wd"4267" /Gy- /Zc:wchar_t
|
|
/I"D:\lib\OpenSSL-Win64\include" /I"D:\lib\boost_1_55_0"
|
|
/I"..\..\src\protobuf\src" /I"..\..\src\protobuf\vsprojects"
|
|
/I"..\..\src\leveldb" /I"..\..\src\leveldb\include" /I"..\..\build\proto"
|
|
/Zi /Gm- /Od /Fd"..\..\build\obj\VisualStudio2013\Debug.x64\vc120.pdb"
|
|
/fp:precise /D "_CRTDBG_MAP_ALLOC" /D "WIN32" /D "_DEBUG" /D "_CONSOLE"
|
|
/D "_VARIADIC_MAX=10" /D "_WIN32_WINNT=0x0600" /D "_SCL_SECURE_NO_WARNINGS"
|
|
/D "_CRT_SECURE_NO_WARNINGS" /D "_MBCS" /errorReport:prompt /WX- /Zc:forScope
|
|
/RTC1 /GR /Gd /MTd /openmp- /Fa"..\..\build\obj\VisualStudio2013\Debug.x64\"
|
|
/EHa /nologo /Fo"..\..\build\obj\VisualStudio2013\Debug.x64\"
|
|
/Fp"..\..\build\obj\VisualStudio2013\Debug.x64\rippled.pch"
|
|
'''
|
|
|
|
# Path to this SConstruct file
|
|
base_dir = Dir('#').srcnode().get_abspath()
|
|
|
|
base_env = Environment(
|
|
tools = ['default', 'VSProject'],
|
|
CCCOMSTR = '',
|
|
CMDLINE_QUIET = 1,
|
|
CPPPATH = [
|
|
os.environ['BOOST_ROOT'],
|
|
os.environ['OPENSSL_ROOT']
|
|
],
|
|
CPPDEFINES = [
|
|
'_WIN32_WINNT=0x6000']
|
|
)
|
|
|
|
#base_env.Replace(PRINT_CMD_LINE_FUNC=Print.print_cmd_line)
|
|
|
|
env = base_env
|
|
|
|
bin_dir = os.path.join(base_dir, 'bin')
|
|
|
|
srcs = filter(is_unity, list(files('beast')) + list(files('modules')))
|
|
for variant in ['Debug']: #, 'Release']:
|
|
for platform in ['Win32']:
|
|
#env = base_env.Clone()
|
|
#env.Replace(PRINT_CMD_LINE_FUNC=Print.print_cmd_line)
|
|
variant_dir = os.path.join(bin_dir, variant + '.' + platform)
|
|
env.VariantDir(os.path.join(variant_dir, 'beast'), 'beast', duplicate=0)
|
|
env.VariantDir(os.path.join(variant_dir, 'modules'), 'modules', duplicate=0)
|
|
env.Append(CCFLAGS=[
|
|
'/EHsc',
|
|
'/bigobj',
|
|
'/Fd${TARGET}.pdb'
|
|
])
|
|
if variant == 'Debug':
|
|
env.Append(CCFLAGS=[
|
|
'/MTd',
|
|
'/Od',
|
|
'/Zi'
|
|
])
|
|
else:
|
|
env.Append(CCFLAGS=[
|
|
'/MT',
|
|
'/Ox'
|
|
])
|
|
variant_srcs = [os.path.join(variant_dir, os.path.relpath(f, base_dir)) for f in srcs]
|
|
|
|
beast = env.StaticLibrary(
|
|
target = os.path.join(variant_dir, 'beast.lib'),
|
|
source = variant_srcs)
|
|
|
|
env.VSProject (
|
|
'out',
|
|
buildtarget = beast,
|
|
source = filter(is_unity, list(files('beast')) + list(files('modules'))))
|
|
|
|
env.Default ('out.vcxproj')
|
|
#env.Default (os.path.join(bin_dir,'Debug.Win32', 'beast.lib'))
|
|
|