浏览代码

detect installed libraries when compiling all samples

Nicolas Cannasse 6 年之前
父节点
当前提交
d42994fbf5
共有 1 个文件被更改,包括 25 次插入0 次删除
  1. 25 0
      samples/Generator.hx

+ 25 - 0
samples/Generator.hx

@@ -4,6 +4,16 @@ class Generator {
 		var errored = [];
 		Sys.setCwd("build");
 		var cwd = Sys.getCwd();
+		var installedLibs = new Map<String,Bool>();
+		
+		function hasLib( l ) {
+			if( installedLibs.exists(l) )
+				return installedLibs.get(l);
+			var ok = new sys.io.Process("haxelib",["path",l]).exitCode() == 0;
+			installedLibs.set(l,ok);
+			return ok;
+		}
+		
 		for( f in sys.FileSystem.readDirectory(".") ) {
 			if( !sys.FileSystem.isDirectory(f) )
 				continue;
@@ -15,6 +25,21 @@ class Generator {
 				if( f != name ) name = f+"/"+name;
 				var pass = false;
 				Sys.println(name);
+				
+				var hxml = sys.io.File.getContent(d);
+				var r_libs = ~/\-lib ([A-Za-z0-9_]+)/;
+				var skip = false;
+				while( r_libs.match(hxml) ) {
+					var lib = r_libs.matched(1);
+					if( !hasLib(lib) ) {
+						skip = true;
+						Sys.println(lib+" not found, skip");
+						break;
+					}
+					hxml = r_libs.matchedRight();
+				}
+				if( skip ) continue;
+				
 				if( StringTools.endsWith(name,"_hl") )
 					d = "-lib hlsdl "+d;
 				try {