Home | History | Annotate | Download | only in slang
      1 /*
      2  * Copyright 2010, 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 allow_rs_prefix : Flag<"-allow-rs-prefix">,
     64   HelpText<"Allow user-defined function prefixed with 'rs'">;
     65 
     66 def java_reflection_path_base : Separate<"-java-reflection-path-base">,
     67   MetaVarName<"<directory>">,
     68   HelpText<"Base directory for output reflected Java files">;
     69 def _java_reflection_path_base : Separate<"-p">,
     70   Alias<java_reflection_path_base>;
     71 def java_reflection_package_name : Separate<"-java-reflection-package-name">,
     72   HelpText<"Specify the package name that reflected Java files belong to">;
     73 def _java_reflection_package_name : Separate<"-j">,
     74   Alias<java_reflection_package_name>;
     75 
     76 def bitcode_storage : Separate<"-bitcode-storage">,
     77   MetaVarName<"<value>">, HelpText<"<value> should be 'ar' or 'jc'">;
     78 def _bitcode_storage : Separate<"-s">, Alias<bitcode_storage>;
     79 
     80 //===----------------------------------------------------------------------===//
     81 // Dependency Output Options
     82 //===----------------------------------------------------------------------===//
     83 
     84 def M_Group : OptionGroup<"M group>">;
     85 let Group = M_Group in {
     86 
     87   def MD : Flag<"-MD">;
     88 
     89   def M : Flag<"-M">;
     90   def emit_dep : Flag<"-emit-dep">, Alias<M>;
     91 }
     92 
     93 def output_dep_dir : Separate<"-output-dep-dir">, MetaVarName<"<directory>">,
     94   HelpText<"Specify output directory for dependencies output">;
     95 def _output_dep_dir : Separate<"-d">, Alias<output_dep_dir>;
     96 
     97 def additional_dep_target: Separate<"-additional-dep-target">,
     98   HelpText<"Additional targets to show up in dependencies output">;
     99 def _additional_dep_target : Separate<"-a">, Alias<additional_dep_target>;
    100 
    101 //===----------------------------------------------------------------------===//
    102 // Misc Options
    103 //===----------------------------------------------------------------------===//
    104 
    105 def help : Flag<"-help">,
    106   HelpText<"Print this help text">;
    107 def _help : Flag<"--help">, Alias<help>;
    108 def __help : Flag<"-h">, Alias<help>;
    109 
    110 def version : Flag<"-version">,
    111   HelpText<"Print the assembler version">;
    112 def _version : Flag<"--version">, Alias<version>;
    113 
    114 // Compatible with old slang
    115 def no_link : Flag<"-no-link">;  // currently no effect
    116