diff options
author | Julian Andres Klode <jak@debian.org> | 2016-08-10 16:19:00 +0200 |
---|---|---|
committer | Julian Andres Klode <jak@debian.org> | 2016-08-10 16:19:00 +0200 |
commit | e02c3a9ec2b2f7a8d4aecd70f2ecdae27c207aa9 (patch) | |
tree | ffa99f96949f3eab728a1b8caecdd014ea8d6f81 /buildlib/defaults.mak | |
parent | b2cfacf1180e4b3fcbb2ae2ea52cf270ef74e971 (diff) | |
parent | 61fef4ddbec8f70bb9e213ac0491d4e6cfefab30 (diff) |
Merge branch 'cmake'
Diffstat (limited to 'buildlib/defaults.mak')
-rw-r--r-- | buildlib/defaults.mak | 185 |
1 files changed, 0 insertions, 185 deletions
diff --git a/buildlib/defaults.mak b/buildlib/defaults.mak deleted file mode 100644 index 783cc11b0..000000000 --- a/buildlib/defaults.mak +++ /dev/null @@ -1,185 +0,0 @@ -# -*- make -*- - -# This file configures the default environment for the make system -# The way it works is fairly simple, each module is defined in it's -# own *.mak file. It expects a set of variables to be set to values -# for it to operate as expected. When included the module generates -# the requested rules based on the contents of its control variables. - -# This works out very well and allows a good degree of flexibility. -# To accommodate some of the features we introduce the concept of -# local variables. To do this we use the 'Computed Names' feature of -# gmake. Each module declares a LOCAL scope and access it with, -# $($(LOCAL)-VAR) -# This works very well but it is important to remember that within -# a rule the LOCAL var is unavailable, it will have to be constructed -# from the information in the rule invocation. For stock rules like -# clean this is simple, we use a local clean rule called clean/$(LOCAL) -# and then within the rule $(@F) gets back $(LOCAL)! Other rules will -# have to use some other mechanism (filter perhaps?) The reason such -# lengths are used is so that each directory can contain several 'instances' -# of any given module. I notice that the very latest gmake has the concept -# of local variables for rules. It is possible this feature in conjunction -# with the generated names will provide a very powerful solution indeed! - -# A build directory is used by default, all generated items get put into -# there. However unlike automake this is not done with a VPATH build -# (vpath builds break the distinction between #include "" and #include <>) -# but by explicitly setting the BUILD variable. Make is invoked from -# within the source itself which is much more compatible with compilation -# environments. -ifndef NOISY -.SILENT: -endif - -# Search for the build directory -ifdef BUILD -BUILD_POSSIBLE := $(BUILD) $(BASE)/$(BUILD) -else -BUILD_POSSIBLE := $(BASE) $(BASE)/build-$(shell uname -m) $(BASE)/build -endif - -BUILDX:= $(foreach i,$(BUILD_POSSIBLE),$(wildcard $(i)/environment.mak*)) - -ifeq ($(words $(BUILDX)),0) - -# Check for a busted wildcard function. We use this function in several -# places, it must work. -ifeq ($(words $(wildcard *)),0) -error-all/environment.mak: - echo You have a broken version of GNU Make - upgrade. - error-out-and-die -else -error-all/environment.mak: - echo Can not find the build directory in $(BUILD_POSSIBLE) -- use BUILD= - error-out-and-die -endif - -# Force include below to come to the error target -BUILDX := error-all -else -BUILDX:= $(patsubst %/,%,$(firstword $(dir $(BUILDX)))) -endif - -override BUILD := $(BUILDX) - -# Base definitions -INCLUDE := $(BUILD)/include -BIN := $(BUILD)/bin -LIB := $(BIN) -OBJ := $(BUILD)/obj/$(SUBDIR) -DEP := $(OBJ) -DOC := $(BUILD)/docs -PO := $(BUILD)/po -LOCALE := $(BUILD)/locale -PO_DOMAINS := $(BUILD)/po/domains - -# Module types -LIBRARY_H = $(BASE)/buildlib/library.mak -DOCBOOK_H = $(BASE)/buildlib/docbook.mak -MANPAGE_H = $(BASE)/buildlib/manpage.mak -PROGRAM_H = $(BASE)/buildlib/program.mak -PYTHON_H = $(BASE)/buildlib/python.mak -COPY_H = $(BASE)/buildlib/copy.mak -PO4A_MANPAGE_H = $(BASE)/buildlib/po4a_manpage.mak -FAIL_H = $(BASE)/buildlib/fail.mak -PODOMAIN_H = $(BASE)/buildlib/podomain.mak - -include $(BUILD)/environment.mak - -ifdef STATICLIBS -LIBRARY_H += $(BASE)/buildlib/staticlibrary.mak -endif - -ifdef ONLYSTATICLIBS -LIBRARY_H = $(BASE)/buildlib/staticlibrary.mak -endif - -# Source location control -# SUBDIRS specifies sub components of the module that -# may be located in subdirectories of the source dir. -# This should be declared before including this file -SUBDIRS+= - -# Header file control. -# TARGETDIRS indicates all of the locations that public headers -# will be published to. -# This should be declared before including this file -HEADER_TARGETDIRS+= - -# Options -CPPFLAGS+= -I$(INCLUDE) -LDFLAGS+= -L$(LIB) - -# Directors to create -MKDIRS := $(BIN) - -# Phony rules. Other things hook these by appending to the dependency -# list -.PHONY: headers library clean veryclean all binary program doc dirs -.PHONY: maintainer-clean dist-clean distclean pristine sanity -all: dirs binary doc -binary: library program -maintainer-clean dist-clean distclean pristine sanity: veryclean -startup headers library clean veryclean program test update-po manpages docbook: - -veryclean: - echo Very Clean done for $(SUBDIR) -clean: - echo Clean done for $(SUBDIR) -dirs: - mkdir -p $(patsubst %/,%,$(sort $(MKDIRS))) - -# Header file control. We want all published interface headers to go -# into the build directory from their source dirs. We setup some -# search paths here -vpath %.h $(SUBDIRS) -$(INCLUDE)/%.h $(addprefix $(INCLUDE)/,$(addsuffix /%.h,$(HEADER_TARGETDIRS))) : %.h - cp $< $@ - -# Dependency generation. We want to generate a .d file using gnu cpp. -# For GNU systems the compiler can spit out a .d file while it is compiling, -# this is specified with the INLINEDEPFLAG. Other systems might have a -# makedep program that can be called after compiling, that's illustrated -# by the DEPFLAG case. -# Compile rules are expected to call this macro after calling the compiler -ifdef GCC3DEP -DFILE = $(DEP)/$(basename $(@F)).d -else -DFILE = $(basename $(@F)).d -endif -ifdef INLINEDEPFLAG - define DoDep - sed -e "1s/.*:/$(subst /,\\/,$@):/" $(DFILE) > $(DEP)/$(@F).d - #sed -e "1s/.*:/$(subst /,\\/,$@):/" $(DEP)/$(basename $(@F)).d > $(DEP)/$(@F).d - -rm -f $(basename $(@F)).d - endef -else - ifdef DEPFLAG - define DoDep - $(CXX) $(DEPFLAG) $(CPPFLAGS) -o $@ $< - sed -e "1s/.*:/$(subst /,\\/,$@):/" $(basename $(@F)).d > $(DEP)/$(@F).d - -rm -f $(basename $(@F)).d - endef - else - define DoDep - endef - endif -endif - -# Automatic -j support -ifeq ($(NUM_PROCS),1) - PARALLEL_RUN=no -endif - -ifndef PARALLEL_RUN - PARALLEL_RUN=yes - export PARALLEL_RUN - # handle recursion - ifneq ($(NUM_PROCS),) - MAKEFLAGS += -j $(NUM_PROCS) - endif -endif - -# This makes sorting predictable -export LC_COLLATE=C.UTF-8 |