Fix VSProject generation issues with SConstruct:

* Always describe the Visual Studio targets
* Prevent checking nonexistant enviro vars
* Prevent pkg-config protobuf env vars if not clang/gcc
* Don't use any pkg-config enviro vars unless clang/gcc
* Make all VSProject/config directories windows-style
* Prevent beastobjc.mm from showing up in vcxproj
* Remove duplicate \src\protobuf\src
* Consistent quoting
This commit is contained in:
evhub
2014-06-18 16:34:53 -07:00
committed by Vinnie Falco
parent d7a6627a1f
commit 530bdf975e
2 changed files with 59 additions and 63 deletions

View File

@@ -50,76 +50,72 @@
<PropertyGroup Label="UserMacros" />
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug|x64'">
<ClCompile>
<PreprocessorDefinitions>_WIN32_WINNT=0x6000;DEBUG;WIN32_CONSOLE;_CRTDBG_MAP_ALLOC;_CRT_SECURE_NO_WARNINGS;_DEBUG;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\..\build\proto;..\..\src;..\..\src\beast;..\..\src\protobuf\src;..\..\src\protobuf\src;..\..\src\protobuf\vsprojects;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DisableSpecificWarnings>4018;4244;4267;4800</DisableSpecificWarnings>
<PreprocessorDefinitions>_WIN32_WINNT=0x6000;_CRT_SECURE_NO_WARNINGS;_CRTDBG_MAP_ALLOC;_DEBUG;_SCL_SECURE_NO_WARNINGS;DEBUG;WIN32_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\..\build\proto;..\..\src;..\..\src\beast;..\..\src\protobuf\src;..\..\src\protobuf\vsprojects;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DisableSpecificWarnings>4800;4244;4267;4018</DisableSpecificWarnings>
<ExceptionHandling>Async</ExceptionHandling>
<RuntimeTypeInfo>True</RuntimeTypeInfo>
<BufferSecurityCheck>True</BufferSecurityCheck>
<CallingConvention>Cdecl</CallingConvention>
<MinimalRebuild>False</MinimalRebuild>
<FunctionLevelLinking>False</FunctionLevelLinking>
<MultiProcessorCompilation>True</MultiProcessorCompilation>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<Optimization>Disabled</Optimization>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<WarningLevel>Level3</WarningLevel>
<TreatWarningAsError>False</TreatWarningAsError>
<ForceConformanceInForLoopScope>True</ForceConformanceInForLoopScope>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<ErrorReporting>None</ErrorReporting>
<FloatingPointModel>Precise</FloatingPointModel>
<MinimalRebuild>False</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<ErrorReporting>None</ErrorReporting>
<BufferSecurityCheck>True</BufferSecurityCheck>
<RuntimeTypeInfo>True</RuntimeTypeInfo>
<MultiProcessorCompilation>True</MultiProcessorCompilation>
<FunctionLevelLinking>False</FunctionLevelLinking>
<SuppressStartupBanner>True</SuppressStartupBanner>
<SuppressStartupBanner>True</SuppressStartupBanner>
<Optimization>Disabled</Optimization>
<OpenMPSupport>False</OpenMPSupport>
<AdditionalOptions>/FS /bigobj %(AdditionalOptions)</AdditionalOptions>
<TreatWarningAsError>False</TreatWarningAsError>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CallingConvention>Cdecl</CallingConvention>
<ForceConformanceInForLoopScope>True</ForceConformanceInForLoopScope>
<WarningLevel>Level3</WarningLevel>
<AdditionalOptions>/bigobj /FS %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<Link>
<AdditionalDependencies>Shlwapi.lib;advapi32.lib;comdlg32.lib;gdi32.lib;kernel32.lib;libeay32MT.lib;odbc32.lib;odbccp32.lib;ole32.lib;oleaut32.lib;shell32.lib;ssleay32MT.lib;user32.lib;uuid.lib;winspool.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>True</GenerateDebugInformation>
<RandomizedBaseAddress>True</RandomizedBaseAddress>
<AdditionalDependencies>advapi32.lib;comdlg32.lib;gdi32.lib;kernel32.lib;libeay32MT.lib;odbc32.lib;odbccp32.lib;ole32.lib;oleaut32.lib;shell32.lib;Shlwapi.lib;ssleay32MT.lib;user32.lib;uuid.lib;winspool.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ErrorReporting>NoErrorReport</ErrorReporting>
<TargetMachine>MachineX64</TargetMachine>
<DataExecutionPrevention>true</DataExecutionPrevention>
<SubSystem>Console</SubSystem>
<SuppressStartupBanner>True</SuppressStartupBanner>
<AdditionalOptions>/MANIFEST /TLBID:1 %(AdditionalOptions)</AdditionalOptions>
<RandomizedBaseAddress>True</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<GenerateDebugInformation>True</GenerateDebugInformation>
<TargetMachine>MachineX64</TargetMachine>
<AdditionalOptions>/MANIFEST /nologo /TLBID:1 %(AdditionalOptions)</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release|x64'">
<ClCompile>
<PreprocessorDefinitions>_WIN32_WINNT=0x6000;NDEBUG;WIN32_CONSOLE;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\..\build\proto;..\..\src;..\..\src\beast;..\..\src\protobuf\src;..\..\src\protobuf\src;..\..\src\protobuf\vsprojects;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DisableSpecificWarnings>4018;4244;4267;4800</DisableSpecificWarnings>
<PreprocessorDefinitions>_WIN32_WINNT=0x6000;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;NDEBUG;WIN32_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\..\build\proto;..\..\src;..\..\src\beast;..\..\src\protobuf\src;..\..\src\protobuf\vsprojects;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DisableSpecificWarnings>4800;4244;4267;4018</DisableSpecificWarnings>
<ExceptionHandling>Async</ExceptionHandling>
<RuntimeTypeInfo>True</RuntimeTypeInfo>
<CallingConvention>Cdecl</CallingConvention>
<FloatingPointModel>Precise</FloatingPointModel>
<MinimalRebuild>False</MinimalRebuild>
<FunctionLevelLinking>False</FunctionLevelLinking>
<ErrorReporting>None</ErrorReporting>
<RuntimeTypeInfo>True</RuntimeTypeInfo>
<MultiProcessorCompilation>True</MultiProcessorCompilation>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<Optimization>Full</Optimization>
<WarningLevel>Level3</WarningLevel>
<TreatWarningAsError>False</TreatWarningAsError>
<ForceConformanceInForLoopScope>True</ForceConformanceInForLoopScope>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<ErrorReporting>None</ErrorReporting>
<FloatingPointModel>Precise</FloatingPointModel>
<SuppressStartupBanner>True</SuppressStartupBanner>
<FunctionLevelLinking>False</FunctionLevelLinking>
<SuppressStartupBanner>True</SuppressStartupBanner>
<OpenMPSupport>False</OpenMPSupport>
<AdditionalOptions>/FS /bigobj %(AdditionalOptions)</AdditionalOptions>
<TreatWarningAsError>False</TreatWarningAsError>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CallingConvention>Cdecl</CallingConvention>
<ForceConformanceInForLoopScope>True</ForceConformanceInForLoopScope>
<Optimization>Full</Optimization>
<WarningLevel>Level3</WarningLevel>
<AdditionalOptions>/bigobj /FS %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<Link>
<AdditionalDependencies>Shlwapi.lib;advapi32.lib;comdlg32.lib;gdi32.lib;kernel32.lib;libeay32MT.lib;odbc32.lib;odbccp32.lib;ole32.lib;oleaut32.lib;shell32.lib;ssleay32MT.lib;user32.lib;uuid.lib;winspool.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>True</GenerateDebugInformation>
<RandomizedBaseAddress>True</RandomizedBaseAddress>
<AdditionalDependencies>advapi32.lib;comdlg32.lib;gdi32.lib;kernel32.lib;libeay32MT.lib;odbc32.lib;odbccp32.lib;ole32.lib;oleaut32.lib;shell32.lib;Shlwapi.lib;ssleay32MT.lib;user32.lib;uuid.lib;winspool.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ErrorReporting>NoErrorReport</ErrorReporting>
<TargetMachine>MachineX64</TargetMachine>
<DataExecutionPrevention>true</DataExecutionPrevention>
<SubSystem>Console</SubSystem>
<SuppressStartupBanner>True</SuppressStartupBanner>
<AdditionalOptions>/MANIFEST /TLBID:1 %(AdditionalOptions)</AdditionalOptions>
<RandomizedBaseAddress>True</RandomizedBaseAddress>
<DataExecutionPrevention>true</DataExecutionPrevention>
<GenerateDebugInformation>True</GenerateDebugInformation>
<TargetMachine>MachineX64</TargetMachine>
<AdditionalOptions>/MANIFEST /nologo /TLBID:1 %(AdditionalOptions)</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
<ItemGroup>

View File

@@ -214,10 +214,7 @@ def config_base(env):
except KeyError:
pass
if Beast.system.linux:
env.ParseConfig('pkg-config --static --cflags --libs openssl')
env.ParseConfig('pkg-config --static --cflags --libs protobuf')
elif Beast.system.windows:
if Beast.system.windows:
try:
OPENSSL_ROOT = os.path.normpath(os.environ['OPENSSL_ROOT'])
env.Append(CPPPATH=[
@@ -244,6 +241,11 @@ def config_env(toolchain, variant, env):
env.Append(CPPDEFINES=['NDEBUG'])
if toolchain in Split('clang gcc'):
if Beast.system.linux:
env.ParseConfig('pkg-config --static --cflags --libs openssl')
env.ParseConfig('pkg-config --static --cflags --libs protobuf')
env.Append(CCFLAGS=[
'-Wall',
'-Wno-sign-compare',
@@ -322,7 +324,7 @@ def config_env(toolchain, variant, env):
if toolchain == 'clang':
if Beast.system.osx:
env.Replace(CC='clang', CXX='clang++', LINK='clang++')
else:
elif 'CLANG_CC' in env and 'CLANG_CXX' in env and 'CLANG_LINK' in env:
env.Replace(CC=env['CLANG_CC'], CXX=env['CLANG_CXX'], LINK=env['CLANG_LINK'])
# C and C++
# Add '-Wshorten-64-to-32'
@@ -332,7 +334,8 @@ def config_env(toolchain, variant, env):
env.Append(CXXFLAGS=['-Wno-mismatched-tags'])
elif toolchain == 'gcc':
env.Replace(CC=env['GNU_CC'], CXX=env['GNU_CXX'], LINK=env['GNU_LINK'])
if 'GNU_CC' in env and 'GNU_CXX' in env and 'GNU_LINK' in env:
env.Replace(CC=env['GNU_CC'], CXX=env['GNU_CXX'], LINK=env['GNU_LINK'])
# Why is this only for gcc?!
env.Append(CCFLAGS=['-Wno-unused-local-typedefs'])
@@ -397,7 +400,7 @@ def config_env(toolchain, variant, env):
'/MACHINE:X64',
'/MANIFEST',
#'''/MANIFESTUAC:"level='asInvoker' uiAccess='false'"''',
#'/NOLOGO',
'/nologo',
'/NXCOMPAT',
'/SUBSYSTEM:CONSOLE',
'/TLBID:1',
@@ -447,10 +450,6 @@ base.Append(CPPPATH=[
os.path.join('src', 'beast'),
os.path.join(build_dir, 'proto'),
])
if Beast.system.windows:
base.Append(CPPPATH=[
os.path.join('src', 'protobuf', 'src'),
])
# Configure the toolchains, variants, default toolchain, and default target
variants = ['debug', 'release']
@@ -489,7 +488,7 @@ for source in [
# Declare the targets
aliases = collections.defaultdict(list)
msvc_configs = []
for toolchain in toolchains:
for toolchain in ['gcc', 'clang', 'msvc']:
for variant in variants:
# Configure this variant's construction environment
env = base.Clone()
@@ -569,7 +568,7 @@ for toolchain in toolchains:
'src/snappy/config',
]))
if Beast.system.osx:
if toolchain == "clang" and Beast.system.osx:
objects.append(addSource('src/ripple/unity/beastobjc.mm', env, variant_dirs))
target = env.Program(
@@ -588,9 +587,10 @@ for toolchain in toolchains:
msvc_configs.append(config)
if toolchain in toolchains:
aliases['all'].extend(target)
aliases[variant].extend(target)
aliases[toolchain].extend(target)
env.Alias(variant_name, target)
aliases[variant].extend(target)
aliases[toolchain].extend(target)
env.Alias(variant_name, target)
for key, value in aliases.iteritems():
env.Alias(key, value)