Revision: 18417 http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18417 Author: blendix Date: 2009-01-08 14:57:29 +0100 (Thu, 08 Jan 2009)
Log Message: ----------- RNA * The generated code is now split into multiple files instead of a single big one. Scons, make and cmake are updated to deal with this. Modified Paths: -------------- branches/blender2.5/blender/source/blender/makesrna/RNA_types.h branches/blender2.5/blender/source/blender/makesrna/intern/CMakeLists.txt branches/blender2.5/blender/source/blender/makesrna/intern/Makefile branches/blender2.5/blender/source/blender/makesrna/intern/SConscript branches/blender2.5/blender/source/blender/makesrna/intern/makesrna.c branches/blender2.5/blender/source/blender/makesrna/intern/rna_ID.c branches/blender2.5/blender/source/blender/makesrna/intern/rna_internal.h branches/blender2.5/blender/source/blender/makesrna/intern/rna_lattice.c branches/blender2.5/blender/source/blender/makesrna/intern/rna_meta.c branches/blender2.5/blender/source/blender/makesrna/intern/rna_modifier.c branches/blender2.5/blender/source/blender/makesrna/intern/rna_object.c branches/blender2.5/blender/source/blender/makesrna/intern/rna_rna.c branches/blender2.5/blender/source/blender/makesrna/intern/rna_scene.c branches/blender2.5/blender/source/blender/makesrna/intern/rna_text.c Modified: branches/blender2.5/blender/source/blender/makesrna/RNA_types.h =================================================================== --- branches/blender2.5/blender/source/blender/makesrna/RNA_types.h 2009-01-08 13:54:39 UTC (rev 18416) +++ branches/blender2.5/blender/source/blender/makesrna/RNA_types.h 2009-01-08 13:57:29 UTC (rev 18417) @@ -132,7 +132,8 @@ STRUCT_ID = 1, /* internal flags */ - STRUCT_RUNTIME = 2 + STRUCT_RUNTIME = 2, + STRUCT_GENERATED = 4 } StructFlag; typedef struct StructRNA StructRNA; Modified: branches/blender2.5/blender/source/blender/makesrna/intern/CMakeLists.txt =================================================================== --- branches/blender2.5/blender/source/blender/makesrna/intern/CMakeLists.txt 2009-01-08 13:54:39 UTC (rev 18416) +++ branches/blender2.5/blender/source/blender/makesrna/intern/CMakeLists.txt 2009-01-08 13:57:29 UTC (rev 18417) @@ -24,8 +24,7 @@ # # ***** END GPL LICENSE BLOCK ***** -SET(SRC - makesrna.c +SET(DEFSRC rna_action.c rna_actuator.c rna_armature.c @@ -36,7 +35,6 @@ rna_constraint.c rna_controller.c rna_curve.c - rna_define.c rna_fluidsim.c rna_group.c rna_ID.c @@ -70,7 +68,58 @@ rna_userdef.c rna_vfont.c rna_wm.c - rna_world.c + rna_world.c) + +SET(GENSRC + rna_action_gen.c + rna_actuator_gen.c + rna_armature_gen.c + rna_brush_gen.c + rna_camera_gen.c + rna_cloth_gen.c + rna_color_gen.c + rna_constraint_gen.c + rna_controller_gen.c + rna_curve_gen.c + rna_fluidsim_gen.c + rna_group_gen.c + rna_ID_gen.c + rna_image_gen.c + rna_ipo_gen.c + rna_key_gen.c + rna_lamp_gen.c + rna_lattice_gen.c + rna_main_gen.c + rna_material_gen.c + rna_mesh_gen.c + rna_meta_gen.c + rna_modifier_gen.c + rna_nodetree_gen.c + rna_object_gen.c + rna_object_force_gen.c + rna_packedfile_gen.c + rna_particle_gen.c + rna_pose_gen.c + rna_property_gen.c + rna_radio_gen.c + rna_rna_gen.c + rna_scene_gen.c + rna_screen_gen.c + rna_scriptlink_gen.c + rna_sensor_gen.c + rna_sequence_gen.c + rna_sound_gen.c + rna_text_gen.c + rna_texture_gen.c + rna_userdef_gen.c + rna_vfont_gen.c + rna_wm_gen.c + rna_world_gen.c) + +SET(SRC + makesrna.c + rna_define.c + ${DEFSRC} ../../../../intern/guardedalloc/intern/mallocn.c ../../../../intern/guardedalloc/intern/mmap_win.c) @@ -81,15 +130,16 @@ ADD_EXECUTABLE(makesrna ${SRC} ${INC_FILES}) TARGET_LINK_LIBRARIES(makesrna bf_dna) -# Output rna.c +# Output rna_*_gen.c ADD_CUSTOM_COMMAND( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/rna.c - COMMAND ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/makesrna ${CMAKE_CURRENT_BINARY_DIR}/rna.c ${CMAKE_SOURCE_DIR}/source/blender/makesrna/ + OUTPUT ${GENSRC} + COMMAND ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/makesrna ${CMAKE_CURRENT_BINARY_DIR}/ ${CMAKE_SOURCE_DIR}/source/blender/makesrna/ DEPENDS makesrna ) # Build bf_rna -SET(SRC rna_access.c rna_dependency.c rna.c) +SET(SRC rna_access.c rna_dependency.c ${GENSRC}) BLENDERLIB(bf_rna "${SRC}" "${INC}") MESSAGE(STATUS "Configuring makesrna") + Modified: branches/blender2.5/blender/source/blender/makesrna/intern/Makefile =================================================================== --- branches/blender2.5/blender/source/blender/makesrna/intern/Makefile 2009-01-08 13:54:39 UTC (rev 18416) +++ branches/blender2.5/blender/source/blender/makesrna/intern/Makefile 2009-01-08 13:57:29 UTC (rev 18417) @@ -24,8 +24,18 @@ LIBNAME = rna DIR = $(OCGDIR)/blender/makesrna -CSRCS = RNA.c $(wildcard rna_*.c) +ALLRNA = $(wildcard rna_*.c) +DEFRNA = $(filter-out %rna_define.c, $(filter-out %rna_dependency.c, $(filter-out %rna_access.c, $(ALLRNA)))) + +GENSRCS = $(patsubst rna_%.c, rna_%_gen.c, $(DEFRNA)) +GENTARGET = $(patsubst %.c, $(DIR)/$(DEBUG_DIR)%.c, $(GENSRCS)) + +MAKESRCS = $(DEFRNA) makesrna.c rna_define.c +MAKEOBJS = $(patsubst %.c, $(DIR)/$(DEBUG_DIR)%.o, $(MAKESRCS)) + +CSRCS = $(GENSRCS) rna_access.c rna_dependency.c + include nan_compile.mk CFLAGS += $(LEVEL_1_C_WARNINGS) @@ -53,8 +63,8 @@ endif clean:: - @$(RM) $(DIR)/makesrna* $(DIR)/RNA.c - @$(RM) $(DIR)/debug/makesrna* $(DIR)/debug/RNA.c + @$(RM) $(DIR)/makesrna* $(DIR)/rna* + @$(RM) $(DIR)/debug/makesrna* $(DIR)/debug/rna* # TODO include right .mk for ldflags @@ -62,19 +72,20 @@ # is done quite intentionally. If there is a bug in that lib, it needs # to be fixed by the module maintainer. -RNAOBJS = $(filter-out %rna_dependency.o, $(filter-out %rna_access.o, $(filter-out %RNA.o, $(OBJS)))) - -$(DIR)/$(DEBUG_DIR)makesrna: $(RNAOBJS) $(DIR)/$(DEBUG_DIR)makesrna.o $(OCGDIR)/blender/makesdna/$(DEBUG_DIR)libdna.a $(NAN_GUARDEDALLOC)/lib/libguardedalloc.a +$(DIR)/$(DEBUG_DIR)makesrna: $(MAKEOBJS) $(OCGDIR)/blender/makesdna/$(DEBUG_DIR)libdna.a $(NAN_GUARDEDALLOC)/lib/libguardedalloc.a $(CC) $(LDFLAGS) -o $@ $(WINLIBS) $^ -$(DIR)/$(DEBUG_DIR)RNA.c: $(DIR)/$(DEBUG_DIR)makesrna +$(DIR)/$(DEBUG_DIR)rna_phony_gen.c: $(DIR)/$(DEBUG_DIR)makesrna ifeq ($(OS),windows) $(SRCHOME)/tools/cygwin/cl_wrapper.pl - $(DIR)/$(DEBUG_DIR)makesrna \ - $(DIR)/$(DEBUG_DIR)RNA.c + $(DIR)/$(DEBUG_DIR) else - $(DIR)/$(DEBUG_DIR)makesrna $(DIR)/$(DEBUG_DIR)RNA.c + $(DIR)/$(DEBUG_DIR)makesrna $(DIR)/$(DEBUG_DIR) endif + @touch $@ +$(GENTARGET): $(DIR)/$(DEBUG_DIR)rna_phony_gen.c + $(DIR)/$(DEBUG_DIR)makesrna.o: makesrna.c $(wildcard rna_*.c) $(CC) -c $(CFLAGS) $(CPPFLAGS) makesrna.c -o $@ Modified: branches/blender2.5/blender/source/blender/makesrna/intern/SConscript =================================================================== --- branches/blender2.5/blender/source/blender/makesrna/intern/SConscript 2009-01-08 13:54:39 UTC (rev 18416) +++ branches/blender2.5/blender/source/blender/makesrna/intern/SConscript 2009-01-08 13:57:29 UTC (rev 18417) @@ -14,6 +14,12 @@ source_files.remove('rna_access.c') source_files.remove('rna_dependency.c') +generated_files = source_files[:] +generated_files.remove('rna_define.c') +generated_files.remove('makesrna.c') + +generated_files = [filename[:-2] + '_gen.c' for filename in generated_files] + makesrna_tool = env.Clone() rna = env.Clone() makesrna_tool.Append(CCFLAGS = '-DBASE_HEADER="\\"source/blender/makesrna/\\"" ') @@ -59,11 +65,19 @@ makesrna = makesrna_tool.Program (target = targetpath, source = source_files, LIBS=['bf_guardedalloc', 'bf_dna']) rna_dict = rna.Dictionary() -rna.Depends ('rna.c', makesrna) +rna.Depends (generated_files, makesrna) + +# this seems bad, how to retrieve it from scons? +build_dir = root_build_dir + '/source/blender/makesrna/intern/' + if env['OURPLATFORM'] != 'linuxcross': - rna.Command ('rna.c', '', root_build_dir+os.sep+"makesrna $TARGET") + rna.Command (generated_files, '', root_build_dir+os.sep+"makesrna " + build_dir) else: - rna.Command ('rna.c', '', root_build_dir+os.sep+"makesrna.exe $TARGET") -obj = ['intern/rna.c', 'intern/rna_access.c', 'intern/rna_dependency.c'] + rna.Command (generated_files, '', root_build_dir+os.sep+"makesrna.exe " + build_dir) + +obj = ['intern/rna_access.c', 'intern/rna_dependency.c'] +for generated_file in generated_files: + obj += ['intern/' + generated_file] + Return ('obj') Modified: branches/blender2.5/blender/source/blender/makesrna/intern/makesrna.c =================================================================== --- branches/blender2.5/blender/source/blender/makesrna/intern/makesrna.c 2009-01-08 13:54:39 UTC (rev 18416) +++ branches/blender2.5/blender/source/blender/makesrna/intern/makesrna.c 2009-01-08 13:57:29 UTC (rev 18417) @@ -598,18 +598,6 @@ } } -static void rna_auto_functions(FILE *f) -{ - StructDefRNA *ds; - PropertyDefRNA *dp; - - fprintf(f, "/* Autogenerated Functions */\n\n"); - - for(ds=DefRNA.structs.first; ds; ds=ds->next) - for(dp=ds->properties.first; dp; dp=dp->next) - rna_def_property_funcs(f, dp); -} - static void rna_sort(BlenderRNA *brna) { StructRNA *srna; @@ -668,9 +656,14 @@ StructRNA *srna; for(srna=brna->structs.first; srna; srna=srna->next) - fprintf(f, "StructRNA RNA_%s;\n", srna->identifier); + fprintf(f, "extern StructRNA RNA_%s;\n", srna->identifier); fprintf(f, "\n"); +} +static void rna_generate_blender(BlenderRNA *brna, FILE *f) +{ + StructRNA *srna; + fprintf(f, "BlenderRNA BLENDER_RNA = {"); srna= brna->structs.first; @@ -957,18 +950,15 @@ {"rna_world.c", RNA_def_world}, {NULL, NULL}}; -static int rna_preprocess(char *basedirectory, FILE *f) +static void rna_generate(BlenderRNA *brna, char *basedirectory, FILE *f, char *filename) { - BlenderRNA *brna; - StructRNA *srna; - int i, status; + StructDefRNA *ds; + PropertyDefRNA *dp; fprintf(f, "\n/* Automatically generated struct definitions for the Data API.\n" " Do not edit manually, changes will be overwritten */\n\n" "#define RNA_RUNTIME\n\n"); - brna= RNA_create(); - fprintf(f, "#include <float.h>\n"); fprintf(f, "#include <limits.h>\n"); fprintf(f, "#include <string.h>\n\n"); @@ -981,82 +971,119 @@ fprintf(f, "#include \"RNA_types.h\"\n"); fprintf(f, "#include \"rna_internal.h\"\n\n"); - /* this is ugly, but we cannot have c files compiled for both - * makesrna and blender with some build systems at the moment */ - fprintf(f, "#include \"rna_define.c\"\n\n"); + rna_generate_prototypes(brna, f); - for(i=0; PROCESS_ITEMS[i].filename; i++) - if(PROCESS_ITEMS[i].define) + fprintf(f, "#include \"%s\"\n\n", filename); + + fprintf(f, "/* Autogenerated Functions */\n\n"); + + for(ds=DefRNA.structs.first; ds; ds=ds->next) + if(!filename || ds->filename == filename) + for(dp=ds->properties.first; dp; dp=dp->next) + rna_def_property_funcs(f, dp); + + for(ds=DefRNA.structs.first; ds; ds=ds->next) + if(!filename || ds->filename == filename) + rna_generate_struct(brna, ds->srna, f); + + if(strcmp(filename, "rna_ID.c") == 0) { + /* this is ugly, but we cannot have c files compiled for both + * makesrna and blender with some build systems at the moment */ + fprintf(f, "#include \"rna_define.c\"\n\n"); + + rna_generate_blender(brna, f); + } +} + +static void make_bad_file(char *file) +{ + FILE *fp= fopen(file, "w"); + fprintf(fp, "ERROR! Cannot make correct RNA file, STUPID!\n"); + fclose(fp); +} + +static int rna_preprocess(char *basedirectory, char *outfile) +{ @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs