summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLouie S <louie@example.com>2023-09-15 09:50:45 -0400
committerLouie S <louie@example.com>2023-09-15 09:50:45 -0400
commite7eda80bcdf575188ab98a4454a4515217967990 (patch)
tree97a25659832d089da8487500a35e34299a146459
parenta1c45a5d707095f503ff94981d91bfceb26f14c4 (diff)
Add multiboot target
-rw-r--r--.gitignore1
-rw-r--r--Makefile10
-rw-r--r--README2
-rw-r--r--grub-Makefile2
-rw-r--r--grub-dev-Makefile2
-rw-r--r--multiboot-Makefile82
-rw-r--r--src/grub-dev/get_title9
-rw-r--r--src/grub/get_title9
-rwxr-xr-xsrc/index-page.sh12
-rw-r--r--src/multiboot/Info.plist14
-rw-r--r--src/multiboot/get_title9
11 files changed, 140 insertions, 12 deletions
diff --git a/.gitignore b/.gitignore
index 04a60da..086f1cc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
tmp
*.docset
+*.tgz
diff --git a/Makefile b/Makefile
index ee98f27..6ad890e 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
-all: grub grub-dev
+all: grub grub-dev multiboot
grub:
$(MAKE) -f grub-Makefile
@@ -7,7 +7,15 @@ grub:
grub-dev:
$(MAKE) -f grub-dev-Makefile
+multiboot:
+ $(MAKE) -f multiboot-Makefile
+
.PHONY: clean
clean:
$(MAKE) clean -f grub-Makefile
$(MAKE) clean -f grub-dev-Makefile
+ $(MAKE) clean -f multiboot-Makefile
+
+.PHONY: dist-clean
+dist-clean: clean
+ rm -rf tmp
diff --git a/README b/README
index 0997816..9b82673 100644
--- a/README
+++ b/README
@@ -13,11 +13,11 @@ The possible `make` targets are:
- `grub` - GRUB2 Documentation [https://www.gnu.org/software/grub/manual/grub/]
- `grub-dev` - GRUB2 Developers Manual [https://www.gnu.org/software/grub/manual/grub-dev/]
+- `multiboot` - Multiboot Specification [https://www.gnu.org/software/grub/manual/multiboot/]
Additional `make` targets that have not been implemented are:
- `grub-legacy` - GRUB Legacy Documentation [https://www.gnu.org/software/grub/manual/legacy/]
-- `multiboot` - Multiboot Specification [https://www.gnu.org/software/grub/manual/multiboot/]
- `multiboot2` - Multiboot2 Specification [https://www.gnu.org/software/grub/manual/multiboot2/]
Requirements:
diff --git a/grub-Makefile b/grub-Makefile
index 135c430..bcf896d 100644
--- a/grub-Makefile
+++ b/grub-Makefile
@@ -76,7 +76,7 @@ $(INFO_PLIST_FILE): $(SRC_PLIST) $(CONTENTS_DIR)
$(INDEX_FILE): $(PAGE_INDEXING_SCRIPT) $(TERM_INDEXING_SCRIPT) $(DOCUMENTS_DIR)
rm -f $@
- $(PAGE_INDEXING_SCRIPT) $@ $(DOCUMENTS_DIR)/*.html
+ $(PAGE_INDEXING_SCRIPT) grub $@ $(DOCUMENTS_DIR)/*.html
$(TERM_INDEXING_SCRIPT) Entry $@ $(DOCUMENTS_DIR)/Index.html
$(ICON_FILE): src/icon.png $(DOCSET_DIR)
diff --git a/grub-dev-Makefile b/grub-dev-Makefile
index a4ce396..e735137 100644
--- a/grub-dev-Makefile
+++ b/grub-dev-Makefile
@@ -76,7 +76,7 @@ $(INFO_PLIST_FILE): $(SRC_PLIST) $(CONTENTS_DIR)
$(INDEX_FILE): $(PAGE_INDEXING_SCRIPT) $(TERM_INDEXING_SCRIPT) $(DOCUMENTS_DIR)
rm -f $@
- $(PAGE_INDEXING_SCRIPT) $@ $(DOCUMENTS_DIR)/*.html
+ $(PAGE_INDEXING_SCRIPT) grub-dev $@ $(DOCUMENTS_DIR)/*.html
$(TERM_INDEXING_SCRIPT) Entry $@ $(DOCUMENTS_DIR)/Index.html
$(ICON_FILE): src/icon.png $(DOCSET_DIR)
diff --git a/multiboot-Makefile b/multiboot-Makefile
new file mode 100644
index 0000000..2c61c96
--- /dev/null
+++ b/multiboot-Makefile
@@ -0,0 +1,82 @@
+DOCSET_NAME = Multiboot
+
+DOCSET_DIR = $(DOCSET_NAME).docset
+CONTENTS_DIR = $(DOCSET_DIR)/Contents
+RESOURCES_DIR = $(CONTENTS_DIR)/Resources
+DOCUMENTS_DIR = $(RESOURCES_DIR)/Documents
+
+INFO_PLIST_FILE = $(CONTENTS_DIR)/Info.plist
+INDEX_FILE = $(RESOURCES_DIR)/docSet.dsidx
+ICON_FILE = $(DOCSET_DIR)/icon.png
+ARCHIVE_FILE = $(DOCSET_NAME).tgz
+
+SRC_ICON = src/icon.png
+SRC_PLIST = src/multiboot/Info.plist
+PAGE_INDEXING_SCRIPT = src/index-page.sh
+TERM_INDEXING_SCRIPT = src/index-terms.sh
+
+MANUAL_URL = https://www.gnu.org/software/grub/manual/multiboot/multiboot.html_node.tar.gz
+MANUAL_FILE = tmp/multiboot.html_node.tar.gz
+
+ERROR_DOCSET_NAME = $(error DOCSET_NAME is unset)
+WARNING_MANUAL_URL = $(warning MANUAL_URL is unset)
+ERROR_MANUAL_FILE = $(error MANUAL_FILE is unset)
+.phony: err warn
+
+ifndef DOCSET_NAME
+err: ; $(ERROR_DOCSET_NAME)
+endif
+
+ifndef MANUAL_FILE
+err: ; $(ERROR_MANUAL_FILE)
+endif
+
+ifndef MANUAL_URL
+warn:
+ $(WARNING_MANUAL_URL)
+ $(MAKE) all
+endif
+
+DOCSET = $(INFO_PLIST_FILE) $(INDEX_FILE)
+ifdef SRC_ICON
+DOCSET += $(ICON_FILE)
+endif
+
+all: $(DOCSET)
+
+archive: $(ARCHIVE_FILE)
+
+clean:
+ rm -rf $(DOCSET_DIR) $(ARCHIVE_FILE)
+
+tmp:
+ mkdir -p $@
+
+$(ARCHIVE_FILE): $(DOCSET)
+ tar --exclude='.DS_Store' -czf $@ $(DOCSET_DIR)
+
+$(MANUAL_FILE): tmp
+ curl -o $@ $(MANUAL_URL)
+
+$(DOCSET_DIR):
+ mkdir -p $@
+
+$(CONTENTS_DIR): $(DOCSET_DIR)
+ mkdir -p $@
+
+$(RESOURCES_DIR): $(CONTENTS_DIR)
+ mkdir -p $@
+
+$(DOCUMENTS_DIR): $(RESOURCES_DIR) $(MANUAL_FILE)
+ mkdir -p $@
+ tar -x -z -f $(MANUAL_FILE) -C $@
+
+$(INFO_PLIST_FILE): $(SRC_PLIST) $(CONTENTS_DIR)
+ cp $(SRC_PLIST) $@
+
+$(INDEX_FILE): $(PAGE_INDEXING_SCRIPT) $(TERM_INDEXING_SCRIPT) $(DOCUMENTS_DIR)
+ rm -f $@
+ $(PAGE_INDEXING_SCRIPT) multiboot $@ $(DOCUMENTS_DIR)/*.html
+
+$(ICON_FILE): src/icon.png $(DOCSET_DIR)
+ cp $(SRC_ICON) $@
diff --git a/src/grub-dev/get_title b/src/grub-dev/get_title
new file mode 100644
index 0000000..df8772b
--- /dev/null
+++ b/src/grub-dev/get_title
@@ -0,0 +1,9 @@
+get_title() {
+ FILE="$1"
+
+
+ pup -p -f "$FILE" 'title text{}' | \
+ tr -d \\n | \
+ sed 's/^GNU[^:]*: //' | \
+ sed 's/\"/\"\"/g'
+}
diff --git a/src/grub/get_title b/src/grub/get_title
new file mode 100644
index 0000000..df8772b
--- /dev/null
+++ b/src/grub/get_title
@@ -0,0 +1,9 @@
+get_title() {
+ FILE="$1"
+
+
+ pup -p -f "$FILE" 'title text{}' | \
+ tr -d \\n | \
+ sed 's/^GNU[^:]*: //' | \
+ sed 's/\"/\"\"/g'
+}
diff --git a/src/index-page.sh b/src/index-page.sh
index 0742470..becfd48 100755
--- a/src/index-page.sh
+++ b/src/index-page.sh
@@ -5,17 +5,13 @@
# shellcheck source=./lib/insert
. "$(dirname "$0")"/lib/insert
-DB_PATH="$1"
+CALLER="$1"
shift
-get_title() {
- FILE="$1"
+. "$(dirname "$0")"/"$CALLER"/get_title
- pup -p -f "$FILE" 'title text{}' | \
- tr -d \\n | \
- sed 's/^GNU[^:]*: //' | \
- sed 's/\"/\"\"/g'
-}
+DB_PATH="$1"
+shift
insert_pages() {
# Get title and insert into table for each html file
diff --git a/src/multiboot/Info.plist b/src/multiboot/Info.plist
new file mode 100644
index 0000000..a735d39
--- /dev/null
+++ b/src/multiboot/Info.plist
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleIdentifier</key>
+ <string>multiboot</string>
+ <key>CFBundleName</key>
+ <string>Multiboot Specification</string>
+ <key>DocSetPlatformFamily</key>
+ <string>multiboot</string>
+ <key>isDashDocset</key>
+ <true/>
+</dict>
+</plist>
diff --git a/src/multiboot/get_title b/src/multiboot/get_title
new file mode 100644
index 0000000..6bf29fc
--- /dev/null
+++ b/src/multiboot/get_title
@@ -0,0 +1,9 @@
+get_title() {
+ FILE="$1"
+
+
+ pup -p -f "$FILE" 'title text{}' | \
+ tr -d \\n | \
+ sed 's/^Multiboot[^:]*: //' | \
+ sed 's/\"/\"\"/g'
+}