From aa94300bdda3ce51d01859498b83640d51d03244 Mon Sep 17 00:00:00 2001 From: Irmen de Jong Date: Fri, 23 Aug 2019 00:07:49 +0200 Subject: [PATCH] added output directory command line option improved cli parser by using kotlinx.cli --- .../libraries/kotlinx_cli_jvm_0_1_0_dev_5.xml | 9 ++ compiler/build.gradle | 3 +- compiler/compiler.iml | 1 + compiler/lib/kotlinx-cli-jvm-0.1.0-dev-5.jar | Bin 0 -> 90710 bytes compiler/src/prog8/CompilerMain.kt | 125 +++++++----------- compiler/src/prog8/ast/base/ErrorReporting.kt | 4 +- compiler/src/prog8/compiler/Main.kt | 5 +- .../compiler/target/c64/AssemblyProgram.kt | 23 ++-- .../compiler/target/c64/codegen/AsmGen.kt | 10 +- compiler/test/UnitTests.kt | 2 - docs/source/building.rst | 7 + 11 files changed, 93 insertions(+), 96 deletions(-) create mode 100644 .idea/libraries/kotlinx_cli_jvm_0_1_0_dev_5.xml create mode 100644 compiler/lib/kotlinx-cli-jvm-0.1.0-dev-5.jar diff --git a/.idea/libraries/kotlinx_cli_jvm_0_1_0_dev_5.xml b/.idea/libraries/kotlinx_cli_jvm_0_1_0_dev_5.xml new file mode 100644 index 000000000..7fee0aedc --- /dev/null +++ b/.idea/libraries/kotlinx_cli_jvm_0_1_0_dev_5.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/compiler/build.gradle b/compiler/build.gradle index 4c5cfd5e8..d68a4cb86 100644 --- a/compiler/build.gradle +++ b/compiler/build.gradle @@ -20,6 +20,7 @@ repositories { mavenLocal() mavenCentral() jcenter() + maven { url "https://dl.bintray.com/orangy/maven/" } } def prog8version = rootProject.file('compiler/res/version.txt').text.trim() @@ -35,8 +36,8 @@ dependencies { testImplementation "org.jetbrains.kotlin:kotlin-test-junit5:$kotlinVersion" testImplementation 'org.junit.jupiter:junit-jupiter-api:5.3.2' testImplementation 'org.hamcrest:hamcrest-junit:2.0.0.0' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.3.2' + compile 'org.jetbrains.kotlinx:kotlinx-cli-jvm:0.1.0-dev-5' } compileKotlin { diff --git a/compiler/compiler.iml b/compiler/compiler.iml index 9df271cf3..10103c91c 100644 --- a/compiler/compiler.iml +++ b/compiler/compiler.iml @@ -14,5 +14,6 @@ + \ No newline at end of file diff --git a/compiler/lib/kotlinx-cli-jvm-0.1.0-dev-5.jar b/compiler/lib/kotlinx-cli-jvm-0.1.0-dev-5.jar new file mode 100644 index 0000000000000000000000000000000000000000..2edc1e111a9cb04b5544f2fcb40294268a5ab721 GIT binary patch literal 90710 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 { - printSoftwareHeader("compiler") - if (args.isEmpty()) - usage() compileMain(args) } @@ -30,46 +28,37 @@ internal fun printSoftwareHeader(what: String) { private fun compileMain(args: Array) { - var emulatorToStart = "" - var moduleFile = "" - var writeAssembly = true - var optimize = true - var launchAstVm = false - var watchMode = false - for (arg in args) { - if(arg=="-emu") - emulatorToStart = "x64" - else if(arg=="-emu2") - emulatorToStart = "x64sc" - else if(arg=="-noasm") - writeAssembly = false - else if(arg=="-noopt") - optimize = false - else if(arg=="-sim") { - launchAstVm = true - writeAssembly = false - emulatorToStart = "" - } - else if(arg=="-watch") - watchMode = true - else if(!arg.startsWith("-")) - moduleFile = arg - else - usage() + val cli = CommandLineInterface("prog8compiler") + val startEmulator1 by cli.flagArgument("-emu", "auto-start the 'x64' C-64 emulator after successful compilation") + val startEmulator2 by cli.flagArgument("-emu2", "auto-start the 'x64sc' C-64 emulator after successful compilation") + val outputDir by cli.flagValueArgument("-out", "directory", "directory for output files instead of current directory", ".") + val dontWriteAssembly by cli.flagArgument("-noasm", "don't create assembly code") + val dontOptimize by cli.flagArgument("-noopt", "don't perform any optimizations") + val launchSimulator by cli.flagArgument("-sim", "launch the prog8 virtual machine/simulator after compilation") + val watchMode by cli.flagArgument("-watch", "continuous compilation mode (watches for file changes)") + val moduleFiles by cli.positionalArgumentsList("modules", "main module file(s) to compile", minArgs = 1) + + try { + cli.parse(args) + } catch (e: Exception) { + exitProcess(1) } - if(watchMode) { - if(moduleFile.isBlank()) - usage() + val outputPath = Paths.get(outputDir) + if(!outputPath.toFile().isDirectory) { + System.err.println("Output path doesn't exist") + exitProcess(1) + } + if(watchMode && moduleFiles.size<=1) { val watchservice = FileSystems.getDefault().newWatchService() while(true) { - val filepath = Paths.get(moduleFile).normalize() + val filepath = Paths.get(moduleFiles.single()).normalize() println("Continuous watch mode active. Main module: $filepath") try { - val compilationResult = compileProgram(filepath, optimize, writeAssembly) + val compilationResult = compileProgram(filepath, !dontOptimize, !dontWriteAssembly, outputDir=outputPath) println("Imported files (now watching:)") for (importedFile in compilationResult.importedFiles) { print(" ") @@ -90,51 +79,37 @@ private fun compileMain(args: Array) { } } else { - if(moduleFile.isBlank()) - usage() - - val filepath = Paths.get(moduleFile).normalize() - val compilationResult: CompilationResult - - try { - compilationResult = compileProgram(filepath, optimize, writeAssembly) - if(!compilationResult.success) + for(filepathRaw in moduleFiles) { + val filepath = Paths.get(filepathRaw).normalize() + val compilationResult: CompilationResult + try { + compilationResult = compileProgram(filepath, !dontOptimize, !dontWriteAssembly, outputDir=outputPath) + if(!compilationResult.success) + exitProcess(1) + } catch (x: ParsingFailedError) { exitProcess(1) - } catch (x: ParsingFailedError) { - exitProcess(1) - } catch (x: AstException) { - exitProcess(1) - } + } catch (x: AstException) { + exitProcess(1) + } - if (launchAstVm) { - println("\nLaunching AST-based vm...") - val vm = AstVm(compilationResult.programAst) - vm.run() - } + if (launchSimulator) { + println("\nLaunching AST-based simulator...") + val vm = AstVm(compilationResult.programAst) + vm.run() + } - if (emulatorToStart.isNotEmpty()) { - if (compilationResult.programName.isEmpty()) - println("\nCan't start emulator because no program was assembled.") - else { - println("\nStarting C-64 emulator $emulatorToStart...") - val cmdline = listOf(emulatorToStart, "-silent", "-moncommands", "${compilationResult.programName}.vice-mon-list", - "-autostartprgmode", "1", "-autostart-warp", "-autostart", compilationResult.programName + ".prg") - val process = ProcessBuilder(cmdline).inheritIO().start() - process.waitFor() + if (startEmulator1 || startEmulator2) { + if (compilationResult.programName.isEmpty()) + println("\nCan't start emulator because no program was assembled.") + else { + val emulator = if(startEmulator1) "x64" else "x64sc" + println("\nStarting C-64 emulator $emulator...") + val cmdline = listOf(emulator, "-silent", "-moncommands", "${compilationResult.programName}.vice-mon-list", + "-autostartprgmode", "1", "-autostart-warp", "-autostart", compilationResult.programName + ".prg") + val process = ProcessBuilder(cmdline).inheritIO().start() + process.waitFor() + } } } } } - - -private fun usage() { - System.err.println("Missing argument(s):") - System.err.println(" [-noasm] don't create assembly code") - System.err.println(" [-noopt] don't perform any optimizations") - System.err.println(" [-emu] auto-start the 'x64' C-64 emulator after successful compilation") - System.err.println(" [-emu2] auto-start the 'x64sc' C-64 emulator after successful compilation") - System.err.println(" [-sim] launch the prog8 virtual machine/simulator after compilation") - System.err.println(" [-watch] continuous compilation mode (watches for file changes)") - System.err.println(" modulefile main module file to compile") - exitProcess(1) -} diff --git a/compiler/src/prog8/ast/base/ErrorReporting.kt b/compiler/src/prog8/ast/base/ErrorReporting.kt index 19b4365ec..df3191f03 100644 --- a/compiler/src/prog8/ast/base/ErrorReporting.kt +++ b/compiler/src/prog8/ast/base/ErrorReporting.kt @@ -5,7 +5,7 @@ import prog8.parser.ParsingFailedError fun printErrors(errors: List, moduleName: String) { val reportedMessages = mutableSetOf() - print("\u001b[91m") // bright red + System.err.print("\u001b[91m") // bright red errors.forEach { val msg = it.toString() if(msg !in reportedMessages) { @@ -13,7 +13,7 @@ fun printErrors(errors: List, moduleName: String) { reportedMessages.add(msg) } } - print("\u001b[0m") // reset color + System.err.print("\u001b[0m") // reset color if(reportedMessages.isNotEmpty()) throw ParsingFailedError("There are ${reportedMessages.size} errors in module '$moduleName'.") } diff --git a/compiler/src/prog8/compiler/Main.kt b/compiler/src/prog8/compiler/Main.kt index 304e34c7c..b2378292e 100644 --- a/compiler/src/prog8/compiler/Main.kt +++ b/compiler/src/prog8/compiler/Main.kt @@ -25,7 +25,8 @@ class CompilationResult(val success: Boolean, fun compileProgram(filepath: Path, optimize: Boolean, - writeAssembly: Boolean): CompilationResult { + writeAssembly: Boolean, + outputDir: Path): CompilationResult { lateinit var programAst: Program var programName: String? = null @@ -102,7 +103,7 @@ fun compileProgram(filepath: Path, // asm generation directly from the Ast, no need for intermediate code val zeropage = MachineDefinition.C64Zeropage(compilerOptions) programAst.anonscopeVarsCleanup() - val assembly = AsmGen(programAst, compilerOptions, zeropage).compileToAssembly(optimize) + val assembly = AsmGen(programAst, compilerOptions, zeropage, outputDir).compileToAssembly(optimize) assembly.assemble(compilerOptions) programName = assembly.name } diff --git a/compiler/src/prog8/compiler/target/c64/AssemblyProgram.kt b/compiler/src/prog8/compiler/target/c64/AssemblyProgram.kt index d4de7ffcf..89ccc2b85 100644 --- a/compiler/src/prog8/compiler/target/c64/AssemblyProgram.kt +++ b/compiler/src/prog8/compiler/target/c64/AssemblyProgram.kt @@ -2,12 +2,14 @@ package prog8.compiler.target.c64 import prog8.compiler.CompilationOptions import prog8.compiler.OutputType -import java.io.File +import java.nio.file.Path import kotlin.system.exitProcess -class AssemblyProgram(val name: String) { - private val assemblyFile = "$name.asm" - private val viceMonListFile = "$name.vice-mon-list" +class AssemblyProgram(val name: String, val outputDir: Path) { + private val assemblyFile = outputDir.resolve("$name.asm") + private val prgFile = outputDir.resolve("$name.prg") + private val binFile = outputDir.resolve("$name.bin") + private val viceMonListFile = outputDir.resolve("$name.vice-mon-list") companion object { // 6502 opcodes (including aliases and illegal opcodes), these cannot be used as variable or label names @@ -27,21 +29,22 @@ class AssemblyProgram(val name: String) { // add "-Wlong-branch" to see warnings about conversion of branch instructions to jumps val command = mutableListOf("64tass", "--ascii", "--case-sensitive", "--long-branch", "-Wall", "-Wno-strict-bool", "-Wno-shadow", "-Werror", "-Wno-error=long-branch", - "--dump-labels", "--vice-labels", "-l", viceMonListFile, "--no-monitor") + "--dump-labels", "--vice-labels", "-l", viceMonListFile.toString(), "--no-monitor") val outFile = when(options.output) { OutputType.PRG -> { command.add("--cbm-prg") println("\nCreating C-64 prg.") - "$name.prg" + prgFile } OutputType.RAW -> { command.add("--nostart") println("\nCreating raw binary.") - "$name.bin" + binFile } } - command.addAll(listOf("--output", outFile, assemblyFile)) + command.addAll(listOf("--output", outFile.toString(), assemblyFile.toString())) + println("ASM COMMAND: $command") // TODO val proc = ProcessBuilder(command).inheritIO().start() val result = proc.waitFor() @@ -57,7 +60,7 @@ class AssemblyProgram(val name: String) { // builds list of breakpoints, appends to monitor list file val breakpoints = mutableListOf() val pattern = Regex("""al (\w+) \S+_prog8_breakpoint_\d+.?""") // gather breakpoints by the source label that"s generated for them - for(line in File(viceMonListFile).readLines()) { + for(line in viceMonListFile.toFile().readLines()) { val match = pattern.matchEntire(line) if(match!=null) breakpoints.add("break \$" + match.groupValues[1]) @@ -66,6 +69,6 @@ class AssemblyProgram(val name: String) { breakpoints.add(0, "; vice monitor breakpoint list now follows") breakpoints.add(1, "; $num breakpoints have been defined") breakpoints.add(2, "del") - File(viceMonListFile).appendText(breakpoints.joinToString("\n")+"\n") + viceMonListFile.toFile().appendText(breakpoints.joinToString("\n")+"\n") } } diff --git a/compiler/src/prog8/compiler/target/c64/codegen/AsmGen.kt b/compiler/src/prog8/compiler/target/c64/codegen/AsmGen.kt index a95130c90..76ea1f304 100644 --- a/compiler/src/prog8/compiler/target/c64/codegen/AsmGen.kt +++ b/compiler/src/prog8/compiler/target/c64/codegen/AsmGen.kt @@ -14,8 +14,8 @@ import prog8.compiler.target.c64.MachineDefinition.ESTACK_LO_HEX import prog8.compiler.target.c64.Petscii import prog8.functions.BuiltinFunctions import prog8.functions.FunctionSignature -import java.io.File import java.math.RoundingMode +import java.nio.file.Path import java.util.* import kotlin.math.absoluteValue @@ -25,7 +25,8 @@ internal class AssemblyError(msg: String) : RuntimeException(msg) internal class AsmGen(val program: Program, val options: CompilationOptions, - val zeropage: Zeropage) { + val zeropage: Zeropage, + val outputDir: Path) { private val assemblyLines = mutableListOf() private val globalFloatConsts = mutableMapOf() // all float values in the entire program (value -> varname) @@ -62,11 +63,12 @@ internal class AsmGen(val program: Program, } } - File("${program.name}.asm").printWriter().use { + val outputFile = outputDir.resolve("${program.name}.asm").toFile() + outputFile.printWriter().use { for (line in assemblyLines) { it.println(line) } } - return AssemblyProgram(program.name) + return AssemblyProgram(program.name, outputDir) } private fun header() { diff --git a/compiler/test/UnitTests.kt b/compiler/test/UnitTests.kt index 6125a0eff..5a14d83b0 100644 --- a/compiler/test/UnitTests.kt +++ b/compiler/test/UnitTests.kt @@ -19,7 +19,6 @@ import prog8.vm.RuntimeValueNumeric import java.io.CharConversionException import kotlin.test.* - @TestInstance(TestInstance.Lifecycle.PER_CLASS) class TestCompiler { @Test @@ -54,7 +53,6 @@ class TestCompiler { assertFailsWith { 65536L.toHex() } } - @Test fun testFloatToMflpt5() { assertThat(Mflpt5.fromNumber(0), equalTo(Mflpt5(0x00, 0x00, 0x00, 0x00, 0x00))) diff --git a/docs/source/building.rst b/docs/source/building.rst index d1de6909f..faff28a29 100644 --- a/docs/source/building.rst +++ b/docs/source/building.rst @@ -94,6 +94,13 @@ Start the compiler with the ``-watch`` argument to enable this. It will compile your program and then instead of exiting, it waits for any changes in the module source files. As soon as a change happens, the program gets compiled again. +Other options +^^^^^^^^^^^^^ +There's an option to specify the output directory if you're not happy with the default (the current working directory). +Also it is possible to specify more than one main module to compile: +this can be useful to quickly recompile multiple separate programs quickly. +(compiling in a batch like this is a lot faster than invoking the compiler again once per main file) + Module source code files ------------------------