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