| cpp_compiler = meson.get_compiler('cpp') | |
| protobuf_deps = dependency('protobuf', required : false) | |
| if not protobuf_deps.found() | |
| protobuf_proj = subproject('protobuf') | |
| protobuf_deps = declare_dependency( | |
| dependencies : [ | |
| abseil_proj.get_variable('protobuf_dep'), | |
| ], | |
| ) | |
| endif | |
| gpr_deps = dependency('gpr', required: false) | |
| if not gpr_deps.found() | |
| gpr_deps = cpp_compiler.find_library('gpr') | |
| endif | |
| grpc_deps = dependency('grpc', required: false) | |
| if not grpc_deps.found() | |
| grpc_deps = cpp_compiler.find_library('grpc') | |
| endif | |
| grpcpp_deps = dependency('grpc++', required: false) | |
| if not grpcpp_deps.found() | |
| grpcpp_deps = cpp_compiler.find_library('grpc++') | |
| endif | |
| grpcpp_reflection = dependency('grpc++_reflection', required: false) | |
| if not grpcpp_reflection.found() | |
| grpcpp_reflection = cpp_compiler.find_library('grpc++_reflection', required: false) | |
| if not grpcpp_reflection.found() | |
| grpcpp_reflection = cpp_compiler.find_library('grpc++_reflection', dirs: '/usr/local/lib') | |
| endif | |
| endif | |
| protoc = find_program('protoc') | |
| grpc_cpp_plugin = find_program('grpc_cpp_plugin') | |
| redfish_v1_protos = ['redfish_v1.proto'] | |
| authz_protos = ['oauth.proto', 'authorized_entity.proto'] | |
| all_protos = redfish_v1_protos + authz_protos | |
| proto_gen = {} | |
| proto_headers = {} | |
| foreach proto : all_protos | |
| tmp_target = custom_target( | |
| proto, | |
| output: ['@BASENAME@.pb.cc', '@BASENAME@.pb.h'], | |
| input: [proto], | |
| command : [ | |
| protoc, | |
| '@INPUT@', | |
| '--proto_path=@CURRENT_SOURCE_DIR@', | |
| '--cpp_out=@OUTDIR@', | |
| ], | |
| install : true, | |
| install_dir : [false, get_option('includedir')], | |
| ) | |
| proto_gen += {proto: tmp_target} | |
| proto_headers += {proto: tmp_target[1]} | |
| endforeach | |
| redfish_v1_proto_gen = [] | |
| foreach proto : redfish_v1_protos | |
| redfish_v1_proto_gen += proto_gen[proto] | |
| endforeach | |
| authz_proto_gen = [] | |
| foreach proto : authz_protos | |
| authz_proto_gen += proto_gen[proto] | |
| endforeach | |
| grpc_redfish_gen = custom_target( | |
| 'grpc_redfish_grpc_pb_[ch]', | |
| output: ['@BASENAME@.grpc.pb.cc', '@BASENAME@.grpc.pb.h'], | |
| input: ['redfish_v1.proto'], | |
| command : [ | |
| protoc, | |
| '@INPUT@', | |
| '--proto_path=@CURRENT_SOURCE_DIR@', | |
| '--grpc_out=@OUTDIR@', | |
| '--plugin=protoc-gen-grpc=' + grpc_cpp_plugin.full_path(), | |
| ], | |
| install : true, | |
| install_dir : [false, get_option('includedir')], | |
| ) | |
| oauth_gen = custom_target( | |
| 'oauth_grpc_pb_[ch]', | |
| output: ['@BASENAME@.grpc.pb.cc', '@BASENAME@.grpc.pb.h'], | |
| input: ['oauth.proto'], | |
| command : [ | |
| protoc, | |
| '@INPUT@', | |
| '--proto_path=@CURRENT_SOURCE_DIR@', | |
| '--grpc_out=@OUTDIR@', | |
| '--plugin=protoc-gen-grpc=' + grpc_cpp_plugin.full_path(), | |
| ], | |
| install : true, | |
| install_dir : [false, get_option('includedir')], | |
| ) | |
| gmi_protos_dep = dependency('gmi_protos') | |
| one_dep = dependency('one') | |
| if cpp_compiler.has_header('nlohmann/json.hpp') | |
| nlohmann_json = declare_dependency() | |
| else | |
| nlohmann_json_proj = subproject('nlohmann', required: true) | |
| nlohmann_json = nlohmann_json_proj.get_variable('nlohmann_json_dep') | |
| endif | |
| libsystemd_pkg = dependency('libsystemd') | |
| zatar_dep = dependency('zatar') | |
| grpc_redfish = dependency('grpc_redfish') | |
| grpc_redfish_deps = [ | |
| abseil_deps, | |
| gpr_deps, | |
| grpc_deps, | |
| grpcpp_deps, | |
| protobuf_deps, | |
| grpcpp_reflection, | |
| gmi_protos_dep, | |
| libsystemd_pkg, | |
| nlohmann_json, | |
| one_dep, | |
| openssl, | |
| zatar_dep, | |
| tlbmc_lib_dep, | |
| grpc_redfish, | |
| ] | |
| grpc_redfish_include = include_directories('.') | |
| grpc_redfish_lib = static_library( | |
| 'grpc_redfish', | |
| 'bmcweb_authorizer_singleton.cc', | |
| 'subscription_tracker.cc', | |
| 'config_generator.cc', | |
| 'config_parser.cc', | |
| 'json_utils.cc', | |
| 'oauth_utils.cc', | |
| 'peer_identity_grpc.cc', | |
| 'redfish_authorizer.cc', | |
| 'redfish_privileges.cc', | |
| 'redfish_privileges_json.cc', | |
| 'redfish_entity_trie.cc', | |
| 'redfish_entity_trie_node.cc', | |
| 'redfish_subtree_privileges_trie_node.cc', | |
| 'override.cc', | |
| 'override_json.cc', | |
| 'subordinate_override.cc', | |
| 'resource_uri_override.cc', | |
| 'authorizer_enums.cc', | |
| authz_proto_gen, | |
| redfish_v1_proto_gen, | |
| grpc_redfish_gen, | |
| dependencies: grpc_redfish_deps, | |
| include_directories: [grpc_redfish_include], | |
| cpp_args: ['-Wno-error'], | |
| ) | |
| grpc_redfish_dep = declare_dependency( | |
| link_with: [grpc_redfish_lib], | |
| include_directories: [grpc_redfish_include], | |
| dependencies: grpc_redfish_deps, | |
| ) | |
| bmcweb_dependencies += grpc_redfish_dep | |
| executable( | |
| 'config_generator', | |
| 'config_generator_main.cc', | |
| dependencies: [grpc_redfish_dep], | |
| install: true, | |
| ) | |
| executable( | |
| 'authz_server', | |
| 'authz_server_main.cc', | |
| 'authz_server.cc', | |
| authz_proto_gen, | |
| oauth_gen, | |
| dependencies: [grpc_redfish_dep], | |
| install: true, | |
| ) | |
| systemd_dep = dependency('systemd') | |
| systemd_system_unitdir = systemd_dep.get_variable( | |
| pkgconfig: 'systemdsystemunitdir') | |
| conf_data = configuration_data() | |
| conf_data.set('extra_service_flags', get_option('extra-service-flags')) | |
| configure_file( | |
| input: 'authz_server.service.in', | |
| output: 'authz_server.service', | |
| configuration: conf_data, | |
| install: true, | |
| install_dir: systemd_system_unitdir, | |
| ) |