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