def genlicenses(
    name,
    out,
    opts = [],
    java_deps = [],
    non_java_deps = [],
    visibility = []):
  cmd = ['$(exe :gen_licenses)']
  cmd.extend(opts)
  cmd.append('>$OUT')
  cmd.extend(java_deps)
  cmd.extend(non_java_deps)

  # Must use $(classpath) for Java deps, since transitive dependencies are not
  # first-order dependencies of the output jar, so changes would not cause
  # invalidation of the build cache key for the genrule.
  cmd.extend('; true $(classpath %s)' % d for d in java_deps)

  # Must use $(location) for non-Java deps, since $(classpath) will fail with an
  # error. This is ok, because transitive dependencies are included in the
  # output artifacts for everything _except_ Java libraries.
  cmd.extend('; true $(location %s)' % d for d in non_java_deps)

  genrule(
    name = name,
    out = out,
    cmd = ' '.join(cmd),
    visibility = visibility,
  )
