2014-11-28 13:18:53 +00:00
|
|
|
//
|
|
|
|
// ASBuilder.swift
|
|
|
|
// AVRsack
|
|
|
|
//
|
|
|
|
// Created by Matthias Neeracher on 11/24/14.
|
|
|
|
// Copyright © 2014 Aere Perennius. All rights reserved.
|
|
|
|
//
|
|
|
|
|
|
|
|
import Foundation
|
|
|
|
|
|
|
|
class ASBuilder {
|
2014-12-01 02:34:53 +00:00
|
|
|
var dir = NSURL()
|
|
|
|
var task : NSTask?
|
2014-11-28 13:18:53 +00:00
|
|
|
|
|
|
|
func setProjectURL(url: NSURL) {
|
|
|
|
dir = url.URLByDeletingLastPathComponent!.standardizedURL!
|
|
|
|
}
|
|
|
|
|
2014-12-01 02:34:53 +00:00
|
|
|
func stop() {
|
|
|
|
task?.terminate()
|
|
|
|
task?.waitUntilExit()
|
|
|
|
}
|
|
|
|
|
2014-11-28 13:18:53 +00:00
|
|
|
func buildProject(board: String, files: ASFileTree) {
|
|
|
|
task = NSTask()
|
|
|
|
task!.currentDirectoryPath = dir.path!
|
|
|
|
task!.launchPath = NSBundle.mainBundle().pathForResource("BuildProject", ofType: "")!
|
|
|
|
|
2014-12-01 02:34:53 +00:00
|
|
|
let fileManager = NSFileManager.defaultManager()
|
2014-11-28 13:18:53 +00:00
|
|
|
let libPath = (ASLibraries.instance().directories as NSArray).componentsJoinedByString(":")
|
|
|
|
var args = [NSString]()
|
|
|
|
let boardProp = ASHardware.instance().boards[board]!
|
2014-11-30 21:32:14 +00:00
|
|
|
var corePath = ""
|
|
|
|
var variantPath : NSString?
|
|
|
|
for hw in ASHardware.instance().directories {
|
|
|
|
corePath = hw+"/cores/"+boardProp["build.core"]
|
|
|
|
if fileManager.fileExistsAtPath(corePath) {
|
|
|
|
if boardProp["build.variant"] != "" {
|
|
|
|
variantPath = hw+"/variants/"+boardProp["build.variant"]
|
|
|
|
if !fileManager.fileExistsAtPath(corePath) {
|
|
|
|
variantPath = nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break
|
|
|
|
} else {
|
|
|
|
corePath = ""
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if corePath == "" {
|
|
|
|
NSLog("Unable to find core %s\n", boardProp["build.core"])
|
|
|
|
return
|
|
|
|
}
|
2014-12-01 00:20:48 +00:00
|
|
|
args.append("project="+dir.lastPathComponent)
|
2014-11-28 13:18:53 +00:00
|
|
|
args.append("board="+board)
|
|
|
|
args.append("mcu="+boardProp["build.mcu"])
|
|
|
|
args.append("f_cpu="+boardProp["build.f_cpu"])
|
2014-12-01 03:12:23 +00:00
|
|
|
args.append("max_size"+boardProp["upload.maximum_size"])
|
2014-11-28 13:18:53 +00:00
|
|
|
args.append("core="+boardProp["build.core"])
|
|
|
|
args.append("variant="+boardProp["build.variant"])
|
|
|
|
args.append("libs="+libPath)
|
2014-11-30 21:32:14 +00:00
|
|
|
args.append("core_path="+corePath)
|
|
|
|
if variantPath != nil {
|
|
|
|
args.append("variant_path="+variantPath!)
|
|
|
|
}
|
2014-11-28 13:18:53 +00:00
|
|
|
args.append("--")
|
2014-12-01 02:34:53 +00:00
|
|
|
args += files.paths
|
|
|
|
task!.arguments = args;
|
2014-11-28 13:18:53 +00:00
|
|
|
task!.launch()
|
|
|
|
}
|
|
|
|
}
|