From 9512a3a9102544b4f97156c19d0a4b4f50c7a716 Mon Sep 17 00:00:00 2001 From: Matthias Neeracher Date: Mon, 15 Dec 2014 02:49:33 +0100 Subject: [PATCH] Use preferences in build --- AVRsack/ASApplication.swift | 1 + AVRsack/ASBuilder.swift | 20 ++++++++++++++------ AVRsack/Base.lproj/ASPreferences.xib | 2 +- AVRsack/Base.lproj/MainMenu.xib | 3 ++- AVRsack/BuildProject | 16 +++++++++------- 5 files changed, 27 insertions(+), 15 deletions(-) diff --git a/AVRsack/ASApplication.swift b/AVRsack/ASApplication.swift index 1ac5a54..ba80cae 100644 --- a/AVRsack/ASApplication.swift +++ b/AVRsack/ASApplication.swift @@ -12,6 +12,7 @@ import Cocoa class ASApplication: NSObject, NSApplicationDelegate { @IBOutlet weak var themeMenu : NSMenu! @IBOutlet weak var keyboardMenu : NSMenu! + @IBOutlet weak var preferences : ASPreferences! func applicationWillFinishLaunching(notification: NSNotification) { // diff --git a/AVRsack/ASBuilder.swift b/AVRsack/ASBuilder.swift index 1b05da3..3eaede6 100644 --- a/AVRsack/ASBuilder.swift +++ b/AVRsack/ASBuilder.swift @@ -48,6 +48,7 @@ class ASBuilder { } func buildProject(board: String, files: ASFileTree) { + let toolChain = (NSApplication.sharedApplication().delegate as ASApplication).preferences.toolchainPath task = NSTask() task!.currentDirectoryPath = dir.path! task!.launchPath = NSBundle.mainBundle().pathForResource("BuildProject", ofType: "")! @@ -78,6 +79,7 @@ class ASBuilder { NSLog("Unable to find core %s\n", boardProp["build.core"]!) return } + args.append("toolchain="+toolChain) args.append("project="+dir.lastPathComponent) args.append("board="+board) args.append("mcu="+boardProp["build.mcu"]!) @@ -96,9 +98,10 @@ class ASBuilder { } func uploadProject(board: String, programmer: String, port: String) { + let toolChain = (NSApplication.sharedApplication().delegate as ASApplication).preferences.toolchainPath task = NSTask() task!.currentDirectoryPath = dir.path! - task!.launchPath = "/usr/local/CrossPack-AVR/bin/avrdude" + task!.launchPath = toolChain+"/bin/avrdude" let fileManager = NSFileManager.defaultManager() let logURL = dir.URLByAppendingPathComponent("build/upload.log") @@ -112,8 +115,10 @@ class ASBuilder { let progProp = ASHardware.instance().programmers[programmer] let proto = boardProp["upload.protocol"] ?? progProp?["protocol"] let speed = boardProp["upload.speed"] ?? progProp?["speed"] - var args = ["-v", "-v", "-v", - "-C", "/usr/local/CrossPack-AVR/etc/avrdude.conf", + let verbosity = NSUserDefaults.standardUserDefaults().integerForKey("UploadVerbosity") + var args = Array(count: verbosity, repeatedValue: "-v") + args += [ + "-C", toolChain+"/etc/avrdude.conf", "-p", boardProp["build.mcu"]!, "-c", proto!, "-P", port, "-U", "flash:w:build/"+board+"/"+dir.lastPathComponent+".hex:i"] if speed != nil { @@ -127,9 +132,10 @@ class ASBuilder { } func disassembleProject(board: String) { + let toolChain = (NSApplication.sharedApplication().delegate as ASApplication).preferences.toolchainPath task = NSTask() task!.currentDirectoryPath = dir.path! - task!.launchPath = "/usr/local/CrossPack-AVR/bin/avr-objdump" + task!.launchPath = toolChain+"/bin/avr-objdump" let fileManager = NSFileManager.defaultManager() let logURL = dir.URLByAppendingPathComponent("build/disasm.log") @@ -138,8 +144,10 @@ class ASBuilder { task!.standardOutput = logOut task!.standardError = logOut - var args = ["-d", "-S", "build/"+board+"/"+dir.lastPathComponent+".elf"] - let cmdLine = task!.launchPath+" "+(args as NSArray).componentsJoinedByString(" ")+"\n" + let showSource = NSUserDefaults.standardUserDefaults().boolForKey("ShowSourceInDisassembly") + var args = showSource ? ["-S"] : [] + args += ["-d", "build/"+board+"/"+dir.lastPathComponent+".elf"] + let cmdLine = task!.launchPath+" "+(args as NSArray).componentsJoinedByString(" ")+"\n" logOut.writeData(cmdLine.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)!) task!.arguments = args; task!.launch() diff --git a/AVRsack/Base.lproj/ASPreferences.xib b/AVRsack/Base.lproj/ASPreferences.xib index 7daf5e4..730230c 100644 --- a/AVRsack/Base.lproj/ASPreferences.xib +++ b/AVRsack/Base.lproj/ASPreferences.xib @@ -28,7 +28,7 @@ - + diff --git a/AVRsack/Base.lproj/MainMenu.xib b/AVRsack/Base.lproj/MainMenu.xib index cd597d4..c717916 100644 --- a/AVRsack/Base.lproj/MainMenu.xib +++ b/AVRsack/Base.lproj/MainMenu.xib @@ -6,7 +6,7 @@ - + @@ -14,6 +14,7 @@ + diff --git a/AVRsack/BuildProject b/AVRsack/BuildProject index 89ff8f7..2469917 100755 --- a/AVRsack/BuildProject +++ b/AVRsack/BuildProject @@ -127,13 +127,15 @@ File.open("Rakefile", 'w') do |rakeFile| SOURCES = Rake::FileList.new(ARGV).select {|f| f =~ /\.(c|cpp|cp|cxx|S)$/} INCLUDES= (CORES+LIBRARIES).map {|l| " +\n \" -I'#{l}'\""}.join('') rakeFile.print <