Browse Source

Add sCons dependency for editor_icons.cpp, so it's only re-generated when there're icon changes

marynate 11 years ago
parent
commit
d2770ac8a6
2 changed files with 24 additions and 12 deletions
  1. 3 3
      tools/editor/SCsub
  2. 21 9
      tools/editor/icons/SCsub

+ 3 - 3
tools/editor/SCsub

@@ -48,11 +48,11 @@ if (env["tools"]=="yes"):
 	env.Command("#tools/editor/doc_data_compressed.h","#doc/base/classes.xml",make_doc_header)
 
 	#make_doc_header(env.File("#tools/editor/doc_data_raw.h").srcnode().abspath,env.File("#doc/base/classes.xml").srcnode().abspath,env)
-
-	SConscript('icons/SCsub');
+	
 	env.add_source_files(env.tool_sources,"*.cpp")
-
+	
 	Export('env')
+	SConscript('icons/SCsub');	
 	SConscript('plugins/SCsub');
 	SConscript('fileserver/SCsub');
 	SConscript('io_plugins/SCsub');

+ 21 - 9
tools/editor/icons/SCsub

@@ -1,18 +1,21 @@
 Import('env')
 
-def make_editor_icons():
+def make_editor_icons_action(target, source, env):
 
-	import glob	
-	
-	pixmaps = glob.glob("*.png")
+	import os
+
+	dst = target[0].srcnode().abspath
+	pixmaps = source
 	
-	f = open("../editor_icons.cpp","wb")
+	f = open(dst,"wb")
 	f.write("#include \"editor_icons.h\"\n\n")
 	f.write("#include \"scene/resources/theme.h\"\n\n")
 
 	for x in pixmaps:
-		
-		var_str=x[:-4]+"_png";
+	
+		x=str(x)
+		var_str=os.path.basename(x)[:-4]+"_png";
+		#print(var_str)
 		
 		f.write("static const unsigned char "+ var_str +"[]={\n");
 		
@@ -37,7 +40,8 @@ def make_editor_icons():
 	f.write("void editor_register_icons(Ref<Theme> p_theme) {\n\n")
 
 	for x in pixmaps:
-
+	
+		x=os.path.basename(str(x))
 		type=x[5:-4].title().replace("_","");
 		var_str=x[:-4]+"_png";
 		f.write("\tp_theme->set_icon(\""+type+"\",\"EditorIcons\",make_icon("+var_str+"));\n");
@@ -45,4 +49,12 @@ def make_editor_icons():
 	f.write("\n\n}\n\n");
 	f.close()
 
-make_editor_icons()
+make_editor_icons_builder = Builder(action=make_editor_icons_action,
+							suffix = '.cpp',
+							src_suffix = '.png')
+env['BUILDERS']['MakeEditorIconsBuilder']=make_editor_icons_builder
+env.Alias('editor_icons',[env.MakeEditorIconsBuilder('#tools/editor/editor_icons.cpp',Glob("*.png"))])
+
+env.tool_sources.append("#tools/editor/editor_icons.cpp")
+Export('env')
+