@@ -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
806832env .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}
16181644if 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
18161839vdbEnv .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 = {
22672286alembicEnv = env .Clone ( ** alembicEnvSets )
22682287
22692288alembicEnvPrepends = {
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