chromium/services/service_manager/public/cpp/service_executable.gni

# Copyright 2014 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Generates an executable binary to run a service. This is essentially just an
# executable with a special file extension (".service" on most platforms,
# ".service.exe" on Windows) and a custom |ServiceMain()| entry point, declared
# in service_main.h.
template("service_executable") {
  executable(target_name) {
    forward_variables_from(invoker, "*", [ "configs" ])

    # Executable targets already have a default set of configs which we should
    # not overwrite. Hence we do not forward but manually append.
    if (defined(invoker.configs)) {
      configs += invoker.configs
    }

    if (is_win) {
      output_extension = "service.exe"
    } else {
      output_extension = "service"
    }

    if (!defined(deps)) {
      deps = []
    }

    deps += [ "//services/service_manager/public/cpp/service_executable:main" ]
  }
}