All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ru.vyarus.gradle.plugin.teavm.task.CompileParameters Maven / Gradle / Ivy

There is a newer version: 1.2.0
Show newest version
package ru.vyarus.gradle.plugin.teavm.task;

import org.gradle.api.file.Directory;
import org.gradle.api.file.DirectoryProperty;
import org.gradle.api.file.RegularFileProperty;
import org.gradle.api.provider.ListProperty;
import org.gradle.api.provider.MapProperty;
import org.gradle.api.provider.Property;
import org.gradle.workers.WorkParameters;
import org.teavm.backend.wasm.render.WasmBinaryVersion;
import org.teavm.tooling.TeaVMTargetType;
import org.teavm.vm.TeaVMOptimizationLevel;

import java.io.File;

/**
 * Parameters for teavm compiler worker.
 *
 * @author Vyacheslav Rusakov
 * @since 06.01.2023
 */
public interface CompileParameters extends WorkParameters {

    /**
     * @return true to print teavm compilation details
     */
    Property getDebug();

    /**
     * Worker process can't directly return anything, so special file used as error indicator.
     *
     * @return error indication file
     */
    RegularFileProperty getErrorFile();

    /**
     * @return all directories with compiled classes and classpath jar files
     */
    ListProperty getClassPathEntries();

    /**
     * @return all directories with sources
     */
    ListProperty getSourceDirectories();

    /**
     * @return list of source jar files
     */
    ListProperty getSourceJars();

    /**
     * @return target directory
     */

    DirectoryProperty getTargetDirectory();

    /**
     * @return teavm cache directory
     */
    DirectoryProperty getCacheDirectory();

    /**
     * @return main class name (entry point)
     */
    Property getMainClass();

    /**
     * @return entry point name (main by default)
     */
    Property getEntryPointName();

    /**
     * @return target file name (by default depends on target: classes.js, classes.wasm)
     */
    Property getTargetFileName();

    /**
     * @return teavm compilation target (js, wasm)
     */
    Property getTargetType();

    /**
     * @return wasm version
     */
    Property getWasmVersion();

    /**
     * @return true to minimize compiled js
     */
    Property getObfuscated();

    /**
     * @return true for strict mode
     */
    Property getStrict();

    /**
     * @return true to copy source files (required for browser debug with source maps)
     */
    Property getSourceFilesCopied();

    /**
     * @return tue for incremental compilation
     */
    Property getIncremental();

    /**
     * @return true to generate debug info file (required for debug server)
     */
    Property getDebugInformationGenerated();

    /**
     * @return true for source maps generation
     */
    Property getSourceMapsFileGenerated();

    /**
     * @return true for short file names (C target)
     */
    Property getShortFileNames();

    /**
     * @return true for long jmp (C target)
     */
    Property getLongjmpSupported();

    /**
     * @return true for heap dump (C target)
     */
    Property getHeapDump();

    /**
     * ONLY for development because it affects optimization level (set to SIMPLE).
     *
     * @return true for fast dependencies analysis
     */
    Property getFastDependencyAnalysis();

    /**
     * @return true to remove assertions during compilation
     */
    Property getAssertionsRemoved();

    /**
     * @return max top level names (JS target only)
     */
    Property getMaxTopLevelNames();

    /**
     * @return min heap size (WASM and C targets)
     */
    Property getMinHeapSize();

    /**
     * @return max heap size (WASM and C targets)
     */
    Property getMaxHeapSize();

    /**
     * @return optimization level (SIMPLE - minimal, ADVANCED - prod. FULL - for WASM)
     */
    Property getOptimizationLevel();

    /**
     * @return list of transformer classes (transforming ClassHolders)
     */
    ListProperty getTransformers();

    /**
     * @return properties for teavm plugins
     */
    MapProperty getProperties();

    /**
     * @return classes to preserve
     */
    ListProperty getClassesToPreserve();


}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy