summaryrefslogtreecommitdiff
path: root/ltp_framework/include/mk/env_pre.mk
diff options
context:
space:
mode:
Diffstat (limited to 'ltp_framework/include/mk/env_pre.mk')
-rw-r--r--ltp_framework/include/mk/env_pre.mk144
1 files changed, 144 insertions, 0 deletions
diff --git a/ltp_framework/include/mk/env_pre.mk b/ltp_framework/include/mk/env_pre.mk
new file mode 100644
index 0000000..f1584a8
--- /dev/null
+++ b/ltp_framework/include/mk/env_pre.mk
@@ -0,0 +1,144 @@
+#
+# Make pre-include environment Makefile.
+#
+# Copyright (C) 2009, Cisco Systems Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Garrett Cooper, September 2009
+#
+# This Makefile must be included first. NO IF'S, AND'S, OR BUT'S.
+#
+# This sets the stage for all operations required within Makefiles.
+#
+
+ifndef ENV_PRE_LOADED
+ENV_PRE_LOADED = 1
+
+# "out-of-build-tree" build.
+BUILD_TREE_BUILDDIR_INSTALL := 1
+# "in-srcdir" build / install.
+BUILD_TREE_SRCDIR_INSTALL := 2
+# "in-srcdir" build, non-srcdir install.
+BUILD_TREE_NONSRCDIR_INSTALL := 3
+# configure not run.
+BUILD_TREE_UNCONFIGURED := 4
+
+ifndef MAKE_VERSION_CHECK
+export MAKE_VERSION_CHECK = 1
+ifneq ($(firstword $(sort 3.80 $(MAKE_VERSION))),3.80)
+$(error Your version of make $(MAKE_VERSION) is too old. Upgrade to at least 3.80; 3.81+ is preferred)
+else
+ifneq ($(filter 3.80%,$(MAKE_VERSION)),)
+export MAKE_3_80_COMPAT := 1
+endif # make 3.80?
+endif # At least make 3.80?
+endif # MAKE_VERSION_CHECK
+
+# Get the absolute path for the source directory.
+top_srcdir ?= $(error You must define top_srcdir before including this file)
+
+include $(top_srcdir)/include/mk/functions.mk
+
+# Where's the root source directory?
+ifdef MAKE_3_80_COMPAT
+abs_top_srcdir := $(call MAKE_3_80_abspath,$(top_srcdir))
+else
+abs_top_srcdir := $(abspath $(top_srcdir))
+endif
+
+#
+# Where's the root object directory?
+#
+# Just in case it's not specified, set it to the top srcdir (because the user
+# must not have wanted out of build tree support)...
+#
+top_builddir ?= $(top_srcdir)
+
+# We need the absolute path...
+ifdef MAKE_3_80_COMPAT
+abs_top_builddir := $(call MAKE_3_80_abspath,$(top_builddir))
+else
+abs_top_builddir := $(abspath $(top_builddir))
+endif
+
+# Where's the root object directory?
+builddir := .
+
+abs_builddir := $(CURDIR)
+
+cwd_rel_from_top := $(subst $(abs_top_builddir),,$(abs_builddir))
+
+# Where's the source located at? Squish all of the / away by using abspath...
+ifdef MAKE_3_80_COMPAT
+abs_srcdir := $(call MAKE_3_80_abspath,$(abs_top_srcdir)/$(cwd_rel_from_top))
+else
+abs_srcdir := $(abspath $(abs_top_srcdir)/$(cwd_rel_from_top))
+endif
+
+srcdir := $(strip $(subst $(abs_top_srcdir)/,,$(abs_srcdir)))
+
+ifeq ($(srcdir),)
+srcdir := .
+endif
+
+# autotools, *clean, and help don't require config.mk, features.mk, etc...
+ifeq ($(filter autotools %clean .gitignore gitignore.% help,$(MAKECMDGOALS)),)
+
+include $(abs_top_builddir)/include/mk/config.mk
+include $(abs_top_builddir)/include/mk/features.mk
+
+# START out-of-build-tree check.
+ifneq ($(abs_builddir),$(abs_srcdir))
+BUILD_TREE_STATE := $(BUILD_TREE_BUILDDIR_INSTALL)
+else
+# Else, not out of build tree..
+
+# START srcdir build-tree install checks
+ifeq ($(strip $(DESTDIR)$(prefix)),)
+BUILD_TREE_STATE := $(BUILD_TREE_SRCDIR_INSTALL)
+else # Empty $(DESTDIR)$(prefix)
+ifeq ($(abs_top_srcdir),$(prefix))
+BUILD_TREE_STATE := $(BUILD_TREE_SRCDIR_INSTALL)
+endif
+# END srcdir build-tree install checks
+endif
+# END out-of-build-tree check.
+endif
+
+# Is the build-tree configured yet?
+ifeq ($(BUILD_TREE_STATE),)
+ifneq ($(wildcard $(abs_top_builddir)/include/mk/config.mk),)
+BUILD_TREE_STATE := $(BUILD_TREE_NONSRCDIR_INSTALL)
+endif
+endif
+
+ifeq ($(MAKE_3_80_COMPAT),1)
+# Trick make 3.80 into thinking that the default goal is all.
+.PHONY: default
+default: all
+else
+.DEFAULT_GOAL := all
+endif
+
+endif # END autotools, *clean...
+
+BUILD_TREE_STATE ?= $(BUILD_TREE_UNCONFIGURED)
+
+# We can piece together where we're located in the source and object trees with
+# just these two vars and $(CURDIR).
+export abs_top_srcdir abs_top_builddir BUILD_TREE_STATE
+
+endif