AVRSack/AVRsack/ASBuilder.swift

69 lines
2.3 KiB
Swift
Raw Normal View History

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"])
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()
}
}