aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md6
-rw-r--r--rules/common.mk3
-rw-r--r--rules/copy.mk42
3 files changed, 51 insertions, 0 deletions
diff --git a/README.md b/README.md
index a24fb15..f9e695a 100644
--- a/README.md
+++ b/README.md
@@ -102,3 +102,9 @@ Makefile should define two variables:
For example see "examples/symlinks".
+## copy.mk
+
+If this module is included, entire source tree will be copied
+into all requested building directories. This is useful for
+packages that do not support building out of source tree,
+such as zlib or openssl.
diff --git a/rules/common.mk b/rules/common.mk
index 38dc39a..a10e41c 100644
--- a/rules/common.mk
+++ b/rules/common.mk
@@ -40,9 +40,12 @@ mach := $(shell uname -p)
mach32 :=
mach64 := amd64
+variants :=
+
define add-variant
destdir.$1 = $(workdir)/proto/$1
builddir.$1 = $(workdir)/build/$1
+variants += $1
endef
workdir := $(CURDIR)/work
diff --git a/rules/copy.mk b/rules/copy.mk
new file mode 100644
index 0000000..3ec574d
--- /dev/null
+++ b/rules/copy.mk
@@ -0,0 +1,42 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license
+# at http://www.opensource.org/licenses/CDDL-1.0
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each file.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+#
+# Copyright (C) 2012, Nexenta Systems, Inc. All rights reserved.
+#
+
+ifeq (,$(__copy_mk))
+
+include /usr/share/cibs/rules/common.mk
+
+pre-configure-stamp: copy-stamp
+
+.SECONDEXPANSION:
+copy-stamp: $$(addprefix copy-,$$(addsuffix -stamp,$$(variants) $$(variants)))
+copy-%-stamp: patch-stamp unpack-stamp
+ echo $*
+ [ -n "$(builddir.$*)" ]
+ [ -d "$(builddir.$*)" ] || mkdir -p "$(builddir.$*)"
+ cp -r -p $(sourcedir)/* $(builddir.$*)/
+ touch $@
+
+__copy_mk := included
+
+endif
+