winnotes-20041207
[openafs.git] / README.DEVEL
index 4f85da5..ea5dfcb 100644 (file)
@@ -16,3 +16,63 @@ in one shot.)
 Try to test builds using gmake -j # MAKE="gmake -j #", it seems like a good
 way to find missing or order-dependent dependency rules. (Is there a better
 way to do this?)
+
+-- Prototyping and Style --
+Prototypes for all source files in a given dir DDD should be placed
+int the file DDD/DDD_prototypes.h. All externally used (either API
+or used by other source files) routines and variables should be
+prototyped in this file.
+
+The prototypes should be a full prototype, with argument and return
+types. (Should not generate a warning with gcc -Wstrict-prototypes.)
+
+Format of the prototype files should look like:
+
+       Standard Copyright Notice
+
+       #ifndef AFS_SRC_DDD_PROTO_H
+       #define AFS_SRC_DDD_PROTO_H
+       
+       /* filename.c */
+       prototypes
+
+       /* filename.c */
+       prototypes
+
+       #endif /* AFS_SRC_DDD_PROTO_H */
+
+In most of the existing prototypes, the define is DDD_PROTOTYPES_H, which is
+probably ok as well.
+
+The declaration of the routines should be done in ANSI style. If at some
+later date, it is determined that prototypes don't work on some platform 
+properly, we can use ansi2knr during the compile.
+
+       rettype routine(argtype arg)
+       {
+
+       }
+
+All routines should have a return type specified, void if nothing returned,
+and should have (void) if no arguments are taken.
+
+Header files should not contain macros or other definitions unless they
+are used across multiple source files.
+
+All routines should be declared static if they are not used outside that 
+source file.
+
+Compiles on gcc-using machines should strive to handle using
+-Wstrict-prototypes -Werror. (this may take a while)
+
+Routines shall be defined in source prior to use if possible, and 
+prototyped in block at top of file if static.
+
+If you make a routine or variable static, be sure and remove it from
+the AIX .exp files.
+
+Suggested compiler flags:
+       gcc: -Wall -Wstrict-prototypes
+       Solaris Workshop CC: -fd -v
+               (You might not want the -fd, it isn't really useful, just complains about the
+               K&R style functions, but -v gives useful info.)