From 57c1ba7a5f4d93acc5459cedb2b76a809964e77e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Brandenburg?= <bbb@mpi-sws.org>
Date: Thu, 19 Dec 2019 16:07:50 +0100
Subject: [PATCH] deliberately order TOC of generated documentation

---
 create_makefile.sh          |  2 +-
 scripts/module-toc-order.py | 41 +++++++++++++++++++++++++++++++++++++
 2 files changed, 42 insertions(+), 1 deletion(-)
 create mode 100755 scripts/module-toc-order.py

diff --git a/create_makefile.sh b/create_makefile.sh
index 973076b38..4d9819173 100755
--- a/create_makefile.sh
+++ b/create_makefile.sh
@@ -23,7 +23,7 @@ done
 FIND_OPTS+=( -print )
 
 # Compile all relevant *.v files
-coq_makefile -f _CoqProject $(find "${FIND_OPTS[@]}" ) -o Makefile
+coq_makefile -f _CoqProject $(find "${FIND_OPTS[@]}" | scripts/module-toc-order.py ) -o Makefile
 
 # Patch HTML target to switch out color, and 
 # so that it parses comments and has links to ssreflect.
diff --git a/scripts/module-toc-order.py b/scripts/module-toc-order.py
new file mode 100755
index 000000000..a00dd210d
--- /dev/null
+++ b/scripts/module-toc-order.py
@@ -0,0 +1,41 @@
+#!/usr/bin/env python3
+
+import os
+import sys
+
+MODULE_ORDER = [
+    'behavior.time',
+    'behavior.job',
+    'behavior.schedule',
+    'behavior.service',
+    'behavior.arrival_sequence',
+    'behavior.ready',
+    'behavior',
+    'model.processor',
+    'model.readiness',
+    'model.preemption',
+    'model.task',
+    'model.priority',
+    'model.schedule',
+    'model',
+    'results',
+    'analysis',
+    'classic',
+    'util',
+]
+
+def modorder(fname):
+    modname = fname.replace('./', '').replace('.v', '').replace('/', '.')
+    for i, prefix in enumerate(MODULE_ORDER):
+        if modname.startswith(prefix):
+            return (i, modname)
+    return (len(MODULE_ORDER), modname)
+
+def main():
+    lines = sys.stdin.readlines()
+    for l in sorted(lines, key=modorder):
+        print(l, end='')
+
+if __name__ == '__main__':
+    main()
+
-- 
GitLab