mirror of
https://github.com/mapnik/mapnik.git
synced 2025-12-08 20:13:09 +00:00
(all AGG is private to libmapnik and not exposed to client code) 2.removed unused files (more todo) 3.added line pattern symbolizer to python bindings
123 lines
4.0 KiB
Python
123 lines
4.0 KiB
Python
# This file is part of Mapnik (c++ mapping toolkit)
|
|
# Copyright (C) 2005 Artem Pavlenko
|
|
#
|
|
# Mapnik is free software; you can redistribute it and/or
|
|
# modify it under the terms of the GNU General Public License
|
|
# as published by the Free Software Foundation; either version 2
|
|
# of the License, or any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software
|
|
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
#
|
|
# $Id$
|
|
|
|
import os
|
|
import SCons.Errors
|
|
import SCons.Defaults
|
|
import glob
|
|
|
|
Import('env')
|
|
|
|
#env.Append(CCFLAGS = ' -DBOOST_PYTHON_DYNAMIC_LIB')
|
|
|
|
#boost python
|
|
prefix = env['PREFIX']
|
|
boost_root = env['BOOST_ROOT']
|
|
python_root = env['PYTHON_ROOT']
|
|
python_version = env['PYTHON_VERSION']
|
|
python_headers = python_root+'/include/python'+python_version
|
|
|
|
boost_python_src_dir = boost_root + '/libs/python/src/'
|
|
|
|
boost_python_src = glob.glob(boost_python_src_dir + '*.cpp')
|
|
boost_python_src.append(glob.glob(boost_python_src_dir + 'object/*.cpp'))
|
|
boost_python_src.append(glob.glob(boost_python_src_dir + 'converter/*.cpp'))
|
|
|
|
python_cpppath = python_root+'/include/python'+python_version
|
|
|
|
lib_boost_python = env.SharedLibrary('libboost-python',boost_python_src,LIBS=[],CPPPATH=[boost_root,python_cpppath])
|
|
|
|
env.Install(prefix + '/lib',lib_boost_python)
|
|
|
|
#agg_root = env['AGG_ROOT']
|
|
#agg_headers = agg_root +'/include'
|
|
#freetype2_root = env['FREETYPE2_ROOT']
|
|
|
|
|
|
def createPythonExtBuilder(env):
|
|
"""This is a utility function that creates boost-python
|
|
extension Builder in an Environment if it is not there already.
|
|
If it is already there, we return the existing one.
|
|
"""
|
|
|
|
try:
|
|
python_ext = env['BUILDERS']['PythonExtension']
|
|
except KeyError:
|
|
action_list = [ SCons.Defaults.SharedCheck,
|
|
SCons.Defaults.ShLinkAction ]
|
|
python_ext = SCons.Builder.Builder(action = action_list,
|
|
emitter = "$SHLIBEMITTER",
|
|
prefix = '',
|
|
suffix = '$SHLIBSUFFIX',
|
|
target_scanner = SCons.Defaults.ProgScan,
|
|
src_suffix = '$SHOBJSUFFIX',
|
|
src_builder = 'SharedObject')
|
|
env['BUILDERS']['PythonExtension'] = python_ext
|
|
|
|
return python_ext
|
|
|
|
createPythonExtBuilder(env)
|
|
|
|
mapnik_python_src=Split(
|
|
"""
|
|
mapnik_color.cpp
|
|
mapnik_envelope.cpp
|
|
mapnik_image.cpp
|
|
mapnik_layer.cpp
|
|
mapnik_map.cpp
|
|
mapnik_parameters.cpp
|
|
mapnik_filter.cpp
|
|
mapnik_rule.cpp
|
|
mapnik_style.cpp
|
|
mapnik_stroke.cpp
|
|
mapnik_datasource_cache.cpp
|
|
mapnik_python.cpp
|
|
"""
|
|
)
|
|
|
|
headers =[ '#include',boost_root,python_headers]
|
|
|
|
libraries=['mapnik','boost-python']
|
|
libpaths = [prefix+"/lib"]
|
|
|
|
_mapnik_python = env.PythonExtension(target='_mapnik',\
|
|
source=mapnik_python_src,\
|
|
CPPPATH=headers,\
|
|
LIBS=libraries,\
|
|
LIBPATH=libpaths)
|
|
|
|
def substitute_prefix(target,source,env):
|
|
from string import Template
|
|
s = Template(source[0].get_contents())
|
|
str = s.substitute(PREFIX=prefix)
|
|
_out = file(target[0].abspath,'w')
|
|
_out.write(str)
|
|
_out.close()
|
|
return None
|
|
|
|
env.Command('mapnik/__init__.py','mapnik/__init__.py.in', substitute_prefix)
|
|
|
|
__init1__ = env.Install(prefix+'/lib','__init__.py')
|
|
__init2__ = env.Install(prefix+'/lib/mapnik','mapnik/__init__.py')
|
|
_source=env.Install(prefix+'/lib/mapnik',_mapnik_python)
|
|
_source.append(__init1__)
|
|
_source.append(__init2__)
|
|
|
|
env.Alias(target="install",source=_source)
|