[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18417] branches/blender2.5/blender/source /blender/makesrna: RNA
Brecht Van Lommel
brecht at blender.org
Thu Jan 8 14:57:29 CET 2009
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. @@
More information about the Bf-blender-cvs
mailing list