mirror of
ssh://git.janware.com/srv/git/janware/proj/jw-pkg
synced 2026-01-15 03:53:32 +01:00
make: Further improve build time
This commit sees several improvements to the build performance: - Introduce cache.mk, which creates makefiles caching often used variables, per tree and per project. - Define more variables with := enclosed in condistions, instead of defining them with ?=, because the RHS of ?= is expanded deferredly. - Add more definitions for executables. - Move some more specialized definitions out into specialized makefiles, notably htdocs.mk and tmpl.mk Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
parent
316435bb78
commit
9e245c986e
7 changed files with 176 additions and 109 deletions
194
make/defs.mk
194
make/defs.mk
|
|
@ -7,51 +7,85 @@ JW_BUILD_DEF_MK_INCLUDED = true
|
|||
|
||||
MAKEFLAGS += -r
|
||||
|
||||
-include $(MODDIR)/make/.cache.mk
|
||||
-include $(TOPDIR)/make/.cache.mk
|
||||
include $(MODDIR)/make/platform.mk
|
||||
include $(MODDIR)/make/projects.mk
|
||||
|
||||
ifeq ($(MAKE_BENCHMARK),true)
|
||||
SHELL := /bin/bash $(MOD_SCRIPT_DIR)/timed-make-shell.sh
|
||||
export SHELL := /bin/bash $(MOD_SCRIPT_DIR)/timed-make-shell.sh
|
||||
else
|
||||
export SHELL := /bin/bash
|
||||
endif
|
||||
|
||||
# ----- pre-local.mk
|
||||
|
||||
ifneq ($(wildcard $(MODDIR)/make/pre-local.mk),)
|
||||
include $(MODDIR)/make/pre-local.mk
|
||||
endif
|
||||
|
||||
ifneq ($(wildcard $(TOPDIR)/make/pre-local.mk),)
|
||||
include $(TOPDIR)/make/pre-local.mk
|
||||
endif
|
||||
|
||||
ifneq ($(wildcard pre-local.mk),)
|
||||
include pre-local.mk
|
||||
endif
|
||||
-include $(MODDIR)/make/pre-local.mk
|
||||
-include $(TOPDIR)/make/pre-local.mk
|
||||
-include pre-local.mk
|
||||
|
||||
# ----- executables
|
||||
WHICH := $(firstword $(wildcard /usr/bin/which) $(shell which which))
|
||||
SED := $(shell $(WHICH) sed)
|
||||
CAT := /bin/cat
|
||||
#ifeq ($(SHELL),)
|
||||
export SHELL := /bin/bash
|
||||
ifndef WHICH
|
||||
WHICH := $(firstword $(wildcard /usr/bin/which) $(shell which which))
|
||||
endif
|
||||
ifndef GREP
|
||||
GREP := $(shell $(WHICH) grep)
|
||||
endif
|
||||
ifndef SED
|
||||
SED := $(shell $(WHICH) sed)
|
||||
endif
|
||||
CAT := $(shell $(WHICH) cat)
|
||||
ifndef BROWSER
|
||||
BROWSER := $(shell $(WHICH) xdg-open)
|
||||
endif
|
||||
ifeq ($(origin RM),default)
|
||||
RM := $(shell $(WHICH) rm)
|
||||
endif
|
||||
ifndef AR
|
||||
AR = $(shell $(WHICH) ar)
|
||||
endif
|
||||
#ifndef PWD
|
||||
PWD := $(shell $(WHICH) pwd)
|
||||
#endif
|
||||
BROWSER ?= xdg-open
|
||||
RM := $(shell $(WHICH) rm)
|
||||
AR = /usr/bin/ar
|
||||
PWD := $(shell $(WHICH) pwd)
|
||||
CWD := $(shell $(PWD))
|
||||
BIN_INSTALL := /usr/bin/install
|
||||
SUDO ?= /usr/bin/sudo
|
||||
MY_SHELL := /bin/bash
|
||||
GET_OS_SH := $(SHELL) $(MOD_SCRIPT_DIR)/get-os.sh
|
||||
ID := $(shell $(WHICH) id)
|
||||
CUT := $(shell $(WHICH) cut)
|
||||
TR := $(shell $(WHICH) tr)
|
||||
AWK := $(shell $(WHICH) awk)
|
||||
GETENT := $(shell $(WHICH) getent)
|
||||
XARGS := $(shell $(WHICH) xargs)
|
||||
FIND := $(shell $(WHICH) find)
|
||||
PRINTF := $(shell $(WHICH) printf)
|
||||
ifndef CWD
|
||||
CWD := $(shell $(PWD))
|
||||
endif
|
||||
ifndef BIN_INSTALL
|
||||
BIN_INSTALL := $(shell $(WHICH) install)
|
||||
endif
|
||||
ifndef SUDO
|
||||
SUDO := $(shell $(WHICH) sudo)
|
||||
endif
|
||||
ifndef MY_SHELL
|
||||
MY_SHELL := /bin/bash
|
||||
endif
|
||||
ifndef GET_OS_SH
|
||||
GET_OS_SH := $(SHELL) $(MOD_SCRIPT_DIR)/get-os.sh
|
||||
endif
|
||||
ifndef ID
|
||||
ID := $(shell $(WHICH) id)
|
||||
endif
|
||||
ifndef CUT
|
||||
CUT := $(shell $(WHICH) cut)
|
||||
endif
|
||||
ifndef TR
|
||||
TR := $(shell $(WHICH) tr)
|
||||
endif
|
||||
ifndef AWK
|
||||
AWK := $(shell $(WHICH) awk)
|
||||
endif
|
||||
ifndef GETENT
|
||||
GETENT := $(shell $(WHICH) getent)
|
||||
endif
|
||||
ifndef XARGS
|
||||
XARGS := $(shell $(WHICH) xargs)
|
||||
endif
|
||||
ifndef FIND
|
||||
FIND := $(shell $(WHICH) find)
|
||||
endif
|
||||
ifndef PRINTF
|
||||
PRINTF := $(shell $(WHICH) printf)
|
||||
endif
|
||||
|
||||
# makefile helpers
|
||||
FIND_SUBDIRS := $(filter-out . .. nomake CVS $(IGNORE_SUBDIRS),\
|
||||
|
|
@ -147,27 +181,27 @@ ifeq ($(OS_TUPLE),)
|
|||
endif
|
||||
|
||||
ifneq ($(TARGET_TUPLE),)
|
||||
TARGET_TUPLE_WORDS ?= $(subst -, ,$(TARGET_TUPLE))
|
||||
TARGET_ARCH ?= $(word 1,$(TARGET_TUPLE_WORDS))
|
||||
TARGET_VENDOR ?= $(word 2,$(TARGET_TUPLE_WORDS))
|
||||
TARGET_OS ?= $(word 3,$(TARGET_TUPLE_WORDS))
|
||||
TARGET_ABI ?= $(word 4,$(TARGET_TUPLE_WORDS))
|
||||
TARGET_TRIPLET ?= $(TARGET_ARCH)-$(TARGET_OS)-$(TARGET_ABI)
|
||||
TARGET_TUPLE_WORDS := $(subst -, ,$(TARGET_TUPLE))
|
||||
TARGET_ARCH := $(word 1,$(TARGET_TUPLE_WORDS))
|
||||
TARGET_VENDOR := $(word 2,$(TARGET_TUPLE_WORDS))
|
||||
TARGET_OS := $(word 3,$(TARGET_TUPLE_WORDS))
|
||||
TARGET_ABI := $(word 4,$(TARGET_TUPLE_WORDS))
|
||||
TARGET_TRIPLET := $(TARGET_ARCH)-$(TARGET_OS)-$(TARGET_ABI)
|
||||
else ifneq ($(TARGET_TRIPLET),)
|
||||
TARGET_TRIPLET_WORDS ?= $(subst -, ,$(TARGET_TRIPLET))
|
||||
TARGET_ARCH ?= $(word 1,$(TARGET_TRIPLET_WORDS))
|
||||
TARGET_VENDOR ?= unknown
|
||||
TARGET_OS ?= $(word 2,$(TARGET_TRIPLET_WORDS))
|
||||
TARGET_ABI ?= $(word 3,$(TARGET_TRIPLET_WORDS))
|
||||
TARGET_TUPLE ?= $(TARGET_ARCH)-$(TARGET_VENDOR)-$(TARGET_OS)-$(TARGET_ABI)
|
||||
TARGET_TRIPLET_WORDS := $(subst -, ,$(TARGET_TRIPLET))
|
||||
TARGET_ARCH := $(word 1,$(TARGET_TRIPLET_WORDS))
|
||||
TARGET_VENDOR := unknown
|
||||
TARGET_OS := $(word 2,$(TARGET_TRIPLET_WORDS))
|
||||
TARGET_ABI := $(word 3,$(TARGET_TRIPLET_WORDS))
|
||||
TARGET_TUPLE := $(TARGET_ARCH)-$(TARGET_VENDOR)-$(TARGET_OS)-$(TARGET_ABI)
|
||||
else
|
||||
TARGET_TUPLE ?= $(OS_TUPLE)
|
||||
TARGET_TUPLE_WORDS ?= $(subst -, ,$(TARGET_TUPLE))
|
||||
TARGET_ARCH ?= $(word 1,$(TARGET_TUPLE_WORDS))
|
||||
TARGET_VENDOR ?= $(word 2,$(TARGET_TUPLE_WORDS))
|
||||
TARGET_OS ?= $(word 3,$(TARGET_TUPLE_WORDS))
|
||||
TARGET_ABI ?= $(word 4,$(TARGET_TUPLE_WORDS))
|
||||
TARGET_TRIPLET ?= $(TARGET_ARCH)-$(TARGET_OS)-$(TARGET_ABI)
|
||||
TARGET_TUPLE := $(OS_TUPLE)
|
||||
TARGET_TUPLE_WORDS := $(subst -, ,$(TARGET_TUPLE))
|
||||
TARGET_ARCH := $(word 1,$(TARGET_TUPLE_WORDS))
|
||||
TARGET_VENDOR := $(word 2,$(TARGET_TUPLE_WORDS))
|
||||
TARGET_OS := $(word 3,$(TARGET_TUPLE_WORDS))
|
||||
TARGET_ABI := $(word 4,$(TARGET_TUPLE_WORDS))
|
||||
TARGET_TRIPLET := $(TARGET_ARCH)-$(TARGET_OS)-$(TARGET_ABI)
|
||||
endif
|
||||
|
||||
#ifeq ($(TARGET_TUPLE),)
|
||||
|
|
@ -246,12 +280,12 @@ ifeq ($(PKG_FORMAT),debian)
|
|||
RPM_SUFFIX ?= deb
|
||||
else
|
||||
RPM ?= /bin/rpm
|
||||
RPM_ARCH ?= $(ARCH)
|
||||
RPM_ARCH ?= $(TARGET_ARCH)
|
||||
RPM_SUFFIX ?= rpm
|
||||
endif
|
||||
|
||||
ifeq ($(PKG_FORMAT),debian)
|
||||
export INCLUDE_REV_IN_VERSIONS = true
|
||||
export INCLUDE_REV_IN_VERSIONS = true
|
||||
endif
|
||||
|
||||
PROJECT_DESCR_FILE ?= $(wildcard $(TOPDIR)/make/project.conf)
|
||||
|
|
@ -262,9 +296,9 @@ PROJECT_SUMMARY ?= $(PROJECT_DESCR)
|
|||
CUSTOMER ?= jannet
|
||||
|
||||
ifneq ($(PROJECT_DESCR_FILE),)
|
||||
ifeq ($(shell grep "^ *subpackages *=.*devel" $(PROJECT_DESCR_FILE)),)
|
||||
CREATE_DEVEL = false
|
||||
endif
|
||||
ifeq ($(shell $(GREP) "^ *subpackages *=.*devel" $(PROJECT_DESCR_FILE)),)
|
||||
CREATE_DEVEL = false
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(VERSION),)
|
||||
|
|
@ -410,34 +444,6 @@ INSTALL_CGIDIR = $(CGI_DIR)
|
|||
BUILD_CGI += $(addprefix $(BUILD_CGIDIR)/,$(EXE_CGI))
|
||||
INSTALLED_CGI += $(addprefix $(INSTALL_CGIDIR)/,$(EXE_CGI))
|
||||
|
||||
# -- HTML
|
||||
INSTALLATION_FILE_TYPES += HTML
|
||||
BUILD_HTMLDIR = $(TOPDIR)/htdocs
|
||||
LOCAL_HTML += $(filter-out $(DONT_INSTALL),$(wildcard *.html *.css *.php *.js) $(FONTS) $(IMAGES))
|
||||
ifeq ($(HTML_SUBDIR),)
|
||||
HTML_SUBDIR := $(shell $(PWD) | $(SED) '/.*\/htdocs\(\/\|$$\)/!d; s%.*/htdocs\(/\|$$\)%%')
|
||||
endif
|
||||
ifeq ($(HTML_SUBDIR),)
|
||||
INSTALL_HTMLDIR ?= $(PROJECT_HTMLDIR)
|
||||
else
|
||||
INSTALL_HTMLDIR ?= $(PROJECT_HTMLDIR)/$(HTML_SUBDIR)
|
||||
endif
|
||||
INSTALLED_HTML += $(addprefix $(INSTALL_HTMLDIR)/,$(LOCAL_HTML))
|
||||
|
||||
# -- TMPL
|
||||
INSTALLATION_FILE_TYPES += TMPL
|
||||
BUILD_TMPLDIR = $(TOPDIR)/tmpl
|
||||
LOCAL_TMPL += $(filter-out $(DONT_INSTALL),$(wildcard *.tmpl))
|
||||
ifndef TMPL_SUBDIR
|
||||
TMPL_SUBDIR := $(shell $(PWD) | $(SED) '/.*\/tmpl\(\/\|$$\)/!d; s%.*/tmpl\(/\|$$\)%%')
|
||||
endif
|
||||
ifeq ($(TMPL_SUBDIR),)
|
||||
INSTALL_TMPLDIR = $(PROJECT_TMPLDIR)
|
||||
else
|
||||
INSTALL_TMPLDIR = $(PROJECT_TMPLDIR)/$(TMPL_SUBDIR)
|
||||
endif
|
||||
INSTALLED_TMPL += $(addprefix $(INSTALL_TMPLDIR)/,$(LOCAL_TMPL))
|
||||
|
||||
# -- SYSTEMD
|
||||
INSTALLATION_FILE_TYPES += SYSTEMD
|
||||
BUILD_SYSTEMDDIR = $(TOPDIR)/bin/systemd
|
||||
|
|
@ -562,17 +568,9 @@ INSTALL_DIR ?= $(INSTALL)
|
|||
|
||||
# ----- local.mk
|
||||
|
||||
ifneq ($(wildcard $(MODDIR)/make/local.mk),)
|
||||
include $(MODDIR)/make/local.mk
|
||||
endif
|
||||
|
||||
ifneq ($(wildcard $(TOPDIR)/make/local.mk),)
|
||||
include $(TOPDIR)/make/local.mk
|
||||
endif
|
||||
|
||||
ifneq ($(wildcard local.mk),)
|
||||
include local.mk
|
||||
endif
|
||||
-include $(MODDIR)/make/local.mk
|
||||
-include $(TOPDIR)/make/local.mk
|
||||
-include local.mk
|
||||
|
||||
BTOOLS_DIR ?= $(call proj_dir, dspider-btools)
|
||||
#DSPCD_DIR ?= $(call proj_dir, dspcd)
|
||||
|
|
@ -598,4 +596,4 @@ doc-module:
|
|||
doc-project:
|
||||
$(BROWSER) $(JANWARE_URL_DOC_PROJECT)
|
||||
|
||||
endif
|
||||
endif # ifndef JW_BUILD_DEF_MK_INCLUDED
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue