From 8b24f247ba26e77623a3d3d183b12b8eec849b8d Mon Sep 17 00:00:00 2001 From: Louie S Date: Fri, 15 Sep 2023 10:03:05 -0400 Subject: Add multiboot2 target --- Makefile | 6 +++- README | 2 +- grub-Makefile | 5 +-- grub-dev-Makefile | 5 +-- multiboot-Makefile | 5 +-- multiboot2-Makefile | 83 +++++++++++++++++++++++++++++++++++++++++++++++ src/multiboot2/Info.plist | 14 ++++++++ src/multiboot2/get_title | 9 +++++ 8 files changed, 121 insertions(+), 8 deletions(-) create mode 100644 multiboot2-Makefile create mode 100644 src/multiboot2/Info.plist create mode 100644 src/multiboot2/get_title 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 @@ + + + + + CFBundleIdentifier + multiboot2 + CFBundleName + Multiboot2 Specification + DocSetPlatformFamily + multiboot2 + isDashDocset + + + 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' +} -- cgit