diff options
author | Gabriel Scherer <gabriel.scherer@gmail.com> | 2018-09-06 08:31:44 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-06 08:31:44 +0200 |
commit | 43171539100da920ad779b8f4bf67f8a8541c523 (patch) | |
tree | 785d53154878d69ddf47029bcc2040f74993af2d | |
parent | 2c89637ce7c64a45fc579d071249717b18113858 (diff) | |
parent | 00953cc221ff39429d7d77e6978c3cfe30ccf531 (diff) | |
download | ocaml-43171539100da920ad779b8f4bf67f8a8541c523.tar.gz |
Merge pull request #1995 from TheAspiringHacker/stdlib-contrib-docs
Add documentation for contributing to the stdlib
-rw-r--r-- | stdlib/HACKING.adoc | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/stdlib/HACKING.adoc b/stdlib/HACKING.adoc new file mode 100644 index 0000000000..407d079e34 --- /dev/null +++ b/stdlib/HACKING.adoc @@ -0,0 +1,37 @@ += Contributing to the standard library + +For guidelines about standard library content, see +link:../CONTRIBUTING.md#contributing-to-the-standard-library[]. + +Note: All paths are given relative to the root of the repository. + +First, build the compiler. Run `./configure`, then `make world.opt`. See +link:../HACKING.adoc[]. + +To add a new module, you must: + +* Create new `.mli` and `.ml` files for the modules, obviously. + +* Define the module in `stdlib/stdlib.mli`, `stdlib/stdlib.ml`, and + `otherlibs/threads/stdlib.ml` in the section of the code commented, + "MODULE ALIASES". Please maintain the same style as the rest of the code, in + particular the alphabetical ordering and whitespace alignment of module + aliases. Note that `otherlibs/threads/stdlib.mli` is a symbolic link to + `stdlib/stdlib.mli`. + +* Add `$(P)module_name.cmo` to the definition of `OTHERS` in `stdlib/Makefile`. + +* Add `$(LIB)/$(P)module_name.cmo` to the definition of `LIB_OBJS` in + `otherlibs/threads/Makefile`. + +* Add `$(P)module_name` to the definition of `STDLIB_MODULES` in + `stdlib/StdlibModules`. Please maintain the alphabetical order. + +* Run `make alldepend` to update all the `.depend` files. These files are not + edited by hand. + +* Run `make clean` or `make partialclean`, then `make world.opt`. + +If you are adding multiple modules, follow the steps above and rebuild the +compiler after adding each module. If you add multiple modules before +rebuilding, the build may fail. |