commit:     c235b05a93283ee47b56887cc7ca72790e1ff8bd
Author:     Timothy Kenno Handojo <timkenhan <AT> gmail <DOT> com>
AuthorDate: Tue Jan 30 06:31:02 2024 +0000
Commit:     Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
CommitDate: Sat Feb 17 05:11:25 2024 +0000
URL:        https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=c235b05a

modernize makefile

Signed-off-by: Robin H. Johnson <robbat2 <AT> gentoo.org>

 Makefile | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 95 insertions(+), 7 deletions(-)

diff --git a/Makefile b/Makefile
index 92d1278..7e90b60 100644
--- a/Makefile
+++ b/Makefile
@@ -5,8 +5,6 @@ MANPAGE = genkernel.8
 # Add off-Git/generated files here that need to be shipped with releases
 EXTRA_DIST = $(MANPAGE) ChangeLog $(KCONF)
 
-default: kconfig man
-
 # First argument in the override file
 # Second argument is the base file
 BASE_KCONF = defaults/kernel-generic-config
@@ -14,18 +12,54 @@ ARCH_KCONF = $(wildcard arch/*/arch-config)
 GENERATED_KCONF = $(subst arch-,generated-,$(ARCH_KCONF))
 KCONF = $(GENERATED_KCONF)
 
+BUILD_DIR = build
+
+FINAL_DEPS = genkernel.conf \
+       gen_cmdline.sh \
+       gen_initramfs.sh \
+       gen_determineargs.sh \
+       gen_arch.sh \
+       gen_bootloader.sh \
+       gen_compile.sh \
+       gen_configkernel.sh \
+       gen_funcs.sh \
+       gen_moddeps.sh \
+       gen_package.sh \
+       gen_worker.sh \
+       path_expander.py
+
+SOFTWARE = BCACHE_TOOLS BOOST BTRFS_PROGS BUSYBOX COREUTILS CRYPTSETUP \
+       DMRAID DROPBEAR EUDEV EXPAT E2FSPROGS FUSE GPG \
+       HWIDS ISCSI JSON_C KMOD LIBAIO LIBGCRYPT LIBGPGERROR LIBXCRYPT LVM \
+       LZO MDADM MULTIPATH_TOOLS POPT STRACE THIN_PROVISIONING_TOOLS 
UNIONFS_FUSE \
+       USERSPACE_RCU UTIL_LINUX XFSPROGS XZ ZLIB ZSTD
+
+SOFTWARE_VERSION = $(foreach entry, $(SOFTWARE), 
"VERSION_$(entry)=${VERSION_$(entry)}\n")
+
+PREFIX = /usr/local
+BINDIR = $(PREFIX)/bin
+ifeq ($(PREFIX), /usr)
+       SYSCONFDIR = /etc
+else
+       SYSCONFDIR = $(PREFIX)/etc
+endif
+MANDIR = $(PREFIX)/share/man
+
+all: $(BUILD_DIR)/genkernel $(BUILD_DIR)/build-config man kconfig
+
 debug:
        @echo "ARCH_KCONF=$(ARCH_KCONF)"
        @echo "GENERATED_KCONF=$(GENERATED_KCONF)"
 
 kconfig: $(GENERATED_KCONF)
-man: $(MANPAGE)
+man: $(addprefix $(BUILD_DIR)/,$(MANPAGE))
 
 ChangeLog:
        git log >$@
 
 clean:
        rm -f $(EXTRA_DIST)
+       rm -rf $(BUILD_DIR)
 
 check-git-repository:
 ifneq ($(UNCLEAN),1)
@@ -46,7 +80,7 @@ dist: verify-shellscripts-initramfs verify-doc 
check-git-repository distclean $(
 distclean: clean
        rm -Rf "$(distdir)" "$(distdir)".tar "$(distdir)".tar.xz
 
-.PHONY: clean check-git-repository dist distclean kconfig verify-doc
+.PHONY: clean check-git-repository dist distclean kconfig verify-doc install
 
 # Generic rules
 %/generated-config: %/arch-config $(BASE_KCONF) merge.pl Makefile
@@ -56,9 +90,9 @@ distclean: clean
                perl merge.pl $< $(BASE_KCONF) | sort > $@ ; \
        fi ;
 
-%.8: doc/%.8.txt doc/asciidoc.conf Makefile genkernel
-       a2x --conf-file=doc/asciidoc.conf 
--attribute="genkernelversion=$(PACKAGE_VERSION)" \
-                --format=manpage -D . "$<"
+$(BUILD_DIR)/%.8: doc/%.8.txt doc/asciidoc.conf Makefile 
$(BUILD_DIR)/doc/genkernel.8.txt
+       a2x --conf-file=doc/asciidoc.conf \
+                --format=manpage -D $(BUILD_DIR) "$(BUILD_DIR)/$<"
 
 verify-doc: doc/genkernel.8.txt
        @rm -f faildoc ; \
@@ -99,3 +133,57 @@ verify-shellscripts-initramfs:
                --severity error \
                defaults/linuxrc \
                defaults/initrd.scripts
+
+$(BUILD_DIR)/build-config:
+# $(addprefix $(BUILD_DIR)/temp/,$(TEMPFILES))
+       install -d $(BUILD_DIR)
+       echo ${PREFIX} > $(BUILD_DIR)/PREFIX
+       echo ${BINDIR} > $(BUILD_DIR)/BINDIR
+       echo ${SYSCONFDIR} > $(BUILD_DIR)/SYSCONFDIR
+       echo ${MANDIR} > $(BUILD_DIR)/MANDIR
+       touch $(BUILD_DIR)/build-config
+
+$(BUILD_DIR)/software.sh:
+       install -d $(BUILD_DIR)/temp/
+       echo -e $(SOFTWARE_VERSION) > $(BUILD_DIR)/temp/versions
+       cat $(BUILD_DIR)/temp/versions defaults/software.sh > 
$(BUILD_DIR)/software.sh
+
+$(BUILD_DIR)/doc/genkernel.8.txt:
+       install -d $(BUILD_DIR)/doc/
+       cp doc/genkernel.8.txt $(BUILD_DIR)/doc/genkernel.8.txt
+
+$(BUILD_DIR)/%: %
+       install -d $(BUILD_DIR)/
+       cp $< $@
+
+$(BUILD_DIR)/genkernel: $(addprefix $(BUILD_DIR)/,$(FINAL_DEPS)) 
$(BUILD_DIR)/software.sh
+       cp genkernel $(BUILD_DIR)/genkernel
+
+install: PREFIX := $(file <$(BUILD_DIR)/PREFIX)
+install: BINDIR := $(file <$(BUILD_DIR)/BINDIR)
+install: SYSCONFDIR := $(file <$(BUILD_DIR)/SYSCONFDIR)
+install: MANDIR := $(file <$(BUILD_DIR)/MANDIR)
+install: all
+       install -d $(DESTDIR)/$(SYSCONFDIR)
+       install -m 644 $(BUILD_DIR)/genkernel.conf $(DESTDIR)/$(SYSCONFDIR)/
+
+       install -d $(DESTDIR)/$(BINDIR)
+       install -m 755 $(BUILD_DIR)/genkernel $(DESTDIR)/$(BINDIR)/
+
+       install -d $(DESTDIR)/$(PREFIX)/share/genkernel
+
+       cp -rp arch $(DESTDIR)/$(PREFIX)/share/genkernel/
+       cp -rp defaults $(DESTDIR)/$(PREFIX)/share/genkernel/
+       cp -rp gkbuilds $(DESTDIR)/$(PREFIX)/share/genkernel/
+       cp -rp modules $(DESTDIR)/$(PREFIX)/share/genkernel/
+       cp -rp netboot $(DESTDIR)/$(PREFIX)/share/genkernel/
+       cp -rp patches $(DESTDIR)/$(PREFIX)/share/genkernel/
+       cp -rp worker_modules $(DESTDIR)/$(PREFIX)/share/genkernel/
+
+       install -m 755 -t $(DESTDIR)/$(PREFIX)/share/genkernel $(addprefix 
$(BUILD_DIR)/,$(FINAL_DEPS))
+
+       install $(BUILD_DIR)/software.sh 
$(DESTDIR)/$(PREFIX)/share/genkernel/defaults
+
+       install -d $(DESTDIR)/$(MANDIR)
+       install $(BUILD_DIR)/genkernel.8 $(DESTDIR)/$(MANDIR)/man8
+

Reply via email to