001 /* 002 * Copyright 2010-2015 JetBrains s.r.o. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 017 package org.jetbrains.kotlin.cli.common.arguments; 018 019 import com.sampullara.cli.Argument; 020 import org.jetbrains.annotations.NotNull; 021 022 public class K2JVMCompilerArguments extends CommonCompilerArguments { 023 @Argument(value = "d", description = "Destination for generated class files") 024 @ValueDescription("<directory|jar>") 025 public String destination; 026 027 @Argument(value = "classpath", alias = "cp", description = "Paths where to find user class files") 028 @ValueDescription("<path>") 029 public String classpath; 030 031 @Argument(value = "include-runtime", description = "Include Kotlin runtime in to resulting .jar") 032 public boolean includeRuntime; 033 034 @Argument(value = "no-jdk", description = "Don't include Java runtime into classpath") 035 public boolean noJdk; 036 037 @Argument(value = "no-stdlib", description = "Don't include Kotlin runtime into classpath") 038 public boolean noStdlib; 039 040 @Argument(value = "module", description = "Path to the module file to compile") 041 @ValueDescription("<path>") 042 public String module; 043 044 @Argument(value = "script", description = "Evaluate the script file") 045 public boolean script; 046 047 @Argument(value = "kotlin-home", description = "Path to Kotlin compiler home directory, used for runtime libraries discovery") 048 @ValueDescription("<path>") 049 public String kotlinHome; 050 051 @Argument(value = "module-name", description = "Module name") 052 public String moduleName; 053 054 // Advanced options 055 @Argument(value = "Xno-call-assertions", description = "Don't generate not-null assertion after each invocation of method returning not-null") 056 public boolean noCallAssertions; 057 058 @Argument(value = "Xno-param-assertions", description = "Don't generate not-null assertions on parameters of methods accessible from Java") 059 public boolean noParamAssertions; 060 061 @Argument(value = "Xno-optimize", description = "Disable optimizations") 062 public boolean noOptimize; 063 064 @Argument(value = "Xreport-perf", description = "Report detailed performance statistics") 065 public boolean reportPerf; 066 067 @Argument(value = "Xmultifile-parts-inherit", description = "Compile multifile classes as a hierarchy of parts and facade") 068 public boolean inheritMultifileParts; 069 070 @Argument(value = "Xallow-kotlin-package", description = "Allow compiling code in package 'kotlin'") 071 public boolean allowKotlinPackage; 072 073 @Argument(value = "Xskip-metadata-version-check", description = "Try loading binary incompatible classes, may cause crashes") 074 public boolean skipMetadataVersionCheck; 075 076 @Argument(value = "Xdump-declarations-to", description = "Path to JSON file to dump Java to Kotlin declaration mappings") 077 @ValueDescription("<path>") 078 public String declarationsOutputPath; 079 080 // Paths to output directories for friend modules. 081 public String[] friendPaths; 082 083 @Override 084 @NotNull 085 public String executableScriptFileName() { 086 return "kotlinc-jvm"; 087 } 088 089 }