diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 136 |
1 files changed, 129 insertions, 7 deletions
@@ -1,11 +1,14 @@ #PACKAGE_VERSION = $(shell /bin/grep -F -- GK_V= genkernel | sed "s/.*GK_V='\([^']\+\)'/\1/") +PACKAGE_VERSION = $(file <VERSION) +ifeq ("$(PACKAGE_VERSION)", "") PACKAGE_VERSION = $(shell git describe --tags |sed 's,^v,,g') +endif distdir = genkernel-$(PACKAGE_VERSION) MANPAGE = genkernel.8 # Add off-Git/generated files here that need to be shipped with releases -EXTRA_DIST = $(MANPAGE) ChangeLog $(KCONF) +EXTRA_DIST = ChangeLog $(KCONF) -default: kconfig man +default: all # First argument in the override file # Second argument is the base file @@ -14,18 +17,85 @@ ARCH_KCONF = $(wildcard arch/*/arch-config) GENERATED_KCONF = $(subst arch-,generated-,$(ARCH_KCONF)) KCONF = $(GENERATED_KCONF) +BUILD_DIR = build + +FINAL_DEPS = genkernel.conf \ + gen_arch.sh \ + gen_bootloader.sh \ + gen_cmdline.sh \ + gen_compile.sh \ + gen_configkernel.sh \ + gen_determineargs.sh \ + gen_funcs.sh \ + gen_initramfs.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)" + @echo "PACKAGE_VERSION=$(PACKAGE_VERSION)" 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) @@ -37,6 +107,7 @@ endif dist: verify-shellscripts-initramfs verify-doc check-git-repository distclean $(EXTRA_DIST) mkdir "$(distdir)" + echo $(PACKAGE_VERSION) > $(distdir)/VERSION git ls-files -z | xargs -0 cp --no-dereference --parents --target-directory="$(distdir)" \ $(EXTRA_DIST) tar cf "$(distdir)".tar "$(distdir)" @@ -46,7 +117,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 +127,10 @@ 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) --attribute="genkernelversion=$(PACKAGE_VERSION)" \ + "$(BUILD_DIR)/$<" verify-doc: doc/genkernel.8.txt @rm -f faildoc ; \ @@ -99,3 +171,53 @@ 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 doc/genkernel.8.txt $(BUILD_DIR)/doc/genkernel.8.txt + +$(BUILD_DIR)/%: % + install -D $< $@ + +$(BUILD_DIR)/genkernel: $(addprefix $(BUILD_DIR)/,$(FINAL_DEPS)) $(BUILD_DIR)/software.sh + install genkernel $(BUILD_DIR)/genkernel + +SHARE_DIRS = arch defaults gkbuilds modules netboot patches worker_modules + +install: all + $(eval PREFIX := $(file <$(BUILD_DIR)/PREFIX)) + $(eval BINDIR := $(file <$(BUILD_DIR)/BINDIR)) + $(eval SYSCONFDIR := $(file <$(BUILD_DIR)/SYSCONFDIR)) + $(eval MANDIR := $(file <$(BUILD_DIR)/MANDIR)) + 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 -ra $(SHARE_DIRS) $(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 + +# No trailing blank lines please. +# vim:ft=make: |