diff --git a/libsycl/docs/CodingGuidelines.rst b/libsycl/docs/CodingGuidelines.rst new file mode 100644 index 0000000000000..7aece05a3e50b --- /dev/null +++ b/libsycl/docs/CodingGuidelines.rst @@ -0,0 +1,39 @@ +======================== +Libsycl Coding Standards +======================== + +.. contents:: + :local: + +Introduction +============ + +The ``libsycl`` project follows the +`LLVM Coding Standards `_ with +exceptions as described in this document. + +Naming +------ + +Names of Macros, Types, Functions, Variables, and Enumerators +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Entities specified by the SYCL specification are named as required by the SYCL +specification. Names of all other entities follow the guidance in the LLVM +Coding Standards. + +Names of Files and Directories +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +* **Directory Names** should be in snake case (e.g. ``test_e2e``) except in + cases where LLVM project wide conventions are used. For example, LIT tests + often use an ``Inputs`` directory to hold files that are used by tests but + that should be excluded from test discovery. + +* **File Names in snake case** should be used for all C++ implementation files. + For example files in directories ``include``, ``src``, ``test``, ``utils``, + and ``tools`` should be named in snake case. + +* **File Names in camel case** should be used for most other files. For example + files in directories ``cmake/modules`` and ``docs`` should be named in camel + case.