tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

intent_definition.gni (3340B)


      1 # Copyright 2020 The Chromium Authors
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 import("//chromium/build/config/ios/ios_sdk.gni")
      6 
      7 # Template to compile an .intentdefinition file.
      8 #
      9 # Arguments
     10 #
     11 #   intent_file
     12 #     path to .intentdefinition file that must be compiled
     13 #
     14 #   intent_names
     15 #     list of string corresponding to the intent defined in intent_file;
     16 #     must include all the intents as only the intents listed will be
     17 #     compiled
     18 #
     19 #   developer_dir
     20 #     (optional) path to developer_dir to use
     21 #
     22 template("intent_definition") {
     23   assert(defined(invoker.intent_file) && invoker.intent_file != "",
     24          "intent_file must be defined for $target_name")
     25 
     26   assert(defined(invoker.intent_names) && invoker.intent_names != [],
     27          "intent_names must be defined for $target_name")
     28 
     29   assert(xcode_version_int >= 1140,
     30          "intent_definition requires Xcode 11.4 or higher")
     31 
     32   _compile_intent_target = "${target_name}_compile_intent"
     33   _compile_intent_output =
     34       "$target_gen_dir/" + get_path_info(invoker.intent_file, "file")
     35 
     36   action(_compile_intent_target) {
     37     script = "//chromium/build/apple/xcrun.py"
     38     inputs = [ invoker.intent_file ]
     39     outputs = [ _compile_intent_output ]
     40     args = [
     41       "intentbuilderc",
     42       "compile",
     43       "-input",
     44       rebase_path(invoker.intent_file, root_build_dir),
     45       "-output",
     46       rebase_path(target_gen_dir, root_build_dir),
     47     ]
     48 
     49     if (defined(invoker.developer_dir)) {
     50       args += [
     51         "--developer-dir",
     52         rebase_path(invoker.developer_dir, root_build_dir),
     53       ]
     54     }
     55   }
     56 
     57   _compile_intent_bundle = "${target_name}_compile_intent_bundle"
     58   bundle_data(_compile_intent_bundle) {
     59     sources = [ _compile_intent_output ]
     60     outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ]
     61     public_deps = [ ":$_compile_intent_target" ]
     62   }
     63 
     64   _generate_source_target = "${target_name}_generate_source"
     65   _generate_source_output = []
     66   foreach(_intent, invoker.intent_names) {
     67     _generate_source_output += [
     68       "$target_gen_dir/$_intent.h",
     69       "$target_gen_dir/$_intent.m",
     70     ]
     71   }
     72 
     73   action(_generate_source_target) {
     74     script = "//chromium/build/apple/xcrun.py"
     75     inputs = [ invoker.intent_file ]
     76     outputs = _generate_source_output
     77     args = [
     78       "intentbuilderc",
     79       "generate",
     80       "-input",
     81       rebase_path(invoker.intent_file, root_build_dir),
     82       "-output",
     83       rebase_path(target_gen_dir, root_build_dir),
     84       "-language",
     85       "Objective-C",
     86     ]
     87 
     88     if (defined(invoker.developer_dir)) {
     89       args += [
     90         "--developer-dir",
     91         rebase_path(invoker.developer_dir, root_build_dir),
     92       ]
     93     }
     94   }
     95 
     96   source_set(target_name) {
     97     forward_variables_from(invoker,
     98                            "*",
     99                            [
    100                              "developer_dir",
    101                              "intent_file",
    102                              "intent_names",
    103                              "sources",
    104                            ])
    105 
    106     if (!defined(deps)) {
    107       deps = []
    108     }
    109     if (!defined(frameworks)) {
    110       frameworks = []
    111     }
    112 
    113     sources = _generate_source_output
    114     deps += [
    115       ":$_compile_intent_bundle",
    116       ":$_generate_source_target",
    117     ]
    118     frameworks += [ "Intents.framework" ]
    119   }
    120 }