arm_compute v18.05
[platform/upstream/armcl.git] / examples / SConscript
index 52d2f26..c3576fb 100644 (file)
@@ -24,65 +24,73 @@ import os.path
 
 Import('env')
 
-if env['opencl']:
-    Import('opencl')
-
 examples_env = env.Clone()
 
 examples_env.Append(CPPPATH = ["#"])
-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'] or env['standalone']:
+    Import('arm_compute_graph_a')
     Import('arm_compute_a')
     Import('arm_compute_core_a')
     arm_compute_libs = [ arm_compute_a, arm_compute_core_a ]
     arm_compute_dependency = arm_compute_a
+    graph_dependency = [arm_compute_graph_a]
 else:
+    Import('arm_compute_graph_so')
     Import('arm_compute_so')
-    arm_compute_libs = ["arm_compute", "arm_compute_core"]
+    arm_compute_libs = ["arm_compute_graph", "arm_compute", "arm_compute_core"]
     arm_compute_dependency = arm_compute_so
+    graph_dependency = [arm_compute_graph_so]
 
-if env['opencl'] and env['neon']:
-    for file in Glob("./neoncl_*.cpp"):
-        example = os.path.basename(os.path.splitext(str(file))[0])
-        prog = examples_env.Program(example, ["{}.cpp".format(example), utils], CPPDEFINES=['ARM_COMPUTE_CL'], LIBS = arm_compute_libs +["OpenCL"])
-        Depends(prog, [arm_compute_dependency, opencl])
-        alias = examples_env.Alias(example, prog)
-        Default(alias)
-    if env['os'] == 'android':
-        Import('arm_compute_graph_a')
-        Import('arm_compute_core_a')
-        Import('arm_compute_a')
-        arm_compute_graph_libs = [ arm_compute_graph_a, arm_compute_a, arm_compute_core_a]
-        graph_dependency = arm_compute_graph_a
+# Build graph examples
+graph_utils = examples_env.Object("../utils/GraphUtils.cpp")
+examples_libs = examples_env.get("LIBS",[])
+for file in Glob("./graph_*.cpp"):
+    example = os.path.basename(os.path.splitext(str(file))[0])
+    prog = None
+    arm_compute_graph_libs = arm_compute_libs
+
+    if env['os'] in ['android', 'bare_metal'] or env['standalone']:
+        prog = examples_env.Program(example, ["{}.cpp".format(example), utils, graph_utils], LIBS = examples_libs + arm_compute_graph_libs, LINKFLAGS=examples_env["LINKFLAGS"]+['-Wl,--whole-archive',graph_dependency,'-Wl,--no-whole-archive'])
+        Depends(prog, graph_dependency)
     else:
-        Import('arm_compute_graph_so')
-        arm_compute_graph_libs = ["arm_compute_graph", "arm_compute", "arm_compute_core"]
-        graph_dependency = arm_compute_graph_so
+        #-Wl,--allow-shlib-undefined: Ignore dependencies of dependencies
+        prog = examples_env.Program(example, ["{}.cpp".format(example), utils, graph_utils], LIBS = examples_libs + arm_compute_graph_libs, LINKFLAGS=examples_env["LINKFLAGS"]+['-Wl,--allow-shlib-undefined'] )
+        Depends(prog, graph_dependency)
+    alias = examples_env.Alias(example, prog)
+    Default(alias)
 
-    graph_utils = examples_env.Object("../utils/GraphUtils.cpp")
-    for file in Glob("./graph_*.cpp"):
+if env['opencl'] and env['neon']:    
+    for file in Glob("./neoncl_*.cpp"):
         example = os.path.basename(os.path.splitext(str(file))[0])
-        prog = examples_env.Program(example, ["{}.cpp".format(example), utils, graph_utils], CPPDEFINES=['ARM_COMPUTE_CL'], LIBS = arm_compute_graph_libs + ["OpenCL"])
-        Depends(prog, [graph_dependency, opencl])
+        prog = examples_env.Program(example, ["{}.cpp".format(example), utils], CPPDEFINES=['ARM_COMPUTE_CL'], LIBS = examples_libs + arm_compute_libs)
+        Depends(prog, arm_compute_dependency)
         alias = examples_env.Alias(example, prog)
         Default(alias)
 
 if env['opencl']:
     for file in Glob("./cl_*.cpp"):
         example = os.path.basename(os.path.splitext(str(file))[0])
-        prog = examples_env.Program(example, ["{}.cpp".format(example), utils], CPPDEFINES=['ARM_COMPUTE_CL'], LIBS = arm_compute_libs +["OpenCL"])
-        Depends(prog, [arm_compute_dependency, opencl])
+        prog = examples_env.Program(example, ["{}.cpp".format(example), utils], CPPDEFINES=['ARM_COMPUTE_CL'], LIBS = examples_libs + arm_compute_libs)
+        Depends(prog, arm_compute_dependency)
         alias = examples_env.Alias(example, prog)
         Default(alias)
 
 if env['neon']:
     for file in Glob("./neon_*.cpp"):
         example = os.path.basename(os.path.splitext(str(file))[0])
-        prog = examples_env.Program(example, ["{}.cpp".format(example), utils], LIBS = arm_compute_libs)
+        prog = examples_env.Program(example, ["{}.cpp".format(example), utils], LIBS = examples_libs + arm_compute_libs)
+        Depends(prog, arm_compute_dependency)
+        alias = examples_env.Alias(example, prog)
+        Default(alias)
+
+if env['gles_compute']:
+    for file in Glob("./gc_*.cpp"):
+        example = os.path.basename(os.path.splitext(str(file))[0])
+        prog = examples_env.Program(example, ["{}.cpp".format(example), utils], CPPDEFINES=['ARM_COMPUTE_GC'], LIBS = examples_libs + arm_compute_libs)
         Depends(prog, arm_compute_dependency)
         alias = examples_env.Alias(example, prog)
         Default(alias)