| # Copyright 2018 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import("//common-mk/generate-dbus-adaptors.gni") |
| import("//common-mk/pkg_config.gni") |
| import("//common-mk/proto_library.gni") |
| |
| group("all") { |
| deps = [ |
| ":authpolicy_parser", |
| ":authpolicyd", |
| ":container-protos", |
| ":dbus_code_generator", |
| ":libauthpolicy", |
| ":policy_code_generator", |
| ] |
| if (use.test) { |
| deps += [ |
| ":authpolicy_test", |
| ":stub_common", |
| ":stub_kinit", |
| ":stub_klist", |
| ":stub_kpasswd", |
| ":stub_net", |
| ":stub_smbclient", |
| ] |
| } |
| if (use.fuzzer) { |
| deps += [ ":preg_parser_fuzzer" ] |
| } |
| } |
| |
| config("target_defaults") { |
| cflags = [ |
| "-Wshadow", |
| "-Wextra", |
| |
| # -Wextra enables unused parameter warnings, but there are unused parameters. |
| "-Wno-unused-parameter", |
| ] |
| } |
| |
| # D-Bus code generator. |
| generate_dbus_adaptors("dbus_code_generator") { |
| dbus_service_config = "dbus_bindings/dbus-service-config.json" |
| dbus_adaptors_out_dir = "include/authpolicy" |
| sources = [ "dbus_bindings/org.chromium.AuthPolicy.xml" ] |
| } |
| |
| # Container protos |
| proto_library("container-protos") { |
| configs = [ ":target_defaults" ] |
| proto_in_dir = "proto" |
| proto_out_dir = "include/bindings" |
| sources = [ "${proto_in_dir}/authpolicy_containers.proto" ] |
| } |
| |
| # Autogenerated policy sources |
| action("policy_code_generator") { |
| policy_resources_dir = "${sysroot}/usr/share/policy_resources" |
| out_dir = "${root_gen_dir}/include/bindings" |
| policy_tools_dir = "${sysroot}/usr/share/policy_tools" |
| script = "${policy_tools_dir}/generate_policy_source.py" |
| |
| sources = [ |
| "${policy_resources_dir}/VERSION", |
| "${policy_resources_dir}/policy_templates.json", |
| ] |
| outputs = [ |
| "${out_dir}/policy_constants.h", |
| "${out_dir}/policy_constants.cc", |
| ] |
| args = [ |
| "--cros-policy-constants-header=${out_dir}/policy_constants.h", |
| "--cros-policy-constants-source=${out_dir}/policy_constants.cc", |
| "--chrome-version-file=${policy_resources_dir}/VERSION", |
| "--target-platform=chromeos", |
| "--policy-templates-file=${policy_resources_dir}/policy_templates.json", |
| ] |
| } |
| |
| pkg_config("libauthpolicy_config") { |
| pkg_deps = [ |
| "dbus-1", |
| "libbrillo", |
| "libchrome-${libbase_ver}", |
| "libpcrecpp", |
| "libsession_manager-client", |
| ] |
| } |
| |
| # Authpolicy library. |
| static_library("libauthpolicy") { |
| configs += [ |
| ":libauthpolicy_config", |
| ":target_defaults", |
| ] |
| gen_src_in_dir = "${root_gen_dir}/include/bindings" |
| sources = [ |
| "${gen_src_in_dir}/policy_constants.cc", |
| "anonymizer.cc", |
| "auth_data_cache.cc", |
| "authpolicy.cc", |
| "authpolicy_flags.cc", |
| "authpolicy_metrics.cc", |
| "constants.cc", |
| "cryptohome_client.cc", |
| "gpo_version_cache.cc", |
| "jail_helper.cc", |
| "log_colors.cc", |
| "path_service.cc", |
| "platform_helper.cc", |
| "policy/device_policy_encoder.cc", |
| "policy/extension_policy_encoder.cc", |
| "policy/policy_encoder_helper.cc", |
| "policy/preg_parser.cc", |
| "policy/preg_policy_encoder.cc", |
| "policy/user_policy_encoder.cc", |
| "process_executor.cc", |
| "samba_helper.cc", |
| "samba_interface.cc", |
| "session_manager_client.cc", |
| "tgt_manager.cc", |
| ] |
| libs = [ |
| "installattributes", |
| "policy", |
| ] |
| deps = [ |
| ":container-protos", |
| ":dbus_code_generator", |
| ":policy_code_generator", |
| "//common-mk/external_dependencies:policy-protos", |
| "//common-mk/external_dependencies:user_policy-protos", |
| ] |
| } |
| |
| pkg_config("authpolicy_parser_config") { |
| # NOSORT |
| pkg_deps = [ |
| "libbrillo", |
| "libcap", |
| "libchrome-${libbase_ver}", |
| "libmetrics-${libbase_ver}", |
| "libminijail", |
| "libpcrecpp", |
| |
| # system_api depends on protobuf (or protobuf-lite). It must |
| # appear before protobuf or the linker flags won't be in the right |
| # order. |
| "system_api", |
| ] |
| |
| if (use.fuzzer) { |
| pkg_deps += [ "protobuf" ] |
| } else { |
| pkg_deps += [ "protobuf-lite" ] |
| } |
| } |
| |
| # Parser tool. |
| executable("authpolicy_parser") { |
| configs += [ |
| ":authpolicy_parser_config", |
| ":target_defaults", |
| ] |
| sources = [ "authpolicy_parser_main.cc" ] |
| deps = [ ":libauthpolicy" ] |
| } |
| |
| # Authpolicy daemon executable. |
| executable("authpolicyd") { |
| configs += [ |
| ":authpolicy_parser_config", |
| ":target_defaults", |
| ] |
| sources = [ "authpolicy_main.cc" ] |
| deps = [ |
| ":authpolicy_parser", |
| ":libauthpolicy", |
| ] |
| } |
| |
| # Unit tests. |
| if (use.test) { |
| pkg_config("authpolicy_test_config") { |
| # NOSORT |
| pkg_deps = [ |
| "libbrillo", |
| "libcap", |
| "libchrome-${libbase_ver}", |
| "libchrome-test-${libbase_ver}", |
| "libmetrics-${libbase_ver}", |
| "libminijail", |
| "libpcrecpp", |
| |
| # system_api depends on protobuf (or protobuf-lite). It must |
| # appear before protobuf or the linker flags won't be in the right |
| # order. |
| "system_api", |
| ] |
| |
| if (use.fuzzer) { |
| pkg_deps += [ "protobuf" ] |
| } else { |
| pkg_deps += [ "protobuf-lite" ] |
| } |
| } |
| |
| executable("authpolicy_test") { |
| configs += [ |
| "//common-mk:test", |
| ":authpolicy_test_config", |
| ":target_defaults", |
| ] |
| sources = [ |
| "anonymizer_test.cc", |
| "auth_data_cache_test.cc", |
| "authpolicy_flags_test.cc", |
| "authpolicy_test.cc", |
| "gpo_version_cache_test.cc", |
| "policy/device_policy_encoder_test.cc", |
| "policy/extension_policy_encoder_test.cc", |
| "policy/preg_parser_test.cc", |
| "policy/preg_policy_encoder_test.cc", |
| "policy/preg_policy_writer.cc", |
| "policy/user_policy_encoder_test.cc", |
| "process_executor_test.cc", |
| "samba_helper_test.cc", |
| ] |
| defines = [ "UNIT_TEST" ] |
| deps = [ |
| ":libauthpolicy", |
| ":stub_common", |
| ":stub_kinit", |
| ":stub_klist", |
| ":stub_kpasswd", |
| ":stub_net", |
| ":stub_smbclient", |
| "//common-mk/testrunner", |
| ] |
| } |
| |
| pkg_config("stub_common_config") { |
| pkg_deps = [ "libchrome-${libbase_ver}" ] |
| } |
| |
| static_library("stub_common") { |
| configs += [ |
| ":stub_common_config", |
| ":target_defaults", |
| ] |
| sources = [ "stub_common.cc" ] |
| } |
| |
| pkg_config("stub_net_config") { |
| pkg_deps = [ |
| "libcap", |
| "libchrome-${libbase_ver}", |
| "libpcrecpp", |
| ] |
| } |
| |
| executable("stub_net") { |
| configs += [ |
| ":stub_net_config", |
| ":target_defaults", |
| ] |
| sources = [ "stub_net_main.cc" ] |
| deps = [ |
| ":libauthpolicy", |
| ":stub_common", |
| ] |
| } |
| |
| executable("stub_kinit") { |
| configs += [ |
| ":stub_net_config", |
| ":target_defaults", |
| ] |
| sources = [ "stub_kinit_main.cc" ] |
| deps = [ |
| ":libauthpolicy", |
| ":stub_common", |
| ] |
| } |
| |
| pkg_config("stub_klist_config") { |
| pkg_deps = [ |
| "libchrome-${libbase_ver}", |
| "libpcrecpp", |
| ] |
| } |
| |
| executable("stub_klist") { |
| configs += [ |
| ":stub_klist_config", |
| ":target_defaults", |
| ] |
| sources = [ "stub_klist_main.cc" ] |
| deps = [ |
| ":libauthpolicy", |
| ":stub_common", |
| ] |
| } |
| |
| executable("stub_kpasswd") { |
| configs += [ |
| ":stub_klist_config", |
| ":target_defaults", |
| ] |
| sources = [ "stub_kpasswd_main.cc" ] |
| deps = [ |
| ":libauthpolicy", |
| ":stub_common", |
| ] |
| } |
| |
| executable("stub_smbclient") { |
| configs += [ |
| ":stub_klist_config", |
| ":target_defaults", |
| ] |
| sources = [ "stub_smbclient_main.cc" ] |
| deps = [ |
| ":libauthpolicy", |
| ":stub_common", |
| ] |
| } |
| } |
| |
| # Fuzzer target |
| if (use.fuzzer) { |
| pkg_config("preg_parser_fuzzer_config") { |
| pkg_deps = [ |
| "libbrillo", |
| "libchrome-${libbase_ver}", |
| "libchrome-test-${libbase_ver}", |
| ] |
| } |
| |
| executable("preg_parser_fuzzer") { |
| configs += [ |
| "//common-mk/common_fuzzer", |
| ":preg_parser_fuzzer_config", |
| ":target_defaults", |
| ] |
| sources = [ "policy/preg_parser_fuzzer.cc" ] |
| deps = [ ":libauthpolicy" ] |
| } |
| } |