:: commit b795c3b209680349e3a3e02b358183696feb1d81

mintsuki <mintsuki@protonmail.com> — 2022-02-18 01:23

parents: ab0dfc2123

build: Add more granular configure options

diff --git a/GNUmakefile.in b/GNUmakefile.in
index af7a80a5..9a093cda 100644
--- a/GNUmakefile.in
+++ b/GNUmakefile.in
@@ -17,6 +17,9 @@ override PATH := @PATH@
 export PATH
 
 override BUILD_ELTORITO_EFI := @BUILD_ELTORITO_EFI@
+override BUILD_PXE := @BUILD_PXE@
+override BUILD_CD := @BUILD_CD@
+override BUILD_LIMINE_INSTALL := @BUILD_LIMINE_INSTALL@
 
 WERROR ?= @WERROR@
 export WERROR
@@ -77,7 +80,7 @@ export LIMINE_COPYRIGHT
 override STAGE1_FILES := $(shell find '$(call SHESCAPE,$(SRCDIR))/stage1' -type f -name '*.asm')
 
 .PHONY: all
-all: limine-uefi limine-bios
+all: @BUILD_UEFI@ @BUILD_BIOS@
 
 .PHONY: limine-hdd.h
 limine-hdd.h: $(call MKESCAPE,$(BINDIR))/limine-hdd.h
@@ -125,15 +128,21 @@ uninstall:
 $(call MKESCAPE,$(BUILDDIR))/stage1.stamp: $(STAGE1_FILES) $(call MKESCAPE,$(BUILDDIR))/decompressor-build/decompressor.bin $(call MKESCAPE,$(BUILDDIR))/common-bios/stage2.bin.gz
 	mkdir -p '$(call SHESCAPE,$(BINDIR))'
 	cd '$(call SHESCAPE,$(SRCDIR))/stage1/hdd' && nasm bootsect.asm @WERROR@ -fbin -DBUILDDIR="'"'$(call NASMESCAPE,$(BUILDDIR))'"'" -o '$(call SHESCAPE,$(BINDIR))/limine-hdd.bin'
+ifneq ($(BUILD_CD), no)
 	cd '$(call SHESCAPE,$(SRCDIR))/stage1/cd'  && nasm bootsect.asm @WERROR@ -fbin -DBUILDDIR="'"'$(call NASMESCAPE,$(BUILDDIR))'"'" -o '$(call SHESCAPE,$(BINDIR))/limine-cd.bin'
+endif
+ifneq ($(BUILD_PXE), no)
 	cd '$(call SHESCAPE,$(SRCDIR))/stage1/pxe' && nasm bootsect.asm @WERROR@ -fbin -DBUILDDIR="'"'$(call NASMESCAPE,$(BUILDDIR))'"'" -o '$(call SHESCAPE,$(BINDIR))/limine-pxe.bin'
+endif
 	cp '$(call SHESCAPE,$(BUILDDIR))/common-bios/limine.sys' '$(call SHESCAPE,$(BINDIR))/'
 	touch '$(call SHESCAPE,$(BUILDDIR))/stage1.stamp'
 
 .PHONY: limine-bios
 limine-bios: common-bios decompressor
 	$(MAKE) '$(call SHESCAPE,$(BUILDDIR))/stage1.stamp'
+ifneq ($(BUILD_LIMINE_INSTALL), no)
 	$(MAKE) limine-install
+endif
 
 .PHONY: limine-eltorito-efi
 limine-eltorito-efi:
@@ -151,7 +160,7 @@ ifneq ($(BUILD_ELTORITO_EFI), no)
 endif
 
 .PHONY: limine-uefi
-limine-uefi: limine-uefi32 limine-uefi64
+limine-uefi: @BUILD_UEFI32@ @BUILD_UEFI64@
 	$(MAKE) limine-eltorito-efi
 
 .PHONY: limine-uefi64
diff --git a/configure.ac b/configure.ac
index b380afef..5116ff1e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -46,6 +46,86 @@ if ! test "x$GZIP_FOUND" = "xyes"; then
     AC_MSG_ERROR([gzip not found, please install gzip before configuring])
 fi
 
+BUILD_BIOS="default"
+
+AC_ARG_ENABLE([bios],
+    AS_HELP_STRING([--disable-bios], [disable building the BIOS port]),
+    BUILD_BIOS="$enableval")
+
+if test "x$BUILD_BIOS" = "xno"; then
+    BUILD_BIOS=""
+else
+    BUILD_BIOS="limine-bios"
+fi
+
+AC_SUBST(BUILD_BIOS, [$BUILD_BIOS])
+
+BUILD_LIMINE_INSTALL="default"
+
+AC_ARG_ENABLE([limine-install],
+    AS_HELP_STRING([--disable-limine-install], [disable building limine-install]),
+    BUILD_LIMINE_INSTALL="$enableval")
+
+AC_SUBST(BUILD_LIMINE_INSTALL, [$BUILD_LIMINE_INSTALL])
+
+BUILD_CD="default"
+
+AC_ARG_ENABLE([bios-cd],
+    AS_HELP_STRING([--disable-bios-cd], [disable building the BIOS CD image]),
+    BUILD_CD="$enableval")
+
+AC_SUBST(BUILD_CD, [$BUILD_CD])
+
+BUILD_PXE="default"
+
+AC_ARG_ENABLE([bios-pxe],
+    AS_HELP_STRING([--disable-bios-pxe], [disable building the BIOS PXE image]),
+    BUILD_PXE="$enableval")
+
+AC_SUBST(BUILD_PXE, [$BUILD_PXE])
+
+BUILD_UEFI="default"
+
+AC_ARG_ENABLE([uefi],
+    AS_HELP_STRING([--disable-uefi], [disable building both UEFI ports]),
+    BUILD_UEFI="$enableval")
+
+if test "x$BUILD_UEFI" = "xno"; then
+    BUILD_UEFI=""
+else
+    BUILD_UEFI="limine-uefi"
+fi
+
+AC_SUBST(BUILD_UEFI, [$BUILD_UEFI])
+
+BUILD_UEFI32="default"
+
+AC_ARG_ENABLE([uefi32],
+    AS_HELP_STRING([--disable-uefi32], [disable building the 32-bit UEFI port]),
+    BUILD_UEFI32="$enableval")
+
+if test "x$BUILD_UEFI32" = "xno"; then
+    BUILD_UEFI32=""
+else
+    BUILD_UEFI32="limine-uefi32"
+fi
+
+AC_SUBST(BUILD_UEFI32, [$BUILD_UEFI32])
+
+BUILD_UEFI64="default"
+
+AC_ARG_ENABLE([uefi64],
+    AS_HELP_STRING([--disable-uefi64], [disable building the 64-bit UEFI port]),
+    BUILD_UEFI64="$enableval")
+
+if test "x$BUILD_UEFI64" = "xno"; then
+    BUILD_UEFI64=""
+else
+    BUILD_UEFI64="limine-uefi64"
+fi
+
+AC_SUBST(BUILD_UEFI64, [$BUILD_UEFI64])
+
 BUILD_ELTORITO_EFI="default"
 
 AC_ARG_ENABLE([eltorito-efi],
tab: 248 wrap: offon