| // SPDX-License-Identifier: Apache-2.0 | 
 | // | 
 | // Copyright (C) 2024 The Android Open Source Project | 
 |  | 
 | package { | 
 |     default_applicable_licenses: ["Android-Apache-2.0"], | 
 | } | 
 |  | 
 | soong_config_module_type { | 
 |     name: "optee_client_cflags_cc_defaults", | 
 |     module_type: "cc_defaults", | 
 |     config_namespace: "optee_client", | 
 |     bool_variables: [ | 
 |         "cfg_debug", | 
 |         "cfg_werror", | 
 |     ], | 
 |     properties: ["cflags"], | 
 | } | 
 |  | 
 | optee_client_cflags_cc_defaults { | 
 |     name: "optee_client_cflags_defaults", | 
 |     cflags: [ | 
 |         "-c", | 
 |         "-fPIC", | 
 |         "-Wall", | 
 |         "-Wbad-function-cast", | 
 |         "-Wcast-align", | 
 |         "-Werror-implicit-function-declaration", | 
 |         "-Wextra", | 
 |         "-Wfloat-equal", | 
 |         "-Wformat-nonliteral", | 
 |         "-Wformat-security", | 
 |         "-Wformat=2", | 
 |         "-Winit-self", | 
 |         "-Wmissing-declarations", | 
 |         "-Wmissing-format-attribute", | 
 |         "-Wmissing-include-dirs", | 
 |         "-Wmissing-noreturn", | 
 |         "-Wmissing-prototypes", | 
 |         "-Wnested-externs", | 
 |         "-Wpointer-arith", | 
 |         "-Wshadow", | 
 |         "-Wstrict-prototypes", | 
 |         "-Wswitch-default", | 
 |         "-Wwrite-strings", | 
 |     ], | 
 |     soong_config_variables: { | 
 |         cfg_debug: { | 
 |             cflags: [ | 
 |                 "-DDEBUG", | 
 |                 "-O0", | 
 |                 "-g", | 
 |             ], | 
 |         }, | 
 |         cfg_werror: { | 
 |             cflags: ["-Werror"], | 
 |         }, | 
 |     }, | 
 | } | 
 |  | 
 | soong_config_module_type { | 
 |     name: "optee_client_libteec_cc_defaults", | 
 |     module_type: "cc_defaults", | 
 |     config_namespace: "optee_client", | 
 |     bool_variables: [ | 
 |         "cfg_tee_benchmark", | 
 |     ], | 
 |     value_variables: [ | 
 |         "cfg_tee_client_log_level", | 
 |         "cfg_tee_client_log_file", | 
 |         "cfg_tee_fs_parent_path", | 
 |     ], | 
 |     properties: [ | 
 |         "cflags", | 
 |         "defaults", | 
 |         "srcs", | 
 |     ], | 
 | } | 
 |  | 
 | optee_client_libteec_cc_defaults { | 
 |     name: "optee_client_libteec_log_file_defaults", | 
 |     soong_config_variables: { | 
 |         cfg_tee_fs_parent_path: { | 
 |             cflags: ["-DTEEC_LOG_FILE=\"%s/teec.log\""], | 
 |             conditions_default: { | 
 |                 cflags: ["-DTEEC_LOG_FILE=\"/data/vendor/tee/teec.log\""], | 
 |             }, | 
 |         }, | 
 |     }, | 
 | } | 
 |  | 
 | optee_client_libteec_cc_defaults { | 
 |     name: "optee_client_libteec_defaults", | 
 |     soong_config_variables: { | 
 |         cfg_tee_benchmark: { | 
 |             cflags: ["-DCFG_TEE_BENCHMARK"], | 
 |             srcs: ["teec_benchmark.c"], | 
 |         }, | 
 |         cfg_tee_client_log_level: { | 
 |             cflags: ["-DDEBUGLEVEL_%s"], | 
 |             conditions_default: { | 
 |                 cflags: ["-DDEBUGLEVEL_2"], | 
 |             }, | 
 |         }, | 
 |         cfg_tee_client_log_file: { | 
 |             cflags: ["-DTEEC_LOG_FILE=\"%s\""], | 
 |             conditions_default: { | 
 |                 defaults: ["optee_client_libteec_log_file_defaults"], | 
 |             }, | 
 |         }, | 
 |         cfg_tee_fs_parent_path: { | 
 |             cflags: ["-DTEE_FS_PARENT_PATH=\"%s\""], | 
 |             conditions_default: { | 
 |                 cflags: ["-DTEE_FS_PARENT_PATH=\"/data/vendor/tee\""], | 
 |             }, | 
 |         }, | 
 |     }, | 
 | } | 
 |  | 
 | cc_library_shared { | 
 |     name: "libteec", | 
 |     vendor: true, | 
 |     compile_multilib: "both", | 
 |     defaults: [ | 
 |         "optee_client_cflags_defaults", | 
 |         "optee_client_libteec_defaults", | 
 |     ], | 
 |     cflags: [ | 
 |         "-DBINARY_PREFIX=\"TEEC\"", | 
 |     ], | 
 |     srcs: [ | 
 |         "libteec/src/tee_client_api.c", | 
 |         "libteec/src/teec_trace.c", | 
 |     ], | 
 |     local_include_dirs: [ | 
 |         "libteec/include", | 
 |         "libteec/src", | 
 |     ], | 
 |     export_include_dirs: ["libteec/include"], | 
 | } | 
 |  | 
 | cc_library_shared { | 
 |     name: "libckteec", | 
 |     vendor: true, | 
 |     compile_multilib: "both", | 
 |     defaults: ["optee_client_cflags_defaults"], | 
 |     srcs: [ | 
 |         "libckteec/src/ck_debug.c", | 
 |         "libckteec/src/ck_helpers.c", | 
 |         "libckteec/src/invoke_ta.c", | 
 |         "libckteec/src/pkcs11_api.c", | 
 |         "libckteec/src/pkcs11_processing.c", | 
 |         "libckteec/src/pkcs11_token.c", | 
 |         "libckteec/src/serialize_ck.c", | 
 |         "libckteec/src/serializer.c", | 
 |     ], | 
 |     shared_libs: ["libteec"], | 
 |     local_include_dirs: [ | 
 |         "libckteec/include", | 
 |         "libteec/include", | 
 |     ], | 
 |     export_include_dirs: ["libckteec/include"], | 
 | } | 
 |  | 
 | soong_config_module_type { | 
 |     name: "optee_client_tee_supplicant_cc_defaults", | 
 |     module_type: "cc_defaults", | 
 |     config_namespace: "optee_client", | 
 |     bool_variables: [ | 
 |         "cfg_ftrace_support", | 
 |         "cfg_gp_sockets", | 
 |         "cfg_ta_gprof_support", | 
 |         "cfg_tee_supp_plugins", | 
 |         "rpmb_emu", | 
 |     ], | 
 |     value_variables: [ | 
 |         "cfg_tee_client_load_path", | 
 |         "cfg_tee_fs_parent_path", | 
 |         "cfg_tee_plugin_load_path", | 
 |         "cfg_tee_supp_log_level", | 
 |     ], | 
 |     properties: [ | 
 |         "cflags", | 
 |         "defaults", | 
 |         "ldflags", | 
 |         "srcs", | 
 |     ], | 
 | } | 
 |  | 
 | optee_client_tee_supplicant_cc_defaults { | 
 |     name: "optee_client_tee_supplicant_plugin_load_path_defaults", | 
 |     multilib: { | 
 |         lib32: { | 
 |             cflags: ["-DTEE_PLUGIN_LOAD_PATH=\"/vendor/lib/tee-supplicant/plugins/\""], | 
 |             ldflags: ["-Wl,-rpath=/vendor/lib/tee-supplicant/plugins/"], | 
 |         }, | 
 |         lib64: { | 
 |             cflags: ["-DTEE_PLUGIN_LOAD_PATH=\"/vendor/lib64/tee-supplicant/plugins/\""], | 
 |             ldflags: ["-Wl,-rpath=/vendor/lib64/tee-supplicant/plugins/"], | 
 |         }, | 
 |     }, | 
 | } | 
 |  | 
 | optee_client_tee_supplicant_cc_defaults { | 
 |     name: "optee_client_tee_supplicant_plugin_defaults", | 
 |     soong_config_variables: { | 
 |         cfg_tee_plugin_load_path: { | 
 |             cflags: ["-DTEE_PLUGIN_LOAD_PATH=\"%s\""], | 
 |             ldflags: ["-Wl,-rpath=%s"], | 
 |             conditions_default: { | 
 |                 defaults: ["optee_client_tee_supplicant_plugin_load_path_defaults"], | 
 |             }, | 
 |         }, | 
 |     }, | 
 | } | 
 |  | 
 | optee_client_tee_supplicant_cc_defaults { | 
 |     name: "optee_client_tee_supplicant_prof_defaults", | 
 |     srcs: ["tee-supplicant/src/prof.c"], | 
 | } | 
 |  | 
 | optee_client_tee_supplicant_cc_defaults { | 
 |     name: "optee_client_tee_supplicant_defaults", | 
 |     soong_config_variables: { | 
 |         cfg_ftrace_support: { | 
 |             cflags: ["-DCFG_FTRACE_SUPPORT"], | 
 |             defaults: ["optee_client_tee_supplicant_prof_defaults"], | 
 |         }, | 
 |         cfg_gp_sockets: { | 
 |             cflags: ["-DCFG_GP_SOCKETS=1"], | 
 |             srcs: ["tee-supplicant/src/tee_socket.c"], | 
 |         }, | 
 |         cfg_ta_gprof_support: { | 
 |             cflags: ["-DCFG_TA_GPROF_SUPPORT"], | 
 |             defaults: ["optee_client_tee_supplicant_prof_defaults"], | 
 |         }, | 
 |         cfg_tee_client_load_path: { | 
 |             cflags: ["-DTEEC_LOAD_PATH=\"%s\""], | 
 |             conditions_default: { | 
 |                 cflags: ["-DTEEC_LOAD_PATH=\"/vendor/lib\""], | 
 |             }, | 
 |         }, | 
 |         cfg_tee_fs_parent_path: { | 
 |             cflags: ["-DTEE_FS_PARENT_PATH=\"%s\""], | 
 |             conditions_default: { | 
 |                 cflags: ["-DTEE_FS_PARENT_PATH=\"/data/vendor/tee\""], | 
 |             }, | 
 |         }, | 
 |         cfg_tee_supp_log_level: { | 
 |             cflags: ["-DDEBUGLEVEL_%s"], | 
 |             conditions_default: { | 
 |                 cflags: ["-DDEBUGLEVEL_2"], | 
 |             }, | 
 |         }, | 
 |         cfg_tee_supp_plugins: { | 
 |             srcs: ["tee-supplicant/src/plugin.c"], | 
 |             cflags: ["-DTEE_SUPP_PLUGINS"], | 
 |             defaults: ["optee_client_tee_supplicant_plugin_defaults"], | 
 |         }, | 
 |         rpmb_emu: { | 
 |             cflags: ["-DRPMB_EMU=1"], | 
 |             srcs: [ | 
 |                 "tee-supplicant/src/hmac_sha2.c", | 
 |                 "tee-supplicant/src/sha2.c", | 
 |             ], | 
 |         }, | 
 |     }, | 
 | } | 
 |  | 
 | cc_binary { | 
 |     name: "tee-supplicant", | 
 |     vendor: true, | 
 |     defaults: [ | 
 |         "optee_client_cflags_defaults", | 
 |         "optee_client_tee_supplicant_defaults", | 
 |     ], | 
 |     cflags: [ | 
 |         "-DBINARY_PREFIX=\"TEES\"", | 
 |         "-pthread", | 
 |     ], | 
 |     srcs: [ | 
 |         "tee-supplicant/src/handle.c", | 
 |         "tee-supplicant/src/rpmb.c", | 
 |         "tee-supplicant/src/tee_supp_fs.c", | 
 |         "tee-supplicant/src/tee_supplicant.c", | 
 |         "tee-supplicant/src/teec_ta_load.c", | 
 |     ], | 
 |     shared_libs: ["libteec"], | 
 |     local_include_dirs: [ | 
 |         "libteec/include", | 
 |         "libteec/src", | 
 |         "tee-supplicant/src", | 
 |     ], | 
 | } |