-# directory names:
+top-build-dir = $(shell cd $(depth) && pwd)
+build-dir = $(shell cd . && pwd)
+tree-dir = $(subst $(top-build-dir),,$(build-dir))
+
+absdir = $(shell cd $(1) ; pwd)
-# depth from group-dir
-# internal, not normally used
-DEPTH = $(depth)/$(package-depth)
-ifeq ($(topdir),)
-topdir := $(shell cd $(depth); pwd)
+ifneq ($(configure-srcdir),.)
+srcdir-build = 1
endif
-pwd := $(shell pwd)
-# $(depth) is deprecated, for most cases you'll want $(src-depth)
-#
-# Well, on second thought.
-# It can do no harm, but using src-depth iso depth is only necessary
-# for broken rules that do
-# cd $(outdir) && foo $(depth) ...
-src-depth = $(depth)/$(srcdir)
+ifndef srcdir-build
+src-depth = $(depth)
+else
+src-depth = $(configure-srcdir)
+endif
+
+top-src-dir := $(shell cd $(src-depth); pwd)
+
+ifndef srcdir-build
+src-dir = .
+else
+src-dir = $(top-src-dir)$(tree-dir)
+VPATH = $(src-dir)
+endif
+
+.UNEXPORT: build-dir src-dir tree-dir
+
+src-wildcard = $(subst $(src-dir)/,,$(wildcard $(src-dir)/$(1)))
-# derived names
ifeq ($(distdir),)
- distdir = $(topdir)/$(outdir)/$(DIST_NAME)
+ distdir = $(top-build-dir)/$(outdir)/$(DIST_NAME)
DIST_NAME = $(package)-$(TOPLEVEL_VERSION)
endif
distname = $(package)-$(TOPLEVEL_VERSION)
-# obsolete?
-#makeout = $(depth)/make/$(outdir)
-#docout = $(depth)/Documentation/$(outdir)
-#binout = $(depth)/bin/$(outdir)
-
doc-dir = $(src-depth)/Documentation
po-dir = $(src-depth)/po
-
-# sort-out which of these are still needed
-#
-$(package)_bindir = $(depth)/bin
step-bindir = $(stepmake)/bin
-group-dir = $(shell cd $(DEPTH)/..; pwd)
-release-dir = $(group-dir)/releases
+# stepmake package support.
+DEPTH = $(depth)/$(package-depth)
+
+INSTALLPY=$(PYTHON) $(step-bindir)/install.py -c
+INSTALL=$(INSTALLPY)
+
+group-dir = $(shell cd $(DEPTH);pwd)/..
patch-dir = $(group-dir)/patches
-#
-# i have in $HOME/.rpmrc
-# topdir: /home/fred/usr/src/Redhat
-#
rpm-sources = $(release-dir)
rpm-build = $(group-dir)/RedHat/BUILD
-#
+package-icon = $(outdir)/$(package)-icon.xpm
-# package-icon=$(outdir)/$(package)-icon.gif
-package-icon=$(outdir)/$(package)-icon.xpm
-
-
-# need to be defined in local Makefiles:
-#
-FOOBAR =
-# the version:
-#
-ifneq ($(MY_PATCH_LEVEL),$(FOOBAR))
+ifneq ($(strip $(MY_PATCH_LEVEL)),)
VERSION=$(MAJOR_VERSION).$(MINOR_VERSION).$(PATCH_LEVEL).$(MY_PATCH_LEVEL)
else
VERSION=$(MAJOR_VERSION).$(MINOR_VERSION).$(PATCH_LEVEL)
endif
-ifneq ($(TOPLEVEL_MY_PATCH_LEVEL),$(FOOBAR))
+ifneq ($(strip $(TOPLEVEL_MY_PATCH_LEVEL)),)
TOPLEVEL_VERSION=$(TOPLEVEL_MAJOR_VERSION).$(TOPLEVEL_MINOR_VERSION).$(TOPLEVEL_PATCH_LEVEL).$(TOPLEVEL_MY_PATCH_LEVEL)
else
TOPLEVEL_VERSION=$(TOPLEVEL_MAJOR_VERSION).$(TOPLEVEL_MINOR_VERSION).$(TOPLEVEL_PATCH_LEVEL)
endif
+# no local settings in the build process.
+LANG=
+export LANG
# clean file lists:
#
SILENT_LOG = 2>&1 > /dev/null
date := $(shell date +%x) #duplicated?
-INCLUDES = include $(outdir) $($(PACKAGE)_INCLUDES) $(MODULE_INCLUDES)
+INCLUDES = $(src-dir)/include $(outdir) $($(PACKAGE)_INCLUDES) $(MODULE_INCLUDES)
M4 = m4
-#replace to do stripping of certain objects
-STRIPDEBUG=true
-
-DIST_FILES=$(EXTRA_DIST_FILES) GNUmakefile $(ALL_SOURCES)
+DIST_FILES=$(EXTRA_DIST_FILES) GNUmakefile $(ALL_SOURCES) $(call src-wildcard,SConscript)
DOCDIR=$(depth)/$(outdir)
+#?
+STRIPDEBUG=true
STRIP=strip --strip-debug
-
-# substitute $(STRIP) in Site.make if you want stripping
DO_STRIP=true
-LOOP=$(foreach i, $(SUBDIRS), $(MAKE) PACKAGE=$(PACKAGE) package=$(package) -C $(i) $@ &&) true
-# different redhat releases need different flags for etags. Just use defaults.
-ETAGS_FLAGS= # -CT
-CTAGS_FLAGS=-h
+LOOP=+$(foreach i, $(SUBDIRS), $(MAKE) PACKAGE=$(PACKAGE) package=$(package) -C $(i) $@ &&) true
-makeflags=$(patsubst %==, %, $(patsubst ---%,,$(patsubst ----%,,$(MAKEFLAGS:%=--%))))
+ETAGS_FLAGS =
+CTAGS_FLAGS =
-DEP_FILES := $(wildcard $(outdir)/*.dep)
+makeflags=$(patsubst %==, %, $(patsubst ---%,,$(patsubst ----%,,$(MAKEFLAGS:%=--%))))
-IN_FILES := $(wildcard *.in)
+IN_FILES := $(call src-wildcard,*.in)
SOURCE_FILES += $(IN_FILES)
# Preprocessed .in documentation _FILES:
ALL_SOURCES = $(SOURCE_FILES)
+ifeq (cygwin,$(findstring cygwin,$(HOST_ARCH)))
+CYGWIN_BUILD = yes
+endif
+
+ifeq (mingw,$(findstring mingw,$(HOST_ARCH)))
+MINGW_BUILD = yes
+endif
+ifeq (darwin,$(findstring darwin,$(HOST_ARCH)))
+DARWIN_BUILD = yes
+endif