From c6cb35a1935cde168f4b72d8782c21a344e78623 Mon Sep 17 00:00:00 2001 From: Pablo Tello Date: Wed, 21 Jun 2017 15:39:47 +0100 Subject: COMPMID-345: Updated scons scripts to link computer_vision statically against libgcc, libstdc++ and computer_vision. This is needed to run 'computer_vision' on the ARM 8.2-a + FP16 Fast model. Change-Id: I66d6427e4d4117b7995c35ec9df1dea5b3f22205 Reviewed-on: http://mpd-gerrit.cambridge.arm.com/78429 Tested-by: Kaizen Reviewed-by: Anthony Barbier --- SConscript | 16 ++++++++++++---- SConstruct | 5 +++++ examples/SConscript | 6 +++--- tests/SConscript | 6 +++--- 4 files changed, 23 insertions(+), 10 deletions(-) diff --git a/SConscript b/SConscript index 970466e5ae..a53501d405 100644 --- a/SConscript +++ b/SConscript @@ -178,7 +178,7 @@ shared_core_objects = [arm_compute_env.SharedObject(f) for f in core_files] arm_compute_core_a = build_library('arm_compute_core-static', static_core_objects, static=True) Export('arm_compute_core_a') -if env['os'] != 'bare_metal': +if env['os'] != 'bare_metal' and not env['standalone']: arm_compute_core_so = build_library('arm_compute_core', shared_core_objects, static=False) Export('arm_compute_core_so') @@ -188,12 +188,20 @@ static_objects = [arm_compute_env.StaticObject(f) for f in files] arm_compute_a = build_library('arm_compute-static', static_core_objects + static_objects, static=True) Export('arm_compute_a') -if env['os'] != 'bare_metal': +if env['os'] != 'bare_metal' and not env['standalone']: arm_compute_so = build_library('arm_compute', shared_core_objects + shared_objects, static=False) Export('arm_compute_so') -alias = arm_compute_env.Alias("arm_compute", [arm_compute_a, arm_compute_so]) +if env['standalone']: + alias = arm_compute_env.Alias("arm_compute", [arm_compute_a]) +else: + alias = arm_compute_env.Alias("arm_compute", [arm_compute_a, arm_compute_so]) + Default(alias) Default(generate_embed) -Depends([alias,arm_compute_core_so, arm_compute_core_a], generate_embed) + +if env['standalone']: + Depends([alias,arm_compute_core_a], generate_embed) +else: + Depends([alias,arm_compute_core_so, arm_compute_core_a], generate_embed) diff --git a/SConstruct b/SConstruct index 3927e3acc9..e23b2d239e 100644 --- a/SConstruct +++ b/SConstruct @@ -44,6 +44,7 @@ vars.AddVariables( EnumVariable("build", "Build type", "cross_compile", allowed_values=("native", "cross_compile")), BoolVariable("examples", "Build example programs", True), BoolVariable("Werror", "Enable/disable the -Werror compilation flag", True), + BoolVariable("standalone", "Builds the tests as standalone executables, links statically with libgcc, libstdc++ and libarm_compute", False), BoolVariable("opencl", "Enable OpenCL support", True), BoolVariable("neon", "Enable Neon support", False), BoolVariable("embed_kernels", "Embed OpenCL kernels in library binary", False), @@ -161,6 +162,10 @@ if not GetOption("help"): if compiler_ver == '4.8.3': env.Append(CXXFLAGS = ['-Wno-array-bounds']) +if env['standalone']: + env.Append(CXXFLAGS = ['-fPIC']) + env.Append(LINKFLAGS = ['-static-libgcc','-static-libstdc++']) + if env['Werror']: env.Append(CXXFLAGS = ['-Werror']) diff --git a/examples/SConscript b/examples/SConscript index 748f771ec7..04569c6ceb 100644 --- a/examples/SConscript +++ b/examples/SConscript @@ -23,8 +23,6 @@ import SCons import os.path Import('env') -Import('arm_compute_a') -Import('arm_compute_so') if env['opencl']: Import('opencl') @@ -38,10 +36,12 @@ examples_env.Append(LIBPATH = ["#build/%s/opencl-1.2-stubs" % env['build_dir']]) # Build examples utils = examples_env.Object("../utils/Utils.cpp") -if env['os'] in ['android', 'bare_metal']: +if env['os'] in ['android', 'bare_metal'] or env['standalone']: + Import('arm_compute_a') arm_compute_lib = arm_compute_a arm_compute_dependency = arm_compute_a else: + Import('arm_compute_so') arm_compute_lib = "arm_compute" arm_compute_dependency = arm_compute_so diff --git a/tests/SConscript b/tests/SConscript index 6be4ddb35e..8da1d2fa33 100644 --- a/tests/SConscript +++ b/tests/SConscript @@ -24,8 +24,6 @@ import os.path Import('env') Import('vars') -Import('arm_compute_a') -Import('arm_compute_so') # vars is imported from arm_compute: variables = [ @@ -49,10 +47,12 @@ vars.Update(common_env) Help(new_options.GenerateHelpText(common_env)) -if env['os'] in ['android', 'bare_metal']: +if env['os'] in ['android', 'bare_metal'] or env['standalone']: + Import('arm_compute_a') common_env.Append(LIBS = [arm_compute_a]) arm_compute_lib = arm_compute_a else: + Import('arm_compute_so') common_env.Append(LIBS = ["arm_compute"]) arm_compute_lib = arm_compute_so -- cgit v1.2.1