]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
Document the new directory structure plan
authorJoel Rosdahl <joel@rosdahl.net>
Tue, 15 Jun 2021 18:53:15 +0000 (20:53 +0200)
committerJoel Rosdahl <joel@rosdahl.net>
Tue, 15 Jun 2021 19:02:56 +0000 (21:02 +0200)
See also #660 and #753.

ARCHITECTURE.md [new file with mode: 0644]
CONTRIBUTING.md

diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md
new file mode 100644 (file)
index 0000000..e8e8920
--- /dev/null
@@ -0,0 +1,29 @@
+# Ccache architecture
+
+## Code structure
+
+The ccache code base has grown organically through the years. This section
+describes the directory structure that the project aims to transform the source
+code into in the long run to make it easier to understand and work with.
+
+* `ci`: Utility scripts used in CI.
+* `cmake`: CMake scripts.
+* `doc`: Documentation.
+* `dockerfiles`: Dockerfiles that specify different environments of interest for
+  ccache.
+* `misc`: Miscellaneous utility scripts, example files, etc.
+* `src/compiler`: Knowledge about things like compiler options, compiler
+  behavior, preprocessor output format, etc. Ideally this code should in the
+  future be refactored into compiler-specific frontends, such as GCC, Clang,
+  MSVC, etc.
+* `src/compression`: Compression formats.
+* `src/framework`: Everything not part of other directories.
+* `src/storage`: Storage backends.
+* `src/storage/primary`: Code for the primary storage backend.
+* `src/storage/secondary`: Code for secondary storage backends.
+* `src/third_party`: Bundled third party code.
+* `src/util`: Generic utility functionality that does not depend on
+  ccache-specific things.
+* `test`: Integration test suite which tests the ccache binary in different
+  scenarios.
+* `unittest`: Unit test suite which typically tests individual functions.
index 3541727ed55be1a0a7b8613b29462ec9edcb821d..3a845c8790abfd419958f73d32b2504e3440b173 100644 (file)
@@ -33,6 +33,7 @@ proposal(s) on [GitHub](https://github.com/ccache/ccache).
 
 Here are some hints to make the process smoother:
 
+* Have a look in `ARCHITECTURE.md` for an overview of the source code tree.
 * If you plan to implement major changes it is wise to open an issue on GitHub
   (or ask in the Gitter room, or send a mail to the mailing list) asking for
   comments on your plans before doing the bulk of the work. That way you can