001 /* 002 * Copyright 2010-2016 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 = "jdk-home", description = "Path to JDK home directory to include into classpath, if differs from default JAVA_HOME") 035 @ValueDescription("<path>") 036 public String jdkHome; 037 038 @Argument(value = "no-jdk", description = "Don't include Java runtime into classpath") 039 public boolean noJdk; 040 041 @Argument(value = "no-stdlib", description = "Don't include Kotlin runtime into classpath") 042 public boolean noStdlib; 043 044 @Argument(value = "module", description = "Path to the module file to compile") 045 @ValueDescription("<path>") 046 public String module; 047 048 @Argument(value = "script", description = "Evaluate the script file") 049 public boolean script; 050 051 @Argument(value = "kotlin-home", description = "Path to Kotlin compiler home directory, used for runtime libraries discovery") 052 @ValueDescription("<path>") 053 public String kotlinHome; 054 055 @Argument(value = "module-name", description = "Module name") 056 public String moduleName; 057 058 @Argument(value = "jvm-target", description = "Target version of the generated JVM bytecode, only 1.6 is supported") 059 @ValueDescription("<version>") 060 public String jvmTarget; 061 062 // Advanced options 063 @Argument(value = "Xno-call-assertions", description = "Don't generate not-null assertion after each invocation of method returning not-null") 064 public boolean noCallAssertions; 065 066 @Argument(value = "Xno-param-assertions", description = "Don't generate not-null assertions on parameters of methods accessible from Java") 067 public boolean noParamAssertions; 068 069 @Argument(value = "Xno-optimize", description = "Disable optimizations") 070 public boolean noOptimize; 071 072 @Argument(value = "Xreport-perf", description = "Report detailed performance statistics") 073 public boolean reportPerf; 074 075 @Argument(value = "Xmultifile-parts-inherit", description = "Compile multifile classes as a hierarchy of parts and facade") 076 public boolean inheritMultifileParts; 077 078 @Argument(value = "Xallow-kotlin-package", description = "Allow compiling code in package 'kotlin'") 079 public boolean allowKotlinPackage; 080 081 @Argument(value = "Xskip-metadata-version-check", description = "Try loading binary incompatible classes, may cause crashes") 082 public boolean skipMetadataVersionCheck; 083 084 @Argument(value = "Xdump-declarations-to", description = "Path to JSON file to dump Java to Kotlin declaration mappings") 085 @ValueDescription("<path>") 086 public String declarationsOutputPath; 087 088 // Paths to output directories for friend modules. 089 public String[] friendPaths; 090 091 @Override 092 @NotNull 093 public String executableScriptFileName() { 094 return "kotlinc-jvm"; 095 } 096 097 }