210 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
		
		
			
		
	
	
			210 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
|  | class RunTests | ||
|  | { | ||
|  |    static var baseDir:String; | ||
|  |    static var errors = new Array<String>(); | ||
|  |    static var cppAst:Array<String> = []; | ||
|  |    static var sysArgs = new Array<String>(); | ||
|  |    static var binDir = ""; | ||
|  |    static var ext = ""; | ||
|  |    static var m64 = true; | ||
|  |    static var m64Def = "HXCPP_M64"; | ||
|  |    static var windows = false; | ||
|  |    static var sep = "/"; | ||
|  | 
 | ||
|  |    public static function cffi() | ||
|  |    { | ||
|  |       setDir("cffi/project"); | ||
|  | 
 | ||
|  |       command("haxelib", ["run", "hxcpp", "build.xml", "-debug", '-D$m64Def']); | ||
|  | 
 | ||
|  |       setDir("cffi"); | ||
|  |       command("haxe", ["compile.hxml", "-debug"] ); | ||
|  |       command("haxe", ["compile-utf8.hxml", "-debug"] ); | ||
|  |       command("haxe", ["compile-neko.hxml", "-debug"] ); | ||
|  | 
 | ||
|  |       copy('project/ndll/$binDir/prime$ext', 'bin/neko/prime.ndll'); | ||
|  | 
 | ||
|  |       setDir("cffi"); | ||
|  |       command("bin" + sep + "cpp" + sep + "TestMain-debug",[]); | ||
|  |       command("bin" + sep + "cpp-utf8" + sep + "TestMain-debug",[]); | ||
|  | 
 | ||
|  |       if (m64Def=="HXCPP_M64") | ||
|  |       { | ||
|  |          setDir("cffi/bin/neko"); | ||
|  |          command("neko", ["TestMain.n"]); | ||
|  |       } | ||
|  |    } | ||
|  | 
 | ||
|  |    public static function runHaxe() | ||
|  |    { | ||
|  |       setDir("haxe"); | ||
|  |       command("haxe", ["compile.hxml", "-debug", "-D", m64Def].concat(cppAst) ); | ||
|  |       command("bin" + sep + "TestMain-debug",[]); | ||
|  |    } | ||
|  | 
 | ||
|  |    public static function runTelemetry() | ||
|  |    { | ||
|  |       setDir("telemetry"); | ||
|  | 
 | ||
|  |       // Telemetry should work in debug and non-debug modes | ||
|  |       // TODO: do we need m64Def? | ||
|  |       command("haxe", ["compile.hxml", "-debug"].concat(cppAst) ); | ||
|  |       command("bin" + sep + "TestMain-debug",[]); | ||
|  | 
 | ||
|  |       command("haxe", ["compile.hxml"].concat(cppAst) ); | ||
|  |       command("bin" + sep + "TestMain",[]); | ||
|  | 
 | ||
|  |    } | ||
|  | 
 | ||
|  | 
 | ||
|  |    public static function debugger() | ||
|  |    { | ||
|  |       setDir("debugger"); | ||
|  | 
 | ||
|  |       command("haxe", ["compile.hxml"] ); | ||
|  |       command("bin" + sep + "App-debug",[]); | ||
|  |    } | ||
|  | 
 | ||
|  |    public static function opMatrix() | ||
|  |    { | ||
|  |       setDir("opMatrix"); | ||
|  | 
 | ||
|  |       command("haxe", ["--run","MkOps.hx"] ); | ||
|  |    } | ||
|  | 
 | ||
|  | 
 | ||
|  |    public static function cppia() | ||
|  |    { | ||
|  |       setDir("cppia"); | ||
|  | 
 | ||
|  |       command("haxe", ["compile-host.hxml"] ); | ||
|  |       command("haxe", ["compile-client.hxml"] ); | ||
|  |       command("bin" + sep + "CppiaHost",[ "bin" + sep + "client.cppia" ]); | ||
|  |       command("bin" + sep + "CppiaHost",[ "bin" + sep + "client.cppia", "-jit" ]); | ||
|  |    } | ||
|  | 
 | ||
|  |    public static function native() | ||
|  |    { | ||
|  |       setDir("native"); | ||
|  | 
 | ||
|  |       command("haxe", ["compile.hxml"] ); | ||
|  |       command("bin" + sep + "Native",[]); | ||
|  |    } | ||
|  | 
 | ||
|  |    public static function std32() | ||
|  |    { | ||
|  |       setDir("std"); | ||
|  | 
 | ||
|  |       command("haxe", ["compile32.hxml"] ); | ||
|  |       command("cpp32"+sep+"Test",[]); | ||
|  |    } | ||
|  | 
 | ||
|  |    public static function std64() | ||
|  |    { | ||
|  |       setDir("std"); | ||
|  | 
 | ||
|  |       command("haxe", ["compile64.hxml"] ); | ||
|  |       command("cpp64"+sep+"Test",[]); | ||
|  |    } | ||
|  | 
 | ||
|  | 
 | ||
|  |    public static function setDir(name:String) | ||
|  |    { | ||
|  |       Sys.println("Enter " + baseDir + "/" + name); | ||
|  |       Sys.setCwd(baseDir + "/" + name); | ||
|  |    } | ||
|  | 
 | ||
|  |    public static function command(prog:String, args:Array<String>) | ||
|  |    { | ||
|  |       Sys.println( prog + " " + args.join(" ") ); | ||
|  |       var code = Sys.command(prog,args); | ||
|  |       if (code!=0) | ||
|  |          throw( "failed:" + prog + " " + args.join(" ") ); | ||
|  |    } | ||
|  | 
 | ||
|  |    public static function run(name:String, func:Void->Void) | ||
|  |    { | ||
|  |       var args = sysArgs; | ||
|  |       if (args.length>0 && args.indexOf(name)<0) | ||
|  |       { | ||
|  |          Sys.println("Skip test " + name); | ||
|  |          return; | ||
|  |       } | ||
|  | 
 | ||
|  |       try | ||
|  |       { | ||
|  |          func(); | ||
|  |       } | ||
|  |       catch(e:Dynamic) | ||
|  |       { | ||
|  |          trace('Error running $name : $e'); | ||
|  |          errors.push('Error running $name : $e'); | ||
|  |       } | ||
|  |    } | ||
|  | 
 | ||
|  |    public static function copy(from:String, to:String) | ||
|  |    { | ||
|  |       if (windows) | ||
|  |       { | ||
|  |          from = from.split("/").join("\\"); | ||
|  |          to = to.split("/").join("\\"); | ||
|  |       } | ||
|  |       command( windows ? "copy" : "cp", [ from, to ] ); | ||
|  |    } | ||
|  | 
 | ||
|  |    public static function main() | ||
|  |    { | ||
|  |       var systemName = Sys.systemName().toLowerCase(); | ||
|  |       switch(systemName.substr(0,3) ) | ||
|  |       { | ||
|  |          case "mac": | ||
|  |             m64 = true; | ||
|  |             binDir = "Mac64"; | ||
|  |             ext = ".dylib"; | ||
|  |          case "lin": | ||
|  |             m64 = true; | ||
|  |             binDir = "Linux64"; | ||
|  |             ext = ".dso"; | ||
|  |          case "win": | ||
|  |             m64 = true; | ||
|  |             binDir = "Windows64"; | ||
|  |             ext = ".dll"; | ||
|  |             windows = true; | ||
|  |             sep = "\\"; | ||
|  |          default: | ||
|  |             throw 'Unknown system "$systemName"'; | ||
|  |       } | ||
|  | 
 | ||
|  |       sysArgs = Sys.args(); | ||
|  |       if (sysArgs.remove("-cppast")) | ||
|  |          cppAst = ["-D", "cppast"]; | ||
|  | 
 | ||
|  |       m64Def = m64 ? "HXCPP_M64" : "HXCPP_M32"; | ||
|  |              | ||
|  |       baseDir = Sys.getCwd(); | ||
|  | 
 | ||
|  |       run("cppia", cppia); | ||
|  |       run("cffi", cffi); | ||
|  |       //run("opMatrix", opMatrix); | ||
|  |       run("haxe", runHaxe); | ||
|  |       run("telemetry", runTelemetry); | ||
|  |       run("std32", std32); | ||
|  |       run("std64", std64); | ||
|  |       run("native", native); | ||
|  |       run("debugger", debugger); | ||
|  | 
 | ||
|  |       Sys.println(""); | ||
|  | 
 | ||
|  |       if (errors.length==0) | ||
|  |       { | ||
|  |          Sys.println("All good!"); | ||
|  |          Sys.exit(0); | ||
|  |       } | ||
|  |       Sys.println("There were errors:"); | ||
|  |       for(error in errors) | ||
|  |          Sys.println(error); | ||
|  |       Sys.exit(-1); | ||
|  |    } | ||
|  | } | ||
|  | 
 |