# component2/SConscript Import("env") import os with open(env["PROJECT_TOOL_S"]) as f: exec(f.read()) def get_opencv_from_axera(): opencv_path = check_wget_down( "https://github.com/AXERA-TECH/ax-samples/releases/download/v0.1/opencv-arm-linux-gnueabihf-gcc-7.5.0.zip", "opencv-arm-linux-gnueabihf-gcc-7.5.0.zip", ) INCLUDE = [os.path.join(opencv_path, "opencv-arm-linux/include/opencv4")] STATIC_LIB = AGlob(os.path.join(opencv_path, "opencv-arm-linux/lib/*.a")) STATIC_LIB += AGlob( os.path.join(opencv_path, "opencv-arm-linux/lib/opencv4/3rdparty/*.a") ) return INCLUDE, STATIC_LIB def get_opencv_from_ncnn(): opencv_path = str(ADir("../../github_source/opencv-mobile-2.4.13.7-armlinux")) opencv_path = check_wget_down( "https://github.com/nihui/opencv-mobile/releases/download/v26/opencv-mobile-2.4.13.7-armlinux.zip", "opencv-mobile-2.4.13.7-armlinux.zip", ) opencv_path += '/opencv-mobile-2.4.13.7-armlinux' gcc_dumpmachine = env["GCC_DUMPMACHINE"] INCLUDE = [os.path.join(opencv_path, gcc_dumpmachine, "include")] STATIC_LIB = AGlob( os.path.join( opencv_path, gcc_dumpmachine, "lib/*.a", ) ) return INCLUDE, STATIC_LIB def get_grpc_from_m5stack(): grpc_path = check_wget_down( "https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/linux/linux_static_packages/grpc-1.65.0-pre1.zip", "grpc-1.65.0-pre1.zip", ) return grpc_path if "CONFIG_STATIC_PACKAGE_ENABLED" in os.environ: SRCS = [] INCLUDE = [] PRIVATE_INCLUDE = [] REQUIREMENTS = [] STATIC_LIB = [] DYNAMIC_LIB = [] DEFINITIONS = [] DEFINITIONS_PRIVATE = [] LDFLAGS = [] LINK_SEARCH_PATH = [] if "CONFIG_OPENCV_LIB_AXERA_ENABLED" in os.environ: inc, slib = get_opencv_from_axera() INCLUDE += inc STATIC_LIB += slib + slib if "CONFIG_OPENCV_LIB_NCNN_ENABLED" in os.environ: inc, slib = get_opencv_from_ncnn() INCLUDE += inc STATIC_LIB += slib + slib if "CONFIG_GRPC_LIB_ENABLED" in os.environ: grpc_path = get_grpc_from_m5stack() gcc_dumpmachine = env["GCC_DUMPMACHINE"] DEFINITIONS = ["-DEFINITIONS", "-DNOMINMAX"] INCLUDE = [os.path.join(grpc_path, gcc_dumpmachine, "include")] LINK_SEARCH_PATH = [os.path.join(grpc_path, gcc_dumpmachine, "lib")] LDFLAGS = [ "-l:libgrpc++.a", "-l:libgrpc.a", "-l:libgpr.a", "-l:libabsl_random_distributions.a", "-l:libabsl_random_seed_sequences.a", "-l:libabsl_random_internal_pool_urbg.a", "-l:libabsl_random_internal_randen.a", "-l:libabsl_random_internal_randen_hwaes.a", "-l:libabsl_random_internal_randen_hwaes_impl.a", "-l:libabsl_random_internal_randen_slow.a", "-l:libabsl_random_internal_platform.a", "-l:libabsl_random_internal_seed_material.a", "-l:libabsl_random_seed_gen_exception.a", "-l:libprotobuf.a", "-l:libabsl_log_internal_check_op.a", "-l:libabsl_leak_check.a", "-l:libabsl_die_if_null.a", "-l:libabsl_log_internal_conditions.a", "-l:libabsl_log_internal_message.a", "-l:libabsl_examine_stack.a", "-l:libabsl_log_internal_format.a", "-l:libabsl_log_internal_proto.a", "-l:libabsl_log_internal_nullguard.a", "-l:libabsl_log_internal_log_sink_set.a", "-l:libabsl_log_sink.a", "-l:libabsl_log_entry.a", "-l:libabsl_flags_internal.a", "-l:libabsl_flags_marshalling.a", "-l:libabsl_flags_reflection.a", "-l:libabsl_flags_private_handle_accessor.a", "-l:libabsl_flags_commandlineflag.a", "-l:libabsl_flags_commandlineflag_internal.a", "-l:libabsl_flags_config.a", "-l:libabsl_flags_program_name.a", "-l:libabsl_log_initialize.a", "-l:libabsl_log_globals.a", "-l:libabsl_vlog_config_internal.a", "-l:libabsl_log_internal_fnmatch.a", "-l:libabsl_log_internal_globals.a", "-l:libabsl_raw_hash_set.a", "-l:libabsl_hash.a", "-l:libabsl_city.a", "-l:libabsl_low_level_hash.a", "-l:libabsl_hashtablez_sampler.a", "-l:libabsl_statusor.a", "-l:libabsl_status.a", "-l:libabsl_cord.a", "-l:libabsl_cordz_info.a", "-l:libabsl_cord_internal.a", "-l:libabsl_cordz_functions.a", "-l:libabsl_exponential_biased.a", "-l:libabsl_cordz_handle.a", "-l:libabsl_crc_cord_state.a", "-l:libabsl_crc32c.a", "-l:libabsl_crc_internal.a", "-l:libabsl_crc_cpu_detect.a", "-l:libabsl_bad_optional_access.a", "-l:libabsl_strerror.a", "-l:libabsl_str_format_internal.a", "-l:libabsl_synchronization.a", "-l:libabsl_graphcycles_internal.a", "-l:libabsl_kernel_timeout_internal.a", "-l:libabsl_stacktrace.a", "-l:libabsl_symbolize.a", "-l:libabsl_debugging_internal.a", "-l:libabsl_demangle_internal.a", "-l:libabsl_malloc_internal.a", "-l:libabsl_time.a", "-l:libabsl_civil_time.a", "-l:libabsl_time_zone.a", "-l:libabsl_bad_variant_access.a", "-l:libutf8_validity.a", "-l:libutf8_range.a", "-l:libabsl_strings.a", "-l:libabsl_strings_internal.a", "-l:libabsl_string_view.a", "-l:libabsl_base.a", "-l:librt.a", "-l:libabsl_spinlock_wait.a", "-l:libabsl_int128.a", "-l:libabsl_throw_delegate.a", "-l:libabsl_raw_logging_internal.a", "-l:libabsl_log_severity.a", "-l:libssl.a", "-l:libcrypto.a", "-l:libre2.a", "-l:libgrpc_authorization_provider.a", "-l:libupb_message_lib.a", "-l:libupb_mem_lib.a", "-l:libcares.a", "-l:libaddress_sorting.a", "-l:libupb_json_lib.a", "-l:libupb_base_lib.a", "-l:libupb_textformat_lib.a", "-l:libz.a", ] env["COMPONENTS"].append( { "target": os.path.basename(env["component_dir"]), "SRCS": SRCS, "INCLUDE": INCLUDE, "PRIVATE_INCLUDE": PRIVATE_INCLUDE, "REQUIREMENTS": REQUIREMENTS, "STATIC_LIB": STATIC_LIB, "DYNAMIC_LIB": DYNAMIC_LIB, "DEFINITIONS": DEFINITIONS, "DEFINITIONS_PRIVATE": DEFINITIONS_PRIVATE, "LDFLAGS": LDFLAGS, "LINK_SEARCH_PATH": LINK_SEARCH_PATH, "REGISTER": "static", } )