X-Git-Url: https://git.openafs.org/?p=openafs.git;a=blobdiff_plain;f=README.DEVEL;h=b7b57a8c957c9bbb2262e33ba70dafcbf2065271;hp=ea5dfcbbc28880489c4fd000d81692f66f62d857;hb=b93ddf1a9c49988e84bfddff37bc55949d49768c;hpb=8f2df21ffe59e9aa66219bf24656775b584c122d diff --git a/README.DEVEL b/README.DEVEL index ea5dfcb..b7b57a8 100644 --- a/README.DEVEL +++ b/README.DEVEL @@ -1,12 +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: -Be careful with prototypes/ANSI-C in code that will be compiled for -kernel source. In general, avoid them until we have figured out -exactly when/where they can be used safely. +-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 @@ -19,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. @@ -32,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 @@ -45,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) { } @@ -59,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.