attempting to build sanitized binaries against statically linked libc++ (WIP)
This commit is contained in:
parent
c737f4d56f
commit
df1cdb1329
12 changed files with 37 additions and 18 deletions
|
@ -1297,7 +1297,8 @@ if not preconfigured:
|
||||||
env['QUERIED_PROJ_LIB'] = None
|
env['QUERIED_PROJ_LIB'] = None
|
||||||
env['QUERIED_ICU_DATA'] = None
|
env['QUERIED_ICU_DATA'] = None
|
||||||
env['QUERIED_GDAL_DATA'] = None
|
env['QUERIED_GDAL_DATA'] = None
|
||||||
|
#'LINKCOM': '$LINK -o $TARGET $LINKFLAGS $__RPATH $SOURCES $_LIBDIRFLAGS $_LIBFLAGS'
|
||||||
|
env['LINKCOM'] = '$LINK -o $TARGET $SOURCES $LINKFLAGS $__RPATH $_LIBDIRFLAGS $_LIBFLAGS'
|
||||||
# previously a leading / was expected for LIB_DIR_NAME
|
# previously a leading / was expected for LIB_DIR_NAME
|
||||||
# now strip it to ensure expected behavior
|
# now strip it to ensure expected behavior
|
||||||
if env['LIB_DIR_NAME'].startswith(os.path.sep):
|
if env['LIB_DIR_NAME'].startswith(os.path.sep):
|
||||||
|
@ -1360,7 +1361,7 @@ if not preconfigured:
|
||||||
env.Append(CFLAGS = env['CUSTOM_CFLAGS'])
|
env.Append(CFLAGS = env['CUSTOM_CFLAGS'])
|
||||||
env.Append(LINKFLAGS = DEFAULT_CXX14_LINKFLAGS)
|
env.Append(LINKFLAGS = DEFAULT_CXX14_LINKFLAGS)
|
||||||
env.Append(LINKFLAGS = env['CUSTOM_LDFLAGS'])
|
env.Append(LINKFLAGS = env['CUSTOM_LDFLAGS'])
|
||||||
|
print(env.Dump())
|
||||||
### platform specific bits
|
### platform specific bits
|
||||||
|
|
||||||
thread_suffix = 'mt'
|
thread_suffix = 'mt'
|
||||||
|
|
|
@ -36,12 +36,16 @@ demo_env = env.Clone()
|
||||||
demo_env['CXXFLAGS'] = copy(env['LIBMAPNIK_CXXFLAGS'])
|
demo_env['CXXFLAGS'] = copy(env['LIBMAPNIK_CXXFLAGS'])
|
||||||
demo_env.Append(CPPDEFINES = env['LIBMAPNIK_DEFINES'])
|
demo_env.Append(CPPDEFINES = env['LIBMAPNIK_DEFINES'])
|
||||||
|
|
||||||
|
demo_env['LINKFLAGS'] = '-lmapnik -lmapnik-json' + demo_env['LINKFLAGS']
|
||||||
|
print demo_env['LINKFLAGS']
|
||||||
|
|
||||||
if env['HAS_CAIRO']:
|
if env['HAS_CAIRO']:
|
||||||
demo_env.PrependUnique(CPPPATH=env['CAIRO_CPPPATHS'])
|
demo_env.PrependUnique(CPPPATH=env['CAIRO_CPPPATHS'])
|
||||||
demo_env.Append(CPPDEFINES = '-DHAVE_CAIRO')
|
demo_env.Append(CPPDEFINES = '-DHAVE_CAIRO')
|
||||||
|
|
||||||
libraries = [env['MAPNIK_NAME']]
|
libraries = []#env['MAPNIK_NAME']]
|
||||||
libraries.extend(copy(env['LIBMAPNIK_LIBS']))
|
libraries.extend(copy(env['LIBMAPNIK_LIBS']))
|
||||||
|
print libraries
|
||||||
rundemo = demo_env.Program('rundemo', source, LIBS=libraries)
|
rundemo = demo_env.Program('rundemo', source, LIBS=libraries)
|
||||||
|
|
||||||
Depends(rundemo, env.subst('../../src/%s' % env['MAPNIK_LIB_NAME']))
|
Depends(rundemo, env.subst('../../src/%s' % env['MAPNIK_LIB_NAME']))
|
||||||
|
|
|
@ -41,7 +41,7 @@ BOOST_SPIRIT_DECLARE(escaped_unicode_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
grammar::unicode_string_grammar_type const& unicode_string_grammar();
|
grammar::unicode_string_grammar_type const& unicode_string_grammar();
|
||||||
grammar::escaped_unicode_type const& escaped_unicode_grammar();
|
__attribute__((visibility("default"))) grammar::escaped_unicode_type const& escaped_unicode_grammar();
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@ else:
|
||||||
PLUGIN_NAME = 'csv'
|
PLUGIN_NAME = 'csv'
|
||||||
|
|
||||||
plugin_env = plugin_base.Clone()
|
plugin_env = plugin_base.Clone()
|
||||||
|
#plugin_env[LINKFLAGS] = '-lmapnik' + plugin_env[LINKFLAGS]
|
||||||
plugin_sources = Split(
|
plugin_sources = Split(
|
||||||
"""
|
"""
|
||||||
%(PLUGIN_NAME)s_utils.cpp
|
%(PLUGIN_NAME)s_utils.cpp
|
||||||
|
@ -54,7 +54,7 @@ else:
|
||||||
|
|
||||||
if env['PLUGIN_LINKING'] == 'shared':
|
if env['PLUGIN_LINKING'] == 'shared':
|
||||||
libraries.append('boost_system%s' % env['BOOST_APPEND'])
|
libraries.append('boost_system%s' % env['BOOST_APPEND'])
|
||||||
libraries.insert(0,env['MAPNIK_NAME'])
|
#libraries.insert(0,env['MAPNIK_NAME'])
|
||||||
libraries.append(env['ICU_LIB_NAME'])
|
libraries.append(env['ICU_LIB_NAME'])
|
||||||
|
|
||||||
TARGET = plugin_env.SharedLibrary('../%s' % PLUGIN_NAME,
|
TARGET = plugin_env.SharedLibrary('../%s' % PLUGIN_NAME,
|
||||||
|
|
|
@ -60,7 +60,7 @@ using mapnik::filter_in_box;
|
||||||
using mapnik::filter_at_point;
|
using mapnik::filter_at_point;
|
||||||
|
|
||||||
static std::once_flag once_flag;
|
static std::once_flag once_flag;
|
||||||
|
#if 0
|
||||||
extern "C" MAPNIK_EXP void on_plugin_load()
|
extern "C" MAPNIK_EXP void on_plugin_load()
|
||||||
{
|
{
|
||||||
// initialize ogr formats
|
// initialize ogr formats
|
||||||
|
@ -69,6 +69,7 @@ extern "C" MAPNIK_EXP void on_plugin_load()
|
||||||
OGRRegisterAll();
|
OGRRegisterAll();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
ogr_datasource::ogr_datasource(parameters const& params)
|
ogr_datasource::ogr_datasource(parameters const& params)
|
||||||
: datasource(params),
|
: datasource(params),
|
||||||
|
|
|
@ -37,13 +37,14 @@ plugin_sources = Split(
|
||||||
libraries = [ 'sqlite3' ]
|
libraries = [ 'sqlite3' ]
|
||||||
|
|
||||||
linkflags = []
|
linkflags = []
|
||||||
|
plugin_env.Append(LINKFLAGS='-lmapnik')
|
||||||
if env['SQLITE_LINKFLAGS']:
|
if env['SQLITE_LINKFLAGS']:
|
||||||
linkflags.append(env['SQLITE_LINKFLAGS'])
|
linkflags.append(env['SQLITE_LINKFLAGS'])
|
||||||
plugin_env.Append(LINKFLAGS=linkflags)
|
plugin_env.Append(LINKFLAGS=linkflags)
|
||||||
|
|
||||||
if env['PLUGIN_LINKING'] == 'shared':
|
if env['PLUGIN_LINKING'] == 'shared':
|
||||||
libraries.append('boost_system%s' % env['BOOST_APPEND'])
|
libraries.append('boost_system%s' % env['BOOST_APPEND'])
|
||||||
libraries.insert(0,env['MAPNIK_NAME'])
|
#libraries.insert(0,env['MAPNIK_NAME'])
|
||||||
libraries.append(env['ICU_LIB_NAME'])
|
libraries.append(env['ICU_LIB_NAME'])
|
||||||
|
|
||||||
TARGET = plugin_env.SharedLibrary('../%s' % PLUGIN_NAME,
|
TARGET = plugin_env.SharedLibrary('../%s' % PLUGIN_NAME,
|
||||||
|
|
|
@ -25,13 +25,13 @@
|
||||||
#include <mapnik/json/unicode_string_grammar_x3_def.hpp>
|
#include <mapnik/json/unicode_string_grammar_x3_def.hpp>
|
||||||
|
|
||||||
namespace mapnik { namespace json { namespace grammar {
|
namespace mapnik { namespace json { namespace grammar {
|
||||||
BOOST_SPIRIT_INSTANTIATE(unicode_string_grammar_type, mapnik::grammar::iterator_type, mapnik::grammar::context_type);
|
BOOST_SPIRIT_INSTANTIATE(escaped_unicode_type, mapnik::grammar::iterator_type, mapnik::grammar::context_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
grammar::escaped_unicode_type const& escaped_unicode_grammar()
|
//grammar::escaped_unicode_type const& escaped_unicode_grammar()
|
||||||
{
|
//{
|
||||||
return grammar::escaped_unicode;
|
// return grammar::escaped_unicode;
|
||||||
}
|
//}
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
|
|
@ -42,6 +42,7 @@ BOOST_SPIRIT_INSTANTIATE_UNUSED(unicode_string_grammar_type, iterator_type, extr
|
||||||
BOOST_SPIRIT_INSTANTIATE_UNUSED(unicode_string_grammar_type, iterator_type, extract_bounding_boxes_reverse_context_type);
|
BOOST_SPIRIT_INSTANTIATE_UNUSED(unicode_string_grammar_type, iterator_type, extract_bounding_boxes_reverse_context_type);
|
||||||
BOOST_SPIRIT_INSTANTIATE_UNUSED(unicode_string_grammar_type, iterator_type, extract_bounding_boxes_context_type_f);
|
BOOST_SPIRIT_INSTANTIATE_UNUSED(unicode_string_grammar_type, iterator_type, extract_bounding_boxes_context_type_f);
|
||||||
BOOST_SPIRIT_INSTANTIATE_UNUSED(unicode_string_grammar_type, iterator_type, extract_bounding_boxes_reverse_context_type_f);
|
BOOST_SPIRIT_INSTANTIATE_UNUSED(unicode_string_grammar_type, iterator_type, extract_bounding_boxes_reverse_context_type_f);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
grammar::unicode_string_grammar_type const& unicode_string_grammar()
|
grammar::unicode_string_grammar_type const& unicode_string_grammar()
|
||||||
|
@ -49,4 +50,9 @@ grammar::unicode_string_grammar_type const& unicode_string_grammar()
|
||||||
return grammar::unicode_string;
|
return grammar::unicode_string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
grammar::escaped_unicode_type const& escaped_unicode_grammar()
|
||||||
|
{
|
||||||
|
return grammar::escaped_unicode;
|
||||||
|
}
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
|
@ -5,6 +5,10 @@ from copy import copy
|
||||||
Import ('env')
|
Import ('env')
|
||||||
|
|
||||||
test_env = env.Clone()
|
test_env = env.Clone()
|
||||||
|
test_env.Prepend(LINKFLAGS='-lmapnik')# + test_env['LINKFLAGS']
|
||||||
|
test_env.Append(LIBS='/home/artem/projects/mason/mason_packages/linux-x86_64/llvm/7.0.0/lib/libc++.a')
|
||||||
|
#test_env.Append(LIBS='/home/artem/projects/mason/mason_packages/linux-x86_64/llvm/7.0.0/lib/libc++abi.a')
|
||||||
|
#test_env.Append(LIBS='/home/artem/projects/mason/mason_packages/linux-x86_64/llvm/7.0.0/lib/libunwind.a')
|
||||||
|
|
||||||
if not env['CPP_TESTS']:
|
if not env['CPP_TESTS']:
|
||||||
for cpp_test_bin in glob.glob('./*/*-bin'):
|
for cpp_test_bin in glob.glob('./*/*-bin'):
|
||||||
|
@ -30,10 +34,10 @@ else:
|
||||||
test_env.AppendUnique(LIBS='boost_program_options%s' % env['BOOST_APPEND'])
|
test_env.AppendUnique(LIBS='boost_program_options%s' % env['BOOST_APPEND'])
|
||||||
test_env_local = test_env.Clone()
|
test_env_local = test_env.Clone()
|
||||||
|
|
||||||
|
|
||||||
# unit tests
|
# unit tests
|
||||||
sources = glob.glob('./unit/*/*.cpp')
|
sources = glob.glob('./unit/*/*.cpp')
|
||||||
sources.extend(glob.glob('./unit/*.cpp'))
|
sources.extend(glob.glob('./unit/*.cpp'))
|
||||||
|
sources.append('/home/artem/projects/mason/mason_packages/linux-x86_64/llvm/7.0.0/lib/libc++.a')
|
||||||
test_program = test_env_local.Program("./unit/run", source=sources)
|
test_program = test_env_local.Program("./unit/run", source=sources)
|
||||||
Depends(test_program, env.subst('../src/%s' % env['MAPNIK_LIB_NAME']))
|
Depends(test_program, env.subst('../src/%s' % env['MAPNIK_LIB_NAME']))
|
||||||
Depends(test_program, env.subst('../src/json/libmapnik-json${LIBSUFFIX}'))
|
Depends(test_program, env.subst('../src/json/libmapnik-json${LIBSUFFIX}'))
|
||||||
|
@ -57,6 +61,7 @@ else:
|
||||||
visual/parse_map_sizes.cpp
|
visual/parse_map_sizes.cpp
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
|
source.append('/home/artem/projects/mason/mason_packages/linux-x86_64/llvm/7.0.0/lib/libc++.a')
|
||||||
test_program3 = test_env_local.Program('visual/run', source=source)
|
test_program3 = test_env_local.Program('visual/run', source=source)
|
||||||
Depends(test_program, env.subst('../src/%s' % env['MAPNIK_LIB_NAME']))
|
Depends(test_program, env.subst('../src/%s' % env['MAPNIK_LIB_NAME']))
|
||||||
|
|
||||||
|
|
|
@ -27,13 +27,12 @@ Import ('env')
|
||||||
Import ('plugin_base')
|
Import ('plugin_base')
|
||||||
|
|
||||||
program_env = plugin_base.Clone()
|
program_env = plugin_base.Clone()
|
||||||
|
program_env['LINKFLAGS'] = '-lmapnik plugins/input/csv/csv_utils.os' + program_env['LINKFLAGS']
|
||||||
source = Split(
|
source = Split(
|
||||||
"""
|
"""
|
||||||
mapnik-index.cpp
|
mapnik-index.cpp
|
||||||
process_csv_file.cpp
|
process_csv_file.cpp
|
||||||
process_geojson_file_x3.cpp
|
process_geojson_file_x3.cpp
|
||||||
../../plugins/input/csv/csv_utils.os
|
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -41,7 +40,7 @@ headers = env['CPPPATH']
|
||||||
|
|
||||||
boost_program_options = 'boost_program_options%s' % env['BOOST_APPEND']
|
boost_program_options = 'boost_program_options%s' % env['BOOST_APPEND']
|
||||||
boost_system = 'boost_system%s' % env['BOOST_APPEND']
|
boost_system = 'boost_system%s' % env['BOOST_APPEND']
|
||||||
libraries = [env['MAPNIK_NAME'], boost_program_options, boost_system]
|
libraries = [boost_program_options, boost_system]
|
||||||
# need on linux: https://github.com/mapnik/mapnik/issues/3145
|
# need on linux: https://github.com/mapnik/mapnik/issues/3145
|
||||||
libraries.append('mapnik-json')
|
libraries.append('mapnik-json')
|
||||||
libraries.append('mapnik-wkt')
|
libraries.append('mapnik-wkt')
|
||||||
|
|
|
@ -12,6 +12,7 @@ source = Split(
|
||||||
)
|
)
|
||||||
|
|
||||||
program_env['CXXFLAGS'] = copy(env['LIBMAPNIK_CXXFLAGS'])
|
program_env['CXXFLAGS'] = copy(env['LIBMAPNIK_CXXFLAGS'])
|
||||||
|
program_env['LINKFLAGS'] = '-lmapnik -lmapnik-json ' + program_env['LINKFLAGS']
|
||||||
program_env.Append(CPPDEFINES = env['LIBMAPNIK_DEFINES'])
|
program_env.Append(CPPDEFINES = env['LIBMAPNIK_DEFINES'])
|
||||||
|
|
||||||
if env['HAS_CAIRO']:
|
if env['HAS_CAIRO']:
|
||||||
|
@ -19,7 +20,7 @@ if env['HAS_CAIRO']:
|
||||||
program_env.Append(CPPDEFINES = '-DHAVE_CAIRO')
|
program_env.Append(CPPDEFINES = '-DHAVE_CAIRO')
|
||||||
|
|
||||||
boost_program_options = 'boost_program_options%s' % env['BOOST_APPEND']
|
boost_program_options = 'boost_program_options%s' % env['BOOST_APPEND']
|
||||||
libraries = [env['MAPNIK_NAME'],boost_program_options]
|
libraries = [boost_program_options]
|
||||||
libraries.extend(copy(env['LIBMAPNIK_LIBS']))
|
libraries.extend(copy(env['LIBMAPNIK_LIBS']))
|
||||||
if env['RUNTIME_LINK'] == 'static' and env['PLATFORM'] == 'Linux':
|
if env['RUNTIME_LINK'] == 'static' and env['PLATFORM'] == 'Linux':
|
||||||
libraries.append('dl')
|
libraries.append('dl')
|
||||||
|
|
|
@ -28,6 +28,7 @@ Import ('env')
|
||||||
Import ('plugin_base')
|
Import ('plugin_base')
|
||||||
|
|
||||||
program_env = plugin_base.Clone()
|
program_env = plugin_base.Clone()
|
||||||
|
program_env['LINKFLAGS'] = '-lmapnik -lmapnik-json' + program_env['LINKFLAGS']
|
||||||
|
|
||||||
source = Split(
|
source = Split(
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in a new issue