diff --git a/SConstruct b/SConstruct index 1ff418f42..9c3f11b28 100644 --- a/SConstruct +++ b/SConstruct @@ -324,7 +324,8 @@ pickle_store = [# Scons internal variables 'HAS_BOOST_SYSTEM', 'SVN_REVISION', 'HAS_CAIRO', - 'HAS_PYCAIRO' + 'HAS_PYCAIRO', + 'HAS_LIBXML2' ] # Add all other user configurable options to pickle pickle_store @@ -717,6 +718,7 @@ if not preconfigured: env['SKIPPED_DEPS'] = [] env['HAS_CAIRO'] = False env['HAS_PYCAIRO'] = False + env['HAS_LIBXML2'] = False env['LIBDIR_SCHEMA'] = LIBDIR_SCHEMA env['PLUGINS'] = PLUGINS @@ -775,7 +777,7 @@ if not preconfigured: env.Append(CXXFLAGS = '-DBOOST_PROPERTY_TREE_XML_PARSER_TINYXML -DTIXML_USE_STL') elif env['XMLPARSER'] == 'libxml2': if conf.parse_config('XML2_CONFIG'): - env.Append(CXXFLAGS = '-DHAVE_LIBXML2') + env['HAS_LIBXML2'] = True if env['CAIRO'] and conf.CheckPKGConfig('0.15.0') and conf.CheckPKG('cairomm-1.0'): env['HAS_CAIRO'] = True @@ -1076,11 +1078,18 @@ if not preconfigured: majver, minver = env['PYTHON_VERSION'].split('.') - # TODO - this needs to be moved up... - env.AppendUnique(CPPPATH = env['PYTHON_INCLUDES']) - if not conf.CheckHeader(header='Python.h',language='C'): - color_print(1,'Could not find required header files for the Python language (version %s)' % env['PYTHON_VERSION']) - env['MISSING_DEPS'].append('python %s development headers' % env['PYTHON_VERSION']) + # we don't want the includes it in the main environment... + # as they are later set in the python SConscript + # ugly hack needed until we have env specific conf + backup = env.Clone().Dictionary() + env.AppendUnique(CPPPATH = env['PYTHON_INCLUDES']) + + if not conf.CheckHeader(header='Python.h',language='C'): + color_print(1,'Could not find required header files for the Python language (version %s)' % env['PYTHON_VERSION']) + env.Replace(**backup) + env['MISSING_DEPS'].append('python %s development headers' % env['PYTHON_VERSION']) + else: + env.Replace(**backup) if (int(majver), int(minver)) < (2, 2): color_print(1,"Python version 2.2 or greater required") diff --git a/agg/SConscript b/agg/SConscript index ce9a3321b..90cd27ada 100644 --- a/agg/SConscript +++ b/agg/SConscript @@ -21,7 +21,9 @@ import glob Import('env') +agg_env = env.Clone() + if env['PLATFORM'] == 'SunOS': - env.StaticLibrary('agg', glob.glob('./src/' + '*.cpp'), LIBS=[], CPPPATH='./include', CXXFLAGS='-O -KPIC -DNDEBUG') + agg_env.StaticLibrary('agg', glob.glob('./src/' + '*.cpp'), LIBS=[], CPPPATH='./include', CXXFLAGS='-O -KPIC -DNDEBUG') else: - env.StaticLibrary('agg', glob.glob('./src/' + '*.cpp'), LIBS=[], CPPPATH='./include', CXXFLAGS='-O%s -fPIC -DNDEBUG' % env['OPTIMIZATION']) + agg_env.StaticLibrary('agg', glob.glob('./src/' + '*.cpp'), LIBS=[], CPPPATH='./include', CXXFLAGS='-O%s -fPIC -DNDEBUG' % env['OPTIMIZATION']) diff --git a/bindings/python/SConscript b/bindings/python/SConscript index 5d72f5906..ea3020a7d 100644 --- a/bindings/python/SConscript +++ b/bindings/python/SConscript @@ -30,7 +30,6 @@ install_prefix = env['DESTDIR'] + '/' + prefix linkflags = '' libraries = ['mapnik','png','jpeg'] -headers = [env['PYTHON_INCLUDES']] + env['CPPPATH'] if env['BOOST_PYTHON_LIB']: if os.path.sep in env['BOOST_PYTHON_LIB']: @@ -138,9 +137,12 @@ env.Alias(target='install', source=ogcserver_module) sources = glob.glob('*.cpp') +py_env = env.Clone() +py_env.Append(CPPPATH = env['PYTHON_INCLUDES']) + if env['SVN_REVISION']: sources.remove('mapnik_python.cpp') - env2 = env.Clone() + env2 = py_env.Clone() env2.Append(CCFLAGS='-DSVN_REVISION=%s' % env['SVN_REVISION']) if env['HAS_CAIRO'] or env['HAS_PYCAIRO']: if env['HAS_CAIRO']: @@ -149,12 +151,11 @@ if env['SVN_REVISION']: if env['HAS_PYCAIRO']: env2.ParseConfig('pkg-config --cflags pycairo') env2.Append(CXXFLAGS = '-DHAVE_PYCAIRO') - sources.insert(0,env2.SharedObject('mapnik_python.cpp')) if env['HAS_CAIRO'] or env['HAS_PYCAIRO']: - env2 = env.Clone() - env2.ParseConfig('pkg-config --libs --cflags cairomm-1.0') + env2 = py_env.Clone() + env2.ParseConfig('pkg-config --libs --cflags cairomm-1.0') fixup = ['mapnik_image.cpp','python_cairo.cpp'] for cpp in fixup: if cpp in sources: @@ -166,6 +167,6 @@ if env['HAS_CAIRO'] or env['HAS_PYCAIRO']: for cpp in fixup: sources.insert(0,env2.SharedObject(cpp)) -_mapnik = env.LoadableModule('mapnik/_mapnik', sources, LIBS=libraries, LDMODULEPREFIX='', LDMODULESUFFIX='.so', CPPPATH=headers,LINKFLAGS=linkflags) +_mapnik = py_env.LoadableModule('mapnik/_mapnik', sources, LIBS=libraries, LDMODULEPREFIX='', LDMODULESUFFIX='.so',LINKFLAGS=linkflags) pymapniklib = env.Install(env['PYTHON_INSTALL_LOCATION'] + '/mapnik',_mapnik) env.Alias(target='install',source=pymapniklib) diff --git a/src/SConscript b/src/SConscript index d67f2fd71..2e146067f 100644 --- a/src/SConscript +++ b/src/SConscript @@ -119,10 +119,8 @@ if env['HAS_CAIRO']: for cpp in fixup: if cpp in source: source.remove(cpp) - for cpp in fixup: source.insert(0,env2.SharedObject(cpp)) - if env['XMLPARSER'] == 'tinyxml': source += Split( """ @@ -131,11 +129,18 @@ if env['XMLPARSER'] == 'tinyxml': ../tinyxml/tinyxmlerror.cpp ../tinyxml/tinyxmlparser.cpp """) -elif env['XMLPARSER'] == 'libxml2': +elif env['XMLPARSER'] == 'libxml2' and env['HAS_LIBXML2']: source += Split( """ libxml2_loader.cpp """) + env2 = env.Clone() + env2.Append(CXXFLAGS = '-DHAVE_LIBXML2') + fixup = ['load_map.cpp','libxml2_loader.cpp'] + for cpp in fixup: + if cpp in source: + source.remove(cpp) + source.insert(0,env2.SharedObject(cpp)) mapnik = env.SharedLibrary('mapnik', source, LIBS=libraries, LINKFLAGS=linkflags) if env['PLATFORM'] != 'Darwin': diff --git a/src/libxml2_loader.cpp b/src/libxml2_loader.cpp index 7a4ec2aa1..138b60171 100644 --- a/src/libxml2_loader.cpp +++ b/src/libxml2_loader.cpp @@ -20,6 +20,8 @@ * *****************************************************************************/ +#ifdef HAVE_LIBXML2 + #include #include @@ -222,3 +224,5 @@ namespace mapnik } } // end of namespace mapnik + +#endif \ No newline at end of file diff --git a/src/load_map.cpp b/src/load_map.cpp index ea217fe12..ad60086d5 100644 --- a/src/load_map.cpp +++ b/src/load_map.cpp @@ -34,7 +34,10 @@ #include #include + +#ifdef HAVE_LIBXML2 #include +#endif // boost #include