X-Git-Url: https://git.openafs.org/?p=openafs.git;a=blobdiff_plain;f=README.DEVEL;h=b7b57a8c957c9bbb2262e33ba70dafcbf2065271;hp=e4354dd6ea2dadb87766c688830904e50c70d556;hb=7b0b710e03fc7030252470501cf16a2a8f2cdd40;hpb=a32bbb929bcb5988af419ea03640f2220c22c330 diff --git a/README.DEVEL b/README.DEVEL index e4354dd..b7b57a8 100644 --- a/README.DEVEL +++ b/README.DEVEL @@ -1,8 +1,14 @@ Notes on Coding Standards/Requirements for OpenAFS Source --------------------------------------------------------- -Do not use $< in any cross-platform dir as it requires a reasonable -make that is not available on all systems. +We have an official style. Please use it. If you have gnu indent 2.2.9 or +later you can reformat for this style with the following option: + +-npro -nbad -bap -nbc -bbo -br -ce -cdw -brs -ncdb -cp1 -ncs -di2 -ndj -nfc1 +-nfca -i4 -lp -npcs -nprs -psl -sc -nsob -ts8 + +Do not use $< for non-pattern rules in any cross-platform dir as it +requires a reasonable make that is not available on all systems. Do not have build rules that build multiple targets. Make doesn't seem able to handle this, and it interferes with -j builds. (In particular, build the @@ -15,7 +21,7 @@ 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 +in 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. @@ -28,7 +34,7 @@ Format of the prototype files should look like: #ifndef AFS_SRC_DDD_PROTO_H #define AFS_SRC_DDD_PROTO_H - + /* filename.c */ prototypes @@ -41,10 +47,11 @@ 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 +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) + rettype + routine(argtype arg) { } @@ -55,15 +62,18 @@ 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 +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 +Routines shall be defined in source prior to use if possible, and prototyped in block at top of file if static. +API documentation in the code should be done using Qt-style Doxygen +comments. + If you make a routine or variable static, be sure and remove it from the AIX .exp files.