summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabriel Scherer <gabriel.scherer@gmail.com>2018-09-06 08:31:44 +0200
committerGitHub <noreply@github.com>2018-09-06 08:31:44 +0200
commit43171539100da920ad779b8f4bf67f8a8541c523 (patch)
tree785d53154878d69ddf47029bcc2040f74993af2d
parent2c89637ce7c64a45fc579d071249717b18113858 (diff)
parent00953cc221ff39429d7d77e6978c3cfe30ccf531 (diff)
downloadocaml-43171539100da920ad779b8f4bf67f8a8541c523.tar.gz
Merge pull request #1995 from TheAspiringHacker/stdlib-contrib-docs
Add documentation for contributing to the stdlib
-rw-r--r--stdlib/HACKING.adoc37
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.