diff options
author | etiennej <etiennej@chromium.org> | 2014-12-15 01:50:40 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-12-15 09:51:07 +0000 |
commit | 560d48f40a669bfaf06a830d0cefb926628b0ed1 (patch) | |
tree | 5361f66e05de463cbd9435752189d2f5fcf15e1a /third_party/cython | |
parent | 4d9f70526dc8d1281220e78202e4a3debbdda1af (diff) | |
download | chromium_src-560d48f40a669bfaf06a830d0cefb926628b0ed1.zip chromium_src-560d48f40a669bfaf06a830d0cefb926628b0ed1.tar.gz chromium_src-560d48f40a669bfaf06a830d0cefb926628b0ed1.tar.bz2 |
Changes to third_party/cython build rules to allow source sets for
python modules composed of C++ and/or Cython files.
This change is necessary for https://codereview.chromium.org/792843002/.
It is also backward-incompatible with the current mojo/public/python
build rules; I change them in the same changelist to avoid the
dependency issue. Once this CL lands, I will roll the changes into the
mojo repository from chromium.
R=qsr@chromium.org,jamesr@chromium.org
Review URL: https://codereview.chromium.org/799923003
Cr-Commit-Position: refs/heads/master@{#308331}
Diffstat (limited to 'third_party/cython')
-rw-r--r-- | third_party/cython/rules.gni | 117 |
1 files changed, 68 insertions, 49 deletions
diff --git a/third_party/cython/rules.gni b/third_party/cython/rules.gni index 53125fe..5cfea1a 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) { |