Skip to content

Commit 654c468

Browse files
committed
SConstruct : Added INCLUDE_PATHS option and skip empty include paths
INCLUDE_PATHS is a list argument that can be used to add an arbitrary list of include paths to be added, with full control over their order from the options file. We are also avoiding adding any include paths that are empty, when using the old arguments. That is not strictly necessary (we could be setting it to an invalid path, for example) but does result in a much cleaner compile command.
1 parent c49955a commit 654c468

File tree

2 files changed

+54
-32
lines changed

2 files changed

+54
-32
lines changed

Changes

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
10.6.x.x (relative to 10.6.2.0)
22
========
33

4+
Build
5+
-----
6+
7+
- SConstruct :
8+
- Added `INCLUDE_PATHS` option.
9+
- Empty include path options are no longer added to the compile commands.
410

511

612
10.6.2.0 (relative to 10.6.1.0)

SConstruct

Lines changed: 48 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -647,6 +647,11 @@ o.Add(
647647
BoolVariable( "INSTALL_CREATE_SYMLINKS", "Whether to create symlinks post install", True )
648648
)
649649

650+
o.Add(
651+
"INCLUDE_PATHS",
652+
"Locations on which to search for include files for the dependencies.",
653+
[],
654+
)
650655

651656
# Test options
652657

@@ -788,20 +793,41 @@ env.Append(
788793
"-DBOOST_BIND_GLOBAL_PLACEHOLDERS",
789794
]
790795
)
791-
systemIncludeArgument = "/external:I" if env[ "PLATFORM" ] == "win32" else "-isystem"
792796

793-
# update the include and lib paths
794-
dependencyIncludes = [
795-
systemIncludeArgument, "$BOOST_INCLUDE_PATH",
796-
systemIncludeArgument, "$OPENEXR_INCLUDE_PATH",
797-
systemIncludeArgument, "$ILMBASE_INCLUDE_PATH",
798-
systemIncludeArgument, "$TBB_INCLUDE_PATH",
799-
systemIncludeArgument, "$BLOSC_INCLUDE_PATH",
797+
def includeFlags( includeEnv, includeVar ) :
798+
systemIncludeArgument = "/external:I" if includeEnv[ "PLATFORM" ] == "win32" else "-isystem"
799+
value = includeEnv.get( includeVar )
800+
if not value :
801+
return []
802+
803+
if isinstance( value, list ) :
804+
result = []
805+
for v in value :
806+
result.extend( [ systemIncludeArgument, v ] )
807+
808+
return result
809+
810+
result = [ systemIncludeArgument, value ]
811+
800812
# we use "OpenEXR/x.h" and they use "x.h"
801-
systemIncludeArgument, os.path.join( "$OPENEXR_INCLUDE_PATH","OpenEXR" ),
802-
systemIncludeArgument, os.path.join( "$ILMBASE_INCLUDE_PATH","Imath" ),
803-
systemIncludeArgument, "$FREETYPE_INCLUDE_PATH",
804-
]
813+
if includeVar == "OPENEXR_INCLUDE_PATH":
814+
result.extend( [ systemIncludeArgument, os.path.join( value, "OpenEXR" ) ] )
815+
elif includeVar == "ILMBASE_INCLUDE_PATH":
816+
result.extend( [ systemIncludeArgument, os.path.join( value, "Imath" ) ] )
817+
818+
return result
819+
820+
821+
# update the include and lib paths
822+
dependencyIncludes = []
823+
dependencyIncludes.extend( includeFlags( env, "BOOST_INCLUDE_PATH" ) )
824+
dependencyIncludes.extend( includeFlags( env, "OPENEXR_INCLUDE_PATH" ) )
825+
dependencyIncludes.extend( includeFlags( env, "ILMBASE_INCLUDE_PATH" ) )
826+
dependencyIncludes.extend( includeFlags( env, "TBB_INCLUDE_PATH" ) )
827+
dependencyIncludes.extend( includeFlags( env, "BLOSC_INCLUDE_PATH" ) )
828+
dependencyIncludes.extend( includeFlags( env, "FREETYPE_INCLUDE_PATH" ) )
829+
830+
dependencyIncludes.extend( includeFlags( env, "INCLUDE_PATHS" ) )
805831

806832
env.Prepend(
807833
LIBPATH = [
@@ -1186,7 +1212,8 @@ if env["PLATFORM"] != "win32" :
11861212
if basePythonEnv["PYTHON_INCLUDE_PATH"]=="" :
11871213
basePythonEnv["PYTHON_INCLUDE_FLAGS"] = getPythonConfig( basePythonEnv, "--includes" ).split()
11881214
else :
1189-
basePythonEnv["PYTHON_INCLUDE_FLAGS"] = [ systemIncludeArgument, "$PYTHON_INCLUDE_PATH" ]
1215+
1216+
basePythonEnv["PYTHON_INCLUDE_FLAGS"] = includeFlags( env, "PYTHON_INCLUDE_PATH" )
11901217

11911218
basePythonEnv.Append( CXXFLAGS = "$PYTHON_INCLUDE_FLAGS" )
11921219

@@ -1611,9 +1638,8 @@ imageEnvPrepends = {
16111638
"OpenImageIO$OIIO_LIB_SUFFIX",
16121639
],
16131640
"CXXFLAGS" : [
1614-
"-DIECoreImage_EXPORTS",
1615-
systemIncludeArgument, "$OIIO_INCLUDE_PATH"
1616-
]
1641+
"-DIECoreImage_EXPORTS"
1642+
] + includeFlags( imageEnv, "OIIO_INCLUDE_PATH" )
16171643
}
16181644
if imageEnv.get( "WITH_OIIO_UTIL", True ):
16191645
imageEnvPrepends["LIBS"].append( "OpenImageIO_Util$OIIO_LIB_SUFFIX" )
@@ -1807,10 +1833,7 @@ vdbEnvPrepends = {
18071833
"$VDB_LIB_PATH",
18081834
],
18091835
"LIBS" : ["openvdb$VDB_LIB_SUFFIX"],
1810-
"CXXFLAGS" : [
1811-
systemIncludeArgument, "$VDB_INCLUDE_PATH",
1812-
systemIncludeArgument, "$PYBIND11_INCLUDE_PATH",
1813-
]
1836+
"CXXFLAGS" : includeFlags( vdbEnv, "VDB_INCLUDE_PATH" ) + includeFlags( vdbEnv, "PYBIND11_INCLUDE_PATH" )
18141837
}
18151838

18161839
vdbEnv.Prepend( **vdbEnvPrepends)
@@ -1908,10 +1931,8 @@ if env["WITH_GL"] and doConfigure :
19081931
# while still using -Werror.
19091932
"-Wno-format" if env["PLATFORM"] != "win32" else "",
19101933
"-Wno-strict-aliasing" if env["PLATFORM"] != "win32" else "",
1911-
"/wd4701" if env["PLATFORM"] == "win32" else "",
1912-
systemIncludeArgument, "$GLEW_INCLUDE_PATH",
1913-
systemIncludeArgument, "$OIIO_INCLUDE_PATH",
1914-
],
1934+
"/wd4701" if env["PLATFORM"] == "win32" else ""
1935+
] + includeFlags( glEnv, "GLEW_INCLUDE_PATH" ) + includeFlags( glEnv, "OIIO_INCLUDE_PATH" ),
19151936
"LIBPATH" : [
19161937
"$GLEW_LIB_PATH",
19171938
"$OIIO_LIB_PATH",
@@ -2112,10 +2133,8 @@ usdEnvAppends = {
21122133
# This warning is already disabled generally for release builds,
21132134
# but also requires disabling for debug builds with USD.
21142135
"/wd4702" if env["PLATFORM"] == "win32" else "",
2115-
"-DIECoreUSD_EXPORTS",
2116-
systemIncludeArgument, "$USD_INCLUDE_PATH",
2117-
systemIncludeArgument, "$PYTHON_INCLUDE_PATH",
2118-
],
2136+
"-DIECoreUSD_EXPORTS"
2137+
] + includeFlags( usdEnv, "USD_INCLUDE_PATH" ) + includeFlags( usdEnv, "PYTHON_INCLUDE_PATH" ),
21192138
"CPPPATH" : [
21202139
"contrib/IECoreUSD/include",
21212140
"contrib/IECoreUSD/src",
@@ -2267,10 +2286,7 @@ alembicEnvSets = {
22672286
alembicEnv = env.Clone( **alembicEnvSets )
22682287

22692288
alembicEnvPrepends = {
2270-
"CXXFLAGS" : [
2271-
systemIncludeArgument, "$ALEMBIC_INCLUDE_PATH",
2272-
systemIncludeArgument, "$HDF5_INCLUDE_PATH",
2273-
],
2289+
"CXXFLAGS" : includeFlags( alembicEnv, "ALEMBIC_INCLUDE_PATH" ) + includeFlags( alembicEnv, "HDF5_INCLUDE_PATH" ),
22742290
"CPPPATH" : [
22752291
"contrib/IECoreAlembic/include",
22762292
],

0 commit comments

Comments
 (0)