xref: /freebsd/contrib/arm-optimized-routines/README.contributors (revision 072a4ba82a01476eaee33781ccd241033eefcf0b)
1*072a4ba8SAndrew TurnerGENERIC CONTRIBUTION GUIDELINES
2*072a4ba8SAndrew Turner===============================
3*072a4ba8SAndrew Turner
4*072a4ba8SAndrew Turner1. Sub-projects are maintained independently and thus have independent
5*072a4ba8SAndrew Turner   contribution rules. If there exists a README.contributors in the
6*072a4ba8SAndrew Turner   sub-directory to which the contribution is made, it must be followed.
7*072a4ba8SAndrew Turner
8*072a4ba8SAndrew Turner2. Legal:
9*072a4ba8SAndrew Turner   - Contributors who are not employed by Arm must sign an Assignment Agreement.
10*072a4ba8SAndrew Turner     See contributor-agreement.pdf.
11*072a4ba8SAndrew Turner   - All code must be copyright owned by Arm Limited and the appropriate
12*072a4ba8SAndrew Turner     copyright notice and license identifier must be present in every source
13*072a4ba8SAndrew Turner     file.
14*072a4ba8SAndrew Turner
15*072a4ba8SAndrew Turner3. Build:
16*072a4ba8SAndrew Turner   - Build should only depend on GNU make and posix utilities (shell, awk, sed,
17*072a4ba8SAndrew Turner     etc) and on a C toolchain.
18*072a4ba8SAndrew Turner   - Build should pass with the default configuration (see config.mk.dist)
19*072a4ba8SAndrew Turner     and other supported configurations, with both gcc and clang based
20*072a4ba8SAndrew Turner     toolchains. (The build should not depend on a recent toolchain, the use
21*072a4ba8SAndrew Turner     of a new feature should be possible to disable.)
22*072a4ba8SAndrew Turner   - Currently there is no automated configuration, target specific configuration
23*072a4ba8SAndrew Turner     should be done via make variables in config.mk. This is the user interface
24*072a4ba8SAndrew Turner     to the build system, so it should be documented in sufficient detail and
25*072a4ba8SAndrew Turner     kept reasonably stable.
26*072a4ba8SAndrew Turner
27*072a4ba8SAndrew Turner4. Testing:
28*072a4ba8SAndrew Turner   - On aarch64 the tests must pass. If the code may behave differently under
29*072a4ba8SAndrew Turner     some supported configurations (e.g. CFLAGS) those should be tested.
30*072a4ba8SAndrew Turner   - New symbols are expected to have new associated test code and ideally
31*072a4ba8SAndrew Turner     benchmark code too.
32*072a4ba8SAndrew Turner
33*072a4ba8SAndrew Turner4. Commits:
34*072a4ba8SAndrew Turner   - Commit message should be descriptive and should not refer to Arm internal
35*072a4ba8SAndrew Turner     information (such as Jira tickets, or internal discussions). Non-obvious
36*072a4ba8SAndrew Turner     decisions should be recorded or explained in the commit message if they are
37*072a4ba8SAndrew Turner     not explained in source comments.
38*072a4ba8SAndrew Turner   - Ideally tools and scripts used to write the code should be added to the
39*072a4ba8SAndrew Turner     repository or at least mentioned in the commit.
40*072a4ba8SAndrew Turner   - Logically independent changes should not be mixed into the same commit.
41*072a4ba8SAndrew Turner
42*072a4ba8SAndrew Turner5. Style:
43*072a4ba8SAndrew Turner   - Unless otherwise required differently by the sub-project, follow the
44*072a4ba8SAndrew Turner     clang-format tool using the style from the gcc contrib/ directory.
45