Index: third_party/cython/rules.gni |
diff --git a/third_party/cython/rules.gni b/third_party/cython/rules.gni |
index 53125fe03f83bef7839a5e8e1c04d1a6f3a5d905..5cfea1ab45aa66210ef8e1a53eee927f5ac0bb90 100644 |
--- a/third_party/cython/rules.gni |
+++ b/third_party/cython/rules.gni |
@@ -2,34 +2,37 @@ |
# Use of this source code is governed by a BSD-style license that can be |
# found in the LICENSE file. |
-template("python_binary_module_sources") { |
+template("python_binary_source_set") { |
# Only available on linux for now. |
assert(is_linux) |
- assert(defined(invoker.sources)) |
+ assert(defined(invoker.cython_sources) || defined(invoker.sources)) |
- cython_root = "//third_party/cython" |
- cython_script = "$cython_root/src/cython.py" |
- cython_output = "${target_out_dir}/${target_name}.cc" |
- |
- generator_target_name = target_name + "_cython_compiler" |
config_name = target_name + "_python_config" |
target_visibility = [ ":$target_name" ] |
- action(generator_target_name) { |
- visibility = target_visibility |
- script = cython_script |
- sources = invoker.sources |
- outputs = [ |
- cython_output, |
- ] |
- args = [ |
- "--cplus", |
- "-I", |
- rebase_path("//", root_build_dir), |
- "-o", |
- rebase_path(cython_output, root_build_dir), |
- ] + rebase_path(sources, root_build_dir) |
+ if (defined(invoker.cython_sources)) { |
+ generator_target_name = target_name + "_cython_compiler" |
+ |
+ cython_root = "//third_party/cython" |
+ cython_script = "$cython_root/src/cython.py" |
+ cython_output = "${target_out_dir}/${target_name}.cc" |
+ |
+ action(generator_target_name) { |
+ visibility = target_visibility |
+ script = cython_script |
+ sources = invoker.cython_sources |
+ outputs = [ |
+ cython_output, |
+ ] |
+ args = [ |
+ "--cplus", |
+ "-I", |
+ rebase_path("//", root_build_dir), |
+ "-o", |
+ rebase_path(cython_output, root_build_dir), |
+ ] + rebase_path(sources, root_build_dir) |
+ } |
} |
config(config_name) { |
@@ -45,35 +48,40 @@ template("python_binary_module_sources") { |
} |
source_set(target_name) { |
- deps = [ |
- ":$generator_target_name", |
- ] |
if (defined(invoker.visibility)) { |
visibility = invoker.visibility |
} |
- if (defined(invoker.deps)) { |
- deps += invoker.deps |
+ sources = [] |
+ if (defined(invoker.cython_sources)) { |
+ sources += [ cython_output ] |
} |
- if (defined(invoker.datadeps)) { |
- datadeps = invoker.datadeps |
- } |
- sources = [ |
- cython_output, |
- ] |
- if (defined(invoker.additional_sources)) { |
- sources += invoker.additional_sources |
+ if (defined(invoker.sources)) { |
+ sources += invoker.sources |
} |
if (defined(invoker.configs)) { |
configs += invoker.configs |
} |
all_dependent_configs = [ ":$config_name" ] |
+ deps = [] |
+ if (defined(invoker.cython_sources)) { |
+ deps += [ ":$generator_target_name" ] |
+ } |
+ if (defined(invoker.deps)) { |
+ deps += invoker.deps |
+ } |
+ if (defined(invoker.datadeps)) { |
+ datadeps = invoker.datadeps |
+ } |
} |
} |
template("python_binary_module") { |
# Only available on linux for now. |
assert(is_linux) |
- assert(defined(invoker.sources)) |
+ |
+ has_sources = defined(invoker.cython_sources) || defined(invoker.sources) |
+ |
+ assert(has_sources || defined(invoker.deps)) |
assert(defined(invoker.python_base_module)) |
sources_target_name = target_name + "_cython_sources" |
@@ -91,31 +99,42 @@ template("python_binary_module") { |
":$target_name", |
] |
- python_binary_module_sources(sources_target_name) { |
- visibility = target_visibility |
- sources = invoker.sources |
- if (defined(invoker.configs)) { |
- configs = invoker.configs |
+ if (has_sources) { |
+ python_binary_source_set(sources_target_name) { |
+ visibility = target_visibility |
+ if (defined(invoker.cython_sources)) { |
+ cython_sources = invoker.cython_sources |
+ } |
+ if (defined(invoker.sources)) { |
+ sources = invoker.sources |
+ } |
+ if (defined(invoker.configs)) { |
+ configs = invoker.configs |
+ } |
+ if (defined(invoker.deps)) { |
+ deps = invoker.deps |
+ } |
+ if (defined(invoker.datadeps)) { |
+ datadeps = invoker.datadeps |
+ } |
} |
} |
shared_library(shared_library_name) { |
visibility = target_visibility |
- deps = [ |
- ":$sources_target_name", |
- ] |
+ if (defined(invoker.configs)) { |
+ configs += invoker.configs |
+ } |
+ deps = [] |
+ if (has_sources) { |
+ deps += [ ":$sources_target_name" ] |
+ } |
if (defined(invoker.deps)) { |
deps += invoker.deps |
} |
if (defined(invoker.datadeps)) { |
datadeps = invoker.datadeps |
} |
- if (defined(invoker.additional_sources)) { |
- sources = invoker.additional_sources |
- } |
- if (defined(invoker.configs)) { |
- configs += invoker.configs |
- } |
} |
copy(target_name) { |