Home | History | Annotate | Download | only in slang
      1 /*
      2  * Copyright 2010-2012, The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *     http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 //===----------------------------------------------------------------------===//
     18 //
     19 //  This file defines the options accepted by llvm-rs-cc.
     20 //
     21 //===----------------------------------------------------------------------===//
     22 
     23 // Include the common option parsing interfaces.
     24 include "clang/Driver/OptParser.td"
     25 
     26 //===----------------------------------------------------------------------===//
     27 // Target Options
     28 //===----------------------------------------------------------------------===//
     29 
     30 def target_api : Separate<"-target-api">,
     31   HelpText<"Specify target API level (e.g. 14)">;
     32 def target_api_EQ : Joined<"-target-api=">, Alias<target_api>;
     33 
     34 //===----------------------------------------------------------------------===//
     35 // Header Search Options
     36 //===----------------------------------------------------------------------===//
     37 
     38 def I : JoinedOrSeparate<"-I">, MetaVarName<"<directory>">,
     39   HelpText<"Add directory to include search path">;
     40 def _I : Separate<"include-path">, MetaVarName<"<directory>">, Alias<I>;
     41 
     42 //===----------------------------------------------------------------------===//
     43 // Frontend Options
     44 //===----------------------------------------------------------------------===//
     45 
     46 def o : Separate<"-o">, MetaVarName<"<directory>">,
     47   HelpText<"Specify output directory">;
     48 
     49 def Output_Type_Group : OptionGroup<"<output type group>">;
     50 let Group = Output_Type_Group in {
     51 
     52 def emit_asm : Flag<"-emit-asm">,
     53   HelpText<"Emit target assembly files">;
     54 def _emit_asm : Flag<"-S">, Alias<emit_asm>;
     55 def emit_llvm : Flag<"-emit-llvm">,
     56   HelpText<"Build ASTs then convert to LLVM, emit .ll file">;
     57 def emit_bc : Flag<"-emit-bc">,
     58   HelpText<"Build ASTs then convert to LLVM, emit .bc file">;
     59 def emit_nothing : Flag<"-emit-nothing">,
     60   HelpText<"Build ASTs then convert to LLVM, but emit nothing">;
     61 }
     62 
     63 def emit_g : Flag<"-g">,
     64   HelpText<"Emit LLVM Debug Metadata">;
     65 
     66 def optimization_level : Separate<"-O">, MetaVarName<"<optimization-level>">,
     67   HelpText<"<optimization-level> can be one of '0' or '3' (default)">;
     68 
     69 def allow_rs_prefix : Flag<"-allow-rs-prefix">,
     70   HelpText<"Allow user-defined function prefixed with 'rs'">;
     71 
     72 def java_reflection_path_base : Separate<"-java-reflection-path-base">,
     73   MetaVarName<"<directory>">,
     74   HelpText<"Base directory for output reflected Java files">;
     75 def _java_reflection_path_base : Separate<"-p">,
     76   Alias<java_reflection_path_base>;
     77 def java_reflection_package_name : Separate<"-java-reflection-package-name">,
     78   HelpText<"Specify the package name that reflected Java files belong to">;
     79 def _java_reflection_package_name : Separate<"-j">,
     80   Alias<java_reflection_package_name>;
     81 
     82 def bitcode_storage : Separate<"-bitcode-storage">,
     83   MetaVarName<"<value>">, HelpText<"<value> should be 'ar' or 'jc'">;
     84 def _bitcode_storage : Separate<"-s">, Alias<bitcode_storage>;
     85 
     86 def rs_package_name : Separate<"-rs-package-name">,
     87   MetaVarName<"<package_name>">,
     88   HelpText<"package name for referencing RS classes">;
     89 def rs_package_name_EQ : Joined<"-rs-package-name=">, Alias<rs_package_name>;
     90 
     91 def W : Joined<"-W">;
     92 def w : Flag<"-w">, HelpText<"Suppress all warnings">;
     93 
     94 //===----------------------------------------------------------------------===//
     95 // Dependency Output Options
     96 //===----------------------------------------------------------------------===//
     97 
     98 def M_Group : OptionGroup<"M group>">;
     99 let Group = M_Group in {
    100 
    101   def MD : Flag<"-MD">;
    102 
    103   def M : Flag<"-M">;
    104   def emit_dep : Flag<"-emit-dep">, Alias<M>;
    105 }
    106 
    107 def output_dep_dir : Separate<"-output-dep-dir">, MetaVarName<"<directory>">,
    108   HelpText<"Specify output directory for dependencies output">;
    109 def _output_dep_dir : Separate<"-d">, Alias<output_dep_dir>;
    110 
    111 def additional_dep_target: Separate<"-additional-dep-target">,
    112   HelpText<"Additional targets to show up in dependencies output">;
    113 def _additional_dep_target : Separate<"-a">, Alias<additional_dep_target>;
    114 
    115 //===----------------------------------------------------------------------===//
    116 // Reflection Options
    117 //===----------------------------------------------------------------------===//
    118 
    119 def reflect_cpp : Flag<"-reflect-c++">,
    120   HelpText<"Reflect C++ classes">;
    121 
    122 //===----------------------------------------------------------------------===//
    123 // Misc Options
    124 //===----------------------------------------------------------------------===//
    125 
    126 def help : Flag<"-help">,
    127   HelpText<"Print this help text">;
    128 def _help : Flag<"--help">, Alias<help>;
    129 def __help : Flag<"-h">, Alias<help>;
    130 
    131 def version : Flag<"-version">,
    132   HelpText<"Print the assembler version">;
    133 def _version : Flag<"--version">, Alias<version>;
    134 
    135 // Compatible with old slang
    136 def no_link : Flag<"-no-link">;  // currently no effect
    137