scons: using geos-config program to configure geos plugin depedency
This commit is contained in:
parent
d1f56f5843
commit
be5cd7d307
1 changed files with 18 additions and 9 deletions
25
SConstruct
25
SConstruct
|
@ -215,6 +215,7 @@ pretty_dep_names = {
|
||||||
'pg_config':'pg_config program | try setting PG_CONFIG SCons option',
|
'pg_config':'pg_config program | try setting PG_CONFIG SCons option',
|
||||||
'xml2-config':'xml2-config program | try setting XML2_CONFIG SCons option',
|
'xml2-config':'xml2-config program | try setting XML2_CONFIG SCons option',
|
||||||
'gdal-config':'gdal-config program | try setting GDAL_CONFIG SCons option',
|
'gdal-config':'gdal-config program | try setting GDAL_CONFIG SCons option',
|
||||||
|
'geos-config':'geos-config program | try setting GEOS_CONFIG SCons option',
|
||||||
'freetype-config':'freetype-config program | try setting FREETYPE_CONFIG SCons option',
|
'freetype-config':'freetype-config program | try setting FREETYPE_CONFIG SCons option',
|
||||||
'osm':'more info: http://trac.mapnik.org/wiki/OsmPlugin',
|
'osm':'more info: http://trac.mapnik.org/wiki/OsmPlugin',
|
||||||
'curl':'libcurl is required for the "osm" plugin - more info: http://trac.mapnik.org/wiki/OsmPlugin',
|
'curl':'libcurl is required for the "osm" plugin - more info: http://trac.mapnik.org/wiki/OsmPlugin',
|
||||||
|
@ -245,13 +246,15 @@ BOOST_MIN_VERSION = '1.41'
|
||||||
# Core plugin build configuration
|
# Core plugin build configuration
|
||||||
# opts.AddVariables still hardcoded however...
|
# opts.AddVariables still hardcoded however...
|
||||||
PLUGINS = { # plugins with external dependencies
|
PLUGINS = { # plugins with external dependencies
|
||||||
'postgis': {'default':True,'path':'PGSQL','inc':'libpq-fe.h','lib':'pq','lang':'C'},
|
# configured by calling project, henche 'path':None
|
||||||
|
'postgis': {'default':True,'path':None,'inc':'libpq-fe.h','lib':'pq','lang':'C'},
|
||||||
'gdal': {'default':False,'path':None,'inc':'gdal_priv.h','lib':'gdal','lang':'C++'},
|
'gdal': {'default':False,'path':None,'inc':'gdal_priv.h','lib':'gdal','lang':'C++'},
|
||||||
'ogr': {'default':False,'path':None,'inc':'ogrsf_frmts.h','lib':'gdal','lang':'C++'},
|
'ogr': {'default':False,'path':None,'inc':'ogrsf_frmts.h','lib':'gdal','lang':'C++'},
|
||||||
|
'geos': {'default':False,'path':None,'inc':'geos_c.h','lib':'geos_c','lang':'C'},
|
||||||
|
# configured with custom paths, hence 'path': PREFIX/INCLUDES/LIBS
|
||||||
'occi': {'default':False,'path':'OCCI','inc':'occi.h','lib':'ociei','lang':'C++'},
|
'occi': {'default':False,'path':'OCCI','inc':'occi.h','lib':'ociei','lang':'C++'},
|
||||||
'sqlite': {'default':False,'path':'SQLITE','inc':'sqlite3.h','lib':'sqlite3','lang':'C'},
|
'sqlite': {'default':False,'path':'SQLITE','inc':'sqlite3.h','lib':'sqlite3','lang':'C'},
|
||||||
'rasterlite': {'default':False,'path':'RASTERLITE','inc':['sqlite3.h','rasterlite.h'],'lib':'rasterlite','lang':'C'},
|
'rasterlite': {'default':False,'path':'RASTERLITE','inc':['sqlite3.h','rasterlite.h'],'lib':'rasterlite','lang':'C'},
|
||||||
'geos': {'default':False,'path':None,'inc':'geos_c.h','lib':'geos_c','lang':'C'},
|
|
||||||
|
|
||||||
# todo: osm plugin does also depend on libxml2 (but there is a separate check for that)
|
# todo: osm plugin does also depend on libxml2 (but there is a separate check for that)
|
||||||
'osm': {'default':False,'path':None,'inc':'curl/curl.h','lib':'curl','lang':'C'},
|
'osm': {'default':False,'path':None,'inc':'curl/curl.h','lib':'curl','lang':'C'},
|
||||||
|
@ -309,6 +312,7 @@ opts.AddVariables(
|
||||||
# Variables for required dependencies
|
# Variables for required dependencies
|
||||||
('FREETYPE_CONFIG', 'The path to the freetype-config executable.', 'freetype-config'),
|
('FREETYPE_CONFIG', 'The path to the freetype-config executable.', 'freetype-config'),
|
||||||
('XML2_CONFIG', 'The path to the xml2-config executable.', 'xml2-config'),
|
('XML2_CONFIG', 'The path to the xml2-config executable.', 'xml2-config'),
|
||||||
|
('GEOS_CONFIG', 'The path to the geos-config executable.', 'geos-config'),
|
||||||
PathVariable('ICU_INCLUDES', 'Search path for ICU include files', '/usr/include', PathVariable.PathAccept),
|
PathVariable('ICU_INCLUDES', 'Search path for ICU include files', '/usr/include', PathVariable.PathAccept),
|
||||||
PathVariable('ICU_LIBS','Search path for ICU include files','/usr/' + LIBDIR_SCHEMA, PathVariable.PathAccept),
|
PathVariable('ICU_LIBS','Search path for ICU include files','/usr/' + LIBDIR_SCHEMA, PathVariable.PathAccept),
|
||||||
('ICU_LIB_NAME', 'The library name for icu (such as icuuc, sicuuc, or icucore)', 'icuuc'),
|
('ICU_LIB_NAME', 'The library name for icu (such as icuuc, sicuuc, or icucore)', 'icuuc'),
|
||||||
|
@ -340,8 +344,6 @@ opts.AddVariables(
|
||||||
PathVariable('SQLITE_LIBS', 'Search path for SQLITE library files', '/usr/' + LIBDIR_SCHEMA, PathVariable.PathAccept),
|
PathVariable('SQLITE_LIBS', 'Search path for SQLITE library files', '/usr/' + LIBDIR_SCHEMA, PathVariable.PathAccept),
|
||||||
PathVariable('RASTERLITE_INCLUDES', 'Search path for RASTERLITE include files', '/usr/include/', PathVariable.PathAccept),
|
PathVariable('RASTERLITE_INCLUDES', 'Search path for RASTERLITE include files', '/usr/include/', PathVariable.PathAccept),
|
||||||
PathVariable('RASTERLITE_LIBS', 'Search path for RASTERLITE library files', '/usr/' + LIBDIR_SCHEMA, PathVariable.PathAccept),
|
PathVariable('RASTERLITE_LIBS', 'Search path for RASTERLITE library files', '/usr/' + LIBDIR_SCHEMA, PathVariable.PathAccept),
|
||||||
PathVariable('GEOS_INCLUDES', 'Search path for GEOS include files', '/usr/include/', PathVariable.PathAccept),
|
|
||||||
PathVariable('GEOS_LIBS', 'Search path for GEOS library files', '/usr/' + LIBDIR_SCHEMA, PathVariable.PathAccept),
|
|
||||||
|
|
||||||
# Other variables
|
# Other variables
|
||||||
BoolVariable('SHAPE_MEMORY_MAPPED_FILE', 'Utilize memory-mapped files in Shapefile Plugin (higher memory usage, better performance)', 'True'),
|
BoolVariable('SHAPE_MEMORY_MAPPED_FILE', 'Utilize memory-mapped files in Shapefile Plugin (higher memory usage, better performance)', 'True'),
|
||||||
|
@ -510,7 +512,7 @@ def parse_config(context, config, checks='--libs --cflags'):
|
||||||
env = context.env
|
env = context.env
|
||||||
tool = config.lower().replace('_','-')
|
tool = config.lower().replace('_','-')
|
||||||
toolname = tool
|
toolname = tool
|
||||||
if config == 'GDAL_CONFIG':
|
if config in ('GDAL_CONFIG','GEOS_CONFIG'):
|
||||||
toolname += ' %s' % checks
|
toolname += ' %s' % checks
|
||||||
context.Message( 'Checking for %s... ' % toolname)
|
context.Message( 'Checking for %s... ' % toolname)
|
||||||
cmd = '%s %s' % (env[config],checks)
|
cmd = '%s %s' % (env[config],checks)
|
||||||
|
@ -524,10 +526,11 @@ def parse_config(context, config, checks='--libs --cflags'):
|
||||||
ret = False
|
ret = False
|
||||||
print ' (xml2-config not found!)'
|
print ' (xml2-config not found!)'
|
||||||
if not parsed:
|
if not parsed:
|
||||||
if config == 'GDAL_CONFIG':
|
if config in ('GDAL_CONFIG','GEOS_CONFIG'):
|
||||||
|
# optional deps...
|
||||||
env['SKIPPED_DEPS'].append(tool)
|
env['SKIPPED_DEPS'].append(tool)
|
||||||
conf.rollback_option('GDAL_CONFIG')
|
conf.rollback_option(config)
|
||||||
else:
|
else: # freetype and libxml2, not optional
|
||||||
env['MISSING_DEPS'].append(tool)
|
env['MISSING_DEPS'].append(tool)
|
||||||
context.Result( ret )
|
context.Result( ret )
|
||||||
return ret
|
return ret
|
||||||
|
@ -1017,6 +1020,10 @@ if not preconfigured:
|
||||||
libname = conf.get_pkg_lib('GDAL_CONFIG','ogr')
|
libname = conf.get_pkg_lib('GDAL_CONFIG','ogr')
|
||||||
if libname:
|
if libname:
|
||||||
details['lib'] = libname
|
details['lib'] = libname
|
||||||
|
elif plugin == 'geos':
|
||||||
|
if conf.parse_config('GEOS_CONFIG',checks='--ldflags --cflags'):
|
||||||
|
lgeos_c = env['PLUGINS']['geos']['lib']
|
||||||
|
env.Append(LIBS = lgeos_c)
|
||||||
|
|
||||||
elif details['path'] and details['lib'] and details['inc']:
|
elif details['path'] and details['lib'] and details['inc']:
|
||||||
backup = env.Clone().Dictionary()
|
backup = env.Clone().Dictionary()
|
||||||
|
@ -1352,6 +1359,8 @@ if not HELP_REQUESTED:
|
||||||
elif not details['lib']:
|
elif not details['lib']:
|
||||||
# build internal shape and raster plugins
|
# build internal shape and raster plugins
|
||||||
SConscript('plugins/input/%s/SConscript' % plugin)
|
SConscript('plugins/input/%s/SConscript' % plugin)
|
||||||
|
else:
|
||||||
|
color_print(1,"Notice: depedencies not met for plugin '%s', not building..." % plugin)
|
||||||
|
|
||||||
|
|
||||||
# todo - generalize this path construction, also used in plugin SConscript...
|
# todo - generalize this path construction, also used in plugin SConscript...
|
||||||
|
|
Loading…
Reference in a new issue