summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile6
-rw-r--r--README2
-rw-r--r--grub-Makefile5
-rw-r--r--grub-dev-Makefile5
-rw-r--r--multiboot-Makefile5
-rw-r--r--multiboot2-Makefile83
-rw-r--r--src/multiboot2/Info.plist14
-rw-r--r--src/multiboot2/get_title9
8 files changed, 121 insertions, 8 deletions
diff --git a/Makefile b/Makefile
index 6ad890e..cd1db41 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
-all: grub grub-dev multiboot
+all: grub grub-dev multiboot multiboot2
grub:
$(MAKE) -f grub-Makefile
@@ -10,11 +10,15 @@ grub-dev:
multiboot:
$(MAKE) -f multiboot-Makefile
+multiboot2:
+ $(MAKE) -f multiboot2-Makefile
+
.PHONY: clean
clean:
$(MAKE) clean -f grub-Makefile
$(MAKE) clean -f grub-dev-Makefile
$(MAKE) clean -f multiboot-Makefile
+ $(MAKE) clean -f multiboot2-Makefile
.PHONY: dist-clean
dist-clean: clean
diff --git a/README b/README
index 9b82673..08052ec 100644
--- a/README
+++ b/README
@@ -14,11 +14,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/]
+- `multiboot2` - Multiboot2 Specification [https://www.gnu.org/software/grub/manual/multiboot2/]
Additional `make` targets that have not been implemented are:
- `grub-legacy` - GRUB Legacy Documentation [https://www.gnu.org/software/grub/manual/legacy/]
-- `multiboot2` - Multiboot2 Specification [https://www.gnu.org/software/grub/manual/multiboot2/]
Requirements:
diff --git a/grub-Makefile b/grub-Makefile
index bcf896d..2ac88b8 100644
--- a/grub-Makefile
+++ b/grub-Makefile
@@ -1,4 +1,5 @@
DOCSET_NAME = GNU_Grub
+SIMPLE_NAME = grub
DOCSET_DIR = $(DOCSET_NAME).docset
CONTENTS_DIR = $(DOCSET_DIR)/Contents
@@ -11,7 +12,7 @@ ICON_FILE = $(DOCSET_DIR)/icon.png
ARCHIVE_FILE = $(DOCSET_NAME).tgz
SRC_ICON = src/icon.png
-SRC_PLIST = src/grub/Info.plist
+SRC_PLIST = src/$(SIMPLE_NAME)/Info.plist
PAGE_INDEXING_SCRIPT = src/index-page.sh
TERM_INDEXING_SCRIPT = src/index-terms.sh
@@ -76,7 +77,7 @@ $(INFO_PLIST_FILE): $(SRC_PLIST) $(CONTENTS_DIR)
$(INDEX_FILE): $(PAGE_INDEXING_SCRIPT) $(TERM_INDEXING_SCRIPT) $(DOCUMENTS_DIR)
rm -f $@
- $(PAGE_INDEXING_SCRIPT) grub $@ $(DOCUMENTS_DIR)/*.html
+ $(PAGE_INDEXING_SCRIPT) $(SIMPLE_NAME) $@ $(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 e735137..0f96340 100644
--- a/grub-dev-Makefile
+++ b/grub-dev-Makefile
@@ -1,4 +1,5 @@
DOCSET_NAME = GNU_Grub_Dev
+SIMPLE_NAME = grub-dev
DOCSET_DIR = $(DOCSET_NAME).docset
CONTENTS_DIR = $(DOCSET_DIR)/Contents
@@ -11,7 +12,7 @@ ICON_FILE = $(DOCSET_DIR)/icon.png
ARCHIVE_FILE = $(DOCSET_NAME).tgz
SRC_ICON = src/icon.png
-SRC_PLIST = src/grub-dev/Info.plist
+SRC_PLIST = src/$(SIMPLE_NAME)/Info.plist
PAGE_INDEXING_SCRIPT = src/index-page.sh
TERM_INDEXING_SCRIPT = src/index-terms.sh
@@ -76,7 +77,7 @@ $(INFO_PLIST_FILE): $(SRC_PLIST) $(CONTENTS_DIR)
$(INDEX_FILE): $(PAGE_INDEXING_SCRIPT) $(TERM_INDEXING_SCRIPT) $(DOCUMENTS_DIR)
rm -f $@
- $(PAGE_INDEXING_SCRIPT) grub-dev $@ $(DOCUMENTS_DIR)/*.html
+ $(PAGE_INDEXING_SCRIPT) $(SIMPLE_NAME) $@ $(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
index 2c61c96..246f360 100644
--- a/multiboot-Makefile
+++ b/multiboot-Makefile
@@ -1,4 +1,5 @@
DOCSET_NAME = Multiboot
+SIMPLE_NAME = multiboot
DOCSET_DIR = $(DOCSET_NAME).docset
CONTENTS_DIR = $(DOCSET_DIR)/Contents
@@ -11,7 +12,7 @@ ICON_FILE = $(DOCSET_DIR)/icon.png
ARCHIVE_FILE = $(DOCSET_NAME).tgz
SRC_ICON = src/icon.png
-SRC_PLIST = src/multiboot/Info.plist
+SRC_PLIST = src/$(SIMPLE_NAME)/Info.plist
PAGE_INDEXING_SCRIPT = src/index-page.sh
TERM_INDEXING_SCRIPT = src/index-terms.sh
@@ -76,7 +77,7 @@ $(INFO_PLIST_FILE): $(SRC_PLIST) $(CONTENTS_DIR)
$(INDEX_FILE): $(PAGE_INDEXING_SCRIPT) $(TERM_INDEXING_SCRIPT) $(DOCUMENTS_DIR)
rm -f $@
- $(PAGE_INDEXING_SCRIPT) multiboot $@ $(DOCUMENTS_DIR)/*.html
+ $(PAGE_INDEXING_SCRIPT) $(SIMPLE_NAME) $@ $(DOCUMENTS_DIR)/*.html
$(ICON_FILE): src/icon.png $(DOCSET_DIR)
cp $(SRC_ICON) $@
diff --git a/multiboot2-Makefile b/multiboot2-Makefile
new file mode 100644
index 0000000..309883f
--- /dev/null
+++ b/multiboot2-Makefile
@@ -0,0 +1,83 @@
+DOCSET_NAME = Multiboot2
+SIMPLE_NAME = multiboot2
+
+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/$(SIMPLE_NAME)/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/multiboot2/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) $(SIMPLE_NAME) $@ $(DOCUMENTS_DIR)/*.html
+
+$(ICON_FILE): src/icon.png $(DOCSET_DIR)
+ cp $(SRC_ICON) $@
diff --git a/src/multiboot2/Info.plist b/src/multiboot2/Info.plist
new file mode 100644
index 0000000..dea7cfe
--- /dev/null
+++ b/src/multiboot2/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>multiboot2</string>
+ <key>CFBundleName</key>
+ <string>Multiboot2 Specification</string>
+ <key>DocSetPlatformFamily</key>
+ <string>multiboot2</string>
+ <key>isDashDocset</key>
+ <true/>
+</dict>
+</plist>
diff --git a/src/multiboot2/get_title b/src/multiboot2/get_title
new file mode 100644
index 0000000..6bf29fc
--- /dev/null
+++ b/src/multiboot2/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'
+}