mirror of
https://git.openafs.org/openafs.git
synced 2025-01-18 23:10:58 +00:00
f56ca81fbf
Clarify the situations in which $< can be used, as we do use it in some places in the tree. It is sufficiently portable in pattern rules, but should not be used elsewhere Also, change the function definition example to match the format used through out the source tree. Reviewed-on: http://gerrit.openafs.org/http://gerrit.openafs.org/160 Tested-by: Derrick Brashear <shadow@dementia.org> Reviewed-by: Derrick Brashear <shadow@dementia.org>
85 lines
2.8 KiB
Plaintext
85 lines
2.8 KiB
Plaintext
Notes on Coding Standards/Requirements for OpenAFS Source
|
|
---------------------------------------------------------
|
|
|
|
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
|
|
rxgen targets individually and not using the flags for building all the files
|
|
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.
|
|
|
|
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.
|
|
|
|
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.)
|